Skip to content

Commit 80a484b

Browse files
💥 refactor!: Only use named exports and test build.
BREAKING CHANGE: Default exports are not available anymore.
1 parent ff87e5c commit 80a484b

37 files changed

+78
-111
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ Parent is [js-algorithms](https://github.com/make-github-pseudonymous-again/js-a
66
See [docs](https://graph-algorithm.github.io/maximum-matching/index.html).
77

88
```js
9-
import maximumMatching, {iter} from '@graph-algorithm/maximum-matching';
9+
import {iter, weight as maximumMatching} from '@graph-algorithm/maximum-matching';
1010
const edges = [[1, 2, 10], [2, 3, 11]] ;
1111
const matching = maximumMatching(edges) ; // [-1, -1, 3, 2]
1212
[...iter(matching)]; // [ [2, 3] ]
1313

14-
import maximumCardinalityMatching from '@graph-algorithm/maximum-matching/cardinality';
14+
import {opt as maximumCardinalityMatching} from '@graph-algorithm/maximum-matching/cardinality/index.js';
1515
for (const edge of iter(maximumCardinalityMatching([[1, 2], [2, 3], [3, 4]]))) {
1616
console.log(edge);
1717
}

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
"@node-loader/core": "2.0.0",
8989
"@node-loader/import-maps": "1.1.0",
9090
"ava": "6.1.1",
91-
"babel-plugin-replace-import-extension": "^1.1.4",
91+
"babel-plugin-replace-import-extension": "1.1.4",
9292
"babel-plugin-transform-remove-console": "6.9.4",
9393
"babel-plugin-unassert": "3.2.0",
9494
"babel-preset-minify": "0.5.2",

src/addDefaultWeight.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
const addDefaultWeight = (edges) => edges.map(([u, v, w]) => [u, v, w || 1]);
2-
export default addDefaultWeight;
1+
export const addDefaultWeight = (edges) =>
2+
edges.map(([u, v, w]) => [u, v, w || 1]);

src/cardinality/approx/bipartite.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export {default} from './general.js';
1+
export {general as bipartite} from './general.js';

src/cardinality/approx/general.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import general from '../opt/general.js';
1+
import {general as generalOpt} from '../opt/general.js';
22

3-
const generalApprox = (edges, _eps) => general(edges);
4-
export default generalApprox;
3+
export const general = (edges, _eps) => generalOpt(edges);

src/cardinality/approx/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export {default as bipartite} from './bipartite.js';
2-
export {default, default as general} from './general.js';
1+
export {bipartite} from './bipartite.js';
2+
export {general} from './general.js';

src/cardinality/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export {default as approx} from './approx/index.js';
2-
export {default, default as opt} from './opt/index.js';
1+
export {general as approx} from './approx/index.js';
2+
export {general as opt} from './opt/index.js';

src/cardinality/opt/bipartite.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export {default} from './general.js';
1+
export {general as bipartite} from './general.js';

src/cardinality/opt/general.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import addDefaultWeight from '../../addDefaultWeight.js';
2-
import blossomNoChecks from '../../core/blossomNoChecks.js';
1+
import {addDefaultWeight} from '../../addDefaultWeight.js';
2+
import {blossomNoChecks} from '../../core/blossomNoChecks.js';
33

4-
const general = (edges) => blossomNoChecks(addDefaultWeight(edges), true);
5-
6-
export default general;
4+
export const general = (edges) =>
5+
blossomNoChecks(addDefaultWeight(edges), true);

src/cardinality/opt/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export {default as bipartite} from './bipartite.js';
2-
export {default, default as general} from './general.js';
1+
export {bipartite} from './bipartite.js';
2+
export {general} from './general.js';

src/core/blossom/blossom.js

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import assert from 'assert';
22

3-
import blossomEdges from './blossomEdges.js';
4-
import blossomLeaves from './blossomLeaves.js';
5-
import checkDelta2 from './checkDelta2.js';
6-
import checkDelta3 from './checkDelta3.js';
7-
import endpoints from './endpoints.js';
8-
import min from './min.js';
9-
import neighbours from './neighbours.js';
10-
import rotate from './rotate.js';
11-
import statistics from './statistics.js';
12-
import verifyOptimum from './verifyOptimum.js';
3+
import {blossomEdges} from './blossomEdges.js';
4+
import {blossomLeaves} from './blossomLeaves.js';
5+
import {checkDelta2} from './checkDelta2.js';
6+
import {checkDelta3} from './checkDelta3.js';
7+
import {endpoints} from './endpoints.js';
8+
import {min} from './min.js';
9+
import {neighbours} from './neighbours.js';
10+
import {rotate} from './rotate.js';
11+
import {statistics} from './statistics.js';
12+
import {verifyOptimum} from './verifyOptimum.js';
1313

1414
// Adapted from http://jorisvr.nl/maximummatching.html
1515
// All credit for the implementation goes to Joris van Rantwijk [http://jorisvr.nl].
@@ -29,7 +29,7 @@ import verifyOptimum from './verifyOptimum.js';
2929
// A C program for maximum weight matching by Ed Rothberg was used extensively
3030
// to validate this new code.
3131

32-
export default function blossom(CHECK_OPTIMUM, CHECK_DELTA) {
32+
export function blossom(CHECK_OPTIMUM, CHECK_DELTA) {
3333
// Check delta2/delta3 computation after every substage;
3434
// only works on integer weights, slows down the algorithm to O(n^4).
3535
if (CHECK_DELTA === undefined) CHECK_DELTA = false;

src/core/blossom/blossomEdges.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import blossomLeaves from './blossomLeaves.js';
1+
import {blossomLeaves} from './blossomLeaves.js';
22

3-
export default function* blossomEdges(nvertex, blossomchilds, neighbend, bv) {
3+
export function* blossomEdges(nvertex, blossomchilds, neighbend, bv) {
44
for (const v of blossomLeaves(nvertex, blossomchilds, bv)) {
55
for (const p of neighbend[v]) yield Math.floor(p / 2);
66
}

src/core/blossom/blossomLeaves.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* Generate the leaf vertices of a blossom via depth-first search.
33
*/
4-
export default function* blossomLeaves(nvertex, nodes, b) {
4+
export function* blossomLeaves(nvertex, nodes, b) {
55
if (b < nvertex) yield b;
66
else yield* _blossomLeavesDFS(nvertex, nodes, nodes[b].slice());
77
}

src/core/blossom/checkDelta2.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import assert from 'assert';
22

33
// Check optimized delta2 against a trivial computation.
4-
const checkDelta2 = ({
4+
export const checkDelta2 = ({
55
nvertex,
66
neighbend,
77
label,
@@ -52,5 +52,3 @@ const checkDelta2 = ({
5252
}
5353
}
5454
};
55-
56-
export default checkDelta2;

src/core/blossom/checkDelta3.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import assert from 'assert';
22

3-
import blossomLeaves from './blossomLeaves.js';
3+
import {blossomLeaves} from './blossomLeaves.js';
44

55
// Check optimized delta3 against a trivial computation.
6-
const checkDelta3 = ({
6+
export const checkDelta3 = ({
77
nvertex,
88
edges,
99
blossomparent,
@@ -54,5 +54,3 @@ const checkDelta3 = ({
5454
console.debug('bk=' + bk + ' tbk=' + tbk + ' bd=' + bd + ' tbd=' + tbd);
5555
assert(bd === tbd);
5656
};
57-
58-
export default checkDelta3;

src/core/blossom/endpoints.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
const endpoints = (nedge, edges) => {
1+
export const endpoints = (nedge, edges) => {
22
const endpoint = [];
33
for (let p = 0; p < nedge; ++p) {
44
endpoint.push(edges[p][0], edges[p][1]);
55
}
66

77
return endpoint;
88
};
9-
10-
export default endpoints;

src/core/blossom/index.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
export {default as checkDelta2} from './checkDelta2.js';
2-
export {default as checkDelta3} from './checkDelta3.js';
3-
export {default as rotate} from './rotate.js';
4-
export {default as min} from './min.js';
5-
export {default, default as blossom} from './blossom.js';
6-
export {default as verifyOptimum} from './verifyOptimum.js';
1+
export {checkDelta2} from './checkDelta2.js';
2+
export {checkDelta3} from './checkDelta3.js';
3+
export {rotate} from './rotate.js';
4+
export {min} from './min.js';
5+
export {blossom} from './blossom.js';
6+
export {verifyOptimum} from './verifyOptimum.js';

src/core/blossom/min.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
const min = (a, i, j) => {
1+
export const min = (a, i, j) => {
22
let o = a[i];
33
for (++i; i < j; ++i) if (a[i] < o) o = a[i];
44
return o;
55
};
6-
7-
export default min;

src/core/blossom/neighbours.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const neighbours = (nvertex, nedge, edges) => {
1+
export const neighbours = (nvertex, nedge, edges) => {
22
const neighbend = [];
33

44
for (let i = 0; i < nvertex; ++i) neighbend.push([]);
@@ -12,5 +12,3 @@ const neighbours = (nvertex, nedge, edges) => {
1212

1313
return neighbend;
1414
};
15-
16-
export default neighbours;

src/core/blossom/rotate.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
const rotate = (a, n) => {
1+
export const rotate = (a, n) => {
22
const head = a.splice(0, n);
33
for (let i = 0; i < n; ++i) {
44
a.push(head[i]);
55
}
66
};
7-
8-
export default rotate;

src/core/blossom/statistics.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import assert from 'assert';
22

3-
const statistics = (edges) => {
3+
export const statistics = (edges) => {
44
const nedge = edges.length;
55
let nvertex = 0;
66
let maxweight = 0;
@@ -20,5 +20,3 @@ const statistics = (edges) => {
2020

2121
return [nvertex, nedge, maxweight];
2222
};
23-
24-
export default statistics;

src/core/blossom/verifyOptimum.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import assert from 'assert';
22

3-
import min from './min.js';
3+
import {min} from './min.js';
44

55
// Verify that the optimum solution has been reached.
6-
const verifyOptimum = ({
6+
export const verifyOptimum = ({
77
nvertex,
88
edges,
99
maxCardinality,
@@ -80,5 +80,3 @@ const verifyOptimum = ({
8080
}
8181
// Ok.
8282
};
83-
84-
export default verifyOptimum;

src/core/blossomNoChecks.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import blossom from './blossom/index.js';
1+
import {blossom} from './blossom/index.js';
22

3-
const blossomNoChecks = blossom(false, false);
4-
5-
export default blossomNoChecks;
3+
export const blossomNoChecks = blossom(false, false);

src/core/index.js

+2-11
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,2 @@
1-
import blossom from './blossom/index.js';
2-
import blossomNoChecks from './blossomNoChecks.js';
3-
4-
/* eslint import/no-anonymous-default-export: [2, {"allowObject": true}] */
5-
export default {
6-
blossom,
7-
blossomNoChecks,
8-
};
9-
10-
export {default as blossom} from './blossom/index.js';
11-
export {default as blossomNoChecks} from './blossomNoChecks.js';
1+
export {blossom} from './blossom/index.js';
2+
export {blossomNoChecks} from './blossomNoChecks.js';

src/index.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
export {default as cardinality} from './cardinality/index.js';
2-
export {default as iter} from './iter.js';
3-
export {default as core} from './core/index.js';
4-
export {default as addDefaultWeight} from './addDefaultWeight.js';
5-
export {default as weight, default} from './weight/index.js';
1+
export {addDefaultWeight} from './addDefaultWeight.js';
2+
export {iter} from './iter.js';
3+
export {opt as cardinality} from './cardinality/index.js';
4+
export {opt as weight} from './weight/index.js';

src/iter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default function* iter(matching) {
1+
export function* iter(matching) {
22
let i = 0;
33
for (const j of matching) {
44
// This takes care of j === -1

src/weight/approx/bipartite.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export {default} from './general.js';
1+
export {general as bipartite} from './general.js';

src/weight/approx/general.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import general from '../opt/general.js';
1+
import {general as generalOpt} from '../opt/general.js';
22

3-
const generalApprox = (edges, _eps) => general(edges);
4-
export default generalApprox;
3+
export const general = (edges, _eps) => generalOpt(edges);

src/weight/approx/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export {default as bipartite} from './bipartite.js';
2-
export {default, default as general} from './general.js';
1+
export {bipartite} from './bipartite.js';
2+
export {general} from './general.js';

src/weight/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export {default as approx} from './approx/index.js';
2-
export {default, default as opt} from './opt/index.js';
1+
export {general as approx} from './approx/index.js';
2+
export {general as opt} from './opt/index.js';

src/weight/opt/bipartite.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export {default} from './general.js';
1+
export {general as bipartite} from './general.js';

src/weight/opt/general.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import blossomNoChecks from '../../core/blossomNoChecks.js';
1+
import {blossomNoChecks} from '../../core/blossomNoChecks.js';
22

3-
const general = (edges) => blossomNoChecks(edges);
4-
5-
export default general;
3+
export const general = (edges) => blossomNoChecks(edges);

src/weight/opt/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export {default as bipartite} from './bipartite.js';
2-
export {default, default as general} from './general.js';
1+
export {bipartite} from './bipartite.js';
2+
export {general} from './general.js';

test/src/cardinality.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import test from 'ava';
22

33
import {enumerate} from '@iterable-iterator/zip';
44

5-
import maximumCardinalityMatching from '../../src/cardinality/index.js';
6-
import blossom from '../../src/core/blossom/index.js';
7-
85
import {addDefaultWeight} from '#module';
96

7+
import {opt as maximumCardinalityMatching} from '#module/cardinality/index.js';
8+
import {blossom} from '#module/core/blossom/index.js';
9+
1010
const macro = (t, algorithm, edges, expected) => {
1111
const input = edges.map((edge) => edge.slice()); // Deepcopy
1212
const result = algorithm(edges);

test/src/readme.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import test from 'ava';
22

3-
import maximumCardinalityMatching from '../../src/cardinality/index.js';
3+
import {iter, weight as maximumMatching} from '#module';
44

5-
import maximumMatching, {iter} from '#module';
5+
import {opt as maximumCardinalityMatching} from '#module/cardinality/index.js';
66

77
test('weight', (t) => {
88
const edges = [

test/src/weight.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import test from 'ava';
22

33
import {enumerate} from '@iterable-iterator/zip';
44

5-
import blossom from '../../src/core/blossom/index.js';
5+
import {weight as maximumMatching} from '#module';
66

7-
import maximumMatching from '#module';
7+
import {blossom} from '#module/core/blossom/index.js';
88

99
const macro = (t, algorithm, edges, expected) => {
1010
const input = edges.map((edge) => edge.slice()); // Deepcopy

yarn.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -2602,7 +2602,7 @@ babel-plugin-polyfill-regenerator@^0.5.5:
26022602
dependencies:
26032603
"@babel/helper-define-polyfill-provider" "^0.5.0"
26042604

2605-
babel-plugin-replace-import-extension@^1.1.4:
2605+
26062606
version "1.1.4"
26072607
resolved "https://registry.yarnpkg.com/babel-plugin-replace-import-extension/-/babel-plugin-replace-import-extension-1.1.4.tgz#bfe96afd8363e47b9512086bfc0953e0493f4427"
26082608
integrity sha512-UJi5YV31JxoaHHxhytRhQqOQN3+ZsaoXVia7e58yc35pe4tNjNr7BdznnDvIPbEG/4u5kf+lLDk9peaxsOPxGw==

0 commit comments

Comments
 (0)