Skip to content

Commit 0d920d9

Browse files
build: add add prettier and linting on commit
1 parent 46142fb commit 0d920d9

11 files changed

+568
-37
lines changed

.prettierrc

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"semi": false,
3+
"singleQuote": true,
4+
"printWidth": 80,
5+
"trailingComma": "none"
6+
}

package.json

+17-1
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,30 @@
2121
"@lmiller1990/vue-jest-transformer": "^0.0.2",
2222
"@types/estree": "^0.0.42",
2323
"@types/jest": "^24.9.1",
24+
"husky": "^4.2.3",
2425
"jest": "^25.1.0",
26+
"lint-staged": "^10.0.9",
27+
"prettier": "^2.0.2",
2528
"rollup": "^1.31.1",
2629
"rollup-plugin-typescript2": "^0.26.0",
2730
"ts-jest": "^25.0.0",
2831
"typescript": "^3.7.5"
2932
},
3033
"scripts": {
3134
"test": "yarn jest --runInBand",
32-
"build": "yarn rollup -c rollup.config.js"
35+
"build": "yarn rollup -c rollup.config.js",
36+
"lint": "prettier -c --parser typescript \"src/**/*.ts?(x)\"",
37+
"lint:fix": "yarn lint --write"
38+
},
39+
"husky": {
40+
"hooks": {
41+
"pre-commit": "lint-staged"
42+
}
43+
},
44+
"lint-staged": {
45+
"*.ts": [
46+
"prettier --parser=typescript --write",
47+
"git add"
48+
]
3349
}
3450
}

src/dataMixin.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ export const createDataMixin = (data: Record<string, unknown>) => {
88
}
99
}
1010
}
11-
}
11+
}

src/dom-wrapper.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,22 @@ export class DOMWrapper<ElementType extends Element> implements WrapperAPI {
3636
}
3737

3838
findAll<T extends Element>(selector: string): DOMWrapper<T>[] {
39-
return Array.from(this.element.querySelectorAll<T>(selector)).map(x => new DOMWrapper(x))
39+
return Array.from(this.element.querySelectorAll<T>(selector)).map(
40+
(x) => new DOMWrapper(x)
41+
)
4042
}
4143

4244
async setChecked(checked: boolean = true) {
4345
// typecast so we get typesafety
4446
const element = (this.element as unknown) as HTMLInputElement
4547

4648
if (element.tagName !== 'INPUT') {
47-
throw Error(`You need to call setChecked on an input element. You called it on a ${this.element.tagName}`)
49+
throw Error(
50+
`You need to call setChecked on an input element. You called it on a ${this.element.tagName}`
51+
)
4852
}
4953

50-
// we do not want to trigger an event if the user
54+
// we do not want to trigger an event if the user
5155
// attempting set the same value twice
5256
// this is beacuse in a browser setting checked = true when it is
5357
// already true is a no-op; no change event is triggered

src/emitMixin.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ export const createEmitMixin = () => {
88
const originalEmit = getCurrentInstance().emit
99
getCurrentInstance().emit = (event: string, ...args: unknown[]) => {
1010
events[event]
11-
? events[event] = [...events[event], [...args]]
12-
: events[event] = [[...args]]
11+
? (events[event] = [...events[event], [...args]])
12+
: (events[event] = [[...args]])
1313

1414
return originalEmit.call(getCurrentInstance(), event, ...args)
1515
}
@@ -20,4 +20,4 @@ export const createEmitMixin = () => {
2020
events,
2121
emitMixin
2222
}
23-
}
23+
}

src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import { mount } from './mount'
22

3-
export { mount }
3+
export { mount }

src/mount.ts

+20-19
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface MountingOptions<Props> {
1212
slots?: {
1313
default?: Slot
1414
[key: string]: Slot
15-
},
15+
}
1616
plugins?: any[]
1717
mixins?: any[]
1818
provides?: Record<any, any>
@@ -23,26 +23,30 @@ export function mount<P>(
2323
component: any,
2424
options?: MountingOptions<P>
2525
): VueWrapper {
26-
2726
// Reset the document.body
28-
document.getElementsByTagName('html')[0].innerHTML = '';
27+
document.getElementsByTagName('html')[0].innerHTML = ''
2928
const el = document.createElement('div')
3029
el.id = 'app'
3130
document.body.appendChild(el)
3231

3332
// handle any slots passed via mounting options
34-
const slots = options?.slots &&
35-
Object.entries(options.slots).reduce<Record<string, () => VNode | string>>((acc, [name, fn]) => {
36-
acc[name] = () => fn
37-
return acc
38-
}, {})
33+
const slots =
34+
options?.slots &&
35+
Object.entries(options.slots).reduce<Record<string, () => VNode | string>>(
36+
(acc, [name, fn]) => {
37+
acc[name] = () => fn
38+
return acc
39+
},
40+
{}
41+
)
3942

4043
// create the wrapper component
41-
const Parent = (props?: P) => defineComponent({
42-
render() {
43-
return h(component, props, slots)
44-
}
45-
})
44+
const Parent = (props?: P) =>
45+
defineComponent({
46+
render() {
47+
return h(component, props, slots)
48+
}
49+
})
4650

4751
// create the vm
4852
const vm = createApp(Parent(options && options.props))
@@ -55,17 +59,14 @@ export function mount<P>(
5559

5660
// use and plugins from mounting options
5761
if (options?.plugins) {
58-
for (const use of options.plugins)
59-
vm.use(use)
62+
for (const use of options.plugins) vm.use(use)
6063
}
6164

6265
// use any mixins from mounting options
6366
if (options?.mixins) {
64-
for (const mixin of options.mixins)
65-
vm.mixin(mixin)
67+
for (const mixin of options.mixins) vm.mixin(mixin)
6668
}
6769

68-
6970
// provide any values passed via provides mounting option
7071
if (options?.provides) {
7172
for (const key of Reflect.ownKeys(options.provides)) {
@@ -82,4 +83,4 @@ export function mount<P>(
8283
const app = vm.mount('#app')
8384

8485
return createWrapper(app, events)
85-
}
86+
}

src/types.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ export interface WrapperAPI {
66
find<T extends Element>(selector: string): DOMWrapper<T> | ErrorWrapper
77
findAll<T extends Element>(selector: string): DOMWrapper<T>[]
88
exists: () => boolean
9-
}
9+
}

src/vue-shims.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ declare module '*.vue' {
77
declare module 'vue' {
88
import Vue from 'vue/dist/vue'
99
export = Vue
10-
}
10+
}

src/vue-wrapper.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,22 @@ export class VueWrapper implements WrapperAPI {
4444

4545
findAll<T extends Element>(selector: string): DOMWrapper<T>[] {
4646
const results = (this.vm.$el as Element).querySelectorAll<T>(selector)
47-
return Array.from(results).map(x => new DOMWrapper(x))
47+
return Array.from(results).map((x) => new DOMWrapper(x))
4848
}
4949

5050
async setChecked(checked: boolean = true) {
5151
return new DOMWrapper(this.vm.$el).setChecked(checked)
5252
}
5353

54-
55-
trigger(eventString: string) {
54+
trigger(eventString: string) {
5655
const rootElementWrapper = new DOMWrapper(this.vm.$el)
5756
return rootElementWrapper.trigger(eventString)
5857
}
5958
}
6059

61-
export function createWrapper(vm: ComponentPublicInstance, events: Record<string, unknown[]>): VueWrapper {
60+
export function createWrapper(
61+
vm: ComponentPublicInstance,
62+
events: Record<string, unknown[]>
63+
): VueWrapper {
6264
return new VueWrapper(vm, events)
6365
}

0 commit comments

Comments
 (0)