Merge pull request #1063 from prymitive/ts

feat(ui): add typescript support
This commit is contained in:
Łukasz Mierzwa
2019-10-23 10:59:30 +01:00
committed by GitHub
10 changed files with 88 additions and 55 deletions
+1 -1
View File
@@ -165,7 +165,7 @@ format-go: .build/deps-build-go.ok
.PHONY: format-js
format-js: .build/deps-build-node.ok
cd ui && ./node_modules/.bin/prettier --write 'src/**/*.js'
cd ui && ./node_modules/.bin/prettier --write 'src/**/*.js' 'src/**/*.tsx'
.PHONY: openapi-client
openapi-client:
+1 -1
View File
@@ -10,7 +10,7 @@ setAddon(percyAddon);
// mock date so the silence form always shows same preview
advanceTo(new Date(Date.UTC(2018, 7, 14, 17, 36, 40)));
const req = require.context("../src/Components", true, /\.stories\.js$/);
const req = require.context("../src/Components", true, /\.stories\.(js|tsx)$/);
function loadStories() {
req.keys().forEach(filename => req(filename));
-6
View File
@@ -1,6 +0,0 @@
{
"compilerOptions": {
"baseUrl": "src"
},
"include": ["src"]
}
+52 -41
View File
@@ -2814,22 +2814,33 @@
"@types/istanbul-lib-report": "*"
}
},
"@types/jest": {
"version": "24.0.19",
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.19.tgz",
"integrity": "sha512-YYiqfSjocv7lk5H/T+v5MjATYjaTMsUkbDnjGqSMoO88jWdtJXJV4ST/7DKZcoMHMBvB2SeSfyOzZfkxXHR5xg==",
"requires": {
"@types/jest-diff": "*"
}
},
"@types/jest-diff": {
"version": "20.0.1",
"resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz",
"integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA=="
},
"@types/json-schema": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz",
"integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A=="
},
"@types/node": {
"version": "12.11.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.2.tgz",
"integrity": "sha512-dsfE4BHJkLQW+reOS6b17xhZ/6FB1rB8eRRvO08nn5o+voxf3i74tuyFWNH6djdfgX7Sm5s6LD8t6mJug4dpDw==",
"dev": true
"version": "12.11.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.5.tgz",
"integrity": "sha512-LC8ALj/24PhByn39nr5jnTvpE7MujK8y7LQmV74kHYF5iQ0odCPkMH4IZNZw+cobKfSXqaC8GgegcbIsQpffdA=="
},
"@types/prop-types": {
"version": "15.7.3",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
"integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==",
"dev": true
"integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
},
"@types/q": {
"version": "1.5.2",
@@ -2850,12 +2861,19 @@
"version": "16.9.9",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.9.tgz",
"integrity": "sha512-L+AudFJkDukk+ukInYvpoAPyJK5q1GanFOINOJnM0w6tUgITuWvJ4jyoBPFL7z4/L8hGLd+K/6xR5uUjXu0vVg==",
"dev": true,
"requires": {
"@types/prop-types": "*",
"csstype": "^2.2.0"
}
},
"@types/react-dom": {
"version": "16.9.2",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.2.tgz",
"integrity": "sha512-hgPbBoI1aTSTvZwo8HYw35UaTldW6n2ETLvHAcfcg1FaOuBV3olmyCe5eMpx2WybWMBPv0MdU2t5GOcQhP+3zA==",
"requires": {
"@types/react": "*"
}
},
"@types/react-syntax-highlighter": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-10.1.0.tgz",
@@ -4674,9 +4692,9 @@
}
},
"bser": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz",
"integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==",
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
"integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
"requires": {
"node-int64": "^0.4.0"
}
@@ -6503,9 +6521,9 @@
}
},
"date-fns": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.5.1.tgz",
"integrity": "sha512-ZBrQmuaqH9YqIejbgu8f09ki7wdD2JxWsRTZ/+HnnLNmkI56ty0evnWzKY+ihLT0xX5VdUX0vDNZCxJJGKX2+Q=="
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.6.0.tgz",
"integrity": "sha512-F55YxqRdEfP/eYQmQjLN798v0AwLjmZ8nMBjdQvNwEE3N/zWVrlkkqT+9seBlPlsbkybG4JmWg3Ee3dIV9BcGQ=="
},
"date-now": {
"version": "0.1.4",
@@ -6966,9 +6984,9 @@
"dev": true
},
"electron-to-chromium": {
"version": "1.3.292",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.292.tgz",
"integrity": "sha512-hqkem5ANpt6mxVXmhAmlbdG8iicuyM/jEYgmP1tiHPeOLyZoTyGUzrDmJS/xyrrZy9frkW1uQcubicu7f6DS5g=="
"version": "1.3.293",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.293.tgz",
"integrity": "sha512-DQSBRuU2Z1vG+CEWUIfCEVMHtuaGlhVojzg39mX5dx7PLSFDJ7DSrGUWzaPFFgWR1jo26hj1nXXRQZvFwk7F8w=="
},
"element-resize-detector": {
"version": "1.1.15",
@@ -12334,9 +12352,9 @@
}
},
"node-releases": {
"version": "1.1.37",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.37.tgz",
"integrity": "sha512-0EOsAEdn6S2vQdDGBWBpmClm5BCkXVkVOURdnhfg7//rxI2XbleRdKig87WuBrk+0PHZ4OhO58fRm9mzWW4jNw==",
"version": "1.1.38",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.38.tgz",
"integrity": "sha512-/5NZAaOyTj134Oy5Cp/J8mso8OD/D9CSuL+6TOXXsTKO8yjc5e4up75SRPCganCjwFKMj2jbp5tR0dViVdox7g==",
"requires": {
"semver": "^6.3.0"
}
@@ -14832,17 +14850,6 @@
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
"scheduler": "^0.17.0"
},
"dependencies": {
"scheduler": {
"version": "0.17.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz",
"integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1"
}
}
}
},
"react-draggable": {
@@ -14941,9 +14948,9 @@
}
},
"react-is": {
"version": "16.10.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz",
"integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA=="
"version": "16.11.0",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz",
"integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw=="
},
"react-js-pagination": {
"version": "3.0.2",
@@ -15157,15 +15164,15 @@
}
},
"react-test-renderer": {
"version": "16.10.2",
"resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.10.2.tgz",
"integrity": "sha512-k9Qzyev6cTIcIfrhgrFlYQAFxh5EEDO6ALNqYqmKsWVA7Q/rUMTay5nD3nthi6COmYsd4ghVYyi8U86aoeMqYQ==",
"version": "16.11.0",
"resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.11.0.tgz",
"integrity": "sha512-nh9gDl8R4ut+ZNNb2EeKO5VMvTKxwzurbSMuGBoKtjpjbg8JK/u3eVPVNi1h1Ue+eYK9oSzJjb+K3lzLxyA4ag==",
"dev": true,
"requires": {
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
"react-is": "^16.8.6",
"scheduler": "^0.16.2"
"scheduler": "^0.17.0"
}
},
"react-textarea-autosize": {
@@ -16149,10 +16156,9 @@
}
},
"scheduler": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.16.2.tgz",
"integrity": "sha512-BqYVWqwz6s1wZMhjFvLfVR5WXP7ZY32M/wYPo04CcuPM7XZEbV2TBNW7Z0UkguPTl0dWMA59VbNXxK6q+pHItg==",
"dev": true,
"version": "0.17.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz",
"integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1"
@@ -17717,6 +17723,11 @@
"resolved": "https://registry.npmjs.org/typeface-open-sans/-/typeface-open-sans-0.0.75.tgz",
"integrity": "sha512-0lLmB7pfj113OP4T78SbpSmC4OCdFQ0vUxdSXQccsSb6qF76F92iEuC/DghFgmPswTyidk8+Hwf+PS/htiJoRQ=="
},
"typescript": {
"version": "3.6.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
"integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg=="
},
"ua-parser-js": {
"version": "0.7.20",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz",
+6 -1
View File
@@ -10,6 +10,10 @@
"@fortawesome/free-solid-svg-icons": "5.11.2",
"@fortawesome/react-fontawesome": "0.1.7",
"@sentry/browser": "5.7.1",
"@types/jest": "24.0.19",
"@types/node": "12.11.5",
"@types/react": "16.9.9",
"@types/react-dom": "16.9.2",
"body-scroll-lock": "2.6.4",
"bootstrap": "4.3.1",
"bootswatch": "4.3.1",
@@ -54,7 +58,8 @@
"react-transition-group": "4.3.0",
"react-truncate": "2.4.0",
"semver": "6.3.0",
"typeface-open-sans": "0.0.75"
"typeface-open-sans": "0.0.75",
"typescript": "3.6.4"
},
"scripts": {
"start": "NODE_ENV=dev REACT_APP_BACKEND_URI=http://localhost:8080 react-scripts start",
+1 -1
View File
@@ -113,7 +113,7 @@ class FilterBarConfig {
class Settings {
constructor(defaults) {
let defaultSettings;
if (defaults === undefined) {
if (defaults === undefined || defaults === null) {
defaultSettings = {
Refresh: 30 * 1000 * 1000 * 1000,
HideFiltersWhenIdle: true,
+1 -1
View File
@@ -10,7 +10,7 @@ it("renders without crashing", () => {
const response = EmptyAPIResponse();
response.filters = [];
fetch.mockResponse(JSON.stringify(response));
const Index = require("./index.js");
const Index = require("./index.tsx");
expect(Index).toBeTruthy();
});
+5 -3
View File
@@ -17,9 +17,11 @@ import {
} from "./AppBoot";
import { App } from "./App";
const uiDefaults = ParseUIDefaults(
document.getElementById("defaults").innerHTML
);
let uiDefaults;
const defaultsElement = document.getElementById("defaults");
if (defaultsElement !== null) {
uiDefaults = ParseUIDefaults(defaultsElement.innerHTML);
}
const settingsElement = SettingsElement();
+1
View File
@@ -0,0 +1 @@
/// <reference types="react-scripts" />
+20
View File
@@ -0,0 +1,20 @@
{
"compilerOptions": {
"baseUrl": "src",
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react"
},
"include": ["src"]
}