Skip to content

Commit

Permalink
Use 'create-array-equal' to create equality function
Browse files Browse the repository at this point in the history
  • Loading branch information
KSXGitHub committed Oct 13, 2018
1 parent bf028d5 commit fc024aa
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 167 deletions.
19 changes: 3 additions & 16 deletions packages/typescript/advanced-map-multi-key-base/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { zip } from 'iter-tools'
import createArrayEqual from 'create-array-equal'
import AlteredEqual from 'advanced-map-altered-equal'

import {
IterableMapLike,
MapLikeConstructor,
ElementEqualFunc,
UnboundedArray
ElementEqualFunc
} from 'advanced-map-types'

/**
Expand All @@ -24,19 +23,7 @@ abstract class MultiKeyBase<
Map: MapLikeConstructor<Data>,
equal: ElementEqualFunc<Key> = Object.is
) {
type KeySet = UnboundedArray<Key>

const equalKeySet = (left: KeySet, right: KeySet): boolean => {
if (left.length !== right.length) return false

for (const [a, b] of zip(left, right)) {
if (!equal(a, b)) return false
}

return true
}

super(Map, equalKeySet)
super(Map, createArrayEqual(equal))
}

public set (key: Key, value: Value): this {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
"url": "https://github.com/ksxnodemodules/nodemonorepo/issues"
},
"dependencies": {
"iter-tools": "^6.1.4",
"tslib": "^1.9.3",
"create-array-equal": "^0.0.0",
"advanced-map-altered-equal": "^0.0.1",
"advanced-map-types": "^0.0.1",
"@types/node": "^10.9.3"
Expand Down
68 changes: 2 additions & 66 deletions packages/typescript/advanced-map-multi-key-base/shrinkwrap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,87 +2,23 @@ dependencies:
'@types/node': 10.11.6
advanced-map-altered-equal: 'link:../advanced-map-altered-equal'
advanced-map-types: 'link:../advanced-map-types'
iter-tools: 6.1.4
create-array-equal: 'link:../create-array-equal'
tslib: 1.9.3
packages:
/@babel/runtime/7.1.2:
dependencies:
regenerator-runtime: 0.12.1
dev: false
resolution:
integrity: sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==
/@types/node/10.11.6:
dev: false
resolution:
integrity: sha512-fnA7yvqg3oKQDb3skBif9w5RRKVKAaeKeNuLzZL37XcSiWL4IoSXQnnbchR3UnBu2EMLHBip7ZVEkqoIVBP8QQ==
/clone-regexp/2.1.0:
dependencies:
is-regexp: 2.0.0
dev: false
engines:
node: '>=6'
resolution:
integrity: sha512-Ujn//SX3jg4duyQGM37swl+Sk95zmQnraZO0fGVZQEq1fJJML8mJaEkbT70ns/kBcdU7HLzpF8VJUmsb1lDD8Q==
/dequeue/1.0.5:
dev: false
resolution:
integrity: sha1-EPHO8H4yNLIdyzj0v6LWYDSrZ8c=
/is-regexp/2.0.0:
dev: false
engines:
node: '>=6'
resolution:
integrity: sha512-B5NGyyvXTmppdR/g7ei6cu5DXhvzBLNcajOXJ3OR1tmW39iiF7444beL1lQjL393j8vDOTWGnSV2r/5cKuNqkg==
/iter-tools/6.1.4:
dependencies:
'@babel/runtime': 7.1.2
clone-regexp: 2.1.0
dequeue: 1.0.5
little-ds-toolkit: 1.1.0
typescript-tuple: 1.7.3
typescript-union: 0.0.0
dev: false
resolution:
integrity: sha512-MpUCYuPa7w8CzoHFWRycVsWBookzztSYjFaeYWHBUmumtuNWKtAbhUnAS+9tEku9GA961a8xa7CeH5Vm0+pQ5g==
/little-ds-toolkit/1.1.0:
dev: false
resolution:
integrity: sha512-2ARbmay5TrhFxFqcyFxPigmRToDuo8yxvIMdvwsDYNd/oZKnvsFT5L3I7s8WLXR7/tThYeffN9ouDtFFk4wzsA==
/regenerator-runtime/0.12.1:
dev: false
resolution:
integrity: sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
/tslib/1.9.3:
dev: false
resolution:
integrity: sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
/typescript-tuple/1.7.3:
dev: false
engines:
typescript: ^3.0.0
resolution:
integrity: sha512-ygCTfD6CX5ul+J0sZhq2MSouMNAeJpRXAFkYPUZomv457KWg15DuS7n+ubv15LtbX27iVo6DkuiX/5yyNdBvVg==
/typescript-union/0.0.0:
dependencies:
typescript-tuple: 1.7.3
utility-types: 2.1.0
dev: false
peerDependencies:
typescript: '>= 3.0.0'
resolution:
integrity: sha512-sWOTNcTOXw27cJhfvjSbxrKggb4XD+fPIFkjIqqnycdVqStj/3IR3QVEMZOheWY5ELGS3PCwuHFDVWAbK9UHvA==
/utility-types/2.1.0:
dev: false
engines:
node: '>= 4'
resolution:
integrity: sha512-/nP2gqavggo6l38rtQI/CdeV+2fmBGXVvHgj9kV2MAnms3TIi77Mz9BtapPFI0+GZQCqqom0vACQ+VlTTaCovw==
registry: 'https://registry.npmjs.org/'
shrinkwrapMinorVersion: 9
shrinkwrapVersion: 3
specifiers:
'@types/node': ^10.9.3
advanced-map-altered-equal: ^0.0.1
advanced-map-types: ^0.0.1
iter-tools: ^6.1.4
create-array-equal: ^0.0.0
tslib: ^1.9.3
1 change: 0 additions & 1 deletion packages/typescript/advanced-map-types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,3 @@ export type MapLikeKeyValue<Instance extends MapLike<any, any>> =
export type EqualFunc<X> = (a: X, b: X) => boolean
export type InitFunc<X, Y> = (x: X) => Y
export type ElementEqualFunc<X extends any[]> = EqualFunc<ElementOf<X>>
export type UnboundedArray<X extends any[]> = ElementOf<X>[]
19 changes: 3 additions & 16 deletions packages/typescript/advanced-set-multi-key-base/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { zip } from 'iter-tools'
import createArrayEqual from 'create-array-equal'
import AlteredEqual from 'advanced-set-altered-equal'

import {
IterableSetLike,
SetLikeConstructor,
ElementEqualFunc,
UnboundedArray
ElementEqualFunc
} from 'advanced-set-types'

/**
Expand All @@ -23,19 +22,7 @@ abstract class MultiKeyBase<
Set: SetLikeConstructor<Data>,
equal: ElementEqualFunc<X> = Object.is
) {
type ElementSet = UnboundedArray<X>

const equalElementSet = (left: ElementSet, right: ElementSet): boolean => {
if (left.length !== right.length) return false

for (const [a, b] of zip(left, right)) {
if (!equal(a, b)) return false
}

return true
}

super(Set, equalElementSet)
super(Set, createArrayEqual(equal))
}

public add (x: X): this {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
"url": "https://github.com/ksxnodemodules/nodemonorepo/issues"
},
"dependencies": {
"iter-tools": "^6.1.4",
"tslib": "^1.9.3",
"create-array-equal": "^0.0.0",
"advanced-set-altered-equal": "^0.0.0",
"advanced-set-types": "^0.0.0",
"@types/node": "^10.9.3"
Expand Down
68 changes: 2 additions & 66 deletions packages/typescript/advanced-set-multi-key-base/shrinkwrap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,87 +2,23 @@ dependencies:
'@types/node': 10.11.6
advanced-set-altered-equal: 'link:../advanced-set-altered-equal'
advanced-set-types: 'link:../advanced-set-types'
iter-tools: 6.1.4
create-array-equal: 'link:../create-array-equal'
tslib: 1.9.3
packages:
/@babel/runtime/7.1.2:
dependencies:
regenerator-runtime: 0.12.1
dev: false
resolution:
integrity: sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==
/@types/node/10.11.6:
dev: false
resolution:
integrity: sha512-fnA7yvqg3oKQDb3skBif9w5RRKVKAaeKeNuLzZL37XcSiWL4IoSXQnnbchR3UnBu2EMLHBip7ZVEkqoIVBP8QQ==
/clone-regexp/2.1.0:
dependencies:
is-regexp: 2.0.0
dev: false
engines:
node: '>=6'
resolution:
integrity: sha512-Ujn//SX3jg4duyQGM37swl+Sk95zmQnraZO0fGVZQEq1fJJML8mJaEkbT70ns/kBcdU7HLzpF8VJUmsb1lDD8Q==
/dequeue/1.0.5:
dev: false
resolution:
integrity: sha1-EPHO8H4yNLIdyzj0v6LWYDSrZ8c=
/is-regexp/2.0.0:
dev: false
engines:
node: '>=6'
resolution:
integrity: sha512-B5NGyyvXTmppdR/g7ei6cu5DXhvzBLNcajOXJ3OR1tmW39iiF7444beL1lQjL393j8vDOTWGnSV2r/5cKuNqkg==
/iter-tools/6.1.4:
dependencies:
'@babel/runtime': 7.1.2
clone-regexp: 2.1.0
dequeue: 1.0.5
little-ds-toolkit: 1.1.0
typescript-tuple: 1.7.3
typescript-union: 0.0.0
dev: false
resolution:
integrity: sha512-MpUCYuPa7w8CzoHFWRycVsWBookzztSYjFaeYWHBUmumtuNWKtAbhUnAS+9tEku9GA961a8xa7CeH5Vm0+pQ5g==
/little-ds-toolkit/1.1.0:
dev: false
resolution:
integrity: sha512-2ARbmay5TrhFxFqcyFxPigmRToDuo8yxvIMdvwsDYNd/oZKnvsFT5L3I7s8WLXR7/tThYeffN9ouDtFFk4wzsA==
/regenerator-runtime/0.12.1:
dev: false
resolution:
integrity: sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
/tslib/1.9.3:
dev: false
resolution:
integrity: sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
/typescript-tuple/1.7.3:
dev: false
engines:
typescript: ^3.0.0
resolution:
integrity: sha512-ygCTfD6CX5ul+J0sZhq2MSouMNAeJpRXAFkYPUZomv457KWg15DuS7n+ubv15LtbX27iVo6DkuiX/5yyNdBvVg==
/typescript-union/0.0.0:
dependencies:
typescript-tuple: 1.7.3
utility-types: 2.1.0
dev: false
peerDependencies:
typescript: '>= 3.0.0'
resolution:
integrity: sha512-sWOTNcTOXw27cJhfvjSbxrKggb4XD+fPIFkjIqqnycdVqStj/3IR3QVEMZOheWY5ELGS3PCwuHFDVWAbK9UHvA==
/utility-types/2.1.0:
dev: false
engines:
node: '>= 4'
resolution:
integrity: sha512-/nP2gqavggo6l38rtQI/CdeV+2fmBGXVvHgj9kV2MAnms3TIi77Mz9BtapPFI0+GZQCqqom0vACQ+VlTTaCovw==
registry: 'https://registry.npmjs.org/'
shrinkwrapMinorVersion: 9
shrinkwrapVersion: 3
specifiers:
'@types/node': ^10.9.3
advanced-set-altered-equal: ^0.0.0
advanced-set-types: ^0.0.0
iter-tools: ^6.1.4
create-array-equal: ^0.0.0
tslib: ^1.9.3

0 comments on commit fc024aa

Please sign in to comment.