Skip to content

Commit 6ac8648

Browse files
committed
Add TypeScript support and basic events tests
1 parent b4fee1d commit 6ac8648

File tree

6 files changed

+70
-14
lines changed

6 files changed

+70
-14
lines changed

babel.config.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ module.exports = {
66
targets: {
77
node: 'current'
88
}
9-
}
10-
]
9+
},
10+
],
11+
'@babel/preset-typescript'
1112
]
1213
};

package.json

+4
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@
77
"devDependencies": {
88
"@babel/core": "^7.2.2",
99
"@babel/preset-env": "^7.9.0",
10+
"@babel/preset-typescript": "^7.9.0",
1011
"babel-jest": "^25.1.0",
1112
"babel-loader": "^8.0.5",
1213
"eslint": "^6.8.0",
1314
"eslint-plugin-jest": "^23.8.2",
1415
"jest": "^25.1.0",
1516
"jest-junit": "^10.0.0",
1617
"jsdoc": "^3.6.3",
18+
"source-map-loader": "^0.2.4",
19+
"ts-loader": "^6.2.2",
20+
"typescript": "^3.8.3",
1721
"webpack": "^4.29.0",
1822
"webpack-cli": "^3.2.1"
1923
},

src/events.js

-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
function getCallbacks(obj, name) {
2-
32
if (!obj) {
43
throw new Error("obj cannot be null!");
54
}
@@ -17,16 +16,13 @@
1716
}
1817

1918
export default {
20-
2119
on(obj, eventName, fn) {
22-
2320
const list = getCallbacks(obj, eventName);
2421

2522
list.push(fn);
2623
},
2724

2825
off(obj, eventName, fn) {
29-
3026
const list = getCallbacks(obj, eventName);
3127

3228
const i = list.indexOf(fn);
@@ -36,7 +32,6 @@ export default {
3632
},
3733

3834
trigger(obj, eventName) {
39-
4035
const eventObject = {
4136
type: eventName
4237
};

tests/events.test.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import events from '../src/events';
2+
3+
test('contains an on property', () => {
4+
expect(events).toHaveProperty("on");
5+
});
6+
7+
test('contains an off property', () => {
8+
expect(events).toHaveProperty("off");
9+
});
10+
11+
test('contains a trigger property', () => {
12+
expect(events).toHaveProperty("trigger");
13+
});
14+
15+

tsconfig.json

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"compilerOptions": {
3+
"allowJs": true,
4+
"allowSyntheticDefaultImports": true,
5+
"lib": [
6+
"dom",
7+
"es2015",
8+
"es2016"
9+
],
10+
"module": "es2015",
11+
"moduleResolution": "node",
12+
"noImplicitAny": true,
13+
"noUnusedLocals": true,
14+
"noUnusedParameters": true,
15+
"outDir": "./dist",
16+
"preserveConstEnums": true,
17+
"removeComments": false,
18+
"skipLibCheck": true,
19+
"sourceMap": true,
20+
"target": "es2016",
21+
},
22+
"include": [
23+
"./src/**/*"
24+
]
25+
}

webpack.config.js

+23-7
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,40 @@
11
const path = require('path');
22

3+
var babelLoader = {
4+
loader: 'babel-loader',
5+
options: {
6+
cacheDirectory: true,
7+
}
8+
};
9+
310
module.exports = {
411
entry: {
512
'jellyfin-apiclient': 'index.js',
613
},
14+
devtool: "source-map",
715
module: {
816
rules: [
917
{
10-
test: /\.js$/,
11-
exclude: /(dist|node_modules)/,
12-
use: {
13-
loader: 'babel-loader',
14-
options: {
15-
presets: ['@babel/preset-env']
18+
test: /\.ts(x?)$/,
19+
exclude: /node_modules/,
20+
use: [
21+
babelLoader,
22+
{
23+
loader: 'ts-loader'
1624
}
17-
}
25+
]
26+
},
27+
{
28+
test: /\.js$/,
29+
exclude: /node_modules/,
30+
use: [
31+
babelLoader
32+
]
1833
}
1934
],
2035
},
2136
resolve: {
37+
extensions: ['.ts', '.js'],
2238
modules: [
2339
path.resolve(__dirname, 'node_modules'),
2440
path.resolve(__dirname, 'src')

0 commit comments

Comments
 (0)