From c7993d94da4f435deaf8eaa5590725f8ace747d4 Mon Sep 17 00:00:00 2001 From: silverwind Date: Mon, 30 Oct 2023 21:57:50 +0100 Subject: [PATCH] add workaround for #17 --- index.js | 3 ++- index.test.js | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 8365bf7..0350c76 100644 --- a/index.js +++ b/index.js @@ -255,7 +255,8 @@ function mapNets(nets) { } export function merge(nets) { - nets = uniq((Array.isArray(nets) ? nets : [nets]).map(parse)); + // sort to workaround https://github.com/silverwind/cidr-tools/issues/17 + nets = uniq((Array.isArray(nets) ? nets : [nets]).sort(compare).map(parse)); const maps = mapNets(nets); const merged = {4: [], 6: []}; diff --git a/index.test.js b/index.test.js index e10703a..bddcd38 100644 --- a/index.test.js +++ b/index.test.js @@ -25,6 +25,9 @@ test("merge", () => { expect(merge(["0.0.1.0/24", "0.0.2.0/24", "0.0.3.0/24", "0.0.4.0/24"])).toEqual(["0.0.1.0/24", "0.0.2.0/23", "0.0.4.0/24"]); expect(merge(["0.0.175.0/24", "0.0.176.0/21", "0.0.184.0/21", "0.0.192.0/24"])).toEqual(["0.0.175.0/24", "0.0.176.0/20", "0.0.192.0/24"]); expect(merge(["0.0.176.0/21", "0.0.184.0/21", "0.0.192.0/24"])).toEqual(["0.0.176.0/20", "0.0.192.0/24"]); + expect(merge(["1:1:1:1::/128", "1:1:1:2::/128"])).toEqual(["1:1:1:1::/128", "1:1:1:2::/128"]); + expect(merge(["::2:0:0/128", "::1:0:0/128"])).toEqual(["::1:0:0/128", "::2:0:0/128"]); + expect(merge(["::2:0:0/128", "::1:0:0/128", "::2:0:1/128"])).toEqual(["::1:0:0/128", "::2:0:0/127"]); }); test("exclude", () => {