Détail du package

sort-es

cosimochellini118.5kMIT1.7.15

Blazing fast, tree-shakeable, type-safe, modern utility library to sort any type of array in less than 1 KB!

sort, sort-es, sort functions, es

readme

sort-es

License: MIT Build Version Known Vulnerabilities GitHub last commit (branch) npm npm total codecov

Blazing fast, tree-shakeable, type-safe, modern utility library to sort any type of array

Docs : https://sort-es.netlify.app/

Getting started

installation

The library is available as a npm package. To install the package, run:

npm install sort-es
# or
yarn add sort-es

Start using:

import {byString} from 'sort-es'

const unsorted = ["xxx", "bbbb", "zzz", "cccc", "aaa"];
const sorted = unsorted.sort(byString());

console.log(sorted); //(5) ["aaa", "bbbb", "cccc", "xxx", "zzz"]

Use directly in the browser


<script src='https://cdn.jsdelivr.net/npm/sort-es/dist/index.umd.js'></script>
<script>
  const unsorted = ["xxx", "bbbb", "zzz", "cccc", "aaa"];
  const sorted = unsorted.sort(sort.byString());

  console.log(sorted); //(5) ["aaa", "bbbb", "cccc", "xxx", "zzz"]
</script>

//or via browser modules

<script type='module'>
  import {byString} from 'https://cdn.jsdelivr.net/npm/sort-es/dist/index.mjs'

  const unsorted = ["xxx", "bbbb", "zzz", "cccc", "aaa"];
  const sorted = unsorted.sort(byString());

  console.log(sorted); //(5) ["aaa", "bbbb", "cccc", "xxx", "zzz"]
</script>

Some mind-blowing example

sort by a single property

//js or ts file
import {byValue, byNumber, byString} from 'sort-es'

const arrayUnsorted = [
  {prop: "xxx", foo: 34},
  {prop: "aaa", foo: 325},
  {prop: "zzz", foo: 15},
  {prop: "ccc", foo: 340},
  {prop: "bbb", foo: 0}
];

//this sort by the foo property ascending
const sortedByFoo = arrayUnsorted.sort(byValue((i) => i.foo, byNumber()));
console.log(sortedByFoo); //(5) [{prop: "bbb", foo : 0}, {prop: "zzz", foo: 15}, .....];

//this sort by the prop property descending
const sortedByProp = arrayUnsorted.sort(byValue((i) => i.prop, byString({desc: true})));
console.log(sortedByProp); //(5) [{prop: "zzz", foo : 15}, {prop: "xxx", foo: 34}, .....];

sort by a multiple property

//js or ts file
import {byNumber, byString, byValues} from "sort-es";

const objsToSort = [
  {id: 2, name: 'teresa'},
  {id: 3, name: 'roberto'},
  {id: 2, name: 'roberto'}
];

//i sort by THEIR NAMES and THEN by their ids
const sortedObject = objsToSort.sort(byValues([
  [(x) => x.name, byString()],
  [(x) => x.id, byNumber()]
]));

console.log(sortedObject); //[{roberto, 2}, {roberto, 3}, {teresa, 2}];

//i sort by THEIR IDS and THEN by their names
const sortedObject2 = objsToSort.sort(byValues([
  [(x) => x.id, byNumber()],
  [(x) => x.name, byString()]
]));
console.log(sortedObject2); //[{roberto, 2}, {teresa, 2}, {roberto, 3}];

//i sort by THEIR IDS and THEN by their names DESCENDING
const sortedObject3 = objsToSort.sort(byValues([
  [(x) => x.id, byNumber()],
  [(x) => x.name, byString({desc: true})],
]));
console.log(sortedObject3); //[{teresa, 2}, {roberto, 2}, {roberto, 3}];

typescript types check

//ts file
import {byValue, byNumber, byString} from 'sort-es'

const objsArray = [{numbProp: 2, stringProp: 'a'}, {numbProp: 3, stringProp: 'f'}];

//Incorrect sort property
const incorrectSortedArray = objsArray.sort(byValue(i => i.numbProp, byString()));
//ts check error : Type 'number' is not assignable to type 'string'.

//Correct sort type
const sortedArray = objsArray.sort(byValue(i => i.numbProp, byNumber()))
//ts check ok

See full Docs

sort-es.netlify.app

License

MIT © Cosimo chellini

changelog

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

1.7.15 (2025-04-10)

Bug Fixes

  • dep: updated dependency (d4c47e9)
  • lock: added standard-version (f354903)

1.7.14 (2025-01-02)

Bug Fixes

  • dep: updated dependency (dbf8f66)

1.7.13 (2024-10-17)

Bug Fixes

  • dep: updated dependency (c7d2c35)

1.7.12 (2024-09-16)

Bug Fixes

1.7.11 (2024-08-11)

Bug Fixes

  • dep: updated dependency (795d6e8)

1.7.10 (2024-06-18)

Bug Fixes

1.7.9 (2024-05-07)

Bug Fixes

1.7.8 (2024-03-30)

Bug Fixes

  • dep: updated dependency (85398b9)

1.7.7 (2024-02-19)

Bug Fixes

  • dep: updated dependency (72770d2)

1.7.6 (2024-01-26)

Bug Fixes

  • dep: updated dependency (e39d590)

1.7.5 (2024-01-07)

Bug Fixes

  • dep: updated dependency (ef115d7)

1.7.4 (2023-11-18)

1.7.3 (2023-10-28)

Bug Fixes

  • dep: updated dependency (f880003)

1.7.2 (2023-10-05)

Features

  • byValues: changed the tuple typing, now the discriminator is a function (9b936c7)
  • sortables: added support for nullables type (267abbc), closes #10
  • tests: added test for nullables sort (c09182f)
  • tsconfig: enabled strictNullChecks in tsconfig (5a611f6)
  • types: added support for nullable type (d5d2a21)

Bug Fixes

  • by-values: added warning for older implementation (12d83f6), closes #8
  • byDate: handled nullable option for byDate #12 (8867634)
  • byNumber: added proper fallback for sorting multiple Infinity values (fa05f5f), closes #13
  • dep: updated '@babel/eslint-parser' (d0c8cfd)
  • dep: updated dependency (0d2271d)
  • dep: updated dependency (16c6c85)
  • dep: updated dependency (2e9b291)
  • dep: updated dependency (ba51cda)
  • dep: updated dependency (4726fd6)
  • dep: updated dependency (6bcf033)
  • dep: updated dependency (c24431e)
  • dep: updated dependency (fea0986)
  • dep: updated dependency (6551b8b)
  • dep: updated dependency (1d623ab)
  • dep: updated dependency (85c053a)
  • dep: updated dependency (fc3087b)
  • dep: updated dependency (c1437a3)
  • dep: updated dependency (578dd27)
  • dep: updated dependency (7d76e24)
  • dep: updated dependency (6053019)
  • dep: updated minor dev dependency (76cae48)
  • dep: updated minor dev dependency (d226cb5)
  • dep: updated minor dev dependency (ed59e9b)
  • lock: updated devDeps (4a1bda6)

1.7.1 (2023-09-14)

Bug Fixes

  • dep: updated dependency (16c6c85)

1.7.0 (2023-08-30)

Features

  • sortables: added support for nullables type (267abbc), closes #10
  • tests: added test for nullables sort (c09182f)
  • tsconfig: enabled strictNullChecks in tsconfig (5a611f6)
  • types: added support for nullable type (d5d2a21)

1.6.16 (2023-08-13)

Bug Fixes

  • byNumber: added proper fallback for sorting multiple Infinity values (fa05f5f), closes #13

1.6.15 (2023-08-05)

Bug Fixes

  • dep: updated dependency (2e9b291)

1.6.14 (2023-07-17)

Bug Fixes

1.6.13 (2023-07-15)

Bug Fixes

  • byDate: handled nullable option for byDate #12 (8867634)

1.6.12 (2023-06-23)

Bug Fixes

  • dep: updated dependency (4726fd6)

1.6.11 (2023-06-04)

Bug Fixes

  • dep: updated dependency (6bcf033)

1.6.10 (2023-05-13)

Bug Fixes

  • dep: updated dependency (c24431e)

1.6.9 (2023-04-22)

Bug Fixes

  • dep: updated dependency (fea0986)

1.6.8 (2023-04-01)

Bug Fixes

  • dep: updated dependency (6551b8b)

1.6.7 (2023-03-08)

Bug Fixes

  • dep: updated dependency (1d623ab)

1.6.6 (2023-02-11)

Bug Fixes

  • dep: updated dependency (85c053a)

1.6.5 (2023-01-21)

Bug Fixes

  • dep: updated dependency (fc3087b)

1.6.4 (2022-12-31)

Bug Fixes

  • dep: updated dependency (c1437a3)

1.6.3 (2022-12-08)

Bug Fixes

  • dep: updated dependency (578dd27)

1.6.2 (2022-11-19)

Bug Fixes

  • dep: updated dependency (7d76e24)

1.6.1 (2022-10-31)

Bug Fixes

  • by-values: added warning for older implementation (12d83f6), closes #8

1.6.0 (2022-10-30)

Breaking changes

  • byValues: removed the option to pass an object in the byValues function
  • byValues: changed the first item for the sortable tuple

to see more in details the migration guide : sortable-es.app/breaking-changes

Features

  • byValues: changed the tuple typing, now the discriminator is a function (9b936c7)

Bug Fixes

  • dep: updated dependency (6053019)

1.5.3 (2022-10-09)

Bug Fixes

  • dep: updated minor dev dependency (76cae48)

1.5.2 (2022-09-17)

Bug Fixes

  • dep: updated minor dev dependency (d226cb5)

1.5.1 (2022-07-16)

Bug Fixes

  • dep: updated minor dev dependency (ed59e9b)

1.5.0 (2022-06-26)

Bug Fixes

  • dep: updated '@babel/eslint-parser' (d0c8cfd)

1.4.12 (2022-06-18)

1.4.11 (2022-05-26)

Bug Fixes

  • dep: updated @rollup/plugin-commonjs to 22 (29a667d)
  • dep: updated commitlint to 17 (11b59c2)
  • dep: updated husky to 8 (02938fa)
  • dep: updated minor dev dependency (564b07e)
  • dep: updated mocha to 10 (458e957)

1.4.10 (2022-05-03)

Bug Fixes

  • dep: updated dev dependency (23658a9)

1.4.9 (2022-04-09)

Bug Fixes

  • dep: updated dev dependency (21b641f)

1.4.8 (2022-03-21)

Bug Fixes

  • dep: updated dev dependency (7db3b89)

1.4.7 (2022-02-26)

Bug Fixes

  • dep: updated dev dependency (285ebb4)

1.4.6 (2022-02-06)

Bug Fixes

  • dep: updated dependency (d78880b)

1.4.5 (2022-01-13)

Bug Fixes

  • dep: updated dependency (0710233)

1.4.4 (2022-01-07)

Bug Fixes

  • dep: updated commitlint to v16 (788c907)
  • dependency: updated dependency (af0fc86)

1.4.3 (2021-12-22)

Bug Fixes

  • ci: updated node environment (f0740b5)

1.4.2 (2021-12-17)

Bug Fixes

  • byBoolean: handled the undefined case (a4b94e4)

1.4.1 (2021-12-13)

Features

  • tests: added missing tests (4cf260b)

Bug Fixes

  • dependency: updated dependency (994d4d1)

1.4.0 (2021-11-21)

Bug Fixes

  • dependency: updated crucial (cff9a42)

1.3.11 (2021-10-30)

Bug Fixes

  • dependency: updated dependency (ba6de8c)

1.3.10 (2021-10-08)

Bug Fixes

  • dependency: updated dependency (787fc66)

1.3.9 (2021-09-14)

1.3.8 (2021-08-26)

Bug Fixes

  • dependency: updated dependency (577af0d)

1.3.7 (2021-08-05)

Bug Fixes

  • dependency: updated dependency (22017e4)

1.3.6 (2021-07-17)

Bug Fixes

  • dependency: updated dependency (8c1a548)

1.3.5 (2021-06-27)

Bug Fixes

  • dep: updated mocha to v9 (89b0bbe)

1.3.4 (2021-06-06)

Bug Fixes

  • dependency: updated dependency (1260cc4)

1.3.3 (2021-05-22)

Bug Fixes

  • dep: updated dependency (90a13a7)

1.3.2 (2021-05-03)

Bug Fixes

  • performance: improved performance of the base sortables (6c8880c)

1.3.1 (2021-04-10)

Bug Fixes

  • dep: updated dependency (ebf17bb)

1.3.0 (2021-03-20)

Features

  • byBoolean: added byBoolean sortable (8861c8f)

Bug Fixes

  • dependency: updated depedency (2f59b0a)
  • typo: removed some typo (05fb201)

1.2.1 (2021-03-07)

Bug Fixes

  • dep: changed husky version (caf43f8)
  • dep: updated ts version to 4.2.3 (185af38)

1.2.0 (2021-02-14)

Bug Fixes

  • badge: small changes (4cfa21d)
  • by-values: added a proper way to handle sorting of an object with number as property name (8274b37), closes #6
  • by-values: added deprecation error (48a7400)
  • by-values: set the array-like props as default signature (e5890af), closes #6

1.1.11 (2021-01-30)

Bug Fixes

  • dependency: updated dependency (42fc593)

1.1.10 (2021-01-06)

Bug Fixes

  • dependency: updated dependency (c421891)

1.1.9 (2020-12-12)

Bug Fixes

  • dependency: updated dependency + fix nyc report (bf3dc79)

1.1.8 (2020-11-28)

Features

  • sortables: fixed the type of byAny and byValue (6b9de24)

1.1.7 (2020-11-21)

Bug Fixes

  • dependency: updated TS to 4.1 (737fda9)

1.1.6 (2020-10-31)

Bug Fixes

  • dependency: updated dependency (6f07950)

1.1.5 (2020-10-10)

Bug Fixes

  • dependency: updated dependency (2115a77)

1.1.4 (2020-09-18)

Features

  • dependency: updated dependency (c713cfd)

Bug Fixes

  • dependency: updated dependency (dd59ae8)
  • dependency: updated dependency 0509 (TypeScript V4) (fbbf7f5)
  • dependency: updated dependency 1308 (424b508)
  • dependency: updated dependency 2507 (8bf22ee)

1.1.2 (2020-09-05)

Features

  • dependency: updated dependency (c713cfd)

Bug Fixes

  • dependency: updated dependency 1308 (424b508)
  • dependency: updated dependency 2507 (8bf22ee)

1.1.1 (2020-07-10)

1.1.0 (2020-06-20)

Features

  • mergedByStringSortables: merged byStringLowerCase in byString (bcf5ba7)

1.0.0 (2020-06-20)

0.6.10 (2020-06-20)

0.6.9 (2020-06-15)

Bug Fixes

  • dependency: updated dependency 1506 (3959d89)

0.6.8 (2020-05-31)

Bug Fixes

  • dependencies: updated dependency 3105 (79e321d)

0.6.7 (2020-05-11)

Bug Fixes

  • dependency: updated dependency 1105 (249d75c)

0.6.6 (2020-04-27)

Bug Fixes

  • dependency: updated dependency (fa33b68)
  • dev-dependency: updated dependency 2704 (15459d8)

0.6.5 (2020-04-12)

Features

  • side effects: explained removed siteEffects (8ff114c)

Bug Fixes

  • ci: fixed build ci for npm (033cfcb)
  • ci: fixed ci deployment and test (94fe5fe)

0.6.4 (2020-03-29)

Features

  • bundle: changed the structure of the exported file for a better intellisense (ee736e4)

Bug Fixes

  • version: updated version (5562c40)

0.3.4 (2020-03-28)

Features

  • types: simplified some types for a better autocomplete (466f10b)

0.3.3 (2020-03-24)

Features

  • tests: added test for byValues (39b76fe)

Bug Fixes

  • dependency: updated dependency (63e6ccd)
  • dependency: updated dependency (9bcb4f9)
  • test: fixed some small test (6331ecf)

0.3.2 (2020-03-17)

Features

  • added test for byAny sortable (b3ad87b)

0.2.13 (2020-03-06)

Features

  • sort: added byValues sorting fn (599f208)

Bug Fixes

0.2.12 (2020-03-03)

Features

  • added async sort (284831c)
  • added byAny and byAsyncValue (04dadcb)
  • added more sort options (bdcdd9f)
  • added sortable byStringLowerCase (9410526)

Bug Fixes

0.2.11 (2020-02-27)

Features

  • added more unit tests (472cb2c)
  • finished codecov integration (0eac5ef)
  • initial test for coverage (54255b4)

Bug Fixes

0.2.10 (2020-02-26)

Bug Fixes

0.2.8 (2020-02-22)

0.2.9 (2020-02-23)

0.2.8 (2020-02-22)

Features

  • added first tests (c064b7c)
  • added more tests + coverage (e2fa77b)
  • added sem version (c8966c3)
  • added tests for byNumber and ByDate (5aa96e6)

Bug Fixes

0.2.4 (2020-02-22)

0.2.8 (2020-02-23)

Features

Bug Fixes

0.2.4 (2020-02-22)

0.2.7 (2020-02-22)

Features

0.2.6 (2020-02-22)

0.2.5 (2020-02-22)

0.2.4 (2020-02-22)