@yamato-daiwa/es-extensions 1.9.3 → 1.10.0-alpha.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/Distributable/cjs/Arrays/06-PermutationsOfElements/ObjectTypeElementsArrayOrdererByMultipleFields.js +67 -0
- package/Distributable/cjs/Sets/removeElementsFromSet.js +10 -0
- package/Distributable/cjs/Sets/removeThenGetSpecificNumberOfSetElements.js +30 -0
- package/Distributable/cjs/Strings/URI/FilesAndDirectories/FileNameExtensions/addPenultimateFileNameExtension.js +36 -0
- package/Distributable/cjs/Strings/URI/FilesAndDirectories/FileNameExtensions/removeLastFileNameExtensionFromPath.js +25 -0
- package/Distributable/cjs/index.js +18 -7
- package/Distributable/esm/Arrays/06-PermutationsOfElements/ObjectTypeElementsArrayOrdererByMultipleFields.d.ts +38 -0
- package/Distributable/esm/Arrays/06-PermutationsOfElements/ObjectTypeElementsArrayOrdererByMultipleFields.js +63 -0
- package/Distributable/esm/Sets/removeElementsFromSet.d.ts +9 -0
- package/Distributable/esm/Sets/removeElementsFromSet.js +7 -0
- package/Distributable/esm/Sets/removeThenGetSpecificNumberOfSetElements.d.ts +16 -0
- package/Distributable/esm/Sets/removeThenGetSpecificNumberOfSetElements.js +24 -0
- package/Distributable/esm/Strings/URI/FilesAndDirectories/FileNameExtensions/addPenultimateFileNameExtension.d.ts +6 -0
- package/Distributable/esm/Strings/URI/FilesAndDirectories/FileNameExtensions/addPenultimateFileNameExtension.js +30 -0
- package/Distributable/esm/Strings/URI/FilesAndDirectories/FileNameExtensions/removeLastFileNameExtensionFromPath.d.ts +1 -0
- package/Distributable/esm/Strings/URI/FilesAndDirectories/FileNameExtensions/removeLastFileNameExtensionFromPath.js +19 -0
- package/Distributable/esm/index.d.ts +6 -1
- package/Distributable/esm/index.js +6 -1
- package/README.md +1122 -29
- package/package.json +3 -3
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ObjectTypeElementsArrayOrdererByMultipleFields = void 0;
|
|
4
|
+
class ObjectTypeElementsArrayOrdererByMultipleFields {
|
|
5
|
+
static order({ targetArray, mutably, elementsComparers, finalElementsStableComparer }) {
|
|
6
|
+
const arrayWorkpiece = mutably ? targetArray : [...targetArray];
|
|
7
|
+
if (arrayWorkpiece.length < 2 || elementsComparers.length === 0) {
|
|
8
|
+
return arrayWorkpiece;
|
|
9
|
+
}
|
|
10
|
+
let similarElementsGroups = ObjectTypeElementsArrayOrdererByMultipleFields.assignMultipleElementsToGroups(arrayWorkpiece, elementsComparers[0]);
|
|
11
|
+
for (const compareElements of elementsComparers.slice(1)) {
|
|
12
|
+
similarElementsGroups =
|
|
13
|
+
ObjectTypeElementsArrayOrdererByMultipleFields.updateGroups(similarElementsGroups, compareElements);
|
|
14
|
+
}
|
|
15
|
+
similarElementsGroups =
|
|
16
|
+
ObjectTypeElementsArrayOrdererByMultipleFields.updateGroups(similarElementsGroups, finalElementsStableComparer);
|
|
17
|
+
return similarElementsGroups.flatMap((group) => group.elements);
|
|
18
|
+
}
|
|
19
|
+
static updateGroups(groups, compareElements) {
|
|
20
|
+
const updatedGroups = [];
|
|
21
|
+
for (const group of groups) {
|
|
22
|
+
if (group.elements.length === 1) {
|
|
23
|
+
updatedGroups.push({ elements: [...group.elements] });
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
updatedGroups.push(...ObjectTypeElementsArrayOrdererByMultipleFields.assignMultipleElementsToGroups(group.elements, compareElements));
|
|
27
|
+
}
|
|
28
|
+
return updatedGroups;
|
|
29
|
+
}
|
|
30
|
+
static assignMultipleElementsToGroups(elementsOfParentGroup, compareElements) {
|
|
31
|
+
const groups = [{ elements: [elementsOfParentGroup[0]] }];
|
|
32
|
+
for (let index = 1; index < elementsOfParentGroup.length; index++) {
|
|
33
|
+
const targetElement = elementsOfParentGroup[index];
|
|
34
|
+
let hasCurrentElementBeenAssignedToGroup = false;
|
|
35
|
+
let wasFirstElementGreaterThanSecondOne = false;
|
|
36
|
+
for (const [groupIndex, group] of groups.entries()) {
|
|
37
|
+
const comparisonResult = compareElements(targetElement, group.elements[0]);
|
|
38
|
+
if (Reflect.get(comparisonResult, "firstElementIsStrictlyGreater") === true) {
|
|
39
|
+
wasFirstElementGreaterThanSecondOne = true;
|
|
40
|
+
}
|
|
41
|
+
else if ("elementsAreEquals" in comparisonResult) {
|
|
42
|
+
group.elements.push(targetElement);
|
|
43
|
+
hasCurrentElementBeenAssignedToGroup = true;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
if (wasFirstElementGreaterThanSecondOne) {
|
|
48
|
+
groups.splice(groupIndex, 0, { elements: [targetElement] });
|
|
49
|
+
hasCurrentElementBeenAssignedToGroup = true;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!hasCurrentElementBeenAssignedToGroup) {
|
|
55
|
+
if (wasFirstElementGreaterThanSecondOne) {
|
|
56
|
+
groups.push({ elements: [targetElement] });
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
groups.unshift({ elements: [targetElement] });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return groups;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.ObjectTypeElementsArrayOrdererByMultipleFields = ObjectTypeElementsArrayOrdererByMultipleFields;
|
|
67
|
+
exports.default = ObjectTypeElementsArrayOrdererByMultipleFields.order;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = removeElementsFromSet;
|
|
4
|
+
function removeElementsFromSet({ targetSet, elementsToDelete, mutably }) {
|
|
5
|
+
const workpiece = mutably === false ? new Set(targetSet) : targetSet;
|
|
6
|
+
for (const element of elementsToDelete) {
|
|
7
|
+
workpiece.delete(element);
|
|
8
|
+
}
|
|
9
|
+
return workpiece;
|
|
10
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.removeThenGetSpecificNumberOfSetElements = removeThenGetSpecificNumberOfSetElements;
|
|
7
|
+
const Logger_1 = __importDefault(require("../Logging/Logger"));
|
|
8
|
+
const UnexpectedEventError_1 = __importDefault(require("../Errors/UnexpectedEvent/UnexpectedEventError"));
|
|
9
|
+
const removeElementsFromSet_1 = __importDefault(require("./removeElementsFromSet"));
|
|
10
|
+
function removeThenGetSpecificNumberOfSetElements({ targetSet, elementsCount, mustThrowErrorIfSetHasLessElementsThanSpecified, mutably }) {
|
|
11
|
+
const workpiece = Array.from(targetSet);
|
|
12
|
+
if (elementsCount > workpiece.length && mustThrowErrorIfSetHasLessElementsThanSpecified) {
|
|
13
|
+
Logger_1.default.throwErrorWithFormattedMessage({
|
|
14
|
+
errorInstance: new UnexpectedEventError_1.default(`Target set has ${workpiece.length} elements while at least ${elementsCount} expected.`),
|
|
15
|
+
title: UnexpectedEventError_1.default.localization.defaultTitle,
|
|
16
|
+
occurrenceLocation: "removeThenGetSpecificNumberOfSetElements(compoundParameter)"
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
const removedElements = workpiece.slice(0, elementsCount);
|
|
20
|
+
if (mutably === true) {
|
|
21
|
+
return {
|
|
22
|
+
removedElements,
|
|
23
|
+
updatedSet: (0, removeElementsFromSet_1.default)({ targetSet, elementsToDelete: removedElements, mutably: true })
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
removedElements: workpiece.slice(0, elementsCount),
|
|
28
|
+
updatedSet: new Set(workpiece.slice(elementsCount))
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = addPenultimateFileNameExtension;
|
|
7
|
+
const removeSpecificCharacterFromCertainPosition_1 = __importDefault(require("../../../removeSpecificCharacterFromCertainPosition"));
|
|
8
|
+
const extractMatchingsWithRegularExpression_1 = __importDefault(require("../../../RegularExpressions/extractMatchingsWithRegularExpression"));
|
|
9
|
+
const splitString_1 = __importDefault(require("../../../splitString"));
|
|
10
|
+
const addElementsToArray_1 = __importDefault(require("../../../../Arrays/04-AddingOfElements/addElementsToArray"));
|
|
11
|
+
function addPenultimateFileNameExtension({ targetPath, targetFileNamePenultimateExtensionWithOrWithoutLeadingDot, mustAppendDuplicateEvenIfTargetPenultimateFileNameExtensionAlreadyExist, mustAppendLastFileNameExtensionInsteadIfThereIsNoOne }) {
|
|
12
|
+
const targetFileNamePenultimateExtensionWithoutLeadingDot = (0, removeSpecificCharacterFromCertainPosition_1.default)({
|
|
13
|
+
targetString: targetFileNamePenultimateExtensionWithOrWithoutLeadingDot,
|
|
14
|
+
targetCharacter: ".",
|
|
15
|
+
fromFirstPosition: true
|
|
16
|
+
});
|
|
17
|
+
if (!targetPath.includes(".")) {
|
|
18
|
+
const { updatedString: targetPathWithoutFragment, extractedMatching: targetPathFragmentWithLeadingHash } = (0, extractMatchingsWithRegularExpression_1.default)(targetPath, /#.+$/u, { mustExpectOneOrZeroMatchings: true });
|
|
19
|
+
return mustAppendLastFileNameExtensionInsteadIfThereIsNoOne ?
|
|
20
|
+
`${targetPathWithoutFragment}.${targetFileNamePenultimateExtensionWithoutLeadingDot}` +
|
|
21
|
+
(targetPathFragmentWithLeadingHash ?? "") :
|
|
22
|
+
targetPath;
|
|
23
|
+
}
|
|
24
|
+
const dotSeparatedPathSegments = (0, splitString_1.default)(targetPath, ".");
|
|
25
|
+
if (dotSeparatedPathSegments[dotSeparatedPathSegments.length - 2] === targetFileNamePenultimateExtensionWithoutLeadingDot &&
|
|
26
|
+
!mustAppendDuplicateEvenIfTargetPenultimateFileNameExtensionAlreadyExist) {
|
|
27
|
+
return targetPath;
|
|
28
|
+
}
|
|
29
|
+
return (0, addElementsToArray_1.default)({
|
|
30
|
+
targetArray: dotSeparatedPathSegments,
|
|
31
|
+
newElements: [targetFileNamePenultimateExtensionWithoutLeadingDot],
|
|
32
|
+
mutably: true,
|
|
33
|
+
toPosition__numerationFrom1: dotSeparatedPathSegments.length
|
|
34
|
+
}).
|
|
35
|
+
join(".");
|
|
36
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = removeLastFileNameExtensionFromPath;
|
|
7
|
+
const splitString_1 = __importDefault(require("../../../splitString"));
|
|
8
|
+
const replaceDoubleBackslashesWithForwardSlashes_1 = __importDefault(require("../../../replaceDoubleBackslashesWithForwardSlashes"));
|
|
9
|
+
const getLastElementOfArray_1 = __importDefault(require("../../../../Arrays/01-RetrievingOfElements/getLastElementOfArray"));
|
|
10
|
+
const isNull_1 = __importDefault(require("../../../../TypeGuards/EmptyTypes/isNull"));
|
|
11
|
+
function removeLastFileNameExtensionFromPath(targetPath) {
|
|
12
|
+
const pathExplodedToSegments = (0, splitString_1.default)((0, replaceDoubleBackslashesWithForwardSlashes_1.default)(targetPath), "/");
|
|
13
|
+
const lastPathSegment = (0, getLastElementOfArray_1.default)(pathExplodedToSegments);
|
|
14
|
+
if ((0, isNull_1.default)(lastPathSegment) || !lastPathSegment.includes(".") || lastPathSegment === ".") {
|
|
15
|
+
return targetPath;
|
|
16
|
+
}
|
|
17
|
+
const fileNameWithAllFileNameExtensions = (0, splitString_1.default)(lastPathSegment, ".");
|
|
18
|
+
return [
|
|
19
|
+
...pathExplodedToSegments.length > 1 ? pathExplodedToSegments.slice(0, -1) : [],
|
|
20
|
+
fileNameWithAllFileNameExtensions.
|
|
21
|
+
slice(0, -1).
|
|
22
|
+
join(".")
|
|
23
|
+
].
|
|
24
|
+
join("/");
|
|
25
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*!
|
|
3
|
-
* @yamato-daiwa/es-extensions v1.
|
|
3
|
+
* @yamato-daiwa/es-extensions v1.10
|
|
4
4
|
* (c) 2023 Yamato Daiwa Co., Ltd.
|
|
5
5
|
* Released under the MIT License.
|
|
6
6
|
*/
|
|
@@ -8,12 +8,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
9
|
};
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.ValuesDeepCopier = exports.undefinedToNull = exports.undefinedToFalse = exports.undefinedToEmptyString = exports.undefinedToEmptyArray = exports.nullToZero = exports.nullToUndefined = exports.nullToEmptyString = exports.emptyStringToUndefined = exports.emptyStringToTrue = exports.emptyStringToNull = exports.isFunctionLike = exports.isElementOfEnumeration = exports.isBoolean = exports.IsStringOfLengthCheck = exports.isStringOfLength = exports.isString = exports.isNonEmptyString = exports.isEmptyString = exports.areStringifiedDigitsOnly = exports.isPossiblyReadonlyParsedJSON_Object = exports.isPossiblyReadonlyParsedJSON = exports.isNonNullObject = exports.isNonEmptyObject = exports.isNonEmptyArbitraryObject = exports.isEmptyObject = exports.isArbitraryObject = exports.isPositiveIntegerOrZero = void 0;
|
|
11
|
+
exports.DataMocking = exports.MINIMAL_CHARACTERS_COUNT_OF_EMAIL_ADDRESS = exports.MAXIMAL_CHARACTERS_COUNT_OF_EMAIL_ADDRESS = exports.EMAIL_ADDRESS_VALID_PATTERN = exports.CHARACTERS_COUNT_IN_FULL_ISO8601_STRING = exports.MAXIMAL_CHARACTERS_COUNT_IN_DATE_PART_OF_ISO8601_STRING = exports.SECONDS_COUNT_IN_MINUTE = exports.MonthsNames = exports.MONTHS_COUNT_IN_YEAR = exports.MINUTES_COUNT_IN_HOUR = exports.MINIMAL_SUPPORTED_UNIX_MILLISECONDS_AMOUNT = exports.MAXIMAL_SUPPORTED_UNIX_MILLISECONDS_AMOUNT = exports.MAXIMAL_DAYS_IN_MONTH = exports.HOURS_COUNT_IN_STELLAR_DAY = exports.DaysOfWeekNames = exports.DAYS_COUNT_IN_WEEK = exports.IntegerDataTypes = exports.ServerErrorsHTTP_StatusCodes = exports.ClientErrorsHTTP_StatusCodes = exports.RedirectionResponsesHTTP_StatusCodes = exports.SuccessfulResponsesHTTP_StatusCodes = exports.InformationalResponsesHTTP_StatusCodes = exports.HTTP_StatusCodes = exports.NETWORK_PORT_MINIMAL_VALUE = exports.NETWORK_PORT_MAXIMAL_VALUE = exports.HTTPS_DEFAULT_PORT = exports.HTTP_Methods = exports.HTTP_DEFAULT_PORT = exports.YDEE_BUG_REPORTING_PAGE_URI = exports.readonlyArrayToMutableOne = exports.addElementsToArrayIfTheyAreNotPresentOtherwiseRemove = exports.twoDimensionalizeArray = exports.removeArrayElementsByPredicates = exports.removeArrayElementsByIndexes = exports.orderArrayOfObjectTypeElementsByMultipleFields = exports.ObjectTypeElementsArrayOrdererByMultipleFields = exports.swapArrayElements = exports.moveArrayElementToOnePosition = exports.replaceArrayElementsByPredicates = exports.replaceArrayElementsByIndexesImmutably = exports.addElementsToArray = exports.cropArray = exports.getIndexOfArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne = exports.getIndexesOfSatisfiesThePredicateArrayElements = exports.getLastElementOfArray = exports.getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne = exports.createArrayOfNaturalNumbers = exports.serializeURI_QueryParameters = exports.FetchAPI_Service = exports.AJAX_Service = void 0;
|
|
12
|
+
exports.InvalidConfigError = exports.interProcessInteractionFailedErrorLocalization__english = exports.InterProcessInteractionFailedError = exports.incompatiblePropertiesInObjectTypeParameterErrorLocalization__english = exports.IncompatiblePropertiesInObjectTypeParameterError = exports.improperUsageErrorLocalization__english = exports.ImproperUsageError = exports.fileWritingFailedErrorLocalization__english = exports.FileWritingFailedError = exports.fileReadingFailedErrorLocalization__english = exports.FileReadingFailedError = exports.dataSubmittingFailedErrorLocalization__english = exports.DataSubmittingFailedError = exports.dataRetrievingFailedErrorLocalization__english = exports.DataRetrievingFailedError = exports.DOM_ElementRetrievingFailedErrorLocalization__english = exports.DOM_ElementRetrievingFailedError = exports.crossBrowserIssueErrorLocalization__english = exports.CrossBrowserIssueError = exports.configFileNotFoundErrorLocalization__english = exports.ConfigFileNotFoundError = exports.classRequiredInitializationHasNotBeenExecutedErrorLocalization__english = exports.ClassRequiredInitializationHasNotBeenExecutedError = exports.classRedundantSubsequentInitializationErrorLocalization__english = exports.ClassRedundantSubsequentInitializationError = exports.algorithmMismatchErrorLocalization__english = exports.AlgorithmMismatchError = exports.substituteWhenUndefined = exports.substituteWhenNull = exports.Timer = exports.TimePoint = exports.secondsToMilliseconds = exports.millisecondsToSeconds = exports.isValidNativeDate = exports.hasTimeCome = exports.getYearOfPreviousMonth = exports.getYearOfNextMonth = exports.getPreviousMonthNumber = exports.getNextMonthNumber = exports.getMonthNumberByName = exports.getMonthNameByNumber = exports.getISO8601_StringWithoutTimePart = exports.getDaysCountInSpecificMonth = exports.DateWithoutTime = exports.convert24_HoursFormatTo12_HoursFormat = exports.CalendarBuilder = exports.MockGatewayHelperLocalization__English = exports.MockGatewayHelper = exports.LocalizableSampleDataRepository = exports.LocalizableEntitiesByIDsMap = void 0;
|
|
13
|
+
exports.getRandomBoolean = exports.getRandomArrayElement = exports.PromisesQueue = exports.getItemsOfPaginationPage = exports.computeLastItemNumberForSpecificPaginationPage = exports.computeFirstItemNumberForSpecificPaginationPage = exports.PaginationCollection = exports.setObjectProperties = exports.getObjectPropertySafely = exports.getEntriesOfObjectWithFixedKeysSetAndUniformValues = exports.separateEach4_DigitsGroupWithComma = exports.separateEach3_DigitsGroupWithComma = exports.roundUpToSpecificIntegerPlaceValue = exports.roundToSpecifiedNearestDecimalPlaceValue = exports.roundToSpecificNearestIntegerPlaceValue = exports.roundDownToSpecificIntegerPlaceValue = exports.limitMinimalValue = exports.limitMinimalAndMaximalValues = exports.limitMaximalValue = exports.isStringifiedNonNegativeIntegerOfRegularNotation = exports.getArithmeticMean = exports.formatNumberWith4_KetaKanji = exports.replaceValuesInMap = exports.removeEntriesFromMap = exports.mergeMaps = exports.invertMapImmutably = exports.getOneEntryOfMap = exports.getExpectedToBeNonUndefinedMapValue = exports.filterMap = exports.createMapBasedOnOtherMap = exports.addEntriesToMap = exports.PoliteErrorsMessagesBuilder__English = exports.PoliteErrorsMessagesBuilder = exports.loggerLocalization__english = exports.Logger = exports.StringTypeID_Generator = exports.encodeFileToBase64 = exports.HTTP_ResponseBodyParsingFailureErrorLocalization__english = exports.HTTP_ResponseBodyParsingFailureError = exports.unsupportedScenarioErrorLocalization__english = exports.UnsupportedScenarioError = exports.unexpectedEventErrorLocalization__english = exports.UnexpectedEventError = exports.moduleDynamicLoadingFailedErrorLocalization__english = exports.ModuleDynamicLoadingFailedError = exports.invalidParameterValueErrorLocalization__english = exports.InvalidParameterValueError = exports.invalidExternalDataErrorLocalization__english = exports.InvalidExternalDataError = exports.invalidConfigErrorLocalization__english = void 0;
|
|
14
|
+
exports.generateMailtoURI_Scheme = exports.replaceLastURI_PathSegment = exports.explodeURI_PathToSegments = exports.getURI_Fragment = exports.appendFragmentToURI = exports.extractFileNameWithoutLastExtension = exports.extractFileNameWithAllExtensionsFromPath = exports.extractFileNameWithoutAnyExtensions = exports.removeSpecifiedFileNameExtensionsFromPath = exports.removeLastFileNameExtensionFromPath = exports.removeAllFileNameExtensions = exports.extractLastExtensionOfFileName = exports.extractAllFileNameExtensions = exports.appendLastFileNameExtension = exports.addPenultimateFileNameExtension = exports.replaceMatchesWithRegularExpressionToDynamicValue = exports.extractMatchingsWithRegularExpression = exports.getMatchingWithFirstRegularExpressionCapturingGroup = exports.LineSeparators = exports.getLineSeparatorType = exports.uppercaseLatinCharacters = exports.stringifiedDigits = exports.SpaceCharactersStringifiedHexCharactersForRegularExpressionWithUnicodeFlag = exports.SpaceCharacters = exports.lowercaseLatinCharacters = exports.EscapeCharacters = exports.removeThenGetSpecificNumberOfSetElements = exports.removeSetElementsByPredicates = exports.removeOneElementFromSet = exports.removeElementsFromSet = exports.mergeSets = exports.getOneElementOfSet = exports.createSetBasedOnOtherSet = exports.createSetBasedOnAnyArrayLikeCollection = exports.addElementsToSet = exports.destringifyBooleanValueIfPossible = exports.convertPotentialStringToFloatIfPossible = exports.convertPotentialStringToIntegerIfPossible = exports.convertPotentialStringToNumberIfPossible = exports.rawObjectDataProcessorLocalization__english = exports.RawObjectDataProcessor = exports.removeRandomArrayElement = exports.getSpecificBooleanValueWithProbability = exports.getRandomSubarray = exports.gettingOfRandomStringLocalization__english = exports.RandomStringsGenerator = exports.getRandomString = exports.getRandomObjectPropertyValue = exports.getRandomLatinCharacter = exports.getRandomInteger = void 0;
|
|
15
|
+
exports.isNaturalNumber = exports.isIntegerOfAnySign = exports.isDecimalFractionOfAnySign = exports.isBigInt = exports.isUndefined = exports.isNull = exports.isNotUndefined = exports.isNotNull = exports.isNeitherUndefinedNorNull = exports.isEitherUndefinedOrNull = exports.isNonEmptyArray = exports.isEmptyArray = exports.IsArrayOfLengthCheck = exports.isArrayOfLength = exports.isArrayOfCertainTypeElements = exports.trimSpaces = exports.toUpperCamelCase = exports.toScreamingSnakeCase = exports.toLowerCamelCase = exports.surroundLabelByOrnament = exports.splitString = exports.reverseString = exports.replaceDoubleBackslashesWithForwardSlashes = exports.replaceBrHTML_TagToNewLineEscapeSequence = exports.replace2_OrMoreSpacesTo1 = exports.removeSpecificCharacterFromCertainPosition = exports.removeNthCharacter = exports.removeNonDigitsCharacters = exports.removeLastCharacter = exports.removeAllSpecifiedCharacters = exports.isStringIncludingAtLeastOneOfSubstrings = exports.isIPv4_AddressLiesInRange = exports.insertSubstringIf = exports.insertSubstring = exports.IndentationCoordinator = exports.hasStringOnlySpecificCharacters = exports.getPositionsOfAllSubstringOccurrences = exports.getLastCharacter = exports.getEnglishAbbreviatedOrdinalNumber = exports.explodeStringToLines = exports.explodeCasedPhraseToWords = exports.EmailAddress = exports.cropString = exports.capitalizeFirstCharacter = exports.stringifyAndFormatArbitraryValue = exports.ArbitraryValueFormatter = exports.appendCharacterIfItDoesNotPresentInLastPosition = exports.adjustCharactersCount = exports.removeSpecificSegmentsFromURI_Path = exports.getURI_PartWithoutFragment = void 0;
|
|
16
|
+
exports.ValuesDeepCopier = exports.undefinedToNull = exports.undefinedToFalse = exports.undefinedToEmptyString = exports.undefinedToEmptyArray = exports.nullToZero = exports.nullToUndefined = exports.nullToEmptyString = exports.emptyStringToUndefined = exports.emptyStringToTrue = exports.emptyStringToNull = exports.isFunctionLike = exports.isElementOfEnumeration = exports.isBoolean = exports.IsStringOfLengthCheck = exports.isStringOfLength = exports.isString = exports.isNonEmptyString = exports.isEmptyString = exports.areStringifiedDigitsOnly = exports.isPossiblyReadonlyParsedJSON_Object = exports.isPossiblyReadonlyParsedJSON = exports.isNonNullObject = exports.isNonEmptyObject = exports.isNonEmptyArbitraryObject = exports.isEmptyObject = exports.isArbitraryObject = exports.isPositiveIntegerOrZero = exports.isPositiveDecimalFraction = exports.isNumber = exports.isNegativeIntegerOrZero = exports.isNegativeInteger = exports.isNegativeDecimalFraction = exports.isNaturalNumberOrZero = void 0;
|
|
17
17
|
var AJAX_Service_1 = require("./AJAX/AJAX_Service");
|
|
18
18
|
Object.defineProperty(exports, "AJAX_Service", { enumerable: true, get: function () { return __importDefault(AJAX_Service_1).default; } });
|
|
19
19
|
var FetchAPI_Service_1 = require("./AJAX/FetchAPI_Service");
|
|
@@ -42,6 +42,9 @@ var moveArrayElementToOnePosition_1 = require("./Arrays/06-PermutationsOfElement
|
|
|
42
42
|
Object.defineProperty(exports, "moveArrayElementToOnePosition", { enumerable: true, get: function () { return __importDefault(moveArrayElementToOnePosition_1).default; } });
|
|
43
43
|
var swapArrayElements_1 = require("./Arrays/06-PermutationsOfElements/swapArrayElements");
|
|
44
44
|
Object.defineProperty(exports, "swapArrayElements", { enumerable: true, get: function () { return __importDefault(swapArrayElements_1).default; } });
|
|
45
|
+
var ObjectTypeElementsArrayOrdererByMultipleFields_1 = require("./Arrays/06-PermutationsOfElements/ObjectTypeElementsArrayOrdererByMultipleFields");
|
|
46
|
+
Object.defineProperty(exports, "ObjectTypeElementsArrayOrdererByMultipleFields", { enumerable: true, get: function () { return ObjectTypeElementsArrayOrdererByMultipleFields_1.ObjectTypeElementsArrayOrdererByMultipleFields; } });
|
|
47
|
+
Object.defineProperty(exports, "orderArrayOfObjectTypeElementsByMultipleFields", { enumerable: true, get: function () { return __importDefault(ObjectTypeElementsArrayOrdererByMultipleFields_1).default; } });
|
|
45
48
|
var removeArrayElementsByIndexes_1 = require("./Arrays/07-RemovingOfElements/removeArrayElementsByIndexes");
|
|
46
49
|
Object.defineProperty(exports, "removeArrayElementsByIndexes", { enumerable: true, get: function () { return __importDefault(removeArrayElementsByIndexes_1).default; } });
|
|
47
50
|
var removeArrayElementsByPredicates_1 = require("./Arrays/07-RemovingOfElements/removeArrayElementsByPredicates");
|
|
@@ -323,10 +326,14 @@ var getOneElementOfSet_1 = require("./Sets/getOneElementOfSet");
|
|
|
323
326
|
Object.defineProperty(exports, "getOneElementOfSet", { enumerable: true, get: function () { return __importDefault(getOneElementOfSet_1).default; } });
|
|
324
327
|
var mergeSets_1 = require("./Sets/mergeSets");
|
|
325
328
|
Object.defineProperty(exports, "mergeSets", { enumerable: true, get: function () { return __importDefault(mergeSets_1).default; } });
|
|
329
|
+
var removeElementsFromSet_1 = require("./Sets/removeElementsFromSet");
|
|
330
|
+
Object.defineProperty(exports, "removeElementsFromSet", { enumerable: true, get: function () { return __importDefault(removeElementsFromSet_1).default; } });
|
|
326
331
|
var removeOneElementOfSet_1 = require("./Sets/removeOneElementOfSet");
|
|
327
332
|
Object.defineProperty(exports, "removeOneElementFromSet", { enumerable: true, get: function () { return __importDefault(removeOneElementOfSet_1).default; } });
|
|
328
333
|
var removeSetElementsByPredicates_1 = require("./Sets/removeSetElementsByPredicates");
|
|
329
334
|
Object.defineProperty(exports, "removeSetElementsByPredicates", { enumerable: true, get: function () { return removeSetElementsByPredicates_1.removeSetElementsByPredicates; } });
|
|
335
|
+
var removeThenGetSpecificNumberOfSetElements_1 = require("./Sets/removeThenGetSpecificNumberOfSetElements");
|
|
336
|
+
Object.defineProperty(exports, "removeThenGetSpecificNumberOfSetElements", { enumerable: true, get: function () { return removeThenGetSpecificNumberOfSetElements_1.removeThenGetSpecificNumberOfSetElements; } });
|
|
330
337
|
var EscapeCharacters_1 = require("./Strings/CharactersAssets/EscapeCharacters");
|
|
331
338
|
Object.defineProperty(exports, "EscapeCharacters", { enumerable: true, get: function () { return __importDefault(EscapeCharacters_1).default; } });
|
|
332
339
|
var lowercaseLatinCharacters_1 = require("./Strings/CharactersAssets/lowercaseLatinCharacters");
|
|
@@ -349,6 +356,8 @@ var extractMatchingsWithRegularExpression_1 = require("./Strings/RegularExpressi
|
|
|
349
356
|
Object.defineProperty(exports, "extractMatchingsWithRegularExpression", { enumerable: true, get: function () { return __importDefault(extractMatchingsWithRegularExpression_1).default; } });
|
|
350
357
|
var replaceMatchesWithRegularExpressionToDynamicValue_1 = require("./Strings/RegularExpressions/replaceMatchesWithRegularExpressionToDynamicValue");
|
|
351
358
|
Object.defineProperty(exports, "replaceMatchesWithRegularExpressionToDynamicValue", { enumerable: true, get: function () { return __importDefault(replaceMatchesWithRegularExpressionToDynamicValue_1).default; } });
|
|
359
|
+
var addPenultimateFileNameExtension_1 = require("./Strings/URI/FilesAndDirectories/FileNameExtensions/addPenultimateFileNameExtension");
|
|
360
|
+
Object.defineProperty(exports, "addPenultimateFileNameExtension", { enumerable: true, get: function () { return __importDefault(addPenultimateFileNameExtension_1).default; } });
|
|
352
361
|
var appendLastFileNameExtension_1 = require("./Strings/URI/FilesAndDirectories/FileNameExtensions/appendLastFileNameExtension");
|
|
353
362
|
Object.defineProperty(exports, "appendLastFileNameExtension", { enumerable: true, get: function () { return __importDefault(appendLastFileNameExtension_1).default; } });
|
|
354
363
|
var extractAllFileNameExtensions_1 = require("./Strings/URI/FilesAndDirectories/FileNameExtensions/extractAllFileNameExtensions");
|
|
@@ -357,6 +366,8 @@ var extractLastExtensionOfFileName_1 = require("./Strings/URI/FilesAndDirectorie
|
|
|
357
366
|
Object.defineProperty(exports, "extractLastExtensionOfFileName", { enumerable: true, get: function () { return __importDefault(extractLastExtensionOfFileName_1).default; } });
|
|
358
367
|
var removeAllFileNameExtensions_1 = require("./Strings/URI/FilesAndDirectories/FileNameExtensions/removeAllFileNameExtensions");
|
|
359
368
|
Object.defineProperty(exports, "removeAllFileNameExtensions", { enumerable: true, get: function () { return __importDefault(removeAllFileNameExtensions_1).default; } });
|
|
369
|
+
var removeLastFileNameExtensionFromPath_1 = require("./Strings/URI/FilesAndDirectories/FileNameExtensions/removeLastFileNameExtensionFromPath");
|
|
370
|
+
Object.defineProperty(exports, "removeLastFileNameExtensionFromPath", { enumerable: true, get: function () { return __importDefault(removeLastFileNameExtensionFromPath_1).default; } });
|
|
360
371
|
var removeSpecifiedFileNameExtensionsFromPath_1 = require("./Strings/URI/FilesAndDirectories/FileNameExtensions/removeSpecifiedFileNameExtensionsFromPath");
|
|
361
372
|
Object.defineProperty(exports, "removeSpecifiedFileNameExtensionsFromPath", { enumerable: true, get: function () { return __importDefault(removeSpecifiedFileNameExtensionsFromPath_1).default; } });
|
|
362
373
|
var extractFileNameWithoutAnyExtensions_1 = require("./Strings/URI/FilesAndDirectories/Stem/extractFileNameWithoutAnyExtensions");
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ArbitraryObject } from "../../Types/ArbitraryObject";
|
|
2
|
+
export declare abstract class ObjectTypeElementsArrayOrdererByMultipleFields {
|
|
3
|
+
static order<ObjectTypeElement extends ArbitraryObject>({ targetArray, mutably, elementsComparers, finalElementsStableComparer }: Readonly<({
|
|
4
|
+
targetArray: ReadonlyArray<ObjectTypeElement>;
|
|
5
|
+
mutably: false;
|
|
6
|
+
} | {
|
|
7
|
+
targetArray: Array<ObjectTypeElement>;
|
|
8
|
+
mutably: true;
|
|
9
|
+
}) & {
|
|
10
|
+
elementsComparers: ReadonlyArray<ObjectTypeElementsArrayOrdererByMultipleFields.ElementsComparer<ObjectTypeElement>>;
|
|
11
|
+
finalElementsStableComparer: ObjectTypeElementsArrayOrdererByMultipleFields.ElementsStableComparer<ObjectTypeElement>;
|
|
12
|
+
}>): Array<ObjectTypeElement>;
|
|
13
|
+
private static updateGroups;
|
|
14
|
+
private static assignMultipleElementsToGroups;
|
|
15
|
+
}
|
|
16
|
+
export declare namespace ObjectTypeElementsArrayOrdererByMultipleFields {
|
|
17
|
+
type ElementsComparer<ArrayElement> = (oneElement: ArrayElement, otherElement: ArrayElement) => ElementsComparer.Result;
|
|
18
|
+
namespace ElementsComparer {
|
|
19
|
+
type Result = Readonly<{
|
|
20
|
+
firstElementIsStrictlyGreater: true;
|
|
21
|
+
} | {
|
|
22
|
+
elementsAreEquals: true;
|
|
23
|
+
} | {
|
|
24
|
+
firstElementIsStrictlySmaller: true;
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
27
|
+
type SimilarElementsGroup<ArrayElement> = {
|
|
28
|
+
elements: Array<ArrayElement>;
|
|
29
|
+
};
|
|
30
|
+
type ElementsStableComparer<ArrayElement> = (oneElement: ArrayElement, otherElement: ArrayElement) => ElementsStableComparer.Result;
|
|
31
|
+
namespace ElementsStableComparer {
|
|
32
|
+
type Result = Readonly<{
|
|
33
|
+
firstElementIsStrictlyGreater: boolean;
|
|
34
|
+
}>;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
declare const _default: typeof ObjectTypeElementsArrayOrdererByMultipleFields.order;
|
|
38
|
+
export default _default;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export class ObjectTypeElementsArrayOrdererByMultipleFields {
|
|
2
|
+
static order({ targetArray, mutably, elementsComparers, finalElementsStableComparer }) {
|
|
3
|
+
const arrayWorkpiece = mutably ? targetArray : [...targetArray];
|
|
4
|
+
if (arrayWorkpiece.length < 2 || elementsComparers.length === 0) {
|
|
5
|
+
return arrayWorkpiece;
|
|
6
|
+
}
|
|
7
|
+
let similarElementsGroups = ObjectTypeElementsArrayOrdererByMultipleFields.assignMultipleElementsToGroups(arrayWorkpiece, elementsComparers[0]);
|
|
8
|
+
for (const compareElements of elementsComparers.slice(1)) {
|
|
9
|
+
similarElementsGroups =
|
|
10
|
+
ObjectTypeElementsArrayOrdererByMultipleFields.updateGroups(similarElementsGroups, compareElements);
|
|
11
|
+
}
|
|
12
|
+
similarElementsGroups =
|
|
13
|
+
ObjectTypeElementsArrayOrdererByMultipleFields.updateGroups(similarElementsGroups, finalElementsStableComparer);
|
|
14
|
+
return similarElementsGroups.flatMap((group) => group.elements);
|
|
15
|
+
}
|
|
16
|
+
static updateGroups(groups, compareElements) {
|
|
17
|
+
const updatedGroups = [];
|
|
18
|
+
for (const group of groups) {
|
|
19
|
+
if (group.elements.length === 1) {
|
|
20
|
+
updatedGroups.push({ elements: [...group.elements] });
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
updatedGroups.push(...ObjectTypeElementsArrayOrdererByMultipleFields.assignMultipleElementsToGroups(group.elements, compareElements));
|
|
24
|
+
}
|
|
25
|
+
return updatedGroups;
|
|
26
|
+
}
|
|
27
|
+
static assignMultipleElementsToGroups(elementsOfParentGroup, compareElements) {
|
|
28
|
+
const groups = [{ elements: [elementsOfParentGroup[0]] }];
|
|
29
|
+
for (let index = 1; index < elementsOfParentGroup.length; index++) {
|
|
30
|
+
const targetElement = elementsOfParentGroup[index];
|
|
31
|
+
let hasCurrentElementBeenAssignedToGroup = false;
|
|
32
|
+
let wasFirstElementGreaterThanSecondOne = false;
|
|
33
|
+
for (const [groupIndex, group] of groups.entries()) {
|
|
34
|
+
const comparisonResult = compareElements(targetElement, group.elements[0]);
|
|
35
|
+
if (Reflect.get(comparisonResult, "firstElementIsStrictlyGreater") === true) {
|
|
36
|
+
wasFirstElementGreaterThanSecondOne = true;
|
|
37
|
+
}
|
|
38
|
+
else if ("elementsAreEquals" in comparisonResult) {
|
|
39
|
+
group.elements.push(targetElement);
|
|
40
|
+
hasCurrentElementBeenAssignedToGroup = true;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
if (wasFirstElementGreaterThanSecondOne) {
|
|
45
|
+
groups.splice(groupIndex, 0, { elements: [targetElement] });
|
|
46
|
+
hasCurrentElementBeenAssignedToGroup = true;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (!hasCurrentElementBeenAssignedToGroup) {
|
|
52
|
+
if (wasFirstElementGreaterThanSecondOne) {
|
|
53
|
+
groups.push({ elements: [targetElement] });
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
groups.unshift({ elements: [targetElement] });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return groups;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export default ObjectTypeElementsArrayOrdererByMultipleFields.order;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export default function removeElementsFromSet<ElementOfSet>({ targetSet, elementsToDelete, mutably }: Readonly<{
|
|
2
|
+
elementsToDelete: ReadonlyArray<ElementOfSet> | ReadonlySet<ElementOfSet>;
|
|
3
|
+
} & ({
|
|
4
|
+
mutably?: true;
|
|
5
|
+
targetSet: Set<ElementOfSet>;
|
|
6
|
+
} | {
|
|
7
|
+
mutably: false;
|
|
8
|
+
targetSet: ReadonlySet<ElementOfSet>;
|
|
9
|
+
})>): Set<ElementOfSet>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare namespace RemovingAndGettingOfSpecificNumberElementsFromSet {
|
|
2
|
+
type Result<ElementOfSet> = Readonly<{
|
|
3
|
+
removedElements: Array<ElementOfSet>;
|
|
4
|
+
updatedSet: Set<ElementOfSet>;
|
|
5
|
+
}>;
|
|
6
|
+
}
|
|
7
|
+
export declare function removeThenGetSpecificNumberOfSetElements<ElementOfSet>({ targetSet, elementsCount, mustThrowErrorIfSetHasLessElementsThanSpecified, mutably }: Readonly<{
|
|
8
|
+
elementsCount: number;
|
|
9
|
+
mustThrowErrorIfSetHasLessElementsThanSpecified: boolean;
|
|
10
|
+
} & ({
|
|
11
|
+
mutably?: true;
|
|
12
|
+
targetSet: Set<ElementOfSet>;
|
|
13
|
+
} | {
|
|
14
|
+
mutably: false;
|
|
15
|
+
targetSet: ReadonlySet<ElementOfSet>;
|
|
16
|
+
})>): RemovingAndGettingOfSpecificNumberElementsFromSet.Result<ElementOfSet>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Logger from "../Logging/Logger";
|
|
2
|
+
import UnexpectedEventError from "../Errors/UnexpectedEvent/UnexpectedEventError";
|
|
3
|
+
import removeElementsFromSet from "./removeElementsFromSet";
|
|
4
|
+
export function removeThenGetSpecificNumberOfSetElements({ targetSet, elementsCount, mustThrowErrorIfSetHasLessElementsThanSpecified, mutably }) {
|
|
5
|
+
const workpiece = Array.from(targetSet);
|
|
6
|
+
if (elementsCount > workpiece.length && mustThrowErrorIfSetHasLessElementsThanSpecified) {
|
|
7
|
+
Logger.throwErrorWithFormattedMessage({
|
|
8
|
+
errorInstance: new UnexpectedEventError(`Target set has ${workpiece.length} elements while at least ${elementsCount} expected.`),
|
|
9
|
+
title: UnexpectedEventError.localization.defaultTitle,
|
|
10
|
+
occurrenceLocation: "removeThenGetSpecificNumberOfSetElements(compoundParameter)"
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
const removedElements = workpiece.slice(0, elementsCount);
|
|
14
|
+
if (mutably === true) {
|
|
15
|
+
return {
|
|
16
|
+
removedElements,
|
|
17
|
+
updatedSet: removeElementsFromSet({ targetSet, elementsToDelete: removedElements, mutably: true })
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
removedElements: workpiece.slice(0, elementsCount),
|
|
22
|
+
updatedSet: new Set(workpiece.slice(elementsCount))
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export default function addPenultimateFileNameExtension({ targetPath, targetFileNamePenultimateExtensionWithOrWithoutLeadingDot, mustAppendDuplicateEvenIfTargetPenultimateFileNameExtensionAlreadyExist, mustAppendLastFileNameExtensionInsteadIfThereIsNoOne }: Readonly<{
|
|
2
|
+
targetPath: string;
|
|
3
|
+
targetFileNamePenultimateExtensionWithOrWithoutLeadingDot: string;
|
|
4
|
+
mustAppendDuplicateEvenIfTargetPenultimateFileNameExtensionAlreadyExist: boolean;
|
|
5
|
+
mustAppendLastFileNameExtensionInsteadIfThereIsNoOne: boolean;
|
|
6
|
+
}>): string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import removeSpecificCharacterFromCertainPosition from "../../../removeSpecificCharacterFromCertainPosition";
|
|
2
|
+
import extractMatchingsWithRegularExpression from "../../../RegularExpressions/extractMatchingsWithRegularExpression";
|
|
3
|
+
import splitString from "../../../splitString";
|
|
4
|
+
import addElementsToArray from "../../../../Arrays/04-AddingOfElements/addElementsToArray";
|
|
5
|
+
export default function addPenultimateFileNameExtension({ targetPath, targetFileNamePenultimateExtensionWithOrWithoutLeadingDot, mustAppendDuplicateEvenIfTargetPenultimateFileNameExtensionAlreadyExist, mustAppendLastFileNameExtensionInsteadIfThereIsNoOne }) {
|
|
6
|
+
const targetFileNamePenultimateExtensionWithoutLeadingDot = removeSpecificCharacterFromCertainPosition({
|
|
7
|
+
targetString: targetFileNamePenultimateExtensionWithOrWithoutLeadingDot,
|
|
8
|
+
targetCharacter: ".",
|
|
9
|
+
fromFirstPosition: true
|
|
10
|
+
});
|
|
11
|
+
if (!targetPath.includes(".")) {
|
|
12
|
+
const { updatedString: targetPathWithoutFragment, extractedMatching: targetPathFragmentWithLeadingHash } = extractMatchingsWithRegularExpression(targetPath, /#.+$/u, { mustExpectOneOrZeroMatchings: true });
|
|
13
|
+
return mustAppendLastFileNameExtensionInsteadIfThereIsNoOne ?
|
|
14
|
+
`${targetPathWithoutFragment}.${targetFileNamePenultimateExtensionWithoutLeadingDot}` +
|
|
15
|
+
(targetPathFragmentWithLeadingHash ?? "") :
|
|
16
|
+
targetPath;
|
|
17
|
+
}
|
|
18
|
+
const dotSeparatedPathSegments = splitString(targetPath, ".");
|
|
19
|
+
if (dotSeparatedPathSegments[dotSeparatedPathSegments.length - 2] === targetFileNamePenultimateExtensionWithoutLeadingDot &&
|
|
20
|
+
!mustAppendDuplicateEvenIfTargetPenultimateFileNameExtensionAlreadyExist) {
|
|
21
|
+
return targetPath;
|
|
22
|
+
}
|
|
23
|
+
return addElementsToArray({
|
|
24
|
+
targetArray: dotSeparatedPathSegments,
|
|
25
|
+
newElements: [targetFileNamePenultimateExtensionWithoutLeadingDot],
|
|
26
|
+
mutably: true,
|
|
27
|
+
toPosition__numerationFrom1: dotSeparatedPathSegments.length
|
|
28
|
+
}).
|
|
29
|
+
join(".");
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function removeLastFileNameExtensionFromPath(targetPath: string): string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import splitString from "../../../splitString";
|
|
2
|
+
import replaceDoubleBackslashesWithForwardSlashes from "../../../replaceDoubleBackslashesWithForwardSlashes";
|
|
3
|
+
import getLastElementOfArray from "../../../../Arrays/01-RetrievingOfElements/getLastElementOfArray";
|
|
4
|
+
import isNull from "../../../../TypeGuards/EmptyTypes/isNull";
|
|
5
|
+
export default function removeLastFileNameExtensionFromPath(targetPath) {
|
|
6
|
+
const pathExplodedToSegments = splitString(replaceDoubleBackslashesWithForwardSlashes(targetPath), "/");
|
|
7
|
+
const lastPathSegment = getLastElementOfArray(pathExplodedToSegments);
|
|
8
|
+
if (isNull(lastPathSegment) || !lastPathSegment.includes(".") || lastPathSegment === ".") {
|
|
9
|
+
return targetPath;
|
|
10
|
+
}
|
|
11
|
+
const fileNameWithAllFileNameExtensions = splitString(lastPathSegment, ".");
|
|
12
|
+
return [
|
|
13
|
+
...pathExplodedToSegments.length > 1 ? pathExplodedToSegments.slice(0, -1) : [],
|
|
14
|
+
fileNameWithAllFileNameExtensions.
|
|
15
|
+
slice(0, -1).
|
|
16
|
+
join(".")
|
|
17
|
+
].
|
|
18
|
+
join("/");
|
|
19
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @yamato-daiwa/es-extensions v1.
|
|
2
|
+
* @yamato-daiwa/es-extensions v1.10
|
|
3
3
|
* (c) 2023 Yamato Daiwa Co., Ltd.
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -18,6 +18,7 @@ export { default as replaceArrayElementsByIndexesImmutably } from "./Arrays/05-R
|
|
|
18
18
|
export { default as replaceArrayElementsByPredicates, type ReplacingArrayElementsByPredicates } from "./Arrays/05-ReplacingOfElements/replaceArrayElementsByPredicates";
|
|
19
19
|
export { default as moveArrayElementToOnePosition } from "./Arrays/06-PermutationsOfElements/moveArrayElementToOnePosition";
|
|
20
20
|
export { default as swapArrayElements } from "./Arrays/06-PermutationsOfElements/swapArrayElements";
|
|
21
|
+
export { ObjectTypeElementsArrayOrdererByMultipleFields, default as orderArrayOfObjectTypeElementsByMultipleFields } from "./Arrays/06-PermutationsOfElements/ObjectTypeElementsArrayOrdererByMultipleFields";
|
|
21
22
|
export { default as removeArrayElementsByIndexes, type RemovingOfArrayElementsByIndexes } from "./Arrays/07-RemovingOfElements/removeArrayElementsByIndexes";
|
|
22
23
|
export { default as removeArrayElementsByPredicates, type RemovingOfArrayElementsByPredicates } from "./Arrays/07-RemovingOfElements/removeArrayElementsByPredicates";
|
|
23
24
|
export { default as twoDimensionalizeArray } from "./Arrays/08-Restructuring/twoDimensionalizeArray";
|
|
@@ -147,8 +148,10 @@ export { default as createSetBasedOnAnyArrayLikeCollection } from "./Sets/create
|
|
|
147
148
|
export { default as createSetBasedOnOtherSet } from "./Sets/createSetBasedOnOtherSet";
|
|
148
149
|
export { default as getOneElementOfSet } from "./Sets/getOneElementOfSet";
|
|
149
150
|
export { default as mergeSets } from "./Sets/mergeSets";
|
|
151
|
+
export { default as removeElementsFromSet } from "./Sets/removeElementsFromSet";
|
|
150
152
|
export { default as removeOneElementFromSet, type RemovingOfOneElementFromSet } from "./Sets/removeOneElementOfSet";
|
|
151
153
|
export { removeSetElementsByPredicates, type RemovingSetElementsByPredicates } from "./Sets/removeSetElementsByPredicates";
|
|
154
|
+
export { removeThenGetSpecificNumberOfSetElements, type RemovingAndGettingOfSpecificNumberElementsFromSet } from "./Sets/removeThenGetSpecificNumberOfSetElements";
|
|
152
155
|
export { default as EscapeCharacters } from "./Strings/CharactersAssets/EscapeCharacters";
|
|
153
156
|
export { default as lowercaseLatinCharacters } from "./Strings/CharactersAssets/lowercaseLatinCharacters";
|
|
154
157
|
export { default as SpaceCharacters } from "./Strings/CharactersAssets/SpaceCharacters";
|
|
@@ -160,10 +163,12 @@ export { default as LineSeparators } from "./Strings/LineSeparators/LineSeparato
|
|
|
160
163
|
export { default as getMatchingWithFirstRegularExpressionCapturingGroup } from "./Strings/RegularExpressions/getMatchingWithFirstRegularExpressionCapturingGroup";
|
|
161
164
|
export { default as extractMatchingsWithRegularExpression, type ExtractingOfMatchingsWithRegularExpression } from "./Strings/RegularExpressions/extractMatchingsWithRegularExpression";
|
|
162
165
|
export { default as replaceMatchesWithRegularExpressionToDynamicValue, type ReplacingOfMatchesWithRegularExpressionToDynamicValue } from "./Strings/RegularExpressions/replaceMatchesWithRegularExpressionToDynamicValue";
|
|
166
|
+
export { default as addPenultimateFileNameExtension } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/addPenultimateFileNameExtension";
|
|
163
167
|
export { default as appendLastFileNameExtension } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/appendLastFileNameExtension";
|
|
164
168
|
export { default as extractAllFileNameExtensions } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/extractAllFileNameExtensions";
|
|
165
169
|
export { default as extractLastExtensionOfFileName } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/extractLastExtensionOfFileName";
|
|
166
170
|
export { default as removeAllFileNameExtensions } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/removeAllFileNameExtensions";
|
|
171
|
+
export { default as removeLastFileNameExtensionFromPath } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/removeLastFileNameExtensionFromPath";
|
|
167
172
|
export { default as removeSpecifiedFileNameExtensionsFromPath } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/removeSpecifiedFileNameExtensionsFromPath";
|
|
168
173
|
export { default as extractFileNameWithoutAnyExtensions } from "./Strings/URI/FilesAndDirectories/Stem/extractFileNameWithoutAnyExtensions";
|
|
169
174
|
export { default as extractFileNameWithAllExtensionsFromPath } from "./Strings/URI/FilesAndDirectories/extractFileNameWithAllExtensionsFromPath";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @yamato-daiwa/es-extensions v1.
|
|
2
|
+
* @yamato-daiwa/es-extensions v1.10
|
|
3
3
|
* (c) 2023 Yamato Daiwa Co., Ltd.
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -17,6 +17,7 @@ export { default as replaceArrayElementsByIndexesImmutably } from "./Arrays/05-R
|
|
|
17
17
|
export { default as replaceArrayElementsByPredicates } from "./Arrays/05-ReplacingOfElements/replaceArrayElementsByPredicates";
|
|
18
18
|
export { default as moveArrayElementToOnePosition } from "./Arrays/06-PermutationsOfElements/moveArrayElementToOnePosition";
|
|
19
19
|
export { default as swapArrayElements } from "./Arrays/06-PermutationsOfElements/swapArrayElements";
|
|
20
|
+
export { ObjectTypeElementsArrayOrdererByMultipleFields, default as orderArrayOfObjectTypeElementsByMultipleFields } from "./Arrays/06-PermutationsOfElements/ObjectTypeElementsArrayOrdererByMultipleFields";
|
|
20
21
|
export { default as removeArrayElementsByIndexes } from "./Arrays/07-RemovingOfElements/removeArrayElementsByIndexes";
|
|
21
22
|
export { default as removeArrayElementsByPredicates } from "./Arrays/07-RemovingOfElements/removeArrayElementsByPredicates";
|
|
22
23
|
export { default as twoDimensionalizeArray } from "./Arrays/08-Restructuring/twoDimensionalizeArray";
|
|
@@ -144,8 +145,10 @@ export { default as createSetBasedOnAnyArrayLikeCollection } from "./Sets/create
|
|
|
144
145
|
export { default as createSetBasedOnOtherSet } from "./Sets/createSetBasedOnOtherSet";
|
|
145
146
|
export { default as getOneElementOfSet } from "./Sets/getOneElementOfSet";
|
|
146
147
|
export { default as mergeSets } from "./Sets/mergeSets";
|
|
148
|
+
export { default as removeElementsFromSet } from "./Sets/removeElementsFromSet";
|
|
147
149
|
export { default as removeOneElementFromSet } from "./Sets/removeOneElementOfSet";
|
|
148
150
|
export { removeSetElementsByPredicates } from "./Sets/removeSetElementsByPredicates";
|
|
151
|
+
export { removeThenGetSpecificNumberOfSetElements } from "./Sets/removeThenGetSpecificNumberOfSetElements";
|
|
149
152
|
export { default as EscapeCharacters } from "./Strings/CharactersAssets/EscapeCharacters";
|
|
150
153
|
export { default as lowercaseLatinCharacters } from "./Strings/CharactersAssets/lowercaseLatinCharacters";
|
|
151
154
|
export { default as SpaceCharacters } from "./Strings/CharactersAssets/SpaceCharacters";
|
|
@@ -157,10 +160,12 @@ export { default as LineSeparators } from "./Strings/LineSeparators/LineSeparato
|
|
|
157
160
|
export { default as getMatchingWithFirstRegularExpressionCapturingGroup } from "./Strings/RegularExpressions/getMatchingWithFirstRegularExpressionCapturingGroup";
|
|
158
161
|
export { default as extractMatchingsWithRegularExpression } from "./Strings/RegularExpressions/extractMatchingsWithRegularExpression";
|
|
159
162
|
export { default as replaceMatchesWithRegularExpressionToDynamicValue } from "./Strings/RegularExpressions/replaceMatchesWithRegularExpressionToDynamicValue";
|
|
163
|
+
export { default as addPenultimateFileNameExtension } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/addPenultimateFileNameExtension";
|
|
160
164
|
export { default as appendLastFileNameExtension } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/appendLastFileNameExtension";
|
|
161
165
|
export { default as extractAllFileNameExtensions } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/extractAllFileNameExtensions";
|
|
162
166
|
export { default as extractLastExtensionOfFileName } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/extractLastExtensionOfFileName";
|
|
163
167
|
export { default as removeAllFileNameExtensions } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/removeAllFileNameExtensions";
|
|
168
|
+
export { default as removeLastFileNameExtensionFromPath } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/removeLastFileNameExtensionFromPath";
|
|
164
169
|
export { default as removeSpecifiedFileNameExtensionsFromPath } from "./Strings/URI/FilesAndDirectories/FileNameExtensions/removeSpecifiedFileNameExtensionsFromPath";
|
|
165
170
|
export { default as extractFileNameWithoutAnyExtensions } from "./Strings/URI/FilesAndDirectories/Stem/extractFileNameWithoutAnyExtensions";
|
|
166
171
|
export { default as extractFileNameWithAllExtensionsFromPath } from "./Strings/URI/FilesAndDirectories/extractFileNameWithAllExtensionsFromPath";
|