From b2a90eff51ee3cd2e8c9d919d0d94ecfadaf9d6a Mon Sep 17 00:00:00 2001
From: vutuanlinh2k2 <69841784+vutuanlinh2k2@users.noreply.github.com>
Date: Fri, 23 Jun 2023 01:06:06 +0700
Subject: [PATCH] Initialize hubble-stats (#1366)
---
.gitignore | 2 +-
apps/hubble-stats/.eslintrc.json | 34 +++++++++
apps/hubble-stats/.vscode/settings.json | 4 +
apps/hubble-stats/app/api/hello/route.ts | 3 +
apps/hubble-stats/app/layout.tsx | 36 +++++++++
apps/hubble-stats/app/page.tsx | 3 +
apps/hubble-stats/index.d.ts | 6 ++
apps/hubble-stats/jest.config.ts | 11 +++
apps/hubble-stats/next-env.d.ts | 5 ++
apps/hubble-stats/next.config.js | 26 +++++++
apps/hubble-stats/postcss.config.js | 17 +++++
apps/hubble-stats/project.json | 69 ++++++++++++++++++
apps/hubble-stats/public/.gitkeep | 0
apps/hubble-stats/public/favicon.ico | Bin 0 -> 15086 bytes
apps/hubble-stats/tailwind.config.js | 25 +++++++
apps/hubble-stats/tsconfig.json | 38 ++++++++++
apps/hubble-stats/tsconfig.spec.json | 21 ++++++
.../src/css/layer-components.css | 3 +-
nx.json | 1 +
package.json | 4 +
yarn.lock | 27 +++++--
21 files changed, 328 insertions(+), 7 deletions(-)
create mode 100644 apps/hubble-stats/.eslintrc.json
create mode 100644 apps/hubble-stats/.vscode/settings.json
create mode 100644 apps/hubble-stats/app/api/hello/route.ts
create mode 100644 apps/hubble-stats/app/layout.tsx
create mode 100644 apps/hubble-stats/app/page.tsx
create mode 100644 apps/hubble-stats/index.d.ts
create mode 100644 apps/hubble-stats/jest.config.ts
create mode 100644 apps/hubble-stats/next-env.d.ts
create mode 100644 apps/hubble-stats/next.config.js
create mode 100644 apps/hubble-stats/postcss.config.js
create mode 100644 apps/hubble-stats/project.json
create mode 100644 apps/hubble-stats/public/.gitkeep
create mode 100644 apps/hubble-stats/public/favicon.ico
create mode 100644 apps/hubble-stats/tailwind.config.js
create mode 100644 apps/hubble-stats/tsconfig.json
create mode 100644 apps/hubble-stats/tsconfig.spec.json
diff --git a/.gitignore b/.gitignore
index 440f7ecbbc..c3f3e38c93 100644
--- a/.gitignore
+++ b/.gitignore
@@ -94,4 +94,4 @@ apps/stats-dapp/graphql.schema.json
.direnv
# Generated by json files
-/**/generated/**/*.json
+/**/generated/**/*.json
\ No newline at end of file
diff --git a/apps/hubble-stats/.eslintrc.json b/apps/hubble-stats/.eslintrc.json
new file mode 100644
index 0000000000..af23ce730f
--- /dev/null
+++ b/apps/hubble-stats/.eslintrc.json
@@ -0,0 +1,34 @@
+{
+ "extends": [
+ "plugin:@nx/react-typescript",
+ "next",
+ "next/core-web-vitals",
+ "../../.eslintrc.json"
+ ],
+ "ignorePatterns": ["!**/*", ".next/**/*"],
+ "overrides": [
+ {
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
+ "rules": {
+ "@next/next/no-html-link-for-pages": [
+ "error",
+ "apps/hubble-stats/pages"
+ ]
+ }
+ },
+ {
+ "files": ["*.ts", "*.tsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.js", "*.jsx"],
+ "rules": {}
+ }
+ ],
+ "rules": {
+ "@next/next/no-html-link-for-pages": "off"
+ },
+ "env": {
+ "jest": true
+ }
+}
diff --git a/apps/hubble-stats/.vscode/settings.json b/apps/hubble-stats/.vscode/settings.json
new file mode 100644
index 0000000000..d3fdae9a69
--- /dev/null
+++ b/apps/hubble-stats/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+ "typescript.tsdk": "../../node_modules/typescript/lib",
+ "typescript.enablePromptUseWorkspaceTsdk": true
+}
\ No newline at end of file
diff --git a/apps/hubble-stats/app/api/hello/route.ts b/apps/hubble-stats/app/api/hello/route.ts
new file mode 100644
index 0000000000..de70bac64e
--- /dev/null
+++ b/apps/hubble-stats/app/api/hello/route.ts
@@ -0,0 +1,3 @@
+export async function GET(request: Request) {
+ return new Response('Hello, from API!');
+}
diff --git a/apps/hubble-stats/app/layout.tsx b/apps/hubble-stats/app/layout.tsx
new file mode 100644
index 0000000000..d1918a032c
--- /dev/null
+++ b/apps/hubble-stats/app/layout.tsx
@@ -0,0 +1,36 @@
+'use client';
+
+import { useEffect } from 'react';
+import Head from 'next/head';
+import {
+ WebbUIProvider,
+ useDarkMode,
+ Footer,
+} from '@webb-tools/webb-ui-components';
+import '@webb-tools/webb-ui-components/tailwind.css';
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const [, setIsDarkMode] = useDarkMode();
+
+ useEffect(() => {
+ setIsDarkMode('light');
+ }, [setIsDarkMode]);
+
+ return (
+
+
+
+ Welcome to Hubble Stats!
+
+
+ {children}
+
+
+
+
+ );
+}
diff --git a/apps/hubble-stats/app/page.tsx b/apps/hubble-stats/app/page.tsx
new file mode 100644
index 0000000000..74d30483eb
--- /dev/null
+++ b/apps/hubble-stats/app/page.tsx
@@ -0,0 +1,3 @@
+export default async function Index() {
+ return
;
+}
diff --git a/apps/hubble-stats/index.d.ts b/apps/hubble-stats/index.d.ts
new file mode 100644
index 0000000000..7ba08fa17c
--- /dev/null
+++ b/apps/hubble-stats/index.d.ts
@@ -0,0 +1,6 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+declare module '*.svg' {
+ const content: any;
+ export const ReactComponent: any;
+ export default content;
+}
diff --git a/apps/hubble-stats/jest.config.ts b/apps/hubble-stats/jest.config.ts
new file mode 100644
index 0000000000..12df35a939
--- /dev/null
+++ b/apps/hubble-stats/jest.config.ts
@@ -0,0 +1,11 @@
+/* eslint-disable */
+export default {
+ displayName: 'hubble-stats',
+ preset: '../../jest.preset.js',
+ transform: {
+ '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest',
+ '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/next/babel'] }],
+ },
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
+ coverageDirectory: '../../coverage/apps/hubble-stats',
+};
diff --git a/apps/hubble-stats/next-env.d.ts b/apps/hubble-stats/next-env.d.ts
new file mode 100644
index 0000000000..4f11a03dc6
--- /dev/null
+++ b/apps/hubble-stats/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/apps/hubble-stats/next.config.js b/apps/hubble-stats/next.config.js
new file mode 100644
index 0000000000..937828ba70
--- /dev/null
+++ b/apps/hubble-stats/next.config.js
@@ -0,0 +1,26 @@
+//@ts-check
+
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const { composePlugins, withNx } = require('@nx/next');
+
+/**
+ * @type {import('@nx/next/plugins/with-nx').WithNxOptions}
+ **/
+const nextConfig = {
+ nx: {
+ // Set this to true if you would like to use SVGR
+ // See: https://github.com/gregberge/svgr
+ svgr: false,
+ },
+
+ experimental: {
+ appDir: true,
+ },
+};
+
+const plugins = [
+ // Add more Next.js plugins to this list if needed.
+ withNx,
+];
+
+module.exports = composePlugins(...plugins)(nextConfig);
diff --git a/apps/hubble-stats/postcss.config.js b/apps/hubble-stats/postcss.config.js
new file mode 100644
index 0000000000..15d89344f9
--- /dev/null
+++ b/apps/hubble-stats/postcss.config.js
@@ -0,0 +1,17 @@
+const { join } = require('path');
+
+// Note: If you use library-specific PostCSS/Tailwind configuration then you should remove the `postcssConfig` build
+// option from your application's configuration (i.e. project.json).
+//
+// See: https://nx.dev/guides/using-tailwind-css-in-react#step-4:-applying-configuration-to-libraries
+
+module.exports = {
+ plugins: {
+ 'postcss-import': {},
+ 'tailwindcss/nesting': {},
+ tailwindcss: {
+ config: join(__dirname, 'tailwind.config.js'),
+ },
+ autoprefixer: {},
+ },
+};
diff --git a/apps/hubble-stats/project.json b/apps/hubble-stats/project.json
new file mode 100644
index 0000000000..c49c004565
--- /dev/null
+++ b/apps/hubble-stats/project.json
@@ -0,0 +1,69 @@
+{
+ "name": "hubble-stats",
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "apps/hubble-stats",
+ "projectType": "application",
+ "targets": {
+ "build": {
+ "executor": "@nx/next:build",
+ "outputs": ["{options.outputPath}"],
+ "defaultConfiguration": "production",
+ "options": {
+ "root": "apps/hubble-stats",
+ "outputPath": "dist/apps/hubble-stats"
+ },
+ "configurations": {
+ "development": {
+ "outputPath": "apps/hubble-stats"
+ },
+ "production": {}
+ }
+ },
+ "serve": {
+ "executor": "@nx/next:server",
+ "defaultConfiguration": "development",
+ "options": {
+ "buildTarget": "hubble-stats:build",
+ "dev": true
+ },
+ "configurations": {
+ "development": {
+ "buildTarget": "hubble-stats:build:development",
+ "dev": true
+ },
+ "production": {
+ "buildTarget": "hubble-stats:build:production",
+ "dev": false
+ }
+ }
+ },
+ "export": {
+ "executor": "@nx/next:export",
+ "options": {
+ "buildTarget": "hubble-stats:build:production"
+ }
+ },
+ "test": {
+ "executor": "@nx/jest:jest",
+ "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
+ "options": {
+ "jestConfig": "apps/hubble-stats/jest.config.ts",
+ "passWithNoTests": true
+ },
+ "configurations": {
+ "ci": {
+ "ci": true,
+ "codeCoverage": true
+ }
+ }
+ },
+ "lint": {
+ "executor": "@nx/linter:eslint",
+ "outputs": ["{options.outputFile}"],
+ "options": {
+ "lintFilePatterns": ["apps/hubble-stats/**/*.{ts,tsx,js,jsx}"]
+ }
+ }
+ },
+ "tags": []
+}
diff --git a/apps/hubble-stats/public/.gitkeep b/apps/hubble-stats/public/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/apps/hubble-stats/public/favicon.ico b/apps/hubble-stats/public/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..317ebcb2336e0833a22dddf0ab287849f26fda57
GIT binary patch
literal 15086
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