Skip to content

Commit 03bfa5a

Browse files
committed
Remove more any, as cast.
- Removes more any types from dom/event/iso.ts. - As casts where necessary - Makes check helper function for integrityCheck - Adds return types to functions
1 parent b6a3d48 commit 03bfa5a

File tree

5 files changed

+66
-86
lines changed

5 files changed

+66
-86
lines changed

ts/miso.spec.ts

Lines changed: 22 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,8 +1656,7 @@ describe('js tests', () => {
16561656
};
16571657
var result = hydrate(false, body, vtree);
16581658
expect(result).toEqual(true);
1659-
var check = integrityCheck(true, vtree);
1660-
expect(check).toBe(true);
1659+
expect(integrityCheck(vtree)).toBe(true);
16611660
});
16621661

16631662
test('Should fail integrity check on bad tag', () => {
@@ -1678,11 +1677,9 @@ describe('js tests', () => {
16781677
};
16791678
var result = hydrate(false, body, vtree);
16801679
expect(result).toEqual(true);
1681-
var check = integrityCheck(true, vtree);
1682-
expect(check).toBe(true);
1680+
expect(integrityCheck(vtree)).toBe(true);
16831681
vtree.tag = 'lol';
1684-
check = integrityCheck(true, vtree);
1685-
expect(check).toBe(false);
1682+
expect(integrityCheck(vtree)).toBe(false);
16861683
});
16871684

16881685
test('Should fail integrity check on bad tag in hydrate w/ logging enabled', () => {
@@ -1723,11 +1720,9 @@ describe('js tests', () => {
17231720
};
17241721
var result = hydrate(false, body, vtree);
17251722
expect(result).toEqual(true);
1726-
var check = integrityCheck(true, vtree);
1727-
expect(check).toBe(true);
1723+
expect(integrityCheck(vtree)).toBe(true);
17281724
vtree.children[0].text = 'oops';
1729-
check = integrityCheck(true, vtree);
1730-
expect(check).toBe(false);
1725+
expect(integrityCheck(vtree)).toBe(false);
17311726
});
17321727

17331728
test('Should fail integrity check on differing child lengths', () => {
@@ -1748,11 +1743,9 @@ describe('js tests', () => {
17481743
};
17491744
var result = hydrate(false, body, vtree);
17501745
expect(result).toEqual(true);
1751-
var check = integrityCheck(true, vtree);
1752-
expect(check).toBe(true);
1746+
expect(integrityCheck(vtree)).toBe(true);
17531747
vtree.children = [];
1754-
check = integrityCheck(true, vtree);
1755-
expect(check).toBe(false);
1748+
expect(integrityCheck(vtree)).toBe(false);
17561749
});
17571750

17581751
test('Should fail integrity check on differing styles', () => {
@@ -1774,11 +1767,9 @@ describe('js tests', () => {
17741767
};
17751768
var result = hydrate(false, body, vtree);
17761769
expect(result).toEqual(true);
1777-
var check = integrityCheck(true, vtree);
1778-
expect(check).toBe(true);
1770+
expect(integrityCheck(vtree)).toBe(true);
17791771
vtree.css['background-color'] = 'green';
1780-
check = integrityCheck(true, vtree);
1781-
expect(check).toBe(false);
1772+
expect(integrityCheck(vtree)).toBe(false);
17821773
});
17831774

17841775
test('Should fail integrity check on differing styles, for color', () => {
@@ -1801,11 +1792,9 @@ describe('js tests', () => {
18011792
};
18021793
var result = hydrate(false, body, vtree);
18031794
expect(result).toEqual(true);
1804-
var check = integrityCheck(true, vtree);
1805-
expect(check).toBe(true);
1795+
expect(integrityCheck(vtree)).toBe(true);
18061796
vtree.css['color'] = '#dddddd';
1807-
check = integrityCheck(true, vtree);
1808-
expect(check).toBe(false);
1797+
expect(integrityCheck(vtree)).toBe(false);
18091798
});
18101799

18111800
test('Should fail integrity check on differing props', () => {
@@ -1828,11 +1817,9 @@ describe('js tests', () => {
18281817
};
18291818
var result = hydrate(false, body, vtree);
18301819
expect(result).toEqual(true);
1831-
var check = integrityCheck(true, vtree);
1832-
expect(check).toBe(true);
1820+
expect(integrityCheck(vtree)).toBe(true);
18331821
vtree.props['class'] = 'something-else';
1834-
check = integrityCheck(true, vtree);
1835-
expect(check).toBe(false);
1822+
expect(integrityCheck(vtree)).toBe(false);
18361823
});
18371824

18381825
test('Should fail integrity check on differing height / width', () => {
@@ -1857,12 +1844,10 @@ describe('js tests', () => {
18571844
};
18581845
var result = hydrate(false, body, vtree);
18591846
expect(result).toEqual(true);
1860-
var check = integrityCheck(true, vtree);
1861-
expect(check).toBe(true);
1847+
expect(integrityCheck(vtree)).toBe(true);
18621848
vtree.props['height'] = '200';
18631849
vtree.props['width'] = '200';
1864-
check = integrityCheck(true, vtree);
1865-
expect(check).toBe(false);
1850+
expect(integrityCheck(vtree)).toBe(false);
18661851
});
18671852

18681853
test('Should fail integrity check on random property (title)', () => {
@@ -1884,11 +1869,9 @@ describe('js tests', () => {
18841869
};
18851870
var result = hydrate(false, body, vtree);
18861871
expect(result).toEqual(true);
1887-
var check = integrityCheck(true, vtree);
1888-
expect(check).toBe(true);
1872+
expect(integrityCheck(vtree)).toBe(true);
18891873
vtree.props['title'] = 'woz';
1890-
check = integrityCheck(true, vtree);
1891-
expect(check).toBe(false);
1874+
expect(integrityCheck(vtree)).toBe(false);
18921875
});
18931876

18941877
test('Should fail integrity check on href', () => {
@@ -1911,11 +1894,9 @@ describe('js tests', () => {
19111894
};
19121895
var result = hydrate(false, body, vtree);
19131896
expect(result).toEqual(true);
1914-
var check = integrityCheck(true, vtree);
1915-
expect(check).toBe(true);
1897+
expect(integrityCheck(vtree)).toBe(true);
19161898
vtree.props['href'] = 'notgoogle.com';
1917-
check = integrityCheck(true, vtree);
1918-
expect(check).toBe(false);
1899+
expect(integrityCheck(vtree)).toBe(false);
19191900
});
19201901

19211902
test('Should fail integrity check on vtext domRef', () => {
@@ -1938,11 +1919,9 @@ describe('js tests', () => {
19381919
};
19391920
var result = hydrate(false, body, vtree);
19401921
expect(result).toEqual(true);
1941-
var check = integrityCheck(true, vtree);
1942-
expect(check).toBe(true);
1922+
expect(integrityCheck(vtree)).toBe(true);
19431923
vtree.children[0].domRef = document.createElement('div');
1944-
check = integrityCheck(true, vtree);
1945-
expect(check).toBe(false);
1924+
expect(integrityCheck(vtree)).toBe(false);
19461925
});
19471926

19481927
test('Should fail integrity check on unknown property test', () => {
@@ -1963,8 +1942,7 @@ describe('js tests', () => {
19631942
};
19641943
var result = hydrate(false, body, vtree);
19651944
expect(result).toEqual(true);
1966-
var check = integrityCheck(true, vtree);
1967-
expect(check).toBe(false);
1945+
expect(integrityCheck(vtree)).toBe(false);
19681946
});
19691947

19701948
test('Should set body[data-component-id] via setBodyComponent()', () => {

ts/miso/dom.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ function callDestroyed (obj: VTree) {
7575
if (obj['onDestroyed']) obj['onDestroyed']();
7676
};
7777

78-
function callBeforeDestroyed (obj: any) {
78+
function callBeforeDestroyed (obj: VTree) {
7979
if (obj['onBeforeDestroyed']) obj['onBeforeDestroyed']();
8080
if (obj['type'] === 'vcomp') obj['unmount'](obj['domRef']);
8181
};
@@ -284,7 +284,7 @@ function syncChildren (os: Array<VTree>, ns: Array<VTree>, parent: Element) {
284284
oLast: VTree,
285285
oFirst: VTree,
286286
found: boolean,
287-
node: any;
287+
node: VTree;
288288
for (;;) {
289289
/* check base case, first > last for both new and old
290290
[ ] -- old children empty (fully-swapped)
@@ -333,7 +333,7 @@ function syncChildren (os: Array<VTree>, ns: Array<VTree>, parent: Element) {
333333
-> [ c b a ] <- new children
334334
*/
335335
else if (oFirst['key'] === nLast['key'] && nFirst['key'] === oLast['key']) {
336-
swapDOMRefs(node, oLast['domRef'], oFirst['domRef'], parent);
336+
swapDOMRefs(oLast['domRef'], oFirst['domRef'], parent);
337337
swap<VTree>(os, oldFirstIndex, oldLastIndex);
338338
diff(os[oldFirstIndex++], ns[newFirstIndex++], parent);
339339
diff(os[oldLastIndex--], ns[newLastIndex--], parent);
@@ -430,8 +430,8 @@ function syncChildren (os: Array<VTree>, ns: Array<VTree>, parent: Element) {
430430
}
431431
};
432432

433-
function swapDOMRefs (tmp: ChildNode, a: Element, b: Element, p: Element) {
434-
tmp = a.nextSibling;
433+
function swapDOMRefs (a: Element, b: Element, p: Element) {
434+
const tmp = a.nextSibling;
435435
p.insertBefore(a, b);
436436
p.insertBefore(b, tmp);
437437
};

ts/miso/event.ts

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { VTree, EventCapture, EventObject, Options } from './types';
22

33
/* event delegation algorithm */
4-
export function delegate(
4+
export function delegate (
55
mount: HTMLElement,
66
events: Array<EventCapture>,
77
getVTree: ((vtree: VTree) => void),
88
debug: boolean,
9-
) {
9+
) : void {
1010
for (const event of events) {
1111
mount.addEventListener(
1212
event['name'],
@@ -23,7 +23,7 @@ export function undelegate (
2323
events: Array<EventCapture>,
2424
getVTree: ((vtree: VTree) => void),
2525
debug: boolean,
26-
) {
26+
) : void {
2727
for (const event of events) {
2828
mount.removeEventListener(
2929
event['name'],
@@ -40,15 +40,15 @@ function listener (
4040
, mount: HTMLElement
4141
, getVTree: (VTree) => void
4242
, debug: boolean
43-
) {
43+
) : void {
4444
getVTree(function (obj: VTree) {
4545
if (e.target) {
46-
delegateEvent(e, obj, buildTargetToElement(mount, e.target), [], debug);
46+
delegateEvent(e, obj, buildTargetToElement(mount, e.target as ParentNode), [], debug);
4747
}
4848
});
4949
};
5050
/* Create a stack of ancestors used to index into the virtual DOM */
51-
function buildTargetToElement (element: HTMLElement, target: any) {
51+
function buildTargetToElement (element: HTMLElement, target: ParentNode) : Array<HTMLElement> {
5252
var stack = [];
5353
while (element !== target) {
5454
stack.unshift(target);
@@ -65,7 +65,7 @@ function delegateEvent
6565
, stack: Array<HTMLElement>
6666
, parentStack: Array<VTree>
6767
, debug: boolean,
68-
) {
68+
) : void {
6969
/* base case, not found */
7070
if (!stack.length) {
7171
if (debug) {
@@ -111,7 +111,7 @@ function delegateEvent
111111
}
112112
};
113113
/* Propagate the event up the chain, invoking other event handlers as encountered */
114-
function propagateWhileAble (parentStack: Array<VTree>, event: Event) {
114+
function propagateWhileAble (parentStack: Array<VTree>, event: Event) : void {
115115
for (const vtree of parentStack) {
116116
if (vtree['events'][event.type]) {
117117
var eventObj = vtree['events'][event.type],
@@ -129,51 +129,50 @@ function propagateWhileAble (parentStack: Array<VTree>, event: Event) {
129129
values (string, numbers and booleans). Sort of like JSON.stringify(), but
130130
on an Event that is stripped of impure references.
131131
*/
132-
export function eventJSON(at: any, obj: VTree): any {
132+
export function eventJSON(at: string | string[], obj: VTree): string[] {
133133
/* If at is of type [[MisoString]] */
134134
if (typeof at[0] === 'object') {
135135
var ret = [];
136-
for (var i : any = 0; i < at.length; i++) {
136+
for (var i : number = 0; i < at.length; i++) {
137137
ret.push(eventJSON(at[i], obj));
138138
}
139139
return ret;
140140
}
141-
for (i in at) obj = obj[at[i]];
141+
for (const a of at) obj = obj[a];
142142
/* If obj is a list-like object */
143143
var newObj;
144144
if (obj instanceof Array || ('length' in obj && obj['localName'] !== 'select')) {
145145
newObj = [];
146-
for (i = 0; i < obj.length; i++) {
147-
newObj.push(eventJSON([], obj[i]));
146+
for (var j = 0; j < obj['children'].length; j++) {
147+
newObj.push(eventJSON([], obj[j]));
148148
}
149149
return newObj;
150150
}
151151
/* If obj is a non-list-like object */
152152
newObj = {};
153-
for (i in getAllPropertyNames(obj)) {
153+
for (var key in getAllPropertyNames(obj)) {
154154
/* bug in safari, throws TypeError if the following fields are referenced on a checkbox */
155155
/* https://stackoverflow.com/a/25569117/453261 */
156156
/* https://html.spec.whatwg.org/multipage/input.html#do-not-apply */
157-
if (
158-
obj['localName'] === 'input' &&
159-
(i === 'selectionDirection' ||
160-
i === 'selectionStart' ||
161-
i === 'selectionEnd')
157+
if (obj['localName'] === 'input' &&
158+
(key === 'selectionDirection' ||
159+
key === 'selectionStart' ||
160+
key === 'selectionEnd')
162161
) {
163162
continue;
164163
}
165164
if (
166-
typeof obj[i] == 'string' ||
167-
typeof obj[i] == 'number' ||
168-
typeof obj[i] == 'boolean'
165+
typeof obj[key] == 'string' ||
166+
typeof obj[key] == 'number' ||
167+
typeof obj[key] == 'boolean'
169168
) {
170-
newObj[i] = obj[i];
169+
newObj[key] = obj[key];
171170
}
172171
}
173172
return newObj;
174173
}
175174
/* get static and dynamic properties */
176-
var getAllPropertyNames = function (obj: VTree) {
175+
function getAllPropertyNames (obj: VTree) : Object {
177176
var props: Object = {}, i: number = 0;
178177
do {
179178
var names = Object.getOwnPropertyNames(obj);

0 commit comments

Comments
 (0)