fix(FE): tsConfig baseUrl is used rather than using the alias for module (#256)

* tsconfig-paths-webpack-plugin package is added

* baseUrl is updated

* webpack config for development and production are updated

* baseUrl is removed in the file

* more .. is being removed

* chore: removed the commented part in the webpack.config

Co-authored-by: FIPalash Gupta <palash@indiagold.co>
This commit is contained in:
palash-signoz 2021-08-19 22:53:33 +05:30 committed by GitHub
parent 77c0237ba1
commit 4b205e61c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
54 changed files with 230 additions and 196 deletions

View File

@ -102,6 +102,7 @@
"styled-components": "^5.2.1", "styled-components": "^5.2.1",
"terser-webpack-plugin": "4.2.3", "terser-webpack-plugin": "4.2.3",
"ts-pnp": "1.2.0", "ts-pnp": "1.2.0",
"tsconfig-paths-webpack-plugin": "^3.5.1",
"typescript": "^4.0.5", "typescript": "^4.0.5",
"url-loader": "4.1.1", "url-loader": "4.1.1",
"web-vitals": "^0.2.4", "web-vitals": "^0.2.4",

View File

@ -1,5 +1,5 @@
import axios, { AxiosRequestConfig } from "axios"; import axios, { AxiosRequestConfig } from "axios";
import { ENVIRONMENT } from "Src/constants/env"; import { ENVIRONMENT } from "constants/env";
import apiV1 from "./apiV1"; import apiV1 from "./apiV1";
export default axios.create({ export default axios.create({

View File

@ -2,8 +2,8 @@ import React from "react";
import { Button, Text, TextContainer, Container } from "./styles"; import { Button, Text, TextContainer, Container } from "./styles";
import NotFoundImage from "Src/assets/NotFound"; import NotFoundImage from "assets/NotFound";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
const NotFound = (): JSX.Element => { const NotFound = (): JSX.Element => {
return ( return (

View File

@ -2,11 +2,11 @@ import React from "react";
import ReactDOM from "react-dom"; import ReactDOM from "react-dom";
import { Provider } from "react-redux"; import { Provider } from "react-redux";
import { ThemeSwitcherProvider } from "react-css-theme-switcher"; import { ThemeSwitcherProvider } from "react-css-theme-switcher";
import store from "Src/store"; import store from "store";
import AppWrapper from "Src/modules/AppWrapper"; import AppWrapper from "modules/AppWrapper";
import "Src/assets/index.css"; import "assets/index.css";
import { BrowserRouter as Router } from "react-router-dom"; import { BrowserRouter as Router } from "react-router-dom";
import themes from "Src/themes"; import themes from "themes";
ReactDOM.render( ReactDOM.render(
<Provider store={store}> <Provider store={store}>

View File

@ -1,9 +1,9 @@
import React, { Suspense } from "react"; import React, { Suspense } from "react";
import { useThemeSwitcher } from "react-css-theme-switcher"; import { useThemeSwitcher } from "react-css-theme-switcher";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
import { IS_LOGGED_IN } from "Src/constants/auth"; import { IS_LOGGED_IN } from "constants/auth";
import { BrowserRouter, Route, Switch, Redirect } from "react-router-dom"; import { BrowserRouter, Route, Switch, Redirect } from "react-router-dom";
import { CustomSpinner } from "./../components/Spiner"; import { CustomSpinner } from "components/Spiner";
import BaseLayout from "./BaseLayout"; import BaseLayout from "./BaseLayout";
import { import {
@ -16,9 +16,9 @@ import {
Signup, Signup,
SettingsPage, SettingsPage,
InstrumentationPage, InstrumentationPage,
} from "Src/pages"; } from "pages";
import { RouteProvider } from "./RouteProvider"; import { RouteProvider } from "./RouteProvider";
import NotFound from "Src/components/NotFound"; import NotFound from "components/NotFound";
const App = () => { const App = () => {
const { status } = useThemeSwitcher(); const { status } = useThemeSwitcher();

View File

@ -1,8 +1,8 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Row, Space, Button, Input } from "antd"; import { Row, Space, Button, Input } from "antd";
import api, { apiV1 } from "../../api"; import api, { apiV1 } from "api";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
import { IS_LOGGED_IN } from "Src/constants/auth"; import { IS_LOGGED_IN } from "constants/auth";
import { withRouter } from "react-router"; import { withRouter } from "react-router";
import { RouteComponentProps } from "react-router-dom"; import { RouteComponentProps } from "react-router-dom";

View File

@ -4,9 +4,9 @@ import { ChartOptions } from "chart.js";
import { withRouter } from "react-router"; import { withRouter } from "react-router";
import { RouteComponentProps } from "react-router-dom"; import { RouteComponentProps } from "react-router-dom";
import styled from "styled-components"; import styled from "styled-components";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
import { metricItem } from "../../store/actions/MetricsActions"; import { metricItem } from "store/actions/MetricsActions";
const ChartPopUpUnique = styled.div<{ const ChartPopUpUnique = styled.div<{
ycoordinate: number; ycoordinate: number;

View File

@ -3,7 +3,7 @@ import { Line as ChartJSLine } from "react-chartjs-2";
import { withRouter } from "react-router"; import { withRouter } from "react-router";
import { RouteComponentProps } from "react-router-dom"; import { RouteComponentProps } from "react-router-dom";
import { getOptions, borderColors } from "./graphConfig"; import { getOptions, borderColors } from "./graphConfig";
import { externalMetricsItem } from "../../../store/actions/MetricsActions"; import { externalMetricsItem } from "store/actions/MetricsActions";
import { uniqBy, filter } from "lodash"; import { uniqBy, filter } from "lodash";
const theme = "dark"; const theme = "dark";

View File

@ -2,7 +2,7 @@ import React from "react";
import { Bar, Line as ChartJSLine } from "react-chartjs-2"; import { Bar, Line as ChartJSLine } from "react-chartjs-2";
import styled from "styled-components"; import styled from "styled-components";
import { customMetricsItem } from "../../store/actions/MetricsActions"; import { customMetricsItem } from "store/actions/MetricsActions";
const GenVisualizationWrapper = styled.div` const GenVisualizationWrapper = styled.div`
height: 160px; height: 160px;
@ -15,10 +15,16 @@ interface GenericVisualizationsProps {
const GenericVisualizations = (props: GenericVisualizationsProps) => { const GenericVisualizations = (props: GenericVisualizationsProps) => {
const data = { const data = {
labels: (props.data !== undefined && props.data !== null) && props.data.map((s) => new Date(s.timestamp / 1000000)), labels:
props.data !== undefined &&
props.data !== null &&
props.data.map((s) => new Date(s.timestamp / 1000000)),
datasets: [ datasets: [
{ {
data: (props.data !== undefined && props.data !== null) && props.data.map((s) => s.value), data:
props.data !== undefined &&
props.data !== null &&
props.data.map((s) => s.value),
borderColor: "rgba(250,174,50,1)", // for line chart borderColor: "rgba(250,174,50,1)", // for line chart
backgroundColor: props.chartType === "bar" ? "rgba(250,174,50,1)" : "", // for bar chart, don't assign backgroundcolor if its not a bar chart, may be relevant for area graph though backgroundColor: props.chartType === "bar" ? "rgba(250,174,50,1)" : "", // for bar chart, don't assign backgroundcolor if its not a bar chart, may be relevant for area graph though
}, },

View File

@ -4,7 +4,7 @@ import { ChartOptions } from "chart.js";
import { withRouter } from "react-router"; import { withRouter } from "react-router";
import { RouteComponentProps } from "react-router-dom"; import { RouteComponentProps } from "react-router-dom";
import styled from "styled-components"; import styled from "styled-components";
import { metricItem } from "../../store/actions/MetricsActions"; import { metricItem } from "store/actions/MetricsActions";
const ChartPopUpUnique = styled.div<{ const ChartPopUpUnique = styled.div<{
ycoordinate: number; ycoordinate: number;

View File

@ -5,8 +5,8 @@ import { withRouter } from "react-router";
import { RouteComponentProps } from "react-router-dom"; import { RouteComponentProps } from "react-router-dom";
import styled from "styled-components"; import styled from "styled-components";
import { metricItem } from "../../store/actions/MetricsActions"; import { metricItem } from "store/actions/MetricsActions";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
const ChartPopUpUnique = styled.div<{ const ChartPopUpUnique = styled.div<{
ycoordinate: number; ycoordinate: number;
@ -208,7 +208,7 @@ class RequestRateChart extends React.Component<RequestRateChartProps> {
return ( return (
<div> <div>
{this.GraphTracePopUp()} {this.GraphTracePopUp()}
<div style={{textAlign: "center"}}>Request per sec</div> <div style={{ textAlign: "center" }}>Request per sec</div>
<ChartJSLine <ChartJSLine
ref={this.chartRef} ref={this.chartRef}
data={data_chartJS} data={data_chartJS}

View File

@ -3,8 +3,8 @@ import { Tabs, Card, Row, Col } from "antd";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { useParams, RouteComponentProps } from "react-router-dom"; import { useParams, RouteComponentProps } from "react-router-dom";
import { withRouter } from "react-router"; import { withRouter } from "react-router";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
import { GlobalTime, updateTimeInterval } from "Src/store/actions"; import { GlobalTime, updateTimeInterval } from "store/actions";
import { import {
metricItem, metricItem,
externalMetricsAvgDurationItem, externalMetricsAvgDurationItem,
@ -12,7 +12,7 @@ import {
externalMetricsItem, externalMetricsItem,
dbOverviewMetricsItem, dbOverviewMetricsItem,
topEndpointListItem, topEndpointListItem,
} from "../../store/actions/MetricsActions"; } from "store/actions/MetricsActions";
import { import {
getServicesMetrics, getServicesMetrics,
getTopEndpoints, getTopEndpoints,
@ -20,14 +20,14 @@ import {
getExternalMetrics, getExternalMetrics,
getExternalAvgDurationMetrics, getExternalAvgDurationMetrics,
getExternalErrCodeMetrics, getExternalErrCodeMetrics,
} from "../../store/actions/MetricsActions"; } from "store/actions/MetricsActions";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
import LatencyLineChart from "./LatencyLineChart"; import LatencyLineChart from "./LatencyLineChart";
import RequestRateChart from "./RequestRateChart"; import RequestRateChart from "./RequestRateChart";
import ErrorRateChart from "./ErrorRateChart"; import ErrorRateChart from "./ErrorRateChart";
import TopEndpointsTable from "./TopEndpointsTable"; import TopEndpointsTable from "./TopEndpointsTable";
import { METRICS_PAGE_QUERY_PARAM } from "Src/constants/query"; import { METRICS_PAGE_QUERY_PARAM } from "constants/query";
import ExternalApiGraph from "./ExternalApi"; import ExternalApiGraph from "./ExternalApi";
const { TabPane } = Tabs; const { TabPane } = Tabs;

View File

@ -3,13 +3,13 @@ import { NavLink } from "react-router-dom";
import { Button, Space, Table } from "antd"; import { Button, Space, Table } from "antd";
import styled from "styled-components"; import styled from "styled-components";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { SKIP_ONBOARDING } from "Src/constants/onboarding"; import { SKIP_ONBOARDING } from "constants/onboarding";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
import { getServicesList, GlobalTime } from "../../store/actions"; import { getServicesList, GlobalTime } from "store/actions";
import { servicesListItem } from "../../store/actions/MetricsActions"; import { servicesListItem } from "store/actions/MetricsActions";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
import { CustomModal } from "../../components/Modal"; import { CustomModal } from "components/Modal";
import { CustomSpinner,DefaultSpinner } from "../../components/Spiner"; import { CustomSpinner, DefaultSpinner } from "components/Spiner";
interface ServicesTableProps { interface ServicesTableProps {
servicesList: servicesListItem[]; servicesList: servicesListItem[];
@ -124,9 +124,7 @@ const _ServicesTable = (props: ServicesTableProps) => {
}, [props.servicesList, errorObject]); }, [props.servicesList, errorObject]);
if (!initialDataFetch) { if (!initialDataFetch) {
return ( return <CustomSpinner size="large" tip="Fetching data..." />;
<CustomSpinner size="large" tip="Fetching data..."/>
);
} }
if (refetchFromBackend && !skipOnboarding) { if (refetchFromBackend && !skipOnboarding) {
@ -152,7 +150,7 @@ const _ServicesTable = (props: ServicesTableProps) => {
allowFullScreen allowFullScreen
></iframe> ></iframe>
<div style={{ margin: "20px 0" }}> <div style={{ margin: "20px 0" }}>
<DefaultSpinner/> <DefaultSpinner />
</div> </div>
<div> <div>
No instrumentation data. No instrumentation data.

View File

@ -3,10 +3,10 @@ import { Table, Button, Tooltip } from "antd";
import { connect } from "react-redux"; import { connect } from "react-redux";
import styled from "styled-components"; import styled from "styled-components";
import { useHistory, useParams } from "react-router-dom"; import { useHistory, useParams } from "react-router-dom";
import { topEndpointListItem } from "../../store/actions/MetricsActions"; import { topEndpointListItem } from "store/actions/MetricsActions";
import { METRICS_PAGE_QUERY_PARAM } from "Src/constants/query"; import { METRICS_PAGE_QUERY_PARAM } from "constants/query";
import { GlobalTime } from "Src/store/actions"; import { GlobalTime } from "store/actions";
import { StoreState } from "Src/store/reducers"; import { StoreState } from "store/reducers";
import "./TopEndpointsTable.css"; import "./TopEndpointsTable.css";
const Wrapper = styled.div` const Wrapper = styled.div`

View File

@ -3,7 +3,7 @@ import { Layout, Menu, Switch as ToggleButton } from "antd";
import { NavLink } from "react-router-dom"; import { NavLink } from "react-router-dom";
import { useThemeSwitcher } from "react-css-theme-switcher"; import { useThemeSwitcher } from "react-css-theme-switcher";
import { useLocation } from "react-router-dom"; import { useLocation } from "react-router-dom";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
import { import {
LineChartOutlined, LineChartOutlined,

View File

@ -1,6 +1,6 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Modal, DatePicker } from "antd"; import { Modal, DatePicker } from "antd";
import { DateTimeRangeType } from "../../../store/actions"; import { DateTimeRangeType } from "store/actions";
import { Moment } from "moment"; import { Moment } from "moment";
import moment from "moment"; import moment from "moment";

View File

@ -6,19 +6,19 @@ import { withRouter } from "react-router";
import { getLocalStorageRouteKey } from "./utils"; import { getLocalStorageRouteKey } from "./utils";
import { RouteComponentProps, useLocation } from "react-router-dom"; import { RouteComponentProps, useLocation } from "react-router-dom";
import { connect } from "react-redux"; import { connect } from "react-redux";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
import CustomDateTimeModal from "./CustomDateTimeModal"; import CustomDateTimeModal from "./CustomDateTimeModal";
import { GlobalTime, updateTimeInterval } from "../../../store/actions"; import { GlobalTime, updateTimeInterval } from "store/actions";
import { StoreState } from "../../../store/reducers"; import { StoreState } from "store/reducers";
import FormItem from "antd/lib/form/FormItem"; import FormItem from "antd/lib/form/FormItem";
import { import {
Options, Options,
ServiceMapOptions, ServiceMapOptions,
DefaultOptionsBasedOnRoute, DefaultOptionsBasedOnRoute,
} from "./config"; } from "./config";
import { DateTimeRangeType } from "../../../store/actions"; import { DateTimeRangeType } from "store/actions";
import { METRICS_PAGE_QUERY_PARAM } from "Src/constants/query"; import { METRICS_PAGE_QUERY_PARAM } from "constants/query";
import { LOCAL_STORAGE } from "Src/constants/localStorage"; import { LOCAL_STORAGE } from "constants/localStorage";
import moment from "moment"; import moment from "moment";
const { Option } = DefaultSelect; const { Option } = DefaultSelect;

View File

@ -2,7 +2,7 @@ import React from "react";
import { Breadcrumb } from "antd"; import { Breadcrumb } from "antd";
import { Link, withRouter } from "react-router-dom"; import { Link, withRouter } from "react-router-dom";
import styled from "styled-components"; import styled from "styled-components";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
const BreadCrumbWrapper = styled.div` const BreadCrumbWrapper = styled.div`
padding-top: 20px; padding-top: 20px;

View File

@ -1,4 +1,4 @@
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
export const Options = [ export const Options = [
{ value: "5min", label: "Last 5 min" }, { value: "5min", label: "Last 5 min" },

View File

@ -1,7 +1,7 @@
import React from "react"; import React from "react";
import { Row, Col } from "antd"; import { Row, Col } from "antd";
import { useHistory } from "react-router-dom"; import { useHistory } from "react-router-dom";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
import DateTimeSelector from "./DateTimeSelector"; import DateTimeSelector from "./DateTimeSelector";
import ShowBreadcrumbs from "./ShowBreadcrumbs"; import ShowBreadcrumbs from "./ShowBreadcrumbs";

View File

@ -1,4 +1,4 @@
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
export const getLocalStorageRouteKey = (pathName: string) => { export const getLocalStorageRouteKey = (pathName: string) => {
let localStorageKey = ""; let localStorageKey = "";

View File

@ -1,5 +1,5 @@
import React, { useContext, createContext, ReactNode, Dispatch } from "react"; import React, { useContext, createContext, ReactNode, Dispatch } from "react";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
type State = { type State = {
[key: string]: { [key: string]: {

View File

@ -6,15 +6,15 @@ import {
serviceMapStore, serviceMapStore,
getServiceMapItems, getServiceMapItems,
getDetailedServiceMapItems, getDetailedServiceMapItems,
} from "Src/store/actions"; } from "store/actions";
import styled from "styled-components"; import styled from "styled-components";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
import { getZoomPx, getGraphData, getTooltip, transformLabel } from "./utils"; import { getZoomPx, getGraphData, getTooltip, transformLabel } from "./utils";
import SelectService from "./SelectService"; import SelectService from "./SelectService";
import { ForceGraph2D } from "react-force-graph"; import { ForceGraph2D } from "react-force-graph";
import { useRoute } from "../RouteProvider"; import { useRoute } from "modules/RouteProvider";
import { CustomSpinner } from "../../components/Spiner"; import { CustomSpinner } from "components/Spiner";
const Container = styled.div` const Container = styled.div`
.force-graph-container .graph-tooltip { .force-graph-container .graph-tooltip {
@ -78,7 +78,7 @@ const ServiceMap = (props: ServiceMapProps) => {
fgRef.current && fgRef.current.d3Force("charge").strength(-400); fgRef.current && fgRef.current.d3Force("charge").strength(-400);
}); });
if (!serviceMap.items.length || !serviceMap.services.length) { if (!serviceMap.items.length || !serviceMap.services.length) {
return <CustomSpinner size="large" tip="Loading..."/>; return <CustomSpinner size="large" tip="Loading..." />;
} }
const zoomToService = (value: string) => { const zoomToService = (value: string) => {

View File

@ -1,13 +1,7 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Form, Input, Space } from "antd"; import { Form, Input, Space } from "antd";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Tooltip } from "antd"; import { StoreState } from "store/reducers";
import {
InfoCircleOutlined,
EyeTwoTone,
EyeInvisibleOutlined,
} from "@ant-design/icons";
import { StoreState } from "../../store/reducers";
import { Alert } from "antd"; import { Alert } from "antd";
interface SettingsPageProps {} interface SettingsPageProps {}

View File

@ -3,9 +3,8 @@ import { Card, Tag as AntTag } from "antd";
import { connect } from "react-redux"; import { connect } from "react-redux";
import styled from "styled-components"; import styled from "styled-components";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
import { TagItem, TraceFilters, updateTraceFilters } from "../../store/actions"; import { TagItem, TraceFilters, updateTraceFilters } from "store/actions";
const Tag = styled(AntTag)` const Tag = styled(AntTag)`
.anticon { .anticon {

View File

@ -1,7 +1,7 @@
import React from "react"; import React from "react";
import { Card, Space, Tabs, Typography } from "antd"; import { Card, Space, Tabs, Typography } from "antd";
import styled from "styled-components"; import styled from "styled-components";
import { pushDStree } from "Src/store/actions"; import { pushDStree } from "store/actions";
const { TabPane } = Tabs; const { TabPane } = Tabs;

View File

@ -1,12 +1,12 @@
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import GenericVisualizations from "../Metrics/GenericVisualization"; import GenericVisualizations from "modules/Metrics/GenericVisualization";
import { Select, Card, Space, Form } from "antd"; import { Select, Card, Space, Form } from "antd";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
import { GlobalTime, TraceFilters } from "../../store/actions"; import { GlobalTime, TraceFilters } from "store/actions";
import { useRoute } from "../RouteProvider"; import { useRoute } from "modules/RouteProvider";
import { getFilteredTraceMetrics } from "../../store/actions/MetricsActions"; import { getFilteredTraceMetrics } from "store/actions/MetricsActions";
import { customMetricsItem } from "../../store/actions/MetricsActions"; import { customMetricsItem } from "store/actions/MetricsActions";
const { Option } = Select; const { Option } = Select;
const entity = [ const entity = [

View File

@ -9,16 +9,16 @@ import {
fetchTraces, fetchTraces,
TraceFilters, TraceFilters,
GlobalTime, GlobalTime,
} from "../../store/actions"; } from "store/actions";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
import LatencyModalForm from "./LatencyModalForm"; import LatencyModalForm from "./LatencyModalForm";
import { FilterStateDisplay } from "./FilterStateDisplay"; import { FilterStateDisplay } from "./FilterStateDisplay";
import FormItem from "antd/lib/form/FormItem"; import FormItem from "antd/lib/form/FormItem";
import api, { apiV1 } from "../../api"; import api, { apiV1 } from "api";
import { useLocation } from "react-router-dom"; import { useLocation } from "react-router-dom";
import { METRICS_PAGE_QUERY_PARAM } from "Src/constants/query"; import { METRICS_PAGE_QUERY_PARAM } from "constants/query";
import { useRoute } from "../RouteProvider"; import { useRoute } from "modules/RouteProvider";
const { Option } = Select; const { Option } = Select;
@ -56,13 +56,13 @@ const _TraceFilter = (props: TraceFilterProps) => {
const spanKindList: ISpanKind[] = [ const spanKindList: ISpanKind[] = [
{ {
label: "SERVER", label: "SERVER",
value: "2" value: "2",
}, },
{ {
label: "CLIENT", label: "CLIENT",
value: "3" value: "3",
} },
] ];
useEffect(() => { useEffect(() => {
handleApplyFilterForm({ handleApplyFilterForm({
@ -70,7 +70,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
tags: [], tags: [],
operation: "", operation: "",
latency: { min: "", max: "" }, latency: { min: "", max: "" },
kind: "" kind: "",
}); });
}, []); }, []);
@ -93,7 +93,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
...props.traceFilters, ...props.traceFilters,
operation: operationName, operation: operationName,
service: serviceName, service: serviceName,
kind: "" kind: "",
}); });
populateData(serviceName); populateData(serviceName);
} else if (serviceName && errorTag) { } else if (serviceName && errorTag) {
@ -107,7 +107,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
operator: "equals", operator: "equals",
}, },
], ],
kind: "" kind: "",
}); });
} else { } else {
if (operationName) { if (operationName) {
@ -282,7 +282,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
operator: values.operator, operator: values.operator,
}, },
], ],
kind: props.traceFilters.kind kind: props.traceFilters.kind,
}); });
} else { } else {
props.updateTraceFilters({ props.updateTraceFilters({
@ -296,7 +296,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
operator: values.operator, operator: values.operator,
}, },
], ],
kind: props.traceFilters.kind kind: props.traceFilters.kind,
}); });
} }
@ -361,7 +361,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
max: "", max: "",
min: "", min: "",
}, },
kind: values.kind kind: values.kind,
}); });
}; };
@ -372,14 +372,14 @@ const _TraceFilter = (props: TraceFilterProps) => {
operation: "", operation: "",
tags: [], tags: [],
latency: { min: "", max: "" }, latency: { min: "", max: "" },
kind: "" kind: "",
}); });
}; };
}, []); }, []);
const handleChangeSpanKind = (value:string = '') => { const handleChangeSpanKind = (value: string = "") => {
props.updateTraceFilters({ ...props.traceFilters, kind: value }); props.updateTraceFilters({ ...props.traceFilters, kind: value });
} };
return ( return (
<div> <div>
@ -437,8 +437,10 @@ const _TraceFilter = (props: TraceFilterProps) => {
placeholder="Select Span Kind" placeholder="Select Span Kind"
allowClear allowClear
> >
{spanKindList.map(spanKind => ( {spanKindList.map((spanKind) => (
<Option value={spanKind.value} key={spanKind.value}>{spanKind.label}</Option> <Option value={spanKind.value} key={spanKind.value}>
{spanKind.label}
</Option>
))} ))}
</Select> </Select>
</FormItem> </FormItem>

View File

@ -3,8 +3,8 @@ import { Table, Progress, Tabs, Button, Row, Col } from "antd";
import "./TraceGanttChart.css"; import "./TraceGanttChart.css";
import { max, isEmpty, has } from "lodash-es"; import { max, isEmpty, has } from "lodash-es";
import styled from "styled-components"; import styled from "styled-components";
import { pushDStree } from "Src/store/actions"; import { pushDStree } from "store/actions";
import traverseTreeData from "Src/modules/Traces/TraceGanttChart/TraceGanttChartHelpers"; import traverseTreeData from "modules/Traces/TraceGanttChart/TraceGanttChartHelpers";
const { TabPane } = Tabs; const { TabPane } = Tabs;

View File

@ -1,5 +1,5 @@
import { isEmpty } from "lodash-es"; import { isEmpty } from "lodash-es";
import { pushDStree } from "Src/store/actions"; import { pushDStree } from "store/actions";
interface itemProps { interface itemProps {
treeData: pushDStree[]; treeData: pushDStree[];

View File

@ -6,13 +6,13 @@ import { Card, Row, Col, Space, Affix } from "antd";
import * as d3 from "d3"; import * as d3 from "d3";
import * as d3Tip from "d3-tip"; import * as d3Tip from "d3-tip";
import "./TraceGraph.css"; import "./TraceGraph.css";
import { spanToTreeUtil } from "Src/utils/spanToTree"; import { spanToTreeUtil } from "utils/spanToTree";
import { import {
fetchTraceItem, fetchTraceItem,
pushDStree, pushDStree,
spansWSameTraceIDResponse, spansWSameTraceIDResponse,
} from "../../store/actions"; } from "store/actions";
import { StoreState } from "Src/store/reducers"; import { StoreState } from "store/reducers";
import SelectedSpanDetails from "./SelectedSpanDetails"; import SelectedSpanDetails from "./SelectedSpanDetails";
import TraceGanttChart from "./TraceGanttChart"; import TraceGanttChart from "./TraceGanttChart";
import styled from "styled-components"; import styled from "styled-components";
@ -72,14 +72,22 @@ const _TraceGraph = (props: TraceGraphProps) => {
setSortedTreeData(sortedData?.[0]); setSortedTreeData(sortedData?.[0]);
getSpanInfo(sortedData?.[0], spanId); getSpanInfo(sortedData?.[0], spanId);
// This is causing element to change ref. Can use both useRef or this approach. // This is causing element to change ref. Can use both useRef or this approach.
d3.select("#chart").datum(tree).call(chart).sort(item=>item.startTime); d3
.select("#chart")
.datum(tree)
.call(chart)
.sort((item) => item.startTime);
} }
}, [props.traceItem]); }, [props.traceItem]);
// if this monitoring of props.traceItem.data is removed then zoom on click doesn't work // if this monitoring of props.traceItem.data is removed then zoom on click doesn't work
// Doesn't work if only do initial check, works if monitor an element - as it may get updated in sometime // Doesn't work if only do initial check, works if monitor an element - as it may get updated in sometime
useEffect(() => { useEffect(() => {
if(!isEmpty(sortedTreeData) && sortedTreeData?.id !== "empty" && isEmpty(clickedSpanTags)) { if (
!isEmpty(sortedTreeData) &&
sortedTreeData?.id !== "empty" &&
isEmpty(clickedSpanTags)
) {
setClickedSpanTags(sortedTreeData?.[0]); setClickedSpanTags(sortedTreeData?.[0]);
} }
}, [sortedTreeData]); }, [sortedTreeData]);
@ -87,7 +95,11 @@ const _TraceGraph = (props: TraceGraphProps) => {
useEffect(() => { useEffect(() => {
if (resetZoom) { if (resetZoom) {
// This is causing element to change ref. Can use both useRef or this approach. // This is causing element to change ref. Can use both useRef or this approach.
d3.select("#chart").datum(tree).call(chart).sort(item=>item.startTime); d3
.select("#chart")
.datum(tree)
.call(chart)
.sort((item) => item.startTime);
setResetZoom(false); setResetZoom(false);
} }
}, [resetZoom]); }, [resetZoom]);

View File

@ -2,8 +2,8 @@ import React from "react";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Table } from "antd"; import { Table } from "antd";
import { traceResponseNew, pushDStree } from "../../store/actions"; import { traceResponseNew, pushDStree } from "store/actions";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
interface TraceGraphColumnProps { interface TraceGraphColumnProps {
traces: traceResponseNew; traces: traceResponseNew;

View File

@ -1,18 +1,18 @@
import React, { useEffect } from "react"; import React, { useEffect } from "react";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { useHistory} from "react-router-dom"; import { useHistory } from "react-router-dom";
import { Space, Table } from "antd"; import { Space, Table } from "antd";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
import { traceResponseNew, fetchTraces, pushDStree } from "../../store/actions"; import { traceResponseNew, fetchTraces, pushDStree } from "store/actions";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
import { isOnboardingSkipped } from "../../utils/app"; import { isOnboardingSkipped } from "utils/app";
import moment from "moment"; import moment from "moment";
import styled from "styled-components"; import styled from "styled-components";
const StyledTable = styled(Table)` const StyledTable = styled(Table)`
cursor: pointer; cursor: pointer;
` `;
const TraceHeader = styled.div` const TraceHeader = styled.div`
margin: 16px 0; margin: 16px 0;
@ -103,12 +103,13 @@ const _TraceList = (props: TraceListProps) => {
//antd table in typescript - https://codesandbox.io/s/react-typescript-669cv //antd table in typescript - https://codesandbox.io/s/react-typescript-669cv
return <StyledTable return (
dataSource={dataSource} <StyledTable
columns={columns} dataSource={dataSource}
size="middle" columns={columns}
rowClassName="" size="middle"
onRow={(record) => ({ rowClassName=""
onRow={(record) => ({
onClick: () => { onClick: () => {
history.push({ history.push({
pathname: ROUTES.TRACES + "/" + record.traceid, pathname: ROUTES.TRACES + "/" + record.traceid,
@ -116,10 +117,10 @@ const _TraceList = (props: TraceListProps) => {
spanId: record.spanid, spanId: record.spanid,
}, },
}); });
} },
})} })}
/> />
; );
} else { } else {
if (isOnboardingSkipped()) { if (isOnboardingSkipped()) {
return ( return (

View File

@ -8,12 +8,12 @@ import {
getUsageData, getUsageData,
GlobalTime, GlobalTime,
usageDataItem, usageDataItem,
} from "../../store/actions"; } from "store/actions";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
import moment from "moment"; import moment from "moment";
import { isOnboardingSkipped } from "../../utils/app"; import { isOnboardingSkipped } from "utils/app";
import { useRoute } from "../RouteProvider"; import { useRoute } from "modules/RouteProvider";
import { servicesListItem } from "../../store/actions/MetricsActions"; import { servicesListItem } from "store/actions/MetricsActions";
const { Option } = Select; const { Option } = Select;
interface UsageExplorerProps { interface UsageExplorerProps {

View File

@ -1,7 +1,7 @@
import React from "react"; import React from "react";
import { Space } from "antd"; import { Space } from "antd";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { StoreState } from "../../store/reducers"; import { StoreState } from "store/reducers";
import { useThemeSwitcher } from "react-css-theme-switcher"; import { useThemeSwitcher } from "react-css-theme-switcher";
import styled from "styled-components"; import styled from "styled-components";
@ -9,7 +9,8 @@ const InstrumentCard = styled.div<{
currentThemeStatus: string | undefined; currentThemeStatus: string | undefined;
}>` }>`
border-radius: 4px; border-radius: 4px;
background: ${({ currentThemeStatus }) => currentThemeStatus === 'dark' ? '#313131' : '#ddd'}; background: ${({ currentThemeStatus }) =>
currentThemeStatus === "dark" ? "#313131" : "#ddd"};
padding: 33px 23px; padding: 33px 23px;
max-width: 800px; max-width: 800px;
margin-top: 40px; margin-top: 40px;
@ -22,20 +23,36 @@ const InstrumentationPage = (props: InstrumentationPageProps) => {
return ( return (
<React.Fragment> <React.Fragment>
<Space style={{ marginLeft: 60, marginTop: 48, display: 'block' }}> <Space style={{ marginLeft: 60, marginTop: 48, display: "block" }}>
<div> <div>
<h2> <h2>Instrument your application</h2>
Instrument your application
</h2>
</div> </div>
<InstrumentCard currentThemeStatus={currentTheme}> <InstrumentCard currentThemeStatus={currentTheme}>
Congrats, you have successfully installed SigNoz!<br/> Congrats, you have successfully installed SigNoz!
To start seeing YOUR application data here, follow the instructions in the docs - <br />
<a href={"https://signoz.io/docs/instrumentation/overview"} target="_blank"> https://signoz.io/docs/instrumentation/overview</a> To start seeing YOUR application data here, follow the instructions in the
<br/> docs -
If you face any issues, join our <a href={"https://signoz-community.slack.com/join/shared_invite/zt-lrjknbbp-J_mI13rlw8pGF4EWBnorJA"} target="_blank"> <a
slack community</a> to ask any questions or mail us at <a href={"mailto:support@signoz.io"} target="_blank"> href={"https://signoz.io/docs/instrumentation/overview"}
support@signoz.io</a> target="_blank"
>
{" "}
https://signoz.io/docs/instrumentation/overview
</a>
<br />
If you face any issues, join our{" "}
<a
href={
"https://signoz-community.slack.com/join/shared_invite/zt-lrjknbbp-J_mI13rlw8pGF4EWBnorJA"
}
target="_blank"
>
slack community
</a>{" "}
to ask any questions or mail us at{" "}
<a href={"mailto:support@signoz.io"} target="_blank">
support@signoz.io
</a>
</InstrumentCard> </InstrumentCard>
</Space> </Space>
</React.Fragment> </React.Fragment>

View File

@ -1,28 +1,28 @@
import React from "react"; import React from "react";
export const ServiceMetrics = React.lazy( export const ServiceMetrics = React.lazy(
() => import("Src/modules/Metrics/ServiceMetricsDef"), () => import("modules/Metrics/ServiceMetricsDef"),
); );
export const ServiceMap = React.lazy( export const ServiceMap = React.lazy(
() => import("Src/modules/Servicemap/ServiceMap"), () => import("modules/Servicemap/ServiceMap"),
); );
export const TraceDetail = React.lazy( export const TraceDetail = React.lazy(
() => import("Src/modules/Traces/TraceDetail"), () => import("modules/Traces/TraceDetail"),
); );
export const TraceGraph = React.lazy( export const TraceGraph = React.lazy(
() => import("Src/modules/Traces/TraceGraphDef"), () => import("modules/Traces/TraceGraphDef"),
); );
export const UsageExplorer = React.lazy( export const UsageExplorer = React.lazy(
() => import("Src/modules/Usage/UsageExplorerDef"), () => import("modules/Usage/UsageExplorerDef"),
); );
export const ServicesTable = React.lazy( export const ServicesTable = React.lazy(
() => import("Src/modules/Metrics/ServicesTableDef"), () => import("modules/Metrics/ServicesTableDef"),
); );
export const Signup = React.lazy(() => import("Src/modules/Auth/Signup")); export const Signup = React.lazy(() => import("modules/Auth/Signup"));
export const SettingsPage = React.lazy( export const SettingsPage = React.lazy(
() => import("Src/modules/Settings/settingsPage"), () => import("modules/Settings/settingsPage"),
); );
export const InstrumentationPage = React.lazy( export const InstrumentationPage = React.lazy(
() => import("Src/modules/add-instrumentation/instrumentationPage"), () => import("modules/add-instrumentation/instrumentationPage"),
); );

View File

@ -1,8 +1,8 @@
import { Dispatch } from "redux"; import { Dispatch } from "redux";
import api, { apiV1 } from "../../../api"; import api, { apiV1 } from "api";
import { GlobalTime } from "../global"; import { GlobalTime } from "store/actions/global";
import { toUTCEpoch } from "../../../utils/timeUtils"; import { toUTCEpoch } from "utils/timeUtils";
import { MetricsActionTypes } from "./metricsActionTypes"; import { MetricsActionTypes } from "./metricsActionTypes";
import * as MetricsInterfaces from "./metricsInterfaces"; import * as MetricsInterfaces from "./metricsInterfaces";

View File

@ -1,5 +1,5 @@
import { Dispatch } from "redux"; import { Dispatch } from "redux";
import api, { apiV1 } from "../../api"; import api, { apiV1 } from "api";
import { GlobalTime } from "./global"; import { GlobalTime } from "./global";
import { ActionTypes } from "./types"; import { ActionTypes } from "./types";

View File

@ -1,10 +1,10 @@
import { ActionTypes } from "./types"; import { ActionTypes } from "./types";
import api, { apiV1 } from "../../api"; import api, { apiV1 } from "api";
import { Dispatch } from "redux"; import { Dispatch } from "redux";
import { GlobalTime } from "./global"; import { GlobalTime } from "./global";
import { toUTCEpoch } from "../../utils/timeUtils"; import { toUTCEpoch } from "utils/timeUtils";
import ROUTES from "Src/constants/routes"; import ROUTES from "constants/routes";
// PNOTE // PNOTE
// define trace interface - what it should return // define trace interface - what it should return

View File

@ -1,5 +1,5 @@
import { FetchTracesAction, FetchTraceItemAction } from "./traces"; import { FetchTracesAction, FetchTraceItemAction } from "./traces";
import { updateTraceFiltersAction, updateInputTagAction } from "./traceFilters"; import { updateTraceFiltersAction } from "./traceFilters";
import { serviceMapItemAction, servicesAction } from "./serviceMap"; import { serviceMapItemAction, servicesAction } from "./serviceMap";
import { getUsageDataAction } from "./usage"; import { getUsageDataAction } from "./usage";
@ -19,7 +19,6 @@ export type Action =
| FetchTraceItemAction | FetchTraceItemAction
| FetchTracesAction | FetchTracesAction
| updateTraceFiltersAction | updateTraceFiltersAction
| updateInputTagAction
| getUsageDataAction | getUsageDataAction
| updateTimeIntervalAction | updateTimeIntervalAction
| servicesAction | servicesAction

View File

@ -1,8 +1,8 @@
import { Dispatch } from "redux"; import { Dispatch } from "redux";
import api, { apiV1 } from "../../api"; import api, { apiV1 } from "api";
import { ActionTypes } from "./types"; import { ActionTypes } from "./types";
import { toUTCEpoch } from "../../utils/timeUtils"; import { toUTCEpoch } from "utils/timeUtils";
export interface usageDataItem { export interface usageDataItem {
timestamp: number; timestamp: number;

View File

@ -1,4 +1,4 @@
import { ActionTypes, Action, GlobalTime } from "../actions"; import { ActionTypes, Action, GlobalTime } from "store/actions";
export const updateGlobalTimeReducer = ( export const updateGlobalTimeReducer = (
state: GlobalTime = { state: GlobalTime = {

View File

@ -6,7 +6,7 @@ import {
GlobalTime, GlobalTime,
serviceMapStore, serviceMapStore,
TraceFilters, TraceFilters,
} from "../actions"; } from "store/actions";
import { updateGlobalTimeReducer } from "./global"; import { updateGlobalTimeReducer } from "./global";
import { MetricsInitialState, metricsReducer } from "./metrics"; import { MetricsInitialState, metricsReducer } from "./metrics";
import TraceFilterReducer from "./traceFilters"; import TraceFilterReducer from "./traceFilters";

View File

@ -7,8 +7,8 @@ import {
externalMetricsItem, externalMetricsItem,
dbOverviewMetricsItem, dbOverviewMetricsItem,
externalMetricsAvgDurationItem, externalMetricsAvgDurationItem,
} from "../actions/MetricsActions"; } from "store/actions/MetricsActions";
import { MetricsActionTypes as ActionTypes } from "../actions/MetricsActions/metricsActionTypes"; import { MetricsActionTypes as ActionTypes } from "store/actions/MetricsActions/metricsActionTypes";
export type MetricsInitialState = { export type MetricsInitialState = {
serviceList?: servicesListItem[]; serviceList?: servicesListItem[];

View File

@ -1,4 +1,4 @@
import { ActionTypes, Action, serviceMapStore } from "../actions"; import { ActionTypes, Action, serviceMapStore } from "store/actions";
const initialState: serviceMapStore = { const initialState: serviceMapStore = {
items: [], items: [],

View File

@ -1,4 +1,4 @@
import { ActionTypes, TraceFilters } from "../actions"; import { ActionTypes, TraceFilters } from "store/actions";
type ACTION = { type ACTION = {
type: ActionTypes; type: ActionTypes;
@ -9,7 +9,7 @@ const initialState: TraceFilters = {
tags: [], tags: [],
operation: "", operation: "",
latency: { min: "", max: "" }, latency: { min: "", max: "" },
kind: "" kind: "",
}; };
const TraceFilterReducer = (state = initialState, action: ACTION) => { const TraceFilterReducer = (state = initialState, action: ACTION) => {

View File

@ -4,7 +4,7 @@ import {
traceResponseNew, traceResponseNew,
spanList, spanList,
spansWSameTraceIDResponse, spansWSameTraceIDResponse,
} from "../actions"; } from "store/actions";
// PNOTE - Initializing is a must for state variable otherwise it gives an error in reducer // PNOTE - Initializing is a must for state variable otherwise it gives an error in reducer
var spanlistinstance: spanList = { events: [], segmentID: "", columns: [] }; var spanlistinstance: spanList = { events: [], segmentID: "", columns: [] };

View File

@ -1,4 +1,4 @@
import { ActionTypes, Action, usageDataItem } from "../actions"; import { ActionTypes, Action, usageDataItem } from "store/actions";
export const usageDataReducer = ( export const usageDataReducer = (
state: usageDataItem[] = [{ timestamp: 0, count: 0 }], state: usageDataItem[] = [{ timestamp: 0, count: 0 }],

View File

@ -1,4 +1,4 @@
import { SKIP_ONBOARDING } from "Src/constants/onboarding"; import { SKIP_ONBOARDING } from "constants/onboarding";
export const isOnboardingSkipped = () => { export const isOnboardingSkipped = () => {
return localStorage.getItem(SKIP_ONBOARDING) === "true"; return localStorage.getItem(SKIP_ONBOARDING) === "true";

View File

@ -1,4 +1,4 @@
import { pushDStree, span, RefItem } from "../store/actions"; import { pushDStree, span, RefItem } from "store/actions";
// PNOTE - should the data be taken from redux or only through props? - Directly as arguments // PNOTE - should the data be taken from redux or only through props? - Directly as arguments
export const spanToTreeUtil = (spanlist: span[]): pushDStree => { export const spanToTreeUtil = (spanlist: span[]): pushDStree => {
@ -24,7 +24,7 @@ export const spanToTreeUtil = (spanlist: span[]): pushDStree => {
//May1 //May1
//https://stackoverflow.com/questions/13315131/enforcing-the-type-of-the-indexed-members-of-a-typescript-object //https://stackoverflow.com/questions/13315131/enforcing-the-type-of-the-indexed-members-of-a-typescript-object
let mapped_array: { [id: string]: span; } = {}; let mapped_array: { [id: string]: span } = {};
for (let i = 0; i < spanlist.length; i++) { for (let i = 0; i < spanlist.length; i++) {
mapped_array[spanlist[i][1]] = spanlist[i]; mapped_array[spanlist[i][1]] = spanlist[i];
@ -32,12 +32,10 @@ export const spanToTreeUtil = (spanlist: span[]): pushDStree => {
// of type pushDStree // of type pushDStree
// console.log('IDs while creating mapped array') // console.log('IDs while creating mapped array')
// console.log(`SpanID is ${spanlist[i][1]}\n`); // console.log(`SpanID is ${spanlist[i][1]}\n`);
} }
// console.log(`In SpanTreeUtil: mapped_arrayis ${mapped_array}`); // console.log(`In SpanTreeUtil: mapped_arrayis ${mapped_array}`);
for (let id in mapped_array) { for (let id in mapped_array) {
let child_span = mapped_array[id]; let child_span = mapped_array[id];
@ -100,14 +98,17 @@ export const spanToTreeUtil = (spanlist: span[]): pushDStree => {
let parentID = references[0].spanID; let parentID = references[0].spanID;
// console.log(`In SpanTreeUtil: mapped_array[parentID] is ${mapped_array[parentID]}`); // console.log(`In SpanTreeUtil: mapped_array[parentID] is ${mapped_array[parentID]}`);
if (typeof mapped_array[parentID] !== 'undefined') { //checking for undefined [10] issue if (typeof mapped_array[parentID] !== "undefined") {
//checking for undefined [10] issue
mapped_array[parentID][10].push(push_object); mapped_array[parentID][10].push(push_object);
} else { } else {
console.log(`In SpanTreeUtil: mapped_array[parentID] is undefined, parentID is ${parentID}`); console.log(
console.log(`In SpanTreeUtil: mapped_array[parentID] is undefined, mapped_array[parentID] is ${mapped_array[parentID]}`); `In SpanTreeUtil: mapped_array[parentID] is undefined, parentID is ${parentID}`,
);
console.log(
`In SpanTreeUtil: mapped_array[parentID] is undefined, mapped_array[parentID] is ${mapped_array[parentID]}`,
);
} }
} }
} else { } else {
tree = push_object; tree = push_object;

View File

@ -17,9 +17,6 @@
"resolveJsonModule": true, "resolveJsonModule": true,
"isolatedModules": true, "isolatedModules": true,
"noEmit": true, "noEmit": true,
"baseUrl": ".", "baseUrl": "./src"
"paths": {
"Src/*": ["./src/*"]
}
} }
} }

View File

@ -1,9 +1,10 @@
// shared config (dev and prod) // shared config (dev and prod)
const { resolve } = require("path"); const { resolve } = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin");
const portFinderSync = require('portfinder-sync') const portFinderSync = require("portfinder-sync");
const dotenv = require("dotenv"); const dotenv = require("dotenv");
const webpack = require("webpack"); const webpack = require("webpack");
const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
dotenv.config(); dotenv.config();
@ -33,10 +34,8 @@ module.exports = {
publicPath: "/", publicPath: "/",
}, },
resolve: { resolve: {
alias: {
Src: resolve(__dirname, "./src/"),
},
extensions: [".ts", ".tsx", ".js", ".jsx"], extensions: [".ts", ".tsx", ".js", ".jsx"],
plugins: [new TsconfigPathsPlugin({})],
}, },
module: { module: {
rules: [ rules: [

View File

@ -4,6 +4,7 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
const CopyPlugin = require("copy-webpack-plugin"); const CopyPlugin = require("copy-webpack-plugin");
const CompressionPlugin = require("compression-webpack-plugin"); const CompressionPlugin = require("compression-webpack-plugin");
const webpack = require("webpack"); const webpack = require("webpack");
const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
module.exports = { module.exports = {
mode: "production", mode: "production",
@ -16,10 +17,8 @@ module.exports = {
}, },
resolve: { resolve: {
alias: {
Src: resolve(__dirname, "./src/"),
},
extensions: [".ts", ".tsx", ".js", ".jsx"], extensions: [".ts", ".tsx", ".js", ".jsx"],
plugins: [new TsconfigPathsPlugin({})],
}, },
module: { module: {
rules: [ rules: [

View File

@ -13144,6 +13144,15 @@ ts-pnp@1.2.0, ts-pnp@^1.1.6:
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
tsconfig-paths-webpack-plugin@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.1.tgz#e4dbf492a20dca9caab60086ddacb703afc2b726"
integrity sha512-n5CMlUUj+N5pjBhBACLq4jdr9cPTitySCjIosoQm0zwK99gmrcTGAfY9CwxRFT9+9OleNWXPRUcxsKP4AYExxQ==
dependencies:
chalk "^4.1.0"
enhanced-resolve "^5.7.0"
tsconfig-paths "^3.9.0"
tsconfig-paths@^3.9.0: tsconfig-paths@^3.9.0:
version "3.9.0" version "3.9.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"