Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .babelrc

This file was deleted.

2 changes: 2 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
/coverage/
/demo/lib/
/lib/
webpack.config.js
3 changes: 2 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"prettier/@typescript-eslint"
],
"parserOptions": {
"ecmaVersion": 2018
"ecmaVersion": 2018,
"project": ["./**/tsconfig.json", "./**/tsconfig.test.json"]
},
"rules": {
"import/extensions": [
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
node-version: ${{ matrix.node-version }}
- run: yarn --frozen-lockfile
- run: yarn run lint
- run: yarn run build && yarn run build-types
- run: yarn run build
- run: yarn test

- name: Upload test coverage report to Codecov
Expand Down
26 changes: 26 additions & 0 deletions demo/src/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<html>
<head>
<style>
body,
input {
font-size: 1.5em;
}
input {
text-align: center;
width: 5em;
}
[readonly] {
background-color: lightgray;
}
</style>
</head>
<body>
<input type="number" id="num1" value="0" required />
+
<input type="number" id="num2" value="0" required />
=
<input readonly id="sum" value="0" />

<script type="text/javascript" src="demo.js"></script>
</body>
</html>
14 changes: 14 additions & 0 deletions demo/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import add from '../../src';

const num1 = document.getElementById('num1') as HTMLInputElement;
const num2 = document.getElementById('num2') as HTMLInputElement;
const sum = document.getElementById('sum') as HTMLInputElement;

function recalculate() {
const value1 = parseFloat(num1.value);
const value2 = parseFloat(num2.value);
sum.value = add(value1, value2).toString();
}

num1.addEventListener('keyup', recalculate);
num2.addEventListener('keyup', recalculate);
12 changes: 12 additions & 0 deletions demo/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"compilerOptions": {
"lib": ["dom", "es5"],
"noEmit": true,
"outDir": "./lib",
"rootDir": "./src",
"tsBuildInfoFile": "./lib/demo.tsbuildinfo"
},
"extends": "../tsconfig.json",
"include": ["src"],
"references": [{ "path": "../src" }]
}
45 changes: 45 additions & 0 deletions demo/webpack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/// <reference types="node" />
const { resolve } = require('path');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const CopyPlugin = require("copy-webpack-plugin");

module.exports = {
entry: './demo/src/index.ts',
mode: 'production',
plugins: [
new CleanWebpackPlugin(),
new CopyPlugin({
patterns: [
{
context: resolve(__dirname, 'src'),
from: '**/*.html',
},
],
}),
],
module: {
rules: [
{
exclude: /node_modules/,
test: /\.ts$/,
use: [
{
loader: 'ts-loader',
options: {
compilerOptions: { noEmit: false },
configFile: resolve(__dirname, './tsconfig.json'),
projectReferences: true,
},
},
],
}
],
},
output: {
filename: 'demo.js',
path: resolve(__dirname, './lib'),
},
resolve: {
extensions: ['.ts', '.js'],
},
};
8 changes: 7 additions & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
module.exports = {
collectCoverageFrom: ['**/src/**/?*.(js|ts)', '!**/src/**/?*.d.ts'],
collectCoverageFrom: ['./src/**/?*.(js|ts)', '!**/src/**/?*.d.ts'],
restoreMocks: true,
globals: {
'ts-jest': {
isolatedModules: true,
tsconfig: 'src/tsconfig.test.json',
},
},
preset: 'ts-jest',
testEnvironment: 'node',
verbose: true,
Expand Down
27 changes: 14 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,32 @@
"node": ">=14"
},
"scripts": {
"build": "npm run clean && babel src -d lib --extensions '.js,.ts' --ignore '**/*.spec.js','**/*.spec.ts'",
"build-types": "tsc --emitDeclarationOnly",
"clean": "rimraf lib/*",
"lint": "tsc --noEmit && eslint . --ext .js,.ts --report-unused-disable-directives",
"build": "run-s build:*",
"build:src": "tsc -b --clean && tsc -b",
"build:demo": "wp --config demo/webpack.config.js",
"lint": "tsc -b && eslint . --report-unused-disable-directives",
"start": "npm run build:demo && npx http-server ./demo/lib/ -c-1 -p 80",
"test": "jest --coverage"
},
"devDependencies": {
"@babel/cli": "^7.13.16",
"@babel/core": "^7.14.2",
"@babel/preset-env": "^7.14.2",
"@babel/preset-typescript": "^7.10.4",
"@types/jest": "^26.0.5",
"@typescript-eslint/eslint-plugin": "^3.6.1",
"@typescript-eslint/parser": "^3.6.1",
"codecov": "^3.8.2",
"@typescript-eslint/eslint-plugin": "^4.23.0",
"@typescript-eslint/parser": "^4.23.0",
"clean-webpack-plugin": "^4.0.0-alpha.0",
"copy-webpack-plugin": "^9.0.0",
"eslint": "^7.26.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-config-prettier": "^6.11.0",
"eslint-import-resolver-typescript": "^2.0.0",
"eslint-plugin-import": "^2.23.0",
"eslint-plugin-jest": "^23.18.0",
"jest": "^26.6.3",
"npm-run-all": "^4.1.5",
"prettier": "^2.0.5",
"rimraf": "^3.0.2",
"ts-jest": "^26.5.6",
"typescript": "^3.9.9"
"ts-loader": "^9.2.1",
"typescript": "^4.2.4",
"webpack": "^5.37.1",
"webpack-nano": "^1.1.1"
}
}
10 changes: 10 additions & 0 deletions src/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"compilerOptions": {
"lib": ["es5"],
"outDir": "../lib",
"rootDir": "./"
},
"extends": "../tsconfig.json",
"exclude": ["../**/*.spec.ts", "../**/*.config.js"],
"include": ["./**/*"]
}
12 changes: 12 additions & 0 deletions src/tsconfig.test.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"compilerOptions": {
"lib": ["es5"],
"noEmit": true,
"outDir": "../lib",
"tsBuildInfoFile": "../lib/test.tsbuildinfo",
"types": ["jest"]
},
"extends": "../tsconfig.json",
"include": ["./**/*.spec.ts", "../jest.config.js"],
"references": [{ "path": "./" }]
}
17 changes: 12 additions & 5 deletions tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,28 @@
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "./",
"baseUrl": ".",
"checkJs": true,
"composite": true,
"declaration": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"module": "es2015",
"module": "CommonJS",
"moduleResolution": "node",
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./lib",
"pretty": true,
"rootDir": ".",
"skipLibCheck": true,
"sourceMap": true,
"strict": true
"strict": true,
"types": []
},
"include": ["src"]
"files": [],
"references": [
{ "path": "./demo" },
{ "path": "./src" },
{ "path": "./src/tsconfig.test.json" }
]
}
Loading