datajunction-ui 0.0.1-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +1 -0
- package/.env.local +4 -0
- package/.env.production +1 -0
- package/.eslintrc.js +20 -0
- package/.gitattributes +201 -0
- package/.github/pull_request_template.md +11 -0
- package/.github/workflows/ci.yml +33 -0
- package/.husky/pre-commit +6 -0
- package/.nvmrc +1 -0
- package/.prettierignore +4 -0
- package/.prettierrc +9 -0
- package/.stylelintrc +7 -0
- package/.vscode/extensions.json +8 -0
- package/.vscode/launch.json +15 -0
- package/.vscode/settings.json +25 -0
- package/Dockerfile +6 -0
- package/LICENSE +22 -0
- package/README.md +10 -0
- package/internals/testing/loadable.mock.tsx +6 -0
- package/package.json +150 -0
- package/public/favicon.ico +0 -0
- package/public/index.html +29 -0
- package/public/manifest.json +15 -0
- package/public/robots.txt +3 -0
- package/src/app/__tests__/__snapshots__/index.test.tsx.snap +45 -0
- package/src/app/__tests__/index.test.tsx +14 -0
- package/src/app/components/ListGroupItem.jsx +17 -0
- package/src/app/components/NamespaceHeader.jsx +40 -0
- package/src/app/components/Tab.jsx +26 -0
- package/src/app/components/__tests__/ListGroupItem.test.tsx +16 -0
- package/src/app/components/__tests__/NamespaceHeader.test.jsx +14 -0
- package/src/app/components/__tests__/__snapshots__/ListGroupItem.test.tsx.snap +26 -0
- package/src/app/components/__tests__/__snapshots__/NamespaceHeader.test.jsx.snap +63 -0
- package/src/app/components/djgraph/DJNode.jsx +111 -0
- package/src/app/components/djgraph/__tests__/DJNode.test.tsx +24 -0
- package/src/app/components/djgraph/__tests__/__snapshots__/DJNode.test.tsx.snap +73 -0
- package/src/app/index.tsx +53 -0
- package/src/app/pages/ListNamespacesPage/Loadable.jsx +23 -0
- package/src/app/pages/ListNamespacesPage/index.jsx +53 -0
- package/src/app/pages/NamespacePage/Loadable.jsx +23 -0
- package/src/app/pages/NamespacePage/__tests__/__snapshots__/index.test.tsx.snap +45 -0
- package/src/app/pages/NamespacePage/__tests__/index.test.tsx +14 -0
- package/src/app/pages/NamespacePage/index.jsx +93 -0
- package/src/app/pages/NodePage/Loadable.jsx +23 -0
- package/src/app/pages/NodePage/NodeColumnTab.jsx +44 -0
- package/src/app/pages/NodePage/NodeGraphTab.jsx +160 -0
- package/src/app/pages/NodePage/NodeInfoTab.jsx +87 -0
- package/src/app/pages/NodePage/NodeStatus.jsx +34 -0
- package/src/app/pages/NodePage/index.jsx +100 -0
- package/src/app/pages/NotFoundPage/Loadable.tsx +14 -0
- package/src/app/pages/NotFoundPage/P.ts +8 -0
- package/src/app/pages/NotFoundPage/__tests__/__snapshots__/index.test.tsx.snap +61 -0
- package/src/app/pages/NotFoundPage/__tests__/index.test.tsx +21 -0
- package/src/app/pages/NotFoundPage/index.tsx +45 -0
- package/src/app/pages/Root/Loadable.tsx +23 -0
- package/src/app/pages/Root/assets/dj-logo.png +0 -0
- package/src/app/pages/Root/index.tsx +42 -0
- package/src/app/services/DJService.js +124 -0
- package/src/index.tsx +47 -0
- package/src/react-app-env.d.ts +4 -0
- package/src/reportWebVitals.ts +15 -0
- package/src/setupTests.ts +8 -0
- package/src/styles/dag-styles.ts +117 -0
- package/src/styles/global-styles.ts +588 -0
- package/src/styles/index.css +546 -0
- package/src/utils/__tests__/__snapshots__/loadable.test.tsx.snap +17 -0
- package/src/utils/__tests__/loadable.test.tsx +53 -0
- package/src/utils/__tests__/request.test.ts +82 -0
- package/src/utils/loadable.tsx +30 -0
- package/src/utils/request.ts +54 -0
- package/tsconfig.json +31 -0
package/.env
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
REACT_APP_DJ_URL=http://localhost:8000
|
package/.env.local
ADDED
package/.env.production
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GENERATE_SOURCEMAP=false
|
package/.eslintrc.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
const prettierOptions = JSON.parse(
|
|
5
|
+
fs.readFileSync(path.resolve(__dirname, '.prettierrc'), 'utf8'),
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
module.exports = {
|
|
9
|
+
extends: ['react-app', 'prettier'],
|
|
10
|
+
plugins: ['prettier'],
|
|
11
|
+
rules: {
|
|
12
|
+
'prettier/prettier': ['error', prettierOptions],
|
|
13
|
+
},
|
|
14
|
+
overrides: [
|
|
15
|
+
{
|
|
16
|
+
files: ['**/*.ts?(x)'],
|
|
17
|
+
rules: { 'prettier/prettier': ['warn', prettierOptions] },
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
package/.gitattributes
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# From https://github.com/Danimoth/gitattributes/blob/master/Web.gitattributes
|
|
2
|
+
|
|
3
|
+
## GITATTRIBUTES FOR WEB PROJECTS
|
|
4
|
+
#
|
|
5
|
+
# These settings are for any web project.
|
|
6
|
+
#
|
|
7
|
+
# Details per file setting:
|
|
8
|
+
# text These files should be normalized (i.e. convert CRLF to LF).
|
|
9
|
+
# binary These files are binary and should be left untouched.
|
|
10
|
+
#
|
|
11
|
+
# Note that binary is a macro for -text -diff.
|
|
12
|
+
######################################################################
|
|
13
|
+
|
|
14
|
+
# Auto detect
|
|
15
|
+
## Handle line endings automatically for files detected as
|
|
16
|
+
## text and leave all files detected as binary untouched.
|
|
17
|
+
## This will handle all files NOT defined below.
|
|
18
|
+
* text=auto
|
|
19
|
+
|
|
20
|
+
# Source code
|
|
21
|
+
*.bash text eol=lf
|
|
22
|
+
*.bat text eol=crlf
|
|
23
|
+
*.cmd text eol=crlf
|
|
24
|
+
*.coffee text
|
|
25
|
+
*.css text
|
|
26
|
+
*.htm text diff=html
|
|
27
|
+
*.html text diff=html
|
|
28
|
+
*.inc text
|
|
29
|
+
*.ini text
|
|
30
|
+
*.js text
|
|
31
|
+
*.json text
|
|
32
|
+
*.jsx text
|
|
33
|
+
*.less text
|
|
34
|
+
*.ls text
|
|
35
|
+
*.map text -diff
|
|
36
|
+
*.od text
|
|
37
|
+
*.onlydata text
|
|
38
|
+
*.php text diff=php
|
|
39
|
+
*.pl text
|
|
40
|
+
*.ps1 text eol=crlf
|
|
41
|
+
*.py text diff=python
|
|
42
|
+
*.rb text diff=ruby
|
|
43
|
+
*.sass text
|
|
44
|
+
*.scm text
|
|
45
|
+
*.scss text diff=css
|
|
46
|
+
*.sh text eol=lf
|
|
47
|
+
*.sql text
|
|
48
|
+
*.styl text
|
|
49
|
+
*.tag text
|
|
50
|
+
*.ts text
|
|
51
|
+
*.tsx text
|
|
52
|
+
*.xml text
|
|
53
|
+
*.xhtml text diff=html
|
|
54
|
+
|
|
55
|
+
# Docker
|
|
56
|
+
Dockerfile text
|
|
57
|
+
|
|
58
|
+
# Documentation
|
|
59
|
+
*.ipynb text
|
|
60
|
+
*.markdown text
|
|
61
|
+
*.md text
|
|
62
|
+
*.mdwn text
|
|
63
|
+
*.mdown text
|
|
64
|
+
*.mkd text
|
|
65
|
+
*.mkdn text
|
|
66
|
+
*.mdtxt text
|
|
67
|
+
*.mdtext text
|
|
68
|
+
*.txt text
|
|
69
|
+
AUTHORS text
|
|
70
|
+
CHANGELOG text
|
|
71
|
+
CHANGES text
|
|
72
|
+
CONTRIBUTING text
|
|
73
|
+
COPYING text
|
|
74
|
+
copyright text
|
|
75
|
+
*COPYRIGHT* text
|
|
76
|
+
INSTALL text
|
|
77
|
+
license text
|
|
78
|
+
LICENSE text
|
|
79
|
+
NEWS text
|
|
80
|
+
readme text
|
|
81
|
+
*README* text
|
|
82
|
+
TODO text
|
|
83
|
+
|
|
84
|
+
# Templates
|
|
85
|
+
*.dot text
|
|
86
|
+
*.ejs text
|
|
87
|
+
*.haml text
|
|
88
|
+
*.handlebars text
|
|
89
|
+
*.hbs text
|
|
90
|
+
*.hbt text
|
|
91
|
+
*.jade text
|
|
92
|
+
*.latte text
|
|
93
|
+
*.mustache text
|
|
94
|
+
*.njk text
|
|
95
|
+
*.phtml text
|
|
96
|
+
*.tmpl text
|
|
97
|
+
*.tpl text
|
|
98
|
+
*.twig text
|
|
99
|
+
*.vue text
|
|
100
|
+
|
|
101
|
+
# Configs
|
|
102
|
+
*.cnf text
|
|
103
|
+
*.conf text
|
|
104
|
+
*.config text
|
|
105
|
+
.editorconfig text
|
|
106
|
+
.env text
|
|
107
|
+
.gitattributes text
|
|
108
|
+
.gitconfig text
|
|
109
|
+
.htaccess text
|
|
110
|
+
*.lock text -diff
|
|
111
|
+
package-lock.json text -diff
|
|
112
|
+
*.toml text
|
|
113
|
+
*.yaml text
|
|
114
|
+
*.yml text
|
|
115
|
+
browserslist text
|
|
116
|
+
Makefile text
|
|
117
|
+
makefile text
|
|
118
|
+
|
|
119
|
+
# Heroku
|
|
120
|
+
Procfile text
|
|
121
|
+
|
|
122
|
+
# Graphics
|
|
123
|
+
*.ai binary
|
|
124
|
+
*.bmp binary
|
|
125
|
+
*.eps binary
|
|
126
|
+
*.gif binary
|
|
127
|
+
*.gifv binary
|
|
128
|
+
*.ico binary
|
|
129
|
+
*.jng binary
|
|
130
|
+
*.jp2 binary
|
|
131
|
+
*.jpg binary
|
|
132
|
+
*.jpeg binary
|
|
133
|
+
*.jpx binary
|
|
134
|
+
*.jxr binary
|
|
135
|
+
*.pdf binary
|
|
136
|
+
*.png binary
|
|
137
|
+
*.psb binary
|
|
138
|
+
*.psd binary
|
|
139
|
+
# SVG treated as an asset (binary) by default.
|
|
140
|
+
*.svg text
|
|
141
|
+
# If you want to treat it as binary,
|
|
142
|
+
# use the following line instead.
|
|
143
|
+
# *.svg binary
|
|
144
|
+
*.svgz binary
|
|
145
|
+
*.tif binary
|
|
146
|
+
*.tiff binary
|
|
147
|
+
*.wbmp binary
|
|
148
|
+
*.webp binary
|
|
149
|
+
|
|
150
|
+
# Audio
|
|
151
|
+
*.kar binary
|
|
152
|
+
*.m4a binary
|
|
153
|
+
*.mid binary
|
|
154
|
+
*.midi binary
|
|
155
|
+
*.mp3 binary
|
|
156
|
+
*.ogg binary
|
|
157
|
+
*.ra binary
|
|
158
|
+
|
|
159
|
+
# Video
|
|
160
|
+
*.3gpp binary
|
|
161
|
+
*.3gp binary
|
|
162
|
+
*.as binary
|
|
163
|
+
*.asf binary
|
|
164
|
+
*.asx binary
|
|
165
|
+
*.fla binary
|
|
166
|
+
*.flv binary
|
|
167
|
+
*.m4v binary
|
|
168
|
+
*.mng binary
|
|
169
|
+
*.mov binary
|
|
170
|
+
*.mp4 binary
|
|
171
|
+
*.mpeg binary
|
|
172
|
+
*.mpg binary
|
|
173
|
+
*.ogv binary
|
|
174
|
+
*.swc binary
|
|
175
|
+
*.swf binary
|
|
176
|
+
*.webm binary
|
|
177
|
+
|
|
178
|
+
# Archives
|
|
179
|
+
*.7z binary
|
|
180
|
+
*.gz binary
|
|
181
|
+
*.jar binary
|
|
182
|
+
*.rar binary
|
|
183
|
+
*.tar binary
|
|
184
|
+
*.zip binary
|
|
185
|
+
|
|
186
|
+
# Fonts
|
|
187
|
+
*.ttf binary
|
|
188
|
+
*.eot binary
|
|
189
|
+
*.otf binary
|
|
190
|
+
*.woff binary
|
|
191
|
+
*.woff2 binary
|
|
192
|
+
|
|
193
|
+
# Executables
|
|
194
|
+
*.exe binary
|
|
195
|
+
*.pyc binary
|
|
196
|
+
|
|
197
|
+
# RC files (like .babelrc or .eslintrc)
|
|
198
|
+
*.*rc text
|
|
199
|
+
|
|
200
|
+
# Ignore files (like .npmignore or .gitignore)
|
|
201
|
+
*.*ignore text
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: CI/CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
node-version: [19.x]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout repository
|
|
19
|
+
uses: actions/checkout@v2
|
|
20
|
+
|
|
21
|
+
- name: Set up Node.js ${{ matrix.node-version }}
|
|
22
|
+
uses: actions/setup-node@v3
|
|
23
|
+
with:
|
|
24
|
+
node-version: ${{ matrix.node-version }}
|
|
25
|
+
|
|
26
|
+
- name: Install Dependencies
|
|
27
|
+
run: yarn install
|
|
28
|
+
|
|
29
|
+
- name: Run Unit Tests
|
|
30
|
+
run: yarn test
|
|
31
|
+
|
|
32
|
+
- name: Build Project
|
|
33
|
+
run: yarn build
|
package/.nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
lts/fermium
|
package/.prettierignore
ADDED
package/.prettierrc
ADDED
package/.stylelintrc
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"name": "Chrome",
|
|
6
|
+
"type": "chrome",
|
|
7
|
+
"request": "launch",
|
|
8
|
+
"url": "http://localhost:3000",
|
|
9
|
+
"webRoot": "${workspaceFolder}/src",
|
|
10
|
+
"sourceMapPathOverrides": {
|
|
11
|
+
"webpack:///src/*": "${webRoot}/*"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"typescript.tsdk": "node_modules/typescript/lib",
|
|
3
|
+
"[typescript]": {
|
|
4
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
5
|
+
"editor.tabSize": 2
|
|
6
|
+
},
|
|
7
|
+
"[typescriptreact]": {
|
|
8
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
9
|
+
},
|
|
10
|
+
"[javascript]": {
|
|
11
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
12
|
+
},
|
|
13
|
+
"[json]": {
|
|
14
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
15
|
+
},
|
|
16
|
+
"[html]": {
|
|
17
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
18
|
+
},
|
|
19
|
+
"editor.codeActionsOnSave": {
|
|
20
|
+
"source.fixAll": true,
|
|
21
|
+
"source.fixAll.eslint": true
|
|
22
|
+
},
|
|
23
|
+
"editor.formatOnSave": true,
|
|
24
|
+
"javascript.format.enable": false
|
|
25
|
+
}
|
package/Dockerfile
ADDED
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 DJ
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
package/README.md
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "datajunction-ui",
|
|
3
|
+
"version": "0.0.1-rc.0",
|
|
4
|
+
"description": "DataJunction Metrics Platform UI",
|
|
5
|
+
"module": "src/index.tsx",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/DataJunction/dj-ui.git"
|
|
9
|
+
},
|
|
10
|
+
"keywords": [
|
|
11
|
+
"datajunction",
|
|
12
|
+
"metrics",
|
|
13
|
+
"metrics-platform",
|
|
14
|
+
"semantic-layer"
|
|
15
|
+
],
|
|
16
|
+
"author": "DataJunction Authors",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/DataJunction/dj/issues"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://github.com/DataJunction/dj#readme",
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@reduxjs/toolkit": "1.8.5",
|
|
24
|
+
"@testing-library/jest-dom": "5.16.5",
|
|
25
|
+
"@testing-library/react": "13.4.0",
|
|
26
|
+
"@types/fontfaceobserver": "^2.1.0",
|
|
27
|
+
"@types/jest": "^27.5.2",
|
|
28
|
+
"@types/node": "^14.18.27",
|
|
29
|
+
"@types/react": "^18.0.20",
|
|
30
|
+
"@types/react-dom": "^18.0.6",
|
|
31
|
+
"@types/react-redux": "^7.1.24",
|
|
32
|
+
"@types/react-test-renderer": "^18.0.0",
|
|
33
|
+
"@types/rimraf": "^3.0.2",
|
|
34
|
+
"@types/shelljs": "^0.8.11",
|
|
35
|
+
"@types/styled-components": "^5.1.26",
|
|
36
|
+
"@types/testing-library__jest-dom": "^5.14.5",
|
|
37
|
+
"@types/webpack": "^5.28.0",
|
|
38
|
+
"@types/webpack-env": "^1.18.0",
|
|
39
|
+
"chalk": "4.1.2",
|
|
40
|
+
"cross-env": "7.0.3",
|
|
41
|
+
"dagre": "^0.8.5",
|
|
42
|
+
"datajunction": "0.0.1-rc.0",
|
|
43
|
+
"eslint-config-prettier": "8.5.0",
|
|
44
|
+
"eslint-plugin-prettier": "4.2.1",
|
|
45
|
+
"eslint-plugin-react-hooks": "4.6.0",
|
|
46
|
+
"fontfaceobserver": "2.3.0",
|
|
47
|
+
"husky": "8.0.1",
|
|
48
|
+
"i18next": "21.9.2",
|
|
49
|
+
"i18next-browser-languagedetector": "6.1.5",
|
|
50
|
+
"i18next-scanner": "4.0.0",
|
|
51
|
+
"inquirer": "7.3.3",
|
|
52
|
+
"inquirer-directory": "2.2.0",
|
|
53
|
+
"jest-styled-components": "7.1.1",
|
|
54
|
+
"lint-staged": "13.0.3",
|
|
55
|
+
"node-plop": "0.26.3",
|
|
56
|
+
"plop": "2.7.6",
|
|
57
|
+
"prettier": "2.7.1",
|
|
58
|
+
"react": "18.2.0",
|
|
59
|
+
"react-app-polyfill": "3.0.0",
|
|
60
|
+
"react-dom": "18.2.0",
|
|
61
|
+
"react-helmet-async": "1.3.0",
|
|
62
|
+
"react-i18next": "11.18.6",
|
|
63
|
+
"react-is": "18.2.0",
|
|
64
|
+
"react-redux": "7.2.8",
|
|
65
|
+
"react-router-dom": "6.3.0",
|
|
66
|
+
"react-scripts": "5.0.1",
|
|
67
|
+
"react-syntax-highlighter": "^15.5.0",
|
|
68
|
+
"react-test-renderer": "18.2.0",
|
|
69
|
+
"reactflow": "^11.7.0",
|
|
70
|
+
"redux-injectors": "1.3.0",
|
|
71
|
+
"redux-saga": "1.2.1",
|
|
72
|
+
"rimraf": "3.0.2",
|
|
73
|
+
"sanitize.css": "13.0.0",
|
|
74
|
+
"serve": "14.0.1",
|
|
75
|
+
"shelljs": "0.8.5",
|
|
76
|
+
"sql-formatter": "^12.2.0",
|
|
77
|
+
"styled-components": "5.3.5",
|
|
78
|
+
"stylelint": "14.12.0",
|
|
79
|
+
"stylelint-config-recommended": "9.0.0",
|
|
80
|
+
"stylelint-config-styled-components": "0.1.1",
|
|
81
|
+
"stylelint-processor-styled-components": "1.10.0",
|
|
82
|
+
"ts-node": "10.9.1",
|
|
83
|
+
"typescript": "4.6.4",
|
|
84
|
+
"web-vitals": "2.1.4"
|
|
85
|
+
},
|
|
86
|
+
"scripts": {
|
|
87
|
+
"start": "react-scripts start",
|
|
88
|
+
"build": "react-scripts build",
|
|
89
|
+
"test": "react-scripts test",
|
|
90
|
+
"eject": "react-scripts eject",
|
|
91
|
+
"start:prod": "yarn run build && serve -s build",
|
|
92
|
+
"test:generators": "ts-node ./internals/testing/generators/test-generators.ts",
|
|
93
|
+
"checkTs": "tsc --noEmit",
|
|
94
|
+
"eslint": "eslint --ext js,ts,tsx",
|
|
95
|
+
"lint": "yarn run eslint src",
|
|
96
|
+
"lint:fix": "yarn run eslint --fix src",
|
|
97
|
+
"lint:css": "stylelint src/**/*.css",
|
|
98
|
+
"generate": "plop --plopfile internals/generators/plopfile.ts",
|
|
99
|
+
"cleanAndSetup": "ts-node ./internals/scripts/clean.ts",
|
|
100
|
+
"prettify": "prettier --write",
|
|
101
|
+
"extract-messages": "i18next-scanner --config=internals/extractMessages/i18next-scanner.config.js"
|
|
102
|
+
},
|
|
103
|
+
"eslintConfig": {
|
|
104
|
+
"extends": "react-app"
|
|
105
|
+
},
|
|
106
|
+
"browserslist": {
|
|
107
|
+
"production": [
|
|
108
|
+
">0.2%",
|
|
109
|
+
"not dead",
|
|
110
|
+
"not op_mini all"
|
|
111
|
+
],
|
|
112
|
+
"development": [
|
|
113
|
+
"last 1 chrome version",
|
|
114
|
+
"last 1 firefox version",
|
|
115
|
+
"last 1 safari version"
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
"engines": {
|
|
119
|
+
"node": ">=14.x"
|
|
120
|
+
},
|
|
121
|
+
"lint-staged": {
|
|
122
|
+
"*.{ts,tsx,js,jsx}": [
|
|
123
|
+
"yarn run eslint --fix"
|
|
124
|
+
],
|
|
125
|
+
"*.{md,json}": [
|
|
126
|
+
"prettier --write"
|
|
127
|
+
]
|
|
128
|
+
},
|
|
129
|
+
"jest": {
|
|
130
|
+
"collectCoverageFrom": [
|
|
131
|
+
"src/**/*.{js,jsx,ts,tsx}",
|
|
132
|
+
"!src/**/*/*.d.ts",
|
|
133
|
+
"!src/**/*/Loadable.{js,jsx,ts,tsx}",
|
|
134
|
+
"!src/**/*/messages.ts",
|
|
135
|
+
"!src/**/*/types.ts",
|
|
136
|
+
"!src/index.tsx"
|
|
137
|
+
],
|
|
138
|
+
"coverageThreshold": {
|
|
139
|
+
"global": {
|
|
140
|
+
"branches": 90,
|
|
141
|
+
"functions": 90,
|
|
142
|
+
"lines": 90,
|
|
143
|
+
"statements": 90
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"devDependencies": {
|
|
148
|
+
"jest": "^29.5.0"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<meta name="theme-color" content="#000000" />
|
|
8
|
+
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
|
9
|
+
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
|
10
|
+
<meta property="og:title" content="React Boilerplate Example App" />
|
|
11
|
+
<meta property="og:description" content="" />
|
|
12
|
+
<meta
|
|
13
|
+
property="og:image"
|
|
14
|
+
content="https://repository-images.githubusercontent.com/250347048/15514f00-8713-11ea-9f9d-796a89b5de4d"
|
|
15
|
+
/>
|
|
16
|
+
<title>DataJunction App</title>
|
|
17
|
+
<meta name="description" content="" />
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
21
|
+
<div id="root"></div>
|
|
22
|
+
|
|
23
|
+
<!-- Inter Font -->
|
|
24
|
+
<link
|
|
25
|
+
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;700&display=swap"
|
|
26
|
+
rel="stylesheet"
|
|
27
|
+
/>
|
|
28
|
+
</body>
|
|
29
|
+
</html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"short_name": "DataJunction UI",
|
|
3
|
+
"name": "DataJunction UI",
|
|
4
|
+
"icons": [
|
|
5
|
+
{
|
|
6
|
+
"src": "favicon.ico",
|
|
7
|
+
"sizes": "64x64 32x32 24x24 16x16",
|
|
8
|
+
"type": "image/x-icon"
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"start_url": ".",
|
|
12
|
+
"display": "standalone",
|
|
13
|
+
"theme_color": "#000000",
|
|
14
|
+
"background_color": "#ffffff"
|
|
15
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`<App /> should render and match the snapshot 1`] = `
|
|
4
|
+
<BrowserRouter>
|
|
5
|
+
<Helmet
|
|
6
|
+
defaultTitle="DataJunction: A Metrics Platform"
|
|
7
|
+
defer={true}
|
|
8
|
+
encodeSpecialCharacters={true}
|
|
9
|
+
prioritizeSeoTags={false}
|
|
10
|
+
titleTemplate="DataJunction: %s"
|
|
11
|
+
>
|
|
12
|
+
<meta
|
|
13
|
+
content="DataJunction serves as a semantic layer to help manage metrics"
|
|
14
|
+
name="description"
|
|
15
|
+
/>
|
|
16
|
+
</Helmet>
|
|
17
|
+
<Routes>
|
|
18
|
+
<Route
|
|
19
|
+
element={<Unknown />}
|
|
20
|
+
path="/"
|
|
21
|
+
>
|
|
22
|
+
<React.Fragment>
|
|
23
|
+
<Route
|
|
24
|
+
element={<Unknown />}
|
|
25
|
+
path="/nodes/:name"
|
|
26
|
+
/>
|
|
27
|
+
<Route
|
|
28
|
+
element={<Unknown />}
|
|
29
|
+
path="/namespaces/:namespace"
|
|
30
|
+
/>
|
|
31
|
+
<Route
|
|
32
|
+
element={<ListNamespacesPage />}
|
|
33
|
+
path="/namespaces/"
|
|
34
|
+
/>
|
|
35
|
+
</React.Fragment>
|
|
36
|
+
</Route>
|
|
37
|
+
<Route
|
|
38
|
+
element={<Unknown />}
|
|
39
|
+
path="*"
|
|
40
|
+
/>
|
|
41
|
+
</Routes>
|
|
42
|
+
<Memo(l) />
|
|
43
|
+
<Memo(l) />
|
|
44
|
+
</BrowserRouter>
|
|
45
|
+
`;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { createRenderer } from 'react-test-renderer/shallow';
|
|
3
|
+
|
|
4
|
+
import { App } from '../index';
|
|
5
|
+
|
|
6
|
+
const renderer = createRenderer();
|
|
7
|
+
|
|
8
|
+
describe('<App />', () => {
|
|
9
|
+
it('should render and match the snapshot', () => {
|
|
10
|
+
renderer.render(<App />);
|
|
11
|
+
const renderedOutput = renderer.getRenderOutput();
|
|
12
|
+
expect(renderedOutput).toMatchSnapshot();
|
|
13
|
+
});
|
|
14
|
+
});
|