merge experimental/error-monitoring
This commit is contained in:
parent
802885e726
commit
58d7a05591
1
.env
1
.env
@ -1,6 +1,7 @@
|
||||
####### COMMON #######
|
||||
USE_DEV_COLORS=
|
||||
BASE_PATH=
|
||||
SENTRY_DSN=
|
||||
|
||||
####### URLS ########
|
||||
URL_GET_USER_DIRECT=
|
||||
|
||||
@ -45,9 +45,31 @@ export const Kasko = observer(() => {
|
||||
queryFn: async (context: QueryFunctionContext) => {
|
||||
const payload = await makeEltKaskoRequest({ apolloClient, store }, row);
|
||||
const res = await getEltKasko(payload, context);
|
||||
const companyRes = res[id];
|
||||
|
||||
return { ...companyRes, id, key };
|
||||
if (res) {
|
||||
const companyRes = res?.[id];
|
||||
|
||||
return { ...companyRes, id, key };
|
||||
}
|
||||
|
||||
return {
|
||||
error: null,
|
||||
id,
|
||||
kaskoSum: 0,
|
||||
key,
|
||||
message: null,
|
||||
numCalc: 0,
|
||||
paymentPeriods: [
|
||||
{
|
||||
kaskoSum: 0,
|
||||
},
|
||||
],
|
||||
requestId: '',
|
||||
skCalcId: '',
|
||||
status: null,
|
||||
sum: 0,
|
||||
totalFranchise: 0,
|
||||
};
|
||||
},
|
||||
queryKey: ['elt', 'kasko', id],
|
||||
refetchOnWindowFocus: false,
|
||||
|
||||
@ -35,9 +35,24 @@ export const Osago = observer(() => {
|
||||
queryFn: async (context: QueryFunctionContext) => {
|
||||
const payload = await makeEltOsagoRequest({ apolloClient, store }, row);
|
||||
const res = await getEltOsago(payload, context);
|
||||
const companyRes = res[id];
|
||||
|
||||
return { ...companyRes, id, key };
|
||||
if (res) {
|
||||
const companyRes = res?.[id];
|
||||
|
||||
return { ...companyRes, id, key };
|
||||
}
|
||||
|
||||
return {
|
||||
error: null,
|
||||
id,
|
||||
key,
|
||||
message: null,
|
||||
numCalc: 0,
|
||||
premiumSum: 0,
|
||||
skCalcId: '',
|
||||
status: null,
|
||||
sum: 0,
|
||||
};
|
||||
},
|
||||
queryKey: ['elt', 'osago', id],
|
||||
refetchOnWindowFocus: false,
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
import type { RequestTransTax, ResponseTransTax } from './types';
|
||||
import getUrls from '@/config/urls';
|
||||
import { withHandleError } from '@/utils/axios';
|
||||
import type { QueryFunctionContext } from '@tanstack/react-query';
|
||||
import axios from 'axios';
|
||||
|
||||
const { URL_1C_TRANSTAX } = getUrls();
|
||||
|
||||
export async function getTransTax(payload: RequestTransTax, { signal }: QueryFunctionContext) {
|
||||
const { data } = await axios.post<ResponseTransTax>(URL_1C_TRANSTAX, payload, { signal });
|
||||
|
||||
return data;
|
||||
export function getTransTax(payload: RequestTransTax, { signal }: QueryFunctionContext) {
|
||||
return withHandleError(
|
||||
axios.post<ResponseTransTax>(URL_1C_TRANSTAX, payload, { signal }).then(({ data }) => data)
|
||||
);
|
||||
}
|
||||
|
||||
@ -1,21 +1,23 @@
|
||||
import type { RequestCalculate, RequestFinGAP, ResponseCalculate, ResponseFinGAP } from './types';
|
||||
import getUrls from '@/config/urls';
|
||||
import { withHandleError } from '@/utils/axios';
|
||||
import type { QueryFunctionContext } from '@tanstack/react-query';
|
||||
import axios from 'axios';
|
||||
|
||||
const { URL_CORE_FINGAP, URL_CORE_CALCULATE } = getUrls();
|
||||
|
||||
export async function calculateFinGAP(payload: RequestFinGAP, { signal }: QueryFunctionContext) {
|
||||
const { data } = await axios.post<ResponseFinGAP>(URL_CORE_FINGAP, payload, {
|
||||
signal,
|
||||
});
|
||||
|
||||
return data;
|
||||
return withHandleError(
|
||||
axios
|
||||
.post<ResponseFinGAP>(URL_CORE_FINGAP, payload, {
|
||||
signal,
|
||||
})
|
||||
.then(({ data }) => data)
|
||||
);
|
||||
}
|
||||
|
||||
export async function calculate(payload: RequestCalculate): Promise<ResponseCalculate> {
|
||||
return await axios
|
||||
.post<ResponseCalculate>(URL_CORE_CALCULATE, payload)
|
||||
.then((response) => response.data)
|
||||
.catch((error) => error.response.data);
|
||||
export async function calculate(payload: RequestCalculate) {
|
||||
return withHandleError(
|
||||
axios.post<ResponseCalculate>(URL_CORE_CALCULATE, payload).then(({ data }) => data)
|
||||
);
|
||||
}
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import type { RequestCreateKP, ResponseCreateKP } from './types';
|
||||
import getUrls from '@/config/urls';
|
||||
import { withHandleError } from '@/utils/axios';
|
||||
import axios from 'axios';
|
||||
|
||||
const { URL_CRM_CREATEKP } = getUrls();
|
||||
|
||||
export async function createKP(payload: RequestCreateKP): Promise<ResponseCreateKP> {
|
||||
return await axios
|
||||
.post(URL_CRM_CREATEKP, payload)
|
||||
.then((response) => ({ ...response.data, success: true }))
|
||||
.catch((error) => ({ ...error.response.data, success: false }));
|
||||
export async function createKP(payload: RequestCreateKP) {
|
||||
return withHandleError(
|
||||
axios.post<ResponseCreateKP>(URL_CRM_CREATEKP, payload).then(({ data }) => data)
|
||||
);
|
||||
}
|
||||
|
||||
@ -31,21 +31,13 @@ export const RequestCreateKPSchema = z.object({
|
||||
|
||||
export type RequestCreateKP = z.infer<typeof RequestCreateKPSchema>;
|
||||
|
||||
export const ResponseCreateKPSchema = z.union([
|
||||
z.object({
|
||||
evo_quotename: z.string(),
|
||||
link: z.string(),
|
||||
name: z.string(),
|
||||
offerprintform: z.string(),
|
||||
offerprintformapi: z.string(),
|
||||
quoteid: z.string(),
|
||||
success: z.literal(true),
|
||||
}),
|
||||
z.object({
|
||||
fullMessage: z.string(),
|
||||
message: z.string(),
|
||||
success: z.literal(false),
|
||||
}),
|
||||
]);
|
||||
export const ResponseCreateKPSchema = z.object({
|
||||
evo_quotename: z.string(),
|
||||
link: z.string(),
|
||||
name: z.string(),
|
||||
offerprintform: z.string(),
|
||||
offerprintformapi: z.string(),
|
||||
quoteid: z.string(),
|
||||
});
|
||||
|
||||
export type ResponseCreateKP = z.infer<typeof ResponseCreateKPSchema>;
|
||||
|
||||
@ -1,22 +1,19 @@
|
||||
import type * as ELT from './types';
|
||||
import getUrls from '@/config/urls';
|
||||
import { withHandleError } from '@/utils/axios';
|
||||
import type { QueryFunctionContext } from '@tanstack/react-query';
|
||||
import axios from 'axios';
|
||||
|
||||
const { URL_ELT_KASKO, URL_ELT_OSAGO } = getUrls();
|
||||
|
||||
export async function getEltOsago(
|
||||
payload: ELT.RequestEltOsago,
|
||||
{ signal }: QueryFunctionContext
|
||||
): Promise<ELT.ResponseEltOsago> {
|
||||
return await axios
|
||||
.post<ELT.ResponseEltOsago>(URL_ELT_OSAGO, payload, { signal })
|
||||
.then((response) => response.data)
|
||||
.catch((error) => error.response.data);
|
||||
export async function getEltOsago(payload: ELT.RequestEltOsago, { signal }: QueryFunctionContext) {
|
||||
return withHandleError(
|
||||
axios.post<ELT.ResponseEltOsago>(URL_ELT_OSAGO, payload, { signal }).then(({ data }) => data)
|
||||
);
|
||||
}
|
||||
|
||||
export async function getEltKasko(payload: ELT.RequestEltKasko, { signal }: QueryFunctionContext) {
|
||||
const { data } = await axios.post<ELT.ResponseEltKasko>(URL_ELT_KASKO, payload, { signal });
|
||||
|
||||
return data;
|
||||
return withHandleError(
|
||||
axios.post<ELT.ResponseEltKasko>(URL_ELT_KASKO, payload, { signal }).then(({ data }) => data)
|
||||
);
|
||||
}
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
import { love } from './tools';
|
||||
import type { User } from './types';
|
||||
import getUrls from '@/config/urls';
|
||||
import { withHandleError } from '@/utils/axios';
|
||||
import type { AxiosRequestConfig } from 'axios';
|
||||
import axios from 'axios';
|
||||
|
||||
const { URL_GET_USER } = getUrls();
|
||||
|
||||
export async function getUser(config?: AxiosRequestConfig) {
|
||||
return await axios.get<User>(URL_GET_USER, config).then((res) => love(res.data));
|
||||
return withHandleError(axios.get<User>(URL_GET_USER, config).then((res) => love(res.data)));
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ const { z } = require('zod');
|
||||
const envSchema = z.object({
|
||||
BASE_PATH: z.string().optional().default(''),
|
||||
PORT: z.string().optional(),
|
||||
SENTRY_DSN: z.string(),
|
||||
URL_1C_TRANSTAX_DIRECT: z.string(),
|
||||
URL_CORE_CALCULATE_DIRECT: z.string(),
|
||||
URL_CORE_FINGAP_DIRECT: z.string(),
|
||||
|
||||
@ -2,12 +2,14 @@ const envSchema = require('./env');
|
||||
|
||||
const publicRuntimeConfigSchema = envSchema.pick({
|
||||
BASE_PATH: true,
|
||||
SENTRY_DSN: true,
|
||||
USE_DEV_COLORS: true,
|
||||
});
|
||||
|
||||
const serverRuntimeConfigSchema = envSchema.pick({
|
||||
BASE_PATH: true,
|
||||
PORT: true,
|
||||
SENTRY_DSN: true,
|
||||
URL_1C_TRANSTAX_DIRECT: true,
|
||||
URL_CORE_CALCULATE_DIRECT: true,
|
||||
URL_CORE_FINGAP_DIRECT: true,
|
||||
|
||||
@ -4,7 +4,7 @@ import getConfig from 'next/config';
|
||||
import { isServer } from 'tools/common';
|
||||
|
||||
const { serverRuntimeConfig, publicRuntimeConfig } = getConfig();
|
||||
const { BASE_PATH } = publicRuntimeConfigSchema.parse(publicRuntimeConfig);
|
||||
const { BASE_PATH, SENTRY_DSN } = publicRuntimeConfigSchema.parse(publicRuntimeConfig);
|
||||
|
||||
export function withBasePath(path: string) {
|
||||
return String.prototype.concat(BASE_PATH, path);
|
||||
@ -27,6 +27,7 @@ function getUrls() {
|
||||
return {
|
||||
BASE_PATH,
|
||||
PORT,
|
||||
SENTRY_DSN,
|
||||
URL_1C_TRANSTAX: URL_1C_TRANSTAX_DIRECT,
|
||||
URL_CORE_CALCULATE: URL_CORE_CALCULATE_DIRECT,
|
||||
URL_CORE_FINGAP: URL_CORE_FINGAP_DIRECT,
|
||||
@ -41,6 +42,7 @@ function getUrls() {
|
||||
|
||||
return {
|
||||
BASE_PATH,
|
||||
SENTRY_DSN,
|
||||
URL_1C_TRANSTAX: withBasePath(urls.URL_1C_TRANSTAX_PROXY),
|
||||
URL_CORE_CALCULATE: withBasePath(urls.URL_CORE_CALCULATE_PROXY),
|
||||
URL_CORE_FINGAP: withBasePath(urls.URL_CORE_FINGAP_PROXY),
|
||||
|
||||
@ -5,7 +5,7 @@ const urls = require('./constants/urls');
|
||||
const { devices } = require('./config/ui');
|
||||
const { publicRuntimeConfigSchema } = require('./config/schema/runtime-config');
|
||||
const { serverRuntimeConfigSchema } = require('./config/schema/runtime-config');
|
||||
const { Config } = require('next-recompose-plugins');
|
||||
const { withSentryConfig } = require('@sentry/nextjs');
|
||||
|
||||
const env = envSchema.parse(process.env);
|
||||
|
||||
@ -18,7 +18,7 @@ function buildFaviconRewrite(source) {
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = new Config({
|
||||
module.exports = withSentryConfig({
|
||||
basePath: env.BASE_PATH,
|
||||
compiler: {
|
||||
styledComponents: true,
|
||||
@ -68,7 +68,10 @@ module.exports = new Config({
|
||||
...favicons.map((fileName) => buildFaviconRewrite(`/${fileName}`)),
|
||||
];
|
||||
},
|
||||
sentry: {
|
||||
tunnelRoute: '/track-error',
|
||||
},
|
||||
serverRuntimeConfig: serverRuntimeConfigSchema.parse(env),
|
||||
swcMinify: true,
|
||||
transpilePackages: ['ui', 'tools', 'antd'],
|
||||
}).build();
|
||||
});
|
||||
|
||||
@ -15,6 +15,8 @@
|
||||
"dependencies": {
|
||||
"@apollo/client": "^3.7.9",
|
||||
"@fontsource/montserrat": "^4.5.14",
|
||||
"@sentry/nextjs": "^7.57.0",
|
||||
"@sentry/node": "^7.57.0",
|
||||
"@tanstack/react-query": "^4.24.10",
|
||||
"@trpc/client": "^10.13.0",
|
||||
"@trpc/next": "^10.13.0",
|
||||
@ -25,7 +27,6 @@
|
||||
"mobx": "^6.8.0",
|
||||
"mobx-react-lite": "^3.4.0",
|
||||
"next": "^13.4.7",
|
||||
"next-recompose-plugins": "^2.0.0",
|
||||
"normalize.css": "^8.0.1",
|
||||
"radash": "^10.7.0",
|
||||
"react": "^18.2.0",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/* eslint-disable jsdoc/check-tag-names */
|
||||
/* eslint-disable canonical/filename-match-regex */
|
||||
import { createContext } from '@/server/context';
|
||||
import { appRouter } from '@/server/routers/_app';
|
||||
import { captureException, withScope } from '@sentry/nextjs';
|
||||
import * as trpcNext from '@trpc/server/adapters/next';
|
||||
|
||||
export default trpcNext.createNextApiHandler({
|
||||
@ -20,12 +20,21 @@ export default trpcNext.createNextApiHandler({
|
||||
/**
|
||||
* @link https://trpc.io/docs/error-handling
|
||||
*/
|
||||
onError({ error }) {
|
||||
if (error.code === 'INTERNAL_SERVER_ERROR') {
|
||||
// send to bug reporting
|
||||
// eslint-disable-next-line no-console
|
||||
console.error('Something went wrong', error);
|
||||
}
|
||||
onError(opts) {
|
||||
const { error } = opts;
|
||||
// send to bug reporting
|
||||
withScope((scope) => {
|
||||
(Object.keys(opts) as Array<keyof typeof opts>).forEach((key) => {
|
||||
if (key !== 'req') {
|
||||
let extra = opts[key];
|
||||
if (key === 'input') extra = JSON.stringify(extra);
|
||||
scope.setExtra(key, extra);
|
||||
}
|
||||
});
|
||||
captureException(error);
|
||||
});
|
||||
// eslint-disable-next-line no-console
|
||||
console.error('Something went wrong', error);
|
||||
},
|
||||
|
||||
router: appRouter,
|
||||
|
||||
@ -53,9 +53,10 @@ export async function action({ store, trpcClient }: ProcessContext) {
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
.catch((error_) => {
|
||||
const error = error_ as Error;
|
||||
notification.error({
|
||||
description: JSON.stringify(error),
|
||||
description: error.message,
|
||||
key,
|
||||
message: errorMessage,
|
||||
placement: 'bottomRight',
|
||||
|
||||
@ -80,9 +80,10 @@ export function action({ store, trpcClient, apolloClient }: ProcessContext) {
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
.catch((error_) => {
|
||||
const error = error_ as Error;
|
||||
notification.error({
|
||||
description: JSON.stringify(error),
|
||||
description: error.message,
|
||||
key,
|
||||
message: errorMessage,
|
||||
placement: 'bottomRight',
|
||||
|
||||
@ -205,15 +205,19 @@ export default function reactions({ store, apolloClient, queryClient }: ProcessC
|
||||
risks
|
||||
.map((risk) => getFingapRequestDataFromRisk(risk))
|
||||
.map((data) => makeRequestGetFinGAP(data))
|
||||
).then((results) => {
|
||||
const newRisks = risks.map((risk, i) => ({
|
||||
...risk,
|
||||
premium: results.at(i)?.premium || 0,
|
||||
sum: results.at(i)?.sum || 0,
|
||||
}));
|
||||
)
|
||||
.then((results) => {
|
||||
const newRisks = risks.map((risk, i) => ({
|
||||
...risk,
|
||||
premium: results.at(i)?.premium || 0,
|
||||
sum: results.at(i)?.sum || 0,
|
||||
}));
|
||||
|
||||
$tables.fingap.setRisks(newRisks);
|
||||
});
|
||||
$tables.fingap.setRisks(newRisks);
|
||||
})
|
||||
.catch(() => {
|
||||
$tables.fingap.clear();
|
||||
});
|
||||
},
|
||||
{
|
||||
// Important: delay prohibits multiple reaction invocation
|
||||
|
||||
@ -8,7 +8,6 @@ import { STALE_TIME } from '@/constants/request';
|
||||
import * as CRMTypes from '@/graphql/crm.types';
|
||||
import { normalizeOptions } from '@/utils/entity';
|
||||
import { disposableReaction } from '@/utils/mobx';
|
||||
import type { QueryFunctionContext } from '@tanstack/react-query';
|
||||
import dayjs from 'dayjs';
|
||||
import utc from 'dayjs/plugin/utc';
|
||||
import { reaction } from 'mobx';
|
||||
@ -191,27 +190,26 @@ export function common({ store, apolloClient, queryClient }: ProcessContext) {
|
||||
if (OKTMO) {
|
||||
const currentDate = dayjs().utc(false).toDate();
|
||||
|
||||
const request = (context: QueryFunctionContext) =>
|
||||
getTransTax(
|
||||
{
|
||||
OKTMO,
|
||||
calcDate: currentDate,
|
||||
carCategory,
|
||||
power: leaseObjectMotorPower,
|
||||
year: leaseObjectYear,
|
||||
},
|
||||
context
|
||||
);
|
||||
const { tax } = await queryClient.fetchQuery(
|
||||
const response = await queryClient.fetchQuery(
|
||||
['1c', 'trans-tax', carCategory, leaseObjectMotorPower, leaseObjectYear],
|
||||
request,
|
||||
(context) =>
|
||||
getTransTax(
|
||||
{
|
||||
OKTMO,
|
||||
calcDate: currentDate,
|
||||
carCategory,
|
||||
power: leaseObjectMotorPower,
|
||||
year: leaseObjectYear,
|
||||
},
|
||||
context
|
||||
),
|
||||
{
|
||||
staleTime: STALE_TIME,
|
||||
}
|
||||
);
|
||||
|
||||
if (tax) {
|
||||
$calculation.element('tbxVehicleTaxInYear').setValue(tax);
|
||||
if (response?.tax) {
|
||||
$calculation.element('tbxVehicleTaxInYear').setValue(response.tax);
|
||||
} else {
|
||||
$calculation.element('tbxVehicleTaxInYear').resetValue();
|
||||
}
|
||||
|
||||
@ -2,12 +2,13 @@
|
||||
import eltHelper from '../elt/lib/helper';
|
||||
import { message } from '@/Components/Common/Notification';
|
||||
import type { ProcessContext } from '@/process/types';
|
||||
import { captureException, withScope } from '@sentry/nextjs';
|
||||
import { reaction } from 'mobx';
|
||||
import { omit } from 'radash';
|
||||
|
||||
const key = 'KP_LOADING_INFO';
|
||||
|
||||
export function common({ store, trpcClient, apolloClient }: ProcessContext) {
|
||||
export function common({ store, trpcClient, apolloClient, user }: ProcessContext) {
|
||||
const { $calculation, $process, $tables } = store;
|
||||
|
||||
const { init: initElt } = eltHelper({ apolloClient, store });
|
||||
@ -85,12 +86,18 @@ export function common({ store, trpcClient, apolloClient }: ProcessContext) {
|
||||
key,
|
||||
});
|
||||
})
|
||||
.catch(() => {
|
||||
.catch((error_) => {
|
||||
message.error({
|
||||
content: `Ошибка во время загрузки КП ${quote.label}`,
|
||||
key,
|
||||
});
|
||||
$calculation.element('selectQuote').resetValue();
|
||||
|
||||
withScope((scope) => {
|
||||
scope.setExtra('quote', quote);
|
||||
scope.setExtra('user', user);
|
||||
captureException(error_);
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
$process.delete('LoadKP');
|
||||
|
||||
37
apps/web/sentry.client.config.js
Normal file
37
apps/web/sentry.client.config.js
Normal file
@ -0,0 +1,37 @@
|
||||
// This file configures the initialization of Sentry on the browser.
|
||||
|
||||
// The config you add here will be used whenever a page is visited.
|
||||
|
||||
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
|
||||
|
||||
import getUrls from './config/urls';
|
||||
import { init } from '@sentry/nextjs';
|
||||
|
||||
const { SENTRY_DSN } = getUrls();
|
||||
|
||||
init({
|
||||
dsn: SENTRY_DSN,
|
||||
|
||||
integrations: [],
|
||||
|
||||
// If the entire session is not sampled, use the below sample rate to sample
|
||||
|
||||
// sessions when an error occurs.
|
||||
replaysOnErrorSampleRate: 1,
|
||||
|
||||
// ...
|
||||
|
||||
// Note: if you want to override the automatic release value, do not set a
|
||||
|
||||
// `release` value here - use the environment variable `SENTRY_RELEASE`, so
|
||||
|
||||
// that it will also get attached to your source maps
|
||||
|
||||
// in development and sample at a lower rate in production
|
||||
|
||||
replaysSessionSampleRate: 0.1,
|
||||
|
||||
// Adjust this value in production, or use tracesSampler for greater control
|
||||
|
||||
tracesSampleRate: 1,
|
||||
});
|
||||
18
apps/web/sentry.edge.config.js
Normal file
18
apps/web/sentry.edge.config.js
Normal file
@ -0,0 +1,18 @@
|
||||
// This file configures the initialization of Sentry on the server.
|
||||
// The config you add here will be used whenever middleware or an Edge route handles a request.
|
||||
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
|
||||
|
||||
import getUrls from './config/urls';
|
||||
import { init } from '@sentry/nextjs';
|
||||
|
||||
const { SENTRY_DSN } = getUrls();
|
||||
|
||||
init({
|
||||
dsn: SENTRY_DSN,
|
||||
// Adjust this value in production, or use tracesSampler for greater control
|
||||
tracesSampleRate: 1,
|
||||
// ...
|
||||
// Note: if you want to override the automatic release value, do not set a
|
||||
// `release` value here - use the environment variable `SENTRY_RELEASE`, so
|
||||
// that it will also get attached to your source maps
|
||||
});
|
||||
18
apps/web/sentry.server.config.js
Normal file
18
apps/web/sentry.server.config.js
Normal file
@ -0,0 +1,18 @@
|
||||
// This file configures the initialization of Sentry on the server.
|
||||
// The config you add here will be used whenever the server handles a request.
|
||||
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
|
||||
|
||||
import getUrls from './config/urls';
|
||||
import { init } from '@sentry/nextjs';
|
||||
|
||||
const { SENTRY_DSN } = getUrls();
|
||||
|
||||
init({
|
||||
dsn: SENTRY_DSN,
|
||||
// Adjust this value in production, or use tracesSampler for greater control
|
||||
tracesSampleRate: 1,
|
||||
// ...
|
||||
// Note: if you want to override the automatic release value, do not set a
|
||||
// `release` value here - use the environment variable `SENTRY_RELEASE`, so
|
||||
// that it will also get attached to your source maps
|
||||
});
|
||||
@ -2,6 +2,7 @@ import { t } from './trpc';
|
||||
import initializeApollo from '@/apollo/client';
|
||||
import { unlimitedRoles } from '@/config/users';
|
||||
import * as CRMTypes from '@/graphql/crm.types';
|
||||
import { Handlers } from '@sentry/node';
|
||||
import { TRPCError } from '@trpc/server';
|
||||
|
||||
/**
|
||||
@ -34,4 +35,10 @@ export const userMiddleware = t.middleware(async ({ ctx, next }) => {
|
||||
});
|
||||
});
|
||||
|
||||
export const sentryMiddleware = t.middleware(
|
||||
Handlers.trpcMiddleware({
|
||||
attachRpcInput: true,
|
||||
})
|
||||
);
|
||||
|
||||
export const middleware = t.middleware;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { userMiddleware } from './middleware';
|
||||
import { sentryMiddleware, userMiddleware } from './middleware';
|
||||
import { t } from './trpc';
|
||||
|
||||
/**
|
||||
@ -7,6 +7,6 @@ import { t } from './trpc';
|
||||
* @see https://trpc.io/docs/v10/procedures
|
||||
*/
|
||||
|
||||
export const publicProcedure = t.procedure;
|
||||
export const publicProcedure = t.procedure.use(sentryMiddleware);
|
||||
|
||||
export const protectedProcedure = t.procedure.use(userMiddleware);
|
||||
export const protectedProcedure = t.procedure.use(sentryMiddleware).use(userMiddleware);
|
||||
|
||||
@ -52,13 +52,6 @@ export const calculateRouter = router({
|
||||
|
||||
const calculateResult = await calculate(requestData);
|
||||
|
||||
if (calculateResult.errors?.length > 0) {
|
||||
return {
|
||||
error: calculateResult.errors[0],
|
||||
success: false,
|
||||
};
|
||||
}
|
||||
|
||||
const result = transformCalculateResults({
|
||||
calculateInput: input,
|
||||
requestCalculate: requestData,
|
||||
|
||||
@ -131,13 +131,6 @@ export const quoteRouter = router({
|
||||
|
||||
const calculateResult = await calculate(requestData);
|
||||
|
||||
if (calculateResult.errors?.length > 0) {
|
||||
return {
|
||||
error: calculateResult.errors[0],
|
||||
success: false,
|
||||
};
|
||||
}
|
||||
|
||||
const requestCreateKP = compatRequestCreateKP({
|
||||
domainName: user.domainName,
|
||||
finGAP: input.fingap,
|
||||
@ -153,13 +146,6 @@ export const quoteRouter = router({
|
||||
|
||||
const createKPResult = await createKP(requestCreateKP);
|
||||
|
||||
if (createKPResult.success === false) {
|
||||
return {
|
||||
success: false,
|
||||
error: createKPResult.message || createKPResult.fullMessage,
|
||||
};
|
||||
}
|
||||
|
||||
const result = transformCalculateResults({
|
||||
calculateInput: input,
|
||||
requestCalculate: requestData,
|
||||
|
||||
43
apps/web/utils/axios.ts
Normal file
43
apps/web/utils/axios.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import { captureException, withScope } from '@sentry/nextjs';
|
||||
import type { AxiosError } from 'axios';
|
||||
import { isAxiosError } from 'axios';
|
||||
import { pick } from 'radash';
|
||||
|
||||
function getErrorMessage<T extends { error?: string; errors?: string[]; message?: string }>(
|
||||
error: AxiosError<T>
|
||||
) {
|
||||
return (
|
||||
error.response?.data?.error ||
|
||||
error.response?.data?.errors?.[0] ||
|
||||
error.response?.data?.message ||
|
||||
error.message
|
||||
);
|
||||
}
|
||||
|
||||
export async function withHandleError<T>(fn: Promise<T>) {
|
||||
return fn.catch((error_: AxiosError | Error) => {
|
||||
if (isAxiosError(error_)) {
|
||||
const err = pick(error_, ['code', 'message', 'status', 'cause']);
|
||||
const data = error_.config?.data;
|
||||
const params = error_.config?.params;
|
||||
|
||||
const message = getErrorMessage(error_);
|
||||
const opts = { ...err, data, message, params };
|
||||
|
||||
error_.message += ` | ${message}`;
|
||||
|
||||
withScope((scope) => {
|
||||
(Object.keys(opts) as Array<keyof typeof opts>).forEach((key) => {
|
||||
let extra = opts[key];
|
||||
if (key === 'data') extra = JSON.stringify(extra);
|
||||
scope.setExtra(key, extra);
|
||||
});
|
||||
captureException(error_);
|
||||
});
|
||||
|
||||
throw new Error(message);
|
||||
}
|
||||
|
||||
return null as unknown as T;
|
||||
});
|
||||
}
|
||||
310
yarn.lock
310
yarn.lock
@ -1738,6 +1738,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
|
||||
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
||||
|
||||
"@jridgewell/sourcemap-codec@^1.4.13":
|
||||
version "1.4.15"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||
|
||||
"@jridgewell/trace-mapping@0.3.9":
|
||||
version "0.3.9"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
|
||||
@ -1996,11 +2001,158 @@
|
||||
resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca"
|
||||
integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==
|
||||
|
||||
"@rollup/plugin-commonjs@24.0.0":
|
||||
version "24.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz#fb7cf4a6029f07ec42b25daa535c75b05a43f75c"
|
||||
integrity sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==
|
||||
dependencies:
|
||||
"@rollup/pluginutils" "^5.0.1"
|
||||
commondir "^1.0.1"
|
||||
estree-walker "^2.0.2"
|
||||
glob "^8.0.3"
|
||||
is-reference "1.2.1"
|
||||
magic-string "^0.27.0"
|
||||
|
||||
"@rollup/pluginutils@^5.0.1":
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33"
|
||||
integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
|
||||
dependencies:
|
||||
"@types/estree" "^1.0.0"
|
||||
estree-walker "^2.0.2"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
"@rushstack/eslint-patch@^1.1.3", "@rushstack/eslint-patch@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728"
|
||||
integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==
|
||||
|
||||
"@sentry-internal/tracing@7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.57.0.tgz#cb761931b635f8f24c84be0eecfacb8516b20551"
|
||||
integrity sha512-tpViyDd8AhQGYYhI94xi2aaDopXOPfL2Apwrtb3qirWkomIQ2K86W1mPmkce+B0cFOnW2Dxv/ZTFKz6ghjK75A==
|
||||
dependencies:
|
||||
"@sentry/core" "7.57.0"
|
||||
"@sentry/types" "7.57.0"
|
||||
"@sentry/utils" "7.57.0"
|
||||
tslib "^2.4.1 || ^1.9.3"
|
||||
|
||||
"@sentry/browser@7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.57.0.tgz#6e724c9eac680dba99ced0fdf81be8d1e3b3bceb"
|
||||
integrity sha512-E0HaYYlaqHFiIRZXxcvOO8Odvlt+TR1vFFXzqUWXPOvDRxURglTOCQ3EN/u6bxtAGJ6y/Zc2obgihTtypuel/w==
|
||||
dependencies:
|
||||
"@sentry-internal/tracing" "7.57.0"
|
||||
"@sentry/core" "7.57.0"
|
||||
"@sentry/replay" "7.57.0"
|
||||
"@sentry/types" "7.57.0"
|
||||
"@sentry/utils" "7.57.0"
|
||||
tslib "^2.4.1 || ^1.9.3"
|
||||
|
||||
"@sentry/cli@^1.74.6":
|
||||
version "1.75.2"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.75.2.tgz#2c38647b38300e52c9839612d42b7c23f8d6455b"
|
||||
integrity sha512-CG0CKH4VCKWzEaegouWfCLQt9SFN+AieFESCatJ7zSuJmzF05ywpMusjxqRul6lMwfUhRKjGKOzcRJ1jLsfTBw==
|
||||
dependencies:
|
||||
https-proxy-agent "^5.0.0"
|
||||
mkdirp "^0.5.5"
|
||||
node-fetch "^2.6.7"
|
||||
progress "^2.0.3"
|
||||
proxy-from-env "^1.1.0"
|
||||
which "^2.0.2"
|
||||
|
||||
"@sentry/core@7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.57.0.tgz#65093d739c04f320a54395a21be955fcbe326acb"
|
||||
integrity sha512-l014NudPH0vQlzybtXajPxYFfs9w762NoarjObC3gu76D1jzBBFzhdRelkGpDbSLNTIsKhEDDRpgAjBWJ9icfw==
|
||||
dependencies:
|
||||
"@sentry/types" "7.57.0"
|
||||
"@sentry/utils" "7.57.0"
|
||||
tslib "^2.4.1 || ^1.9.3"
|
||||
|
||||
"@sentry/integrations@7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.57.0.tgz#298085b3a2fe862cc70bc7f2143aa0fbc617322c"
|
||||
integrity sha512-C3WZo5AGI2L0dj+mIjeZpdAwDEG2nDYvZbTzq5J9hVoHFdP3t7fOWBHSPkSFVtTdMaJrv+82aKnUefVCeAjxGg==
|
||||
dependencies:
|
||||
"@sentry/types" "7.57.0"
|
||||
"@sentry/utils" "7.57.0"
|
||||
localforage "^1.8.1"
|
||||
tslib "^2.4.1 || ^1.9.3"
|
||||
|
||||
"@sentry/nextjs@^7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.57.0.tgz#a6fc7cb827eb28124e06baf10d160b619208129d"
|
||||
integrity sha512-TH7Hhs833j1k2rM5K3AqiQ7+bxrTzANZazBLEK1YVec02PpnqflVuBHSdFxT6dG7ypxOpMkN36BN5INY5HHT0Q==
|
||||
dependencies:
|
||||
"@rollup/plugin-commonjs" "24.0.0"
|
||||
"@sentry/core" "7.57.0"
|
||||
"@sentry/integrations" "7.57.0"
|
||||
"@sentry/node" "7.57.0"
|
||||
"@sentry/react" "7.57.0"
|
||||
"@sentry/types" "7.57.0"
|
||||
"@sentry/utils" "7.57.0"
|
||||
"@sentry/webpack-plugin" "1.20.0"
|
||||
chalk "3.0.0"
|
||||
rollup "2.78.0"
|
||||
stacktrace-parser "^0.1.10"
|
||||
tslib "^2.4.1 || ^1.9.3"
|
||||
|
||||
"@sentry/node@7.57.0", "@sentry/node@^7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.57.0.tgz#31052f5988ed4496d7f3ff925240cf9b02d09941"
|
||||
integrity sha512-63mjyUVM6sfJFVQ5TGVRVGUsoEfESl5ABzIW1W0s9gUiQPaG8SOdaQJglb2VNrkMYxnRHgD8Q9LUh/qcmUyPGw==
|
||||
dependencies:
|
||||
"@sentry-internal/tracing" "7.57.0"
|
||||
"@sentry/core" "7.57.0"
|
||||
"@sentry/types" "7.57.0"
|
||||
"@sentry/utils" "7.57.0"
|
||||
cookie "^0.4.1"
|
||||
https-proxy-agent "^5.0.0"
|
||||
lru_map "^0.3.3"
|
||||
tslib "^2.4.1 || ^1.9.3"
|
||||
|
||||
"@sentry/react@7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.57.0.tgz#cf91f0115bcd2a8306d6c8a39d8e8b53d4b21814"
|
||||
integrity sha512-XGNTjIoCG3naSmCU8qObd+y+CqAB6NQkGWOp2yyBwp2inyKF2ehJvDh6bIQloBYq2TmOJDa4NfXdMrkilxaLFQ==
|
||||
dependencies:
|
||||
"@sentry/browser" "7.57.0"
|
||||
"@sentry/types" "7.57.0"
|
||||
"@sentry/utils" "7.57.0"
|
||||
hoist-non-react-statics "^3.3.2"
|
||||
tslib "^2.4.1 || ^1.9.3"
|
||||
|
||||
"@sentry/replay@7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.57.0.tgz#c8f7eae7b7edc9d32c3d2955b337f3b3c76dff39"
|
||||
integrity sha512-pN4ryNS3J5EYbkXvR+O/+hseAJha7XDl8mPFtK0OGTHG10JzCi4tQJazblHQdpb5QBaMMPCeZ+isyfoQLDNXnw==
|
||||
dependencies:
|
||||
"@sentry/core" "7.57.0"
|
||||
"@sentry/types" "7.57.0"
|
||||
"@sentry/utils" "7.57.0"
|
||||
|
||||
"@sentry/types@7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.57.0.tgz#4fdb80cbd49ba034dd8d9be0c0005a016d5db3ce"
|
||||
integrity sha512-D7ifoUfxuVCUyktIr5Gc+jXUbtcUMmfHdTtTbf1XCZHua5mJceK9wtl3YCg3eq/HK2Ppd52BKnTzEcS5ZKQM+w==
|
||||
|
||||
"@sentry/utils@7.57.0":
|
||||
version "7.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.57.0.tgz#8253c6fcf35138b4c424234b8da1596e11b98ad8"
|
||||
integrity sha512-YXrkMCiNklqkXctn4mKYkrzNCf/dfVcRUQrkXjeBC+PHXbcpPyaJgInNvztR7Skl8lE3JPGPN4v5XhLxK1bUUg==
|
||||
dependencies:
|
||||
"@sentry/types" "7.57.0"
|
||||
tslib "^2.4.1 || ^1.9.3"
|
||||
|
||||
"@sentry/webpack-plugin@1.20.0":
|
||||
version "1.20.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-1.20.0.tgz#e7add76122708fb6b4ee7951294b521019720e58"
|
||||
integrity sha512-Ssj1mJVFsfU6vMCOM2d+h+KQR7QHSfeIP16t4l20Uq/neqWXZUQ2yvQfe4S3BjdbJXz/X4Rw8Hfy1Sd0ocunYw==
|
||||
dependencies:
|
||||
"@sentry/cli" "^1.74.6"
|
||||
webpack-sources "^2.0.0 || ^3.0.0"
|
||||
|
||||
"@sinclair/typebox@^0.25.16":
|
||||
version "0.25.24"
|
||||
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718"
|
||||
@ -2286,6 +2438,11 @@
|
||||
dependencies:
|
||||
"@types/ms" "*"
|
||||
|
||||
"@types/estree@*", "@types/estree@^1.0.0":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
|
||||
integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
|
||||
|
||||
"@types/graceful-fs@^4.1.3":
|
||||
version "4.1.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae"
|
||||
@ -3260,6 +3417,13 @@ brace-expansion@^1.1.7:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
brace-expansion@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
|
||||
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
|
||||
braces@^2.3.1:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
|
||||
@ -3420,6 +3584,14 @@ capital-case@^1.0.4:
|
||||
tslib "^2.0.3"
|
||||
upper-case-first "^2.0.2"
|
||||
|
||||
chalk@3.0.0, chalk@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
|
||||
integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
|
||||
dependencies:
|
||||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
chalk@4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
|
||||
@ -3442,14 +3614,6 @@ chalk@^2.0.0, chalk@^2.4.2:
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^5.3.0"
|
||||
|
||||
chalk@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
|
||||
integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
|
||||
dependencies:
|
||||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
||||
@ -3710,6 +3874,11 @@ common-tags@1.8.2:
|
||||
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
|
||||
integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
|
||||
|
||||
commondir@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||
integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
|
||||
|
||||
component-emitter@^1.2.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
|
||||
@ -3744,7 +3913,7 @@ convert-source-map@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
|
||||
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
|
||||
|
||||
cookie@^0.4.2:
|
||||
cookie@^0.4.1, cookie@^0.4.2:
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
|
||||
integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
|
||||
@ -4949,6 +5118,11 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
|
||||
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
|
||||
|
||||
estree-walker@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||
@ -5450,6 +5624,17 @@ glob@^7.1.1, glob@^7.1.3, glob@^7.1.4:
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^8.0.3:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
|
||||
integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^5.0.1"
|
||||
once "^1.3.0"
|
||||
|
||||
globals@^11.1.0, globals@^11.12.0:
|
||||
version "11.12.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
|
||||
@ -5794,6 +5979,11 @@ ignore@^5.0.5, ignore@^5.1.1, ignore@^5.2.0:
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
|
||||
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
|
||||
|
||||
immediate@~3.0.5:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
||||
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
|
||||
|
||||
immutable@~3.7.6:
|
||||
version "3.7.6"
|
||||
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b"
|
||||
@ -6168,11 +6358,6 @@ is-potential-custom-element-name@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
|
||||
integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
|
||||
|
||||
is-promise@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3"
|
||||
integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==
|
||||
|
||||
is-proto-prop@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-proto-prop/-/is-proto-prop-2.0.0.tgz#99ab2863462e44090fd083efd1929058f9d935e1"
|
||||
@ -6181,6 +6366,13 @@ is-proto-prop@^2.0.0:
|
||||
lowercase-keys "^1.0.0"
|
||||
proto-props "^2.0.0"
|
||||
|
||||
is-reference@1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
|
||||
integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
|
||||
dependencies:
|
||||
"@types/estree" "*"
|
||||
|
||||
is-regex@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
|
||||
@ -7035,6 +7227,13 @@ levn@~0.3.0:
|
||||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
lie@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
|
||||
integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==
|
||||
dependencies:
|
||||
immediate "~3.0.5"
|
||||
|
||||
lilconfig@2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
|
||||
@ -7092,6 +7291,13 @@ listr2@^5.0.7:
|
||||
through "^2.3.8"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
localforage@^1.8.1:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4"
|
||||
integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==
|
||||
dependencies:
|
||||
lie "3.1.1"
|
||||
|
||||
locate-path@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
|
||||
@ -7199,11 +7405,23 @@ lru-cache@^6.0.0:
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
lru_map@^0.3.3:
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"
|
||||
integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==
|
||||
|
||||
lz-string@^1.4.4:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
|
||||
integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==
|
||||
|
||||
magic-string@^0.27.0:
|
||||
version "0.27.0"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
|
||||
integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.13"
|
||||
|
||||
make-dir@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
|
||||
@ -7333,6 +7551,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^5.0.1:
|
||||
version "5.1.6"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
|
||||
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
@ -7351,6 +7576,13 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
mkdirp@^0.5.5:
|
||||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
|
||||
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
|
||||
dependencies:
|
||||
minimist "^1.2.6"
|
||||
|
||||
mobx-react-lite@^3.4.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.4.0.tgz#d59156a96889cdadad751e5e4dab95f28926dfff"
|
||||
@ -7443,15 +7675,6 @@ natural-compare@^1.4.0:
|
||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
|
||||
|
||||
next-recompose-plugins@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/next-recompose-plugins/-/next-recompose-plugins-2.0.0.tgz#7d77c63ea7ff5c06e2e8504c9ca8c6b9bdb4c7f2"
|
||||
integrity sha512-Dfg/5RVnbVCaJqAGt+Ikf5IudZ5mQ8PHHqcPT2oLeXA8fi7cxFIBF2DfzTcLz4AwFRy1x9uD8wgqSM5j98r6EA==
|
||||
dependencies:
|
||||
is-promise "^4.0.0"
|
||||
semver "^7.3.8"
|
||||
take-n-pipe "^1.1.1"
|
||||
|
||||
next@^13.4.7:
|
||||
version "13.4.7"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-13.4.7.tgz#2ab20e6fada2e25cb81bd17f68956705ffd9824e"
|
||||
@ -8072,6 +8295,11 @@ pretty-format@^29.0.0, pretty-format@^29.4.3:
|
||||
ansi-styles "^5.0.0"
|
||||
react-is "^18.0.0"
|
||||
|
||||
progress@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
|
||||
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
|
||||
|
||||
promise@^7.1.1:
|
||||
version "7.3.1"
|
||||
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
|
||||
@ -8912,6 +9140,13 @@ roarr@^7.14.2:
|
||||
safe-stable-stringify "^2.4.1"
|
||||
semver-compare "^1.0.0"
|
||||
|
||||
rollup@2.78.0:
|
||||
version "2.78.0"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.0.tgz#00995deae70c0f712ea79ad904d5f6b033209d9e"
|
||||
integrity sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
run-async@^2.4.0:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
|
||||
@ -9337,6 +9572,13 @@ stack-utils@^2.0.3:
|
||||
dependencies:
|
||||
escape-string-regexp "^2.0.0"
|
||||
|
||||
stacktrace-parser@^0.1.10:
|
||||
version "0.1.10"
|
||||
resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a"
|
||||
integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==
|
||||
dependencies:
|
||||
type-fest "^0.7.1"
|
||||
|
||||
static-extend@^0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
|
||||
@ -9615,11 +9857,6 @@ synckit@^0.8.4, synckit@^0.8.5:
|
||||
"@pkgr/utils" "^2.3.1"
|
||||
tslib "^2.5.0"
|
||||
|
||||
take-n-pipe@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/take-n-pipe/-/take-n-pipe-1.1.1.tgz#6467eb0a6c768b1f183d7d0ae814136442ac4479"
|
||||
integrity sha512-BPD//p7LC1AzA8jsIBgUqJEfv4lWSEGclTr6mQBJa4nBtHsFi0F+biD90E1A1OosO3+Y4sc0XM4M7ucxnYxoPA==
|
||||
|
||||
tapable@^2.2.0:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
|
||||
@ -9834,6 +10071,11 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
|
||||
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
|
||||
|
||||
"tslib@^2.4.1 || ^1.9.3":
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3"
|
||||
integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==
|
||||
|
||||
tsutils@^3.21.0:
|
||||
version "3.21.0"
|
||||
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
|
||||
@ -9924,6 +10166,11 @@ type-fest@^0.6.0:
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
|
||||
integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
|
||||
|
||||
type-fest@^0.7.1:
|
||||
version "0.7.1"
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"
|
||||
integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
|
||||
|
||||
type-fest@^0.8.1:
|
||||
version "0.8.1"
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
|
||||
@ -10174,6 +10421,11 @@ webidl-conversions@^7.0.0:
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
|
||||
integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
|
||||
|
||||
"webpack-sources@^2.0.0 || ^3.0.0":
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
|
||||
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
|
||||
|
||||
whatwg-encoding@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53"
|
||||
@ -10252,7 +10504,7 @@ which@^1.2.9:
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
which@^2.0.1:
|
||||
which@^2.0.1, which@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
||||
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user