hyperscript-rxjs 1.3.15 → 1.3.16
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.
- package/dist/hyperscript-rxjs.cjs +4114 -0
- package/dist/hyperscript-rxjs.d.ts +1438 -0
- package/package.json +21 -12
- package/src/array/advance.d.ts +0 -9
- package/src/array/advance.js +0 -13
- package/src/array/advance.test.js +0 -12
- package/src/array/arrayInsert.d.ts +0 -8
- package/src/array/arrayInsert.js +0 -13
- package/src/array/arrayInsert.test.js +0 -13
- package/src/array/arrayRemove.d.ts +0 -7
- package/src/array/arrayRemove.js +0 -15
- package/src/array/arrayRemove.test.js +0 -13
- package/src/array/findLastIndex.d.ts +0 -14
- package/src/array/findLastIndex.js +0 -20
- package/src/array/findLastIndex.test.js +0 -41
- package/src/array/index.d.ts +0 -9
- package/src/array/index.js +0 -9
- package/src/array/isRange.d.ts +0 -7
- package/src/array/isRange.js +0 -15
- package/src/array/isRange.test.js +0 -6
- package/src/array/rangeArray.d.ts +0 -7
- package/src/array/rangeArray.js +0 -10
- package/src/array/rangeArray.test.js +0 -11
- package/src/array/unwrapArgs.d.ts +0 -10
- package/src/array/unwrapArgs.js +0 -15
- package/src/array/unwrapArgs.test.js +0 -33
- package/src/array/zipArray.d.ts +0 -11
- package/src/array/zipArray.js +0 -24
- package/src/array/zipArray.test.js +0 -16
- package/src/comparers/Comparer.d.ts +0 -101
- package/src/comparers/Comparer.js +0 -149
- package/src/comparers/comparers.d.ts +0 -21
- package/src/comparers/comparers.js +0 -10
- package/src/comparers/differenceSet.d.ts +0 -20
- package/src/comparers/differenceSet.js +0 -35
- package/src/comparers/differenceSet.test.js +0 -11
- package/src/comparers/distinctArray.d.ts +0 -13
- package/src/comparers/distinctArray.js +0 -30
- package/src/comparers/distinctArray.test.js +0 -10
- package/src/comparers/findIndexInSet.d.ts +0 -20
- package/src/comparers/findIndexInSet.js +0 -27
- package/src/comparers/findIndexInSet.test.js +0 -8
- package/src/comparers/groupArrayBy.d.ts +0 -19
- package/src/comparers/groupArrayBy.js +0 -29
- package/src/comparers/groupArrayBy.test.js +0 -38
- package/src/comparers/groupSortedEntries.d.ts +0 -17
- package/src/comparers/groupSortedEntries.js +0 -38
- package/src/comparers/groupSortedEntries.test.js +0 -46
- package/src/comparers/index.d.ts +0 -14
- package/src/comparers/index.js +0 -14
- package/src/comparers/intersectSet.d.ts +0 -19
- package/src/comparers/intersectSet.js +0 -35
- package/src/comparers/intersectSet.test.js +0 -14
- package/src/comparers/isEqualset.d.ts +0 -22
- package/src/comparers/isEqualset.js +0 -33
- package/src/comparers/isEqualset.test.js +0 -22
- package/src/comparers/isSubset.d.ts +0 -21
- package/src/comparers/isSubset.js +0 -33
- package/src/comparers/isSubset.test.js +0 -21
- package/src/comparers/isSuperset.d.ts +0 -21
- package/src/comparers/isSuperset.js +0 -13
- package/src/comparers/isSuperset.test.js +0 -21
- package/src/comparers/sortedArrayToSet.d.ts +0 -20
- package/src/comparers/sortedArrayToSet.js +0 -35
- package/src/comparers/sortedArrayToSet.test.js +0 -11
- package/src/comparers/unionSet.d.ts +0 -21
- package/src/comparers/unionSet.js +0 -34
- package/src/comparers/unionSet.test.js +0 -11
- package/src/comparison/compareDate.d.ts +0 -8
- package/src/comparison/compareDate.js +0 -11
- package/src/comparison/compareEntries.d.ts +0 -13
- package/src/comparison/compareEntries.js +0 -13
- package/src/comparison/compareKey.d.ts +0 -11
- package/src/comparison/compareKey.js +0 -25
- package/src/comparison/compareKey.test.js +0 -21
- package/src/comparison/compareKeyPath.d.ts +0 -15
- package/src/comparison/compareKeyPath.js +0 -33
- package/src/comparison/compareKeyPath.test.js +0 -28
- package/src/comparison/compareNumber.d.ts +0 -11
- package/src/comparison/compareNumber.js +0 -27
- package/src/comparison/compareNumber.test.js +0 -21
- package/src/comparison/defaultCompare.d.ts +0 -8
- package/src/comparison/defaultCompare.js +0 -12
- package/src/comparison/defaultCompare.test.js +0 -24
- package/src/comparison/index.d.ts +0 -7
- package/src/comparison/index.js +0 -7
- package/src/comparison/infinity.test.js +0 -122
- package/src/comparison/typeof.test.js +0 -64
- package/src/comparison/types.d.ts +0 -5
- package/src/comparison/types.js +0 -11
- package/src/deep/Deep.d.ts +0 -58
- package/src/deep/Deep.js +0 -267
- package/src/deep/Deep.test.js +0 -130
- package/src/deep/deepCombineLatest.test.js +0 -36
- package/src/deep/deepMerge.test.js +0 -34
- package/src/deep/differenceDeep.test.js +0 -31
- package/src/deep/freshValueDeep.test.js +0 -17
- package/src/deep/index.d.ts +0 -1
- package/src/deep/index.js +0 -2
- package/src/deep/intersectDeep.test.js +0 -25
- package/src/deep/intersectEntries.d.ts +0 -13
- package/src/deep/intersectEntries.js +0 -37
- package/src/deep/intersectEntries.test.js +0 -20
- package/src/deep/objectToDeep.test.js +0 -31
- package/src/deep/replaceValueDeep.test.js +0 -21
- package/src/deep/unionDeep.test.js +0 -30
- package/src/deep/zipValueDeep.test.js +0 -21
- package/src/deep-rxjs/ObservableArray.d.ts +0 -55
- package/src/deep-rxjs/ObservableArray.js +0 -94
- package/src/deep-rxjs/ObservableArray.test.js +0 -117
- package/src/deep-rxjs/index.d.ts +0 -2
- package/src/deep-rxjs/index.js +0 -2
- package/src/deep-rxjs/isRxType.d.ts +0 -9
- package/src/deep-rxjs/isRxType.js +0 -15
- package/src/deep-rxjs/isRxType.test.js +0 -43
- package/src/hyperscript-rxjs/HyperscriptExtensions.d.ts +0 -20
- package/src/hyperscript-rxjs/checkbox.d.ts +0 -13
- package/src/hyperscript-rxjs/checkbox.js +0 -47
- package/src/hyperscript-rxjs/checkbox.test.js +0 -68
- package/src/hyperscript-rxjs/choice.d.ts +0 -13
- package/src/hyperscript-rxjs/choice.js +0 -24
- package/src/hyperscript-rxjs/choice.test.js +0 -108
- package/src/hyperscript-rxjs/collapse.d.ts +0 -14
- package/src/hyperscript-rxjs/collapse.js +0 -32
- package/src/hyperscript-rxjs/collapse.test.js +0 -67
- package/src/hyperscript-rxjs/displays/blockLevelFamily.d.ts +0 -5
- package/src/hyperscript-rxjs/displays/blockLevelFamily.js +0 -51
- package/src/hyperscript-rxjs/displays/getDisplay.d.ts +0 -7
- package/src/hyperscript-rxjs/displays/getDisplay.js +0 -51
- package/src/hyperscript-rxjs/displays/getDisplay.test.js +0 -56
- package/src/hyperscript-rxjs/displays/index.d.ts +0 -3
- package/src/hyperscript-rxjs/displays/index.js +0 -3
- package/src/hyperscript-rxjs/displays/inlineFamily.d.ts +0 -5
- package/src/hyperscript-rxjs/displays/inlineFamily.js +0 -73
- package/src/hyperscript-rxjs/flip.d.ts +0 -15
- package/src/hyperscript-rxjs/flip.js +0 -29
- package/src/hyperscript-rxjs/flip.test.js +0 -85
- package/src/hyperscript-rxjs/fragment.d.ts +0 -10
- package/src/hyperscript-rxjs/fragment.js +0 -22
- package/src/hyperscript-rxjs/fragment.test.js +0 -70
- package/src/hyperscript-rxjs/hyperscript.d.ts +0 -15
- package/src/hyperscript-rxjs/hyperscript.js +0 -170
- package/src/hyperscript-rxjs/hyperscript.test.js +0 -75
- package/src/hyperscript-rxjs/index.d.ts +0 -19
- package/src/hyperscript-rxjs/index.js +0 -19
- package/src/hyperscript-rxjs/multiselect.d.ts +0 -18
- package/src/hyperscript-rxjs/multiselect.js +0 -41
- package/src/hyperscript-rxjs/multiselect.test.js +0 -121
- package/src/hyperscript-rxjs/numberbox.d.ts +0 -14
- package/src/hyperscript-rxjs/numberbox.js +0 -73
- package/src/hyperscript-rxjs/numberbox.test.js +0 -84
- package/src/hyperscript-rxjs/radio.d.ts +0 -15
- package/src/hyperscript-rxjs/radio.js +0 -53
- package/src/hyperscript-rxjs/radio.test.js +0 -59
- package/src/hyperscript-rxjs/select.d.ts +0 -28
- package/src/hyperscript-rxjs/select.js +0 -88
- package/src/hyperscript-rxjs/select.test.js +0 -101
- package/src/hyperscript-rxjs/tabControls/bindTabIndex.d.ts +0 -12
- package/src/hyperscript-rxjs/tabControls/bindTabIndex.js +0 -59
- package/src/hyperscript-rxjs/tabControls/index.d.ts +0 -8
- package/src/hyperscript-rxjs/tabControls/index.js +0 -10
- package/src/hyperscript-rxjs/tabControls/tabControl.d.ts +0 -19
- package/src/hyperscript-rxjs/tabControls/tabControl.js +0 -40
- package/src/hyperscript-rxjs/tabControls/tabControl.test.js +0 -98
- package/src/hyperscript-rxjs/tabControls/tabNavItem.d.ts +0 -9
- package/src/hyperscript-rxjs/tabControls/tabNavItem.js +0 -30
- package/src/hyperscript-rxjs/tabControls/tabPanel.d.ts +0 -9
- package/src/hyperscript-rxjs/tabControls/tabPanel.js +0 -21
- package/src/hyperscript-rxjs/tabControls/tabRoot.d.ts +0 -7
- package/src/hyperscript-rxjs/tabControls/tabRoot.js +0 -26
- package/src/hyperscript-rxjs/tags.d.ts +0 -193
- package/src/hyperscript-rxjs/tags.js +0 -751
- package/src/hyperscript-rxjs/tags.test.js +0 -75
- package/src/hyperscript-rxjs/textNode.d.ts +0 -11
- package/src/hyperscript-rxjs/textNode.js +0 -51
- package/src/hyperscript-rxjs/textNode.test.js +0 -56
- package/src/hyperscript-rxjs/textarea.d.ts +0 -17
- package/src/hyperscript-rxjs/textarea.js +0 -45
- package/src/hyperscript-rxjs/textarea.test.js +0 -52
- package/src/hyperscript-rxjs/textbox.d.ts +0 -15
- package/src/hyperscript-rxjs/textbox.js +0 -42
- package/src/hyperscript-rxjs/textbox.test.js +0 -52
- package/src/index.d.ts +0 -19
- package/src/index.js +0 -19
- package/src/nodes/attachSubscriptionToNode.d.ts +0 -13
- package/src/nodes/attachSubscriptionToNode.js +0 -25
- package/src/nodes/attachSubscriptionToNode.test.js +0 -73
- package/src/nodes/index.d.ts +0 -6
- package/src/nodes/index.js +0 -6
- package/src/nodes/normalizeChildNodes.d.ts +0 -9
- package/src/nodes/normalizeChildNodes.js +0 -15
- package/src/nodes/normalizeChildNodes.test.js +0 -55
- package/src/nodes/parseHyperscriptArgs.d.ts +0 -10
- package/src/nodes/parseHyperscriptArgs.js +0 -57
- package/src/nodes/parseHyperscriptArgs.test.js +0 -85
- package/src/nodes/pipeEvent.d.ts +0 -15
- package/src/nodes/pipeEvent.js +0 -49
- package/src/nodes/pipeEvent.test.js +0 -97
- package/src/nodes/subscribeEvent.d.ts +0 -15
- package/src/nodes/subscribeEvent.js +0 -56
- package/src/nodes/subscribeEvent.test.js +0 -88
- package/src/object/index.d.ts +0 -10
- package/src/object/index.js +0 -11
- package/src/object/intersectObject.d.ts +0 -12
- package/src/object/intersectObject.js +0 -23
- package/src/object/intersectObject.test.js +0 -69
- package/src/object/isEmptyObject.d.ts +0 -7
- package/src/object/isEmptyObject.js +0 -13
- package/src/object/isEmptyObject.test.js +0 -33
- package/src/object/isPlainObject.d.ts +0 -11
- package/src/object/isPlainObject.js +0 -18
- package/src/object/nestedCombineLatest.d.ts +0 -11
- package/src/object/nestedCombineLatest.js +0 -18
- package/src/object/nestedCombineLatest.test.js +0 -25
- package/src/object/nestedMerge.d.ts +0 -11
- package/src/object/nestedMerge.js +0 -11
- package/src/object/nestedMerge.test.js +0 -61
- package/src/object/pickBehaviorSubject.d.ts +0 -13
- package/src/object/pickBehaviorSubject.js +0 -81
- package/src/object/pickBehaviorSubject.test.js +0 -88
- package/src/object/pluckProperty.d.ts +0 -13
- package/src/object/pluckProperty.js +0 -24
- package/src/object/pluckProperty.test.js +0 -37
- package/src/object/restore.d.ts +0 -12
- package/src/object/restore.js +0 -69
- package/src/object/restore.test.js +0 -124
- package/src/object/splitObjectByObservable.d.ts +0 -12
- package/src/object/splitObjectByObservable.js +0 -41
- package/src/object/splitObjectByObservable.test.js +0 -78
- package/src/props/getNestedProperty.d.ts +0 -12
- package/src/props/getNestedProperty.js +0 -31
- package/src/props/getNestedProperty.test.js +0 -72
- package/src/props/index.d.ts +0 -7
- package/src/props/index.js +0 -7
- package/src/props/parsePropName.d.ts +0 -13
- package/src/props/parsePropName.js +0 -45
- package/src/props/parsePropName.test.js +0 -67
- package/src/props/setProp.d.ts +0 -16
- package/src/props/setProp.js +0 -42
- package/src/props/setProp.test.js +0 -59
- package/src/props/setProps.d.ts +0 -14
- package/src/props/setProps.js +0 -47
- package/src/props/setProps.test.js +0 -97
- package/src/props/subscribeProp.d.ts +0 -16
- package/src/props/subscribeProp.js +0 -47
- package/src/props/subscribeProp.test.js +0 -81
- package/src/ramda/compose.d.ts +0 -10
- package/src/ramda/compose.js +0 -36
- package/src/ramda/compose.test.js +0 -73
- package/src/ramda/cond.d.ts +0 -12
- package/src/ramda/cond.js +0 -29
- package/src/ramda/cond.test.js +0 -88
- package/src/ramda/fold.d.ts +0 -13
- package/src/ramda/fold.js +0 -20
- package/src/ramda/fold.test.js +0 -51
- package/src/ramda/index.d.ts +0 -6
- package/src/ramda/index.js +0 -6
- package/src/ramda/pipe.d.ts +0 -13
- package/src/ramda/pipe.js +0 -27
- package/src/ramda/pipe.test.js +0 -77
- package/src/ramda/unfold.d.ts +0 -11
- package/src/ramda/unfold.js +0 -20
- package/src/ramda/unfold.test.js +0 -29
- package/src/unquoted-json/ajax.test.js +0 -1074
- package/src/unquoted-json/index.d.ts +0 -13
- package/src/unquoted-json/index.js +0 -12
- package/src/unquoted-json/queryStringify.d.ts +0 -8
- package/src/unquoted-json/queryStringify.js +0 -70
- package/src/unquoted-json/queryStringify.test.js +0 -110
- package/src/unquoted-json/stringifyKey.d.ts +0 -7
- package/src/unquoted-json/stringifyKey.js +0 -16
- package/src/unquoted-json/stringifyKey.test.js +0 -51
- package/src/unquoted-json/stringifyStringValue.d.ts +0 -7
- package/src/unquoted-json/stringifyStringValue.js +0 -17
- package/src/unquoted-json/stringifyStringValue.test.js +0 -52
- package/src/unquoted-json/unquotedJsonStringify.d.ts +0 -7
- package/src/unquoted-json/unquotedJsonStringify.js +0 -39
- package/src/unquoted-json/unquotedJsonStringify.test.js +0 -52
@@ -1,36 +0,0 @@
|
|
1
|
-
import { BehaviorSubject,Observable } from 'rxjs'
|
2
|
-
import { Deep } from './Deep'
|
3
|
-
|
4
|
-
test('test deep CombineLatest', done => {
|
5
|
-
const model = {
|
6
|
-
a: {
|
7
|
-
b: new BehaviorSubject(0),
|
8
|
-
c: new BehaviorSubject(1),
|
9
|
-
},
|
10
|
-
x: [new BehaviorSubject(2), new BehaviorSubject(3)]
|
11
|
-
}
|
12
|
-
|
13
|
-
let deep = Deep.fromBehaviorSubject(model)
|
14
|
-
deep.entries.forEach(([k, v]) => {
|
15
|
-
console.log(k)
|
16
|
-
console.log(v)
|
17
|
-
})
|
18
|
-
|
19
|
-
let obs = deep.combineLatest();
|
20
|
-
|
21
|
-
expect(obs).toBeInstanceOf(Observable)
|
22
|
-
|
23
|
-
obs.subscribe({
|
24
|
-
next: data => {
|
25
|
-
console.log(data.entries)
|
26
|
-
//states.push(data)
|
27
|
-
}
|
28
|
-
})
|
29
|
-
|
30
|
-
model.a.b.next(10)
|
31
|
-
model.a.c.next(11)
|
32
|
-
|
33
|
-
done()
|
34
|
-
|
35
|
-
})
|
36
|
-
|
@@ -1,34 +0,0 @@
|
|
1
|
-
import { BehaviorSubject, Observable } from 'rxjs'
|
2
|
-
import { Deep } from './Deep'
|
3
|
-
|
4
|
-
test('test deepMerge 1', done => {
|
5
|
-
let states = []
|
6
|
-
|
7
|
-
const source = {
|
8
|
-
a: {
|
9
|
-
b: new BehaviorSubject(0),
|
10
|
-
c: new BehaviorSubject(1),
|
11
|
-
},
|
12
|
-
x: [new BehaviorSubject(2), new BehaviorSubject(3)]
|
13
|
-
}
|
14
|
-
let deep = Deep.fromObservable(source)
|
15
|
-
let obs = deep.merge()
|
16
|
-
expect(obs).toBeInstanceOf(Observable)
|
17
|
-
|
18
|
-
obs.subscribe(data => { states.push(data) })
|
19
|
-
|
20
|
-
source.a.b.next(10)
|
21
|
-
source.x[1].next(13)
|
22
|
-
|
23
|
-
expect(states).toEqual([
|
24
|
-
[['a', 'b'], 0],
|
25
|
-
[['a', 'c'], 1],
|
26
|
-
[['x', 0], 2],
|
27
|
-
[['x', 1], 3],
|
28
|
-
[['a', 'b'], 10],
|
29
|
-
[['x', 1], 13],
|
30
|
-
])
|
31
|
-
|
32
|
-
done()
|
33
|
-
})
|
34
|
-
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import { Deep } from './Deep'
|
2
|
-
|
3
|
-
test('difference Deep test', () => {
|
4
|
-
let dp = new Deep([
|
5
|
-
[[0], 0],
|
6
|
-
[[1], 1]
|
7
|
-
])
|
8
|
-
let keys = [[1], [2]]
|
9
|
-
let y = dp.difference(keys)
|
10
|
-
expect(y.entries).toEqual([[[0], 0]])
|
11
|
-
})
|
12
|
-
|
13
|
-
|
14
|
-
test('difference Deep test with 过滤掉 user 相关的键路径', () => {
|
15
|
-
|
16
|
-
const deep = new Deep([
|
17
|
-
[['settings', 'theme'], 'dark'],
|
18
|
-
[['user', 'age'], 30],
|
19
|
-
[['user', 'name'], '张三'],
|
20
|
-
]);
|
21
|
-
|
22
|
-
let keys = [
|
23
|
-
['user', 'age'],
|
24
|
-
['user', 'name'],
|
25
|
-
]
|
26
|
-
const filtered = deep.difference(keys)
|
27
|
-
expect(filtered.entries).toEqual([
|
28
|
-
[['settings', 'theme'], 'dark']
|
29
|
-
])
|
30
|
-
|
31
|
-
})
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import { Deep } from './Deep'
|
2
|
-
|
3
|
-
test('freshValueDeep', () => {
|
4
|
-
let entries = [
|
5
|
-
[['a'], 0], [['b'], 1],
|
6
|
-
[['c', 0], 2],
|
7
|
-
[['c', 1], 3],
|
8
|
-
[['c', 2, 'e'], 4]
|
9
|
-
]
|
10
|
-
|
11
|
-
let deep = new Deep(entries)
|
12
|
-
let obj = { a: 5, b: 6, c: [7, 8, { e: 9 }] }
|
13
|
-
let y = deep.freshValue(obj)
|
14
|
-
let e = [[['a'], 5], [['b'], 6], [['c', 0], 7], [['c', 1], 8], [['c', 2, 'e'], 9]]
|
15
|
-
|
16
|
-
expect(y.entries).toEqual(e)
|
17
|
-
})
|
package/src/deep/index.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export * from "./Deep"
|
package/src/deep/index.js
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
import { Deep } from './Deep'
|
2
|
-
|
3
|
-
test('test intersectDeep', () => {
|
4
|
-
let entries = [
|
5
|
-
[[0, 0], 0], //*
|
6
|
-
[[0, 1], 1],
|
7
|
-
[[1, 0], 2],
|
8
|
-
[[1, 1], 3], //*
|
9
|
-
]
|
10
|
-
let deep = new Deep(entries)
|
11
|
-
|
12
|
-
let keys = [
|
13
|
-
[0, 0],
|
14
|
-
[1, 1],
|
15
|
-
]
|
16
|
-
|
17
|
-
let y = deep.intersect(keys)
|
18
|
-
|
19
|
-
let e = [
|
20
|
-
[[0, 0], 0],
|
21
|
-
[[1, 1], 3],
|
22
|
-
]
|
23
|
-
|
24
|
-
expect(y.entries).toEqual(e)
|
25
|
-
})
|
@@ -1,13 +0,0 @@
|
|
1
|
-
import { compareKeyPath } from '../comparison';
|
2
|
-
|
3
|
-
/**
|
4
|
-
* Returns a new entries array where each entry's key exists in the given keys array.
|
5
|
-
* @private
|
6
|
-
* @param entries - An array of entries, where each entry is a tuple [keyPath, value].
|
7
|
-
* @param keys - An array of key paths to intersect with.
|
8
|
-
* @returns A new array of entries whose keys are present in the keys array.
|
9
|
-
*/
|
10
|
-
export function intersectEntries<T>(
|
11
|
-
entries: [(string|number)[],T][],
|
12
|
-
keys: (string|number)[][]
|
13
|
-
): [(string|number)[],T][];
|
@@ -1,37 +0,0 @@
|
|
1
|
-
import { compareKeyPath } from "../comparison"
|
2
|
-
|
3
|
-
/**
|
4
|
-
* 返回一个新entries,每个entry的key都在keys中。
|
5
|
-
* @template T
|
6
|
-
* @param {[(string|number)[],T][]} entries
|
7
|
-
* @param {(string|number)[][]} keys
|
8
|
-
*/
|
9
|
-
export function intersectEntries(entries, keys) {
|
10
|
-
|
11
|
-
/**
|
12
|
-
*
|
13
|
-
* @param {[(string|number)[],T][]} acc
|
14
|
-
* @param {[(string|number)[],T][]} entries
|
15
|
-
* @param {(string|number)[][]} keys
|
16
|
-
* @returns {[(string|number)[],T][]}
|
17
|
-
*/
|
18
|
-
const loop = (acc, entries, keys) => {// 由intersect修改而来
|
19
|
-
if (entries.length === 0 || keys.length === 0) {
|
20
|
-
return acc
|
21
|
-
} else {
|
22
|
-
switch (Math.sign(compareKeyPath(entries[0][0], keys[0]))) {
|
23
|
-
case 0:
|
24
|
-
let yy = [...acc, entries[0]]
|
25
|
-
return loop(yy, entries.slice(1), keys.slice(1))
|
26
|
-
|
27
|
-
case -1:
|
28
|
-
return loop(acc, entries.slice(1), keys)
|
29
|
-
|
30
|
-
case 1:
|
31
|
-
default:
|
32
|
-
return loop(acc, entries, keys.slice(1))
|
33
|
-
}
|
34
|
-
}
|
35
|
-
}
|
36
|
-
return loop([], entries, keys)
|
37
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { intersectEntries } from './intersectEntries'
|
2
|
-
|
3
|
-
test('test intersectEntries', () => {
|
4
|
-
let x = [
|
5
|
-
[[0, 0], 0],
|
6
|
-
[[0, 1], 1],
|
7
|
-
[[1, 0], 2],
|
8
|
-
[[1, 1], 3]]
|
9
|
-
|
10
|
-
let keys = [
|
11
|
-
[0, 0],
|
12
|
-
[1, 1]
|
13
|
-
]
|
14
|
-
|
15
|
-
let y = intersectEntries(x, keys)
|
16
|
-
|
17
|
-
let e = [[[0, 0], 0], [[1, 1], 3]]
|
18
|
-
|
19
|
-
expect(y).toEqual(e)
|
20
|
-
})
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import { BehaviorSubject } from 'rxjs'
|
2
|
-
import { pluckProperty } from '../object'
|
3
|
-
import { Deep } from './Deep'
|
4
|
-
|
5
|
-
|
6
|
-
test('test objectToDeep', () => {
|
7
|
-
let observables = {
|
8
|
-
a: new BehaviorSubject(0),
|
9
|
-
c: [
|
10
|
-
new BehaviorSubject(0),
|
11
|
-
{
|
12
|
-
e: new BehaviorSubject(0),
|
13
|
-
},
|
14
|
-
],
|
15
|
-
}
|
16
|
-
|
17
|
-
let deep = Deep.fromObject(observables, (v, k, p) => v instanceof BehaviorSubject)
|
18
|
-
|
19
|
-
let keys = [
|
20
|
-
['a'],
|
21
|
-
['c', 0],
|
22
|
-
['c', 1, 'e'],
|
23
|
-
]
|
24
|
-
|
25
|
-
expect(deep.keys).toEqual(keys)
|
26
|
-
|
27
|
-
let entries = keys.map(k => [k, pluckProperty(observables, k)])
|
28
|
-
|
29
|
-
expect(deep.entries).toEqual(entries)
|
30
|
-
|
31
|
-
})
|
@@ -1,21 +0,0 @@
|
|
1
|
-
import { Deep } from './Deep'
|
2
|
-
|
3
|
-
test('replaceValueDeep', () => {
|
4
|
-
let entries = [
|
5
|
-
[['a'], 0],
|
6
|
-
[['b'], 1],
|
7
|
-
[['c', 0], 2], [['c', 1], 3], [['c', 2, 'e'], 4]]
|
8
|
-
|
9
|
-
let deep = new Deep(entries)
|
10
|
-
|
11
|
-
let values = [5, 6, 7, 8, 9]
|
12
|
-
|
13
|
-
let y = deep.replaceValue(values)
|
14
|
-
|
15
|
-
let e = [
|
16
|
-
[['a'], 5],
|
17
|
-
[['b'], 6],
|
18
|
-
[['c', 0], 7], [['c', 1], 8], [['c', 2, 'e'], 9]]
|
19
|
-
|
20
|
-
expect(y.entries).toEqual(e)
|
21
|
-
})
|
@@ -1,30 +0,0 @@
|
|
1
|
-
import { Deep } from './Deep'
|
2
|
-
|
3
|
-
test('unionDeep test', () => {
|
4
|
-
let ent1 = [
|
5
|
-
[["a", "b"], 0],
|
6
|
-
[["a", "c"], 1], //*
|
7
|
-
]
|
8
|
-
|
9
|
-
let ent2 = [
|
10
|
-
[["a", "c"], 'x'], //*
|
11
|
-
[["a", "d"], 2],
|
12
|
-
[["a", "e"], 3],
|
13
|
-
[["f"], 4],
|
14
|
-
]
|
15
|
-
|
16
|
-
//a,b中的键不能重复
|
17
|
-
let deep1 = new Deep(ent1)
|
18
|
-
let deep2 = deep1.union(ent2)
|
19
|
-
let e = [
|
20
|
-
[["a", "b"], 0],
|
21
|
-
[["a", "c"], 1], //*
|
22
|
-
[["a", "c"], 'x'], //*
|
23
|
-
[["a", "d"], 2],
|
24
|
-
[["a", "e"], 3],
|
25
|
-
[["f"], 4],
|
26
|
-
]
|
27
|
-
|
28
|
-
expect(deep2.entries).toEqual(e)
|
29
|
-
})
|
30
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
import { Deep } from './Deep'
|
2
|
-
|
3
|
-
test('zipValueDeep', () => {
|
4
|
-
let entries = [
|
5
|
-
[['a'], 0],
|
6
|
-
[['b'], 1],
|
7
|
-
[['c', 0], 2],
|
8
|
-
[['c', 1], 3],
|
9
|
-
[['c', 2, 'e'], 4]]
|
10
|
-
let deep = new Deep(entries)
|
11
|
-
let values = [5, 6, 7, 8, 9]
|
12
|
-
let y = deep.zipValue(values)
|
13
|
-
let e = [
|
14
|
-
[['a'], [0, 5]],
|
15
|
-
[['b'], [1, 6]],
|
16
|
-
[['c', 0], [2, 7]],
|
17
|
-
[['c', 1], [3, 8]],
|
18
|
-
[['c', 2, 'e'], [4, 9]]
|
19
|
-
]
|
20
|
-
expect(y.entries).toEqual(e)
|
21
|
-
})
|
@@ -1,55 +0,0 @@
|
|
1
|
-
import { Subject, Observable } from 'rxjs';
|
2
|
-
|
3
|
-
/**
|
4
|
-
* ObservableArray 是一个可观察的数组,支持 insertBefore、removeChild、replaceChild 操作,
|
5
|
-
* 并通过 RxJS Subject 通知变化,适用于响应式 DOM 操作场景。
|
6
|
-
*/
|
7
|
-
export class ObservableArray<T = any> extends Array<T> {
|
8
|
-
constructor(newItem: () => T);
|
9
|
-
|
10
|
-
/**
|
11
|
-
* 变化通知的 Subject。
|
12
|
-
* 事件元组类型: ['insertBefore', T, number] | ['removeChild', number] | ['replaceChild', T, number]
|
13
|
-
*/
|
14
|
-
action$: Subject<['insertBefore', T, number] | ['removeChild', number] | ['replaceChild', T, number]>;
|
15
|
-
|
16
|
-
/**
|
17
|
-
* 插入元素事件流,发出 [item, index]。
|
18
|
-
*/
|
19
|
-
insertBefore$: Observable<[T, number]>;
|
20
|
-
|
21
|
-
/**
|
22
|
-
* 删除元素事件流,发出 index。
|
23
|
-
*/
|
24
|
-
removeChild$: Observable<number>;
|
25
|
-
|
26
|
-
/**
|
27
|
-
* 替换元素事件流,发出 [item, index]。
|
28
|
-
*/
|
29
|
-
replaceChild$: Observable<[T, number]>;
|
30
|
-
|
31
|
-
/**
|
32
|
-
* 在指定位置插入元素,并通知变化。
|
33
|
-
* @param item 要插入的元素
|
34
|
-
* @param index 插入位置,默认为数组末尾
|
35
|
-
*/
|
36
|
-
insertBefore(item: T, index?: number): void;
|
37
|
-
|
38
|
-
/**
|
39
|
-
* 删除指定位置的元素,并通知变化。
|
40
|
-
* @param index 删除位置,默认为数组末尾
|
41
|
-
*/
|
42
|
-
removeChild(index?: number): void;
|
43
|
-
|
44
|
-
/**
|
45
|
-
* 替换指定位置的元素,并通知变化。
|
46
|
-
* @param item 新元素
|
47
|
-
* @param index 替换位置
|
48
|
-
*/
|
49
|
-
replaceChild(item: T, index: number): void;
|
50
|
-
|
51
|
-
/**
|
52
|
-
* 附加一个默认子元素
|
53
|
-
*/
|
54
|
-
appendChild(): void;
|
55
|
-
}
|
@@ -1,94 +0,0 @@
|
|
1
|
-
import { Subject } from 'rxjs'
|
2
|
-
import { filter, map } from 'rxjs/operators'
|
3
|
-
import { arrayInsert, arrayRemove } from '../array'
|
4
|
-
|
5
|
-
/**
|
6
|
-
* ObservableArray 是一个可观察的数组,支持 insertBefore、removeChild、replaceChild 操作,
|
7
|
-
* 并通过 RxJS Subject 通知变化,适用于响应式 DOM 操作场景。
|
8
|
-
*
|
9
|
-
* @template T
|
10
|
-
* @extends Array<T>
|
11
|
-
*/
|
12
|
-
export class ObservableArray extends Array {
|
13
|
-
/**
|
14
|
-
* @constructor 创建一个 ObservableArray 实例。禁止传参。
|
15
|
-
* @param {()=>T} newItem
|
16
|
-
* @throws {Error} 如果传入参数则抛出异常。
|
17
|
-
*/
|
18
|
-
constructor(newItem) {
|
19
|
-
super();
|
20
|
-
this.newitem = newItem
|
21
|
-
|
22
|
-
/**
|
23
|
-
* 变化通知的 Subject。
|
24
|
-
* @type {Subject<any[]>}
|
25
|
-
*/
|
26
|
-
this.action$ = new Subject()
|
27
|
-
|
28
|
-
/**
|
29
|
-
* 插入元素事件流,发出 [item, index]。
|
30
|
-
* @type {import('rxjs').Observable<[T, number]>}
|
31
|
-
*/
|
32
|
-
this.insertBefore$ =
|
33
|
-
this.action$.pipe(
|
34
|
-
filter(([action]) => action === 'insertBefore'),
|
35
|
-
map(([_, item, index]) => [item, index]),
|
36
|
-
)
|
37
|
-
|
38
|
-
/**
|
39
|
-
* 删除元素事件流,发出 index。
|
40
|
-
* @type {import('rxjs').Observable<number>}
|
41
|
-
*/
|
42
|
-
this.removeChild$ =
|
43
|
-
this.action$.pipe(
|
44
|
-
filter(([action]) => action === 'removeChild'),
|
45
|
-
map(([_, index]) => index),
|
46
|
-
)
|
47
|
-
|
48
|
-
/**
|
49
|
-
* 替换元素事件流,发出 [item, index]。
|
50
|
-
* @type {import('rxjs').Observable<[T, number]>}
|
51
|
-
*/
|
52
|
-
this.replaceChild$ =
|
53
|
-
this.action$.pipe(
|
54
|
-
filter(([action]) => action === 'replaceChild'),
|
55
|
-
map(([_, item, index]) => [item, index]),
|
56
|
-
)
|
57
|
-
}
|
58
|
-
|
59
|
-
/**
|
60
|
-
* 在指定位置插入元素,并通知变化。
|
61
|
-
* @param {T} item 要插入的元素
|
62
|
-
* @param {number} [index=this.length] 插入位置,默认为数组末尾
|
63
|
-
*/
|
64
|
-
insertBefore(item, index = this.length) {
|
65
|
-
arrayInsert(this, item, index)
|
66
|
-
this.action$.next(['insertBefore', item, index])
|
67
|
-
}
|
68
|
-
|
69
|
-
/**
|
70
|
-
* 删除指定位置的元素,并通知变化。
|
71
|
-
* @param {number} [index=this.length-1] 删除位置,默认为数组末尾
|
72
|
-
*/
|
73
|
-
removeChild(index = this.length - 1) {
|
74
|
-
arrayRemove(this, index)
|
75
|
-
this.action$.next(['removeChild', index])
|
76
|
-
}
|
77
|
-
|
78
|
-
/**
|
79
|
-
* 替换指定位置的元素,并通知变化。
|
80
|
-
* @param {T} item 新元素
|
81
|
-
* @param {number} index 替换位置
|
82
|
-
*/
|
83
|
-
replaceChild(item, index) {
|
84
|
-
this[index] = item
|
85
|
-
this.action$.next(['replaceChild', item, index])
|
86
|
-
}
|
87
|
-
/**
|
88
|
-
* 附加一个默认子元素
|
89
|
-
*/
|
90
|
-
appendChild(){
|
91
|
-
this.insertBefore(this.newitem(), this.length)
|
92
|
-
}
|
93
|
-
|
94
|
-
}
|
@@ -1,117 +0,0 @@
|
|
1
|
-
import { ObservableArray } from './ObservableArray'
|
2
|
-
|
3
|
-
test('ObservableArray is Array', () => {
|
4
|
-
let arr = new ObservableArray()
|
5
|
-
expect(Array.isArray(arr)).toEqual(true)
|
6
|
-
})
|
7
|
-
|
8
|
-
test('test insertBefore', done => {
|
9
|
-
let states = []
|
10
|
-
let arr = new ObservableArray()
|
11
|
-
|
12
|
-
arr.insertBefore$.subscribe(([item, index]) => { states.push(['insertBefore', item, index]) })
|
13
|
-
arr.insertBefore(4)
|
14
|
-
arr.insertBefore(3)
|
15
|
-
arr.insertBefore(2, 0)
|
16
|
-
|
17
|
-
expect(states).toEqual([
|
18
|
-
['insertBefore', 4, 0],
|
19
|
-
['insertBefore', 3, 1],
|
20
|
-
['insertBefore', 2, 0],
|
21
|
-
])
|
22
|
-
|
23
|
-
expect([...arr]).toEqual([2, 4, 3])
|
24
|
-
expect(arr.length).toEqual(3)
|
25
|
-
|
26
|
-
done()
|
27
|
-
})
|
28
|
-
|
29
|
-
test('test removeChild', done => {
|
30
|
-
let states = []
|
31
|
-
let arr = new ObservableArray()
|
32
|
-
arr.removeChild$.subscribe(index => { states.push(['removeChild', index]) })
|
33
|
-
|
34
|
-
arr.insertBefore(4)
|
35
|
-
arr.insertBefore(3)
|
36
|
-
|
37
|
-
expect([...arr]).toEqual([4, 3])
|
38
|
-
expect(arr.length).toEqual(2)
|
39
|
-
arr.removeChild()
|
40
|
-
arr.removeChild(0)
|
41
|
-
expect(arr.length).toEqual(0)
|
42
|
-
|
43
|
-
expect(states).toEqual([
|
44
|
-
['removeChild', 1],
|
45
|
-
['removeChild', 0],
|
46
|
-
])
|
47
|
-
|
48
|
-
expect([...arr]).toEqual([])
|
49
|
-
|
50
|
-
done()
|
51
|
-
})
|
52
|
-
|
53
|
-
test('test default argument', done => {
|
54
|
-
let arr = new ObservableArray()
|
55
|
-
|
56
|
-
arr.insertBefore(4)
|
57
|
-
arr.insertBefore(3)
|
58
|
-
|
59
|
-
expect([...arr]).toEqual([4, 3])
|
60
|
-
arr.insertBefore(2)
|
61
|
-
expect([...arr]).toEqual([4, 3, 2])
|
62
|
-
|
63
|
-
arr.removeChild()
|
64
|
-
expect([...arr]).toEqual([4, 3])
|
65
|
-
|
66
|
-
arr.removeChild()
|
67
|
-
expect([...arr]).toEqual([4])
|
68
|
-
|
69
|
-
|
70
|
-
done()
|
71
|
-
})
|
72
|
-
|
73
|
-
test('test replaceChild', done => {
|
74
|
-
let states = []
|
75
|
-
let arr = new ObservableArray()
|
76
|
-
|
77
|
-
arr.replaceChild$.subscribe(([item, index]) => { states.push(['replaceChild', item, index]) })
|
78
|
-
|
79
|
-
arr.insertBefore(4)
|
80
|
-
arr.insertBefore(3)
|
81
|
-
arr.insertBefore(2, 0)
|
82
|
-
|
83
|
-
expect([...arr]).toEqual([2, 4, 3])
|
84
|
-
|
85
|
-
arr.replaceChild('4', 1)
|
86
|
-
|
87
|
-
expect(states).toEqual([
|
88
|
-
['replaceChild', '4', 1],
|
89
|
-
])
|
90
|
-
|
91
|
-
expect([...arr]).toEqual([2, '4', 3])
|
92
|
-
|
93
|
-
done()
|
94
|
-
})
|
95
|
-
|
96
|
-
test('test action', done => {
|
97
|
-
let states = []
|
98
|
-
let arr = new ObservableArray()
|
99
|
-
|
100
|
-
arr.action$.subscribe(a => { states.push(a) })
|
101
|
-
|
102
|
-
arr.insertBefore('a')
|
103
|
-
arr.replaceChild('b', 0)
|
104
|
-
arr.removeChild()
|
105
|
-
|
106
|
-
expect(states).toEqual([
|
107
|
-
['insertBefore', 'a', 0],
|
108
|
-
['replaceChild', 'b', 0],
|
109
|
-
['removeChild', 0],
|
110
|
-
|
111
|
-
])
|
112
|
-
|
113
|
-
expect([...arr]).toEqual([])
|
114
|
-
|
115
|
-
done()
|
116
|
-
})
|
117
|
-
|
package/src/deep-rxjs/index.d.ts
DELETED
package/src/deep-rxjs/index.js
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
import { isObservable, Subscription } from 'rxjs'
|
2
|
-
|
3
|
-
/**
|
4
|
-
* 检查对象是否为 RxJS 类型。
|
5
|
-
*
|
6
|
-
* `isRxType` 函数用于判断给定的对象是否为 RxJS 的 `Observable` 或 `Subscription` 类型。
|
7
|
-
*
|
8
|
-
* @param {any} obj - 要检查的对象。
|
9
|
-
* @returns {boolean} - 如果对象是 `Observable` 或 `Subscription`,返回 `true`;否则返回 `false`。
|
10
|
-
*
|
11
|
-
*/
|
12
|
-
export function isRxType(obj) {
|
13
|
-
return typeof obj === 'object' && obj &&
|
14
|
-
(isObservable(obj) || obj instanceof Subscription)
|
15
|
-
}
|
@@ -1,43 +0,0 @@
|
|
1
|
-
import { of, Subscription } from 'rxjs';
|
2
|
-
import { isRxType } from './isRxType';
|
3
|
-
|
4
|
-
describe('isRxType', () => {
|
5
|
-
test('should return true for an Observable', () => {
|
6
|
-
const observable = of(1);
|
7
|
-
expect(isRxType(observable)).toBe(true);
|
8
|
-
});
|
9
|
-
|
10
|
-
test('should return true for a Subscription', () => {
|
11
|
-
const subscription = new Subscription();
|
12
|
-
expect(isRxType(subscription)).toBe(true);
|
13
|
-
});
|
14
|
-
|
15
|
-
test('should return false for a plain object', () => {
|
16
|
-
const obj = {};
|
17
|
-
expect(isRxType(obj)).toBe(false);
|
18
|
-
});
|
19
|
-
|
20
|
-
test('should return null for null', () => {
|
21
|
-
expect(isRxType(null)).toBe(null);
|
22
|
-
});
|
23
|
-
|
24
|
-
test('should return false for undefined', () => {
|
25
|
-
expect(isRxType(undefined)).toBe(false);
|
26
|
-
});
|
27
|
-
|
28
|
-
test('should return false for a primitive value', () => {
|
29
|
-
expect(isRxType(42)).toBe(false);
|
30
|
-
expect(isRxType('string')).toBe(false);
|
31
|
-
expect(isRxType(true)).toBe(false);
|
32
|
-
});
|
33
|
-
|
34
|
-
test('should return false for a function', () => {
|
35
|
-
const func = () => {};
|
36
|
-
expect(isRxType(func)).toBe(false);
|
37
|
-
});
|
38
|
-
|
39
|
-
test('should return false for an array', () => {
|
40
|
-
const arr = [];
|
41
|
-
expect(isRxType(arr)).toBe(false);
|
42
|
-
});
|
43
|
-
});
|