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.
Files changed (71) hide show
  1. package/.env +1 -0
  2. package/.env.local +4 -0
  3. package/.env.production +1 -0
  4. package/.eslintrc.js +20 -0
  5. package/.gitattributes +201 -0
  6. package/.github/pull_request_template.md +11 -0
  7. package/.github/workflows/ci.yml +33 -0
  8. package/.husky/pre-commit +6 -0
  9. package/.nvmrc +1 -0
  10. package/.prettierignore +4 -0
  11. package/.prettierrc +9 -0
  12. package/.stylelintrc +7 -0
  13. package/.vscode/extensions.json +8 -0
  14. package/.vscode/launch.json +15 -0
  15. package/.vscode/settings.json +25 -0
  16. package/Dockerfile +6 -0
  17. package/LICENSE +22 -0
  18. package/README.md +10 -0
  19. package/internals/testing/loadable.mock.tsx +6 -0
  20. package/package.json +150 -0
  21. package/public/favicon.ico +0 -0
  22. package/public/index.html +29 -0
  23. package/public/manifest.json +15 -0
  24. package/public/robots.txt +3 -0
  25. package/src/app/__tests__/__snapshots__/index.test.tsx.snap +45 -0
  26. package/src/app/__tests__/index.test.tsx +14 -0
  27. package/src/app/components/ListGroupItem.jsx +17 -0
  28. package/src/app/components/NamespaceHeader.jsx +40 -0
  29. package/src/app/components/Tab.jsx +26 -0
  30. package/src/app/components/__tests__/ListGroupItem.test.tsx +16 -0
  31. package/src/app/components/__tests__/NamespaceHeader.test.jsx +14 -0
  32. package/src/app/components/__tests__/__snapshots__/ListGroupItem.test.tsx.snap +26 -0
  33. package/src/app/components/__tests__/__snapshots__/NamespaceHeader.test.jsx.snap +63 -0
  34. package/src/app/components/djgraph/DJNode.jsx +111 -0
  35. package/src/app/components/djgraph/__tests__/DJNode.test.tsx +24 -0
  36. package/src/app/components/djgraph/__tests__/__snapshots__/DJNode.test.tsx.snap +73 -0
  37. package/src/app/index.tsx +53 -0
  38. package/src/app/pages/ListNamespacesPage/Loadable.jsx +23 -0
  39. package/src/app/pages/ListNamespacesPage/index.jsx +53 -0
  40. package/src/app/pages/NamespacePage/Loadable.jsx +23 -0
  41. package/src/app/pages/NamespacePage/__tests__/__snapshots__/index.test.tsx.snap +45 -0
  42. package/src/app/pages/NamespacePage/__tests__/index.test.tsx +14 -0
  43. package/src/app/pages/NamespacePage/index.jsx +93 -0
  44. package/src/app/pages/NodePage/Loadable.jsx +23 -0
  45. package/src/app/pages/NodePage/NodeColumnTab.jsx +44 -0
  46. package/src/app/pages/NodePage/NodeGraphTab.jsx +160 -0
  47. package/src/app/pages/NodePage/NodeInfoTab.jsx +87 -0
  48. package/src/app/pages/NodePage/NodeStatus.jsx +34 -0
  49. package/src/app/pages/NodePage/index.jsx +100 -0
  50. package/src/app/pages/NotFoundPage/Loadable.tsx +14 -0
  51. package/src/app/pages/NotFoundPage/P.ts +8 -0
  52. package/src/app/pages/NotFoundPage/__tests__/__snapshots__/index.test.tsx.snap +61 -0
  53. package/src/app/pages/NotFoundPage/__tests__/index.test.tsx +21 -0
  54. package/src/app/pages/NotFoundPage/index.tsx +45 -0
  55. package/src/app/pages/Root/Loadable.tsx +23 -0
  56. package/src/app/pages/Root/assets/dj-logo.png +0 -0
  57. package/src/app/pages/Root/index.tsx +42 -0
  58. package/src/app/services/DJService.js +124 -0
  59. package/src/index.tsx +47 -0
  60. package/src/react-app-env.d.ts +4 -0
  61. package/src/reportWebVitals.ts +15 -0
  62. package/src/setupTests.ts +8 -0
  63. package/src/styles/dag-styles.ts +117 -0
  64. package/src/styles/global-styles.ts +588 -0
  65. package/src/styles/index.css +546 -0
  66. package/src/utils/__tests__/__snapshots__/loadable.test.tsx.snap +17 -0
  67. package/src/utils/__tests__/loadable.test.tsx +53 -0
  68. package/src/utils/__tests__/request.test.ts +82 -0
  69. package/src/utils/loadable.tsx +30 -0
  70. package/src/utils/request.ts +54 -0
  71. package/tsconfig.json +31 -0
package/.env ADDED
@@ -0,0 +1 @@
1
+ REACT_APP_DJ_URL=http://localhost:8000
package/.env.local ADDED
@@ -0,0 +1,4 @@
1
+ BROWSER=none
2
+ EXTEND_ESLINT=true
3
+ FAST_REFRESH=true
4
+ REACT_APP_DJ_URL=http://localhost:8000
@@ -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,11 @@
1
+ ### Summary
2
+
3
+ <!-- What's this change about? -->
4
+
5
+ ### Test Plan
6
+
7
+ <!-- How did you test your change? -->
8
+
9
+ ### Deployment Plan
10
+
11
+ <!-- Any special instructions around deployment? -->
@@ -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
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+ . "$(dirname "$0")/_/husky.sh"
3
+
4
+ yarn checkTs
5
+ yarn lint-staged
6
+
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ lts/fermium
@@ -0,0 +1,4 @@
1
+ build/
2
+ node_modules/
3
+ package-lock.json
4
+ yarn.lock
package/.prettierrc ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "printWidth": 80,
3
+ "tabWidth": 2,
4
+ "useTabs": false,
5
+ "semi": true,
6
+ "singleQuote": true,
7
+ "trailingComma": "all",
8
+ "arrowParens": "avoid"
9
+ }
package/.stylelintrc ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "processors": ["stylelint-processor-styled-components"],
3
+ "extends": [
4
+ "stylelint-config-recommended",
5
+ "stylelint-config-styled-components"
6
+ ]
7
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "recommendations": [
3
+ "dbaeumer.vscode-eslint",
4
+ "esbenp.prettier-vscode",
5
+ "styled-components.vscode-styled-components",
6
+ "orta.vscode-jest"
7
+ ]
8
+ }
@@ -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
@@ -0,0 +1,6 @@
1
+ FROM node:19 AS ui-build
2
+ WORKDIR /usr/src/app
3
+ COPY . .
4
+ EXPOSE 3000
5
+
6
+ CMD ["yarn", "start"]
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
@@ -0,0 +1,10 @@
1
+ # DataJunction UI
2
+
3
+ A view-only UI for the DataJunction metrics platform.
4
+
5
+ To run:
6
+
7
+ ```bash
8
+ yarn install
9
+ yarn start
10
+ ```
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+
3
+ export function ExportedFunc() {
4
+ return <div>My lazy-loaded component</div>;
5
+ }
6
+ export default ExportedFunc;
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,3 @@
1
+ # https://www.robotstxt.org/robotstxt.html
2
+ User-agent: *
3
+ Disallow:
@@ -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
+ });