@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.
Files changed (20) hide show
  1. package/Distributable/cjs/Arrays/06-PermutationsOfElements/ObjectTypeElementsArrayOrdererByMultipleFields.js +67 -0
  2. package/Distributable/cjs/Sets/removeElementsFromSet.js +10 -0
  3. package/Distributable/cjs/Sets/removeThenGetSpecificNumberOfSetElements.js +30 -0
  4. package/Distributable/cjs/Strings/URI/FilesAndDirectories/FileNameExtensions/addPenultimateFileNameExtension.js +36 -0
  5. package/Distributable/cjs/Strings/URI/FilesAndDirectories/FileNameExtensions/removeLastFileNameExtensionFromPath.js +25 -0
  6. package/Distributable/cjs/index.js +18 -7
  7. package/Distributable/esm/Arrays/06-PermutationsOfElements/ObjectTypeElementsArrayOrdererByMultipleFields.d.ts +38 -0
  8. package/Distributable/esm/Arrays/06-PermutationsOfElements/ObjectTypeElementsArrayOrdererByMultipleFields.js +63 -0
  9. package/Distributable/esm/Sets/removeElementsFromSet.d.ts +9 -0
  10. package/Distributable/esm/Sets/removeElementsFromSet.js +7 -0
  11. package/Distributable/esm/Sets/removeThenGetSpecificNumberOfSetElements.d.ts +16 -0
  12. package/Distributable/esm/Sets/removeThenGetSpecificNumberOfSetElements.js +24 -0
  13. package/Distributable/esm/Strings/URI/FilesAndDirectories/FileNameExtensions/addPenultimateFileNameExtension.d.ts +6 -0
  14. package/Distributable/esm/Strings/URI/FilesAndDirectories/FileNameExtensions/addPenultimateFileNameExtension.js +30 -0
  15. package/Distributable/esm/Strings/URI/FilesAndDirectories/FileNameExtensions/removeLastFileNameExtensionFromPath.d.ts +1 -0
  16. package/Distributable/esm/Strings/URI/FilesAndDirectories/FileNameExtensions/removeLastFileNameExtensionFromPath.js +19 -0
  17. package/Distributable/esm/index.d.ts +6 -1
  18. package/Distributable/esm/index.js +6 -1
  19. package/README.md +1122 -29
  20. 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.9
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.LocalizableSampleDataRepository = exports.LocalizableEntitiesByIDsMap = 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.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.InvalidExternalDataError = exports.invalidConfigErrorLocalization__english = 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 = void 0;
13
- exports.getRandomLatinCharacter = exports.getRandomInteger = 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 = void 0;
14
- exports.stringifyAndFormatArbitraryValue = exports.ArbitraryValueFormatter = exports.appendCharacterIfItDoesNotPresentInLastPosition = exports.adjustCharactersCount = exports.removeSpecificSegmentsFromURI_Path = exports.getURI_PartWithoutFragment = exports.generateMailtoURI_Scheme = exports.replaceLastURI_PathSegment = exports.explodeURI_PathToSegments = exports.getURI_Fragment = exports.appendFragmentToURI = exports.extractFileNameWithoutLastExtension = exports.extractFileNameWithAllExtensionsFromPath = exports.extractFileNameWithoutAnyExtensions = exports.removeSpecifiedFileNameExtensionsFromPath = exports.removeAllFileNameExtensions = exports.extractLastExtensionOfFileName = exports.extractAllFileNameExtensions = exports.appendLastFileNameExtension = exports.replaceMatchesWithRegularExpressionToDynamicValue = exports.extractMatchingsWithRegularExpression = exports.getMatchingWithFirstRegularExpressionCapturingGroup = exports.LineSeparators = exports.getLineSeparatorType = exports.uppercaseLatinCharacters = exports.stringifiedDigits = exports.SpaceCharactersStringifiedHexCharactersForRegularExpressionWithUnicodeFlag = exports.SpaceCharacters = exports.lowercaseLatinCharacters = exports.EscapeCharacters = exports.removeSetElementsByPredicates = exports.removeOneElementFromSet = 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 = void 0;
15
- exports.isPositiveDecimalFraction = exports.isNumber = exports.isNegativeIntegerOrZero = exports.isNegativeInteger = exports.isNegativeDecimalFraction = exports.isNaturalNumberOrZero = 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 = 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 = 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,7 @@
1
+ export default function removeElementsFromSet({ targetSet, elementsToDelete, mutably }) {
2
+ const workpiece = mutably === false ? new Set(targetSet) : targetSet;
3
+ for (const element of elementsToDelete) {
4
+ workpiece.delete(element);
5
+ }
6
+ return workpiece;
7
+ }
@@ -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.9
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.9
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";