diff --git a/package.json b/package.json
index 0f3c81a..cbc8b97 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "zhishuyun-ai",
+ "name": "zhishuyun-hub",
"version": "0.1.0",
"scripts": {
"start": "cross-env NODE_ENV=$npm_config_env vite --host",
@@ -28,7 +28,6 @@
"@types/mustache": "^4.2.2",
"@types/qs": "^6.9.9",
"@types/uuid": "^8.3.4",
- "@zhishuyun/data": "^0.1.0",
"axios": "^0.22.0",
"codemirror": "^6.0.1",
"copy-to-clipboard": "^3.3.3",
diff --git a/src/components/chat/InputBox.vue b/src/components/chat/InputBox.vue
index e26038a..955d2df 100644
--- a/src/components/chat/InputBox.vue
+++ b/src/components/chat/InputBox.vue
@@ -142,7 +142,7 @@ export default defineComponent({
.el-upload-list {
position: absolute;
width: 400px;
- bottom: 40px;
+ bottom: 45px;
}
}
@@ -155,7 +155,7 @@ export default defineComponent({
border-radius: 10px;
background: none;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.1);
- top: 50px;
+ top: 30px;
.upload {
display: inline-block;
&.disabled {
diff --git a/src/components/common/ApiStatus.vue b/src/components/common/ApiStatus.vue
index 0acea7a..c1acb64 100644
--- a/src/components/common/ApiStatus.vue
+++ b/src/components/common/ApiStatus.vue
@@ -12,7 +12,9 @@
{{ application?.remaining_amount }}
- {{ $t('common.button.buyMore') }}
+ {{
+ $t('common.button.buyMore')
+ }}
@@ -36,6 +38,7 @@ import { IApplicationType } from '@/operators';
import { apiOperator } from '@/operators/api/operator';
import { IApiDetailResponse, IApi } from '@/operators/api';
import { ERROR_CODE_DUPLICATION } from '@/constants/errorCode';
+import { ROUTE_CONSOLE_APPLICATION_BUY } from '@/router';
export interface IData {
confirming: boolean;
@@ -83,9 +86,13 @@ export default defineComponent({
this.api = data;
});
},
- onBuy() {
- const url = `https://data.zhishuyun.com/console/applications/${this.application?.id}/buy`;
- window.open(url, '_blank');
+ onBuyMore(application: IApplication) {
+ this.$router.push({
+ name: ROUTE_CONSOLE_APPLICATION_BUY,
+ params: {
+ id: application.id
+ }
+ });
},
onApply() {
applicationOperator
diff --git a/src/components/common/Navigator.vue b/src/components/common/Navigator.vue
index ec072ad..38a0443 100644
--- a/src/components/common/Navigator.vue
+++ b/src/components/common/Navigator.vue
@@ -11,13 +11,19 @@
@click="$router.push(link.route)"
>
-
+
+
+
+
+
+
+
@@ -38,6 +44,7 @@ import {
ROUTE_CHAT_CONVERSATION,
ROUTE_CHAT_CONVERSATION_NEW,
ROUTE_CHAT_INDEX,
+ ROUTE_CONSOLE_ROOT,
ROUTE_MIDJOURNEY_HISTORY,
ROUTE_MIDJOURNEY_INDEX
} from '@/router/constants';
@@ -78,6 +85,9 @@ export default defineComponent({
console.debug('logout');
this.$store.dispatch('common/resetToken');
this.$router.push({ name: ROUTE_AUTH_LOGIN });
+ },
+ onConsole() {
+ this.$router.push({ name: ROUTE_CONSOLE_ROOT });
}
}
});
diff --git a/src/components/common/Price.vue b/src/components/common/Price.vue
index c0e9dea..3efec0d 100644
--- a/src/components/common/Price.vue
+++ b/src/components/common/Price.vue
@@ -2,7 +2,7 @@
¥{{ price }} {{ unit ? ` / ${unit}` : '' }}{{ start ? $t('common.message.startPrice') : ''
- }}{{ $t('service.message.fromPrice') }}
+ }}{{ $t('common.message.startPrice') }}
{{ $t('common.message.free') }}
diff --git a/src/components/console/SidePanel.vue b/src/components/console/SidePanel.vue
new file mode 100644
index 0000000..c155d9d
--- /dev/null
+++ b/src/components/console/SidePanel.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/order/Create.vue b/src/components/order/Create.vue
new file mode 100644
index 0000000..6971d76
--- /dev/null
+++ b/src/components/order/Create.vue
@@ -0,0 +1,180 @@
+
+
+
+
+ {{ application?.api?.title }}
+
+
+
+
+
+ {{ pkg.amount }}{{ $t(`api.unit.${application?.api?.unit}`) }}
+
+
+ {{ $t('application.button.custom') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ ¥{{ price.toFixed(2) }}
+
+
+ ¥{{ package?.price?.toFixed(2) }}
+
+
+
+
+ {{ $t('application.button.createOrder') }}
+
+
+
+
+
+
+
+
diff --git a/src/components/order/StripePay.vue b/src/components/order/StripePay.vue
new file mode 100644
index 0000000..d9bfca4
--- /dev/null
+++ b/src/components/order/StripePay.vue
@@ -0,0 +1,93 @@
+
+
+
+ {{ $t('order.message.buyInExternalUrl') }}
+
+
+
+
+
+
+
diff --git a/src/components/order/WechatPay.vue b/src/components/order/WechatPay.vue
new file mode 100644
index 0000000..100a987
--- /dev/null
+++ b/src/components/order/WechatPay.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
{{ $t('order.message.wechatPayHelp') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/i18n/zh/application/field.ts b/src/i18n/zh/application/field.ts
index a7bb560..5c6c400 100644
--- a/src/i18n/zh/application/field.ts
+++ b/src/i18n/zh/application/field.ts
@@ -12,6 +12,7 @@ export default {
credential: '密钥',
name: '名称',
package: '套餐',
+ price: '价格',
type: '类型',
freeAmount: '免费赠送',
extraPrice: '价格'
diff --git a/src/i18n/zh/console/index.ts b/src/i18n/zh/console/index.ts
new file mode 100644
index 0000000..5234bac
--- /dev/null
+++ b/src/i18n/zh/console/index.ts
@@ -0,0 +1,5 @@
+import menu from './menu';
+
+export default {
+ menu
+};
diff --git a/src/i18n/zh/console/menu.ts b/src/i18n/zh/console/menu.ts
new file mode 100644
index 0000000..8e9e965
--- /dev/null
+++ b/src/i18n/zh/console/menu.ts
@@ -0,0 +1,11 @@
+export default {
+ orderList: '订单列表',
+ applicationList: '申请列表',
+ userProfile: '个人信息',
+ idVerify: '实名认证',
+ manageApplication: '申请管理',
+ distributionIndex: '分销推广',
+ usageList: '调用记录',
+ platformTokenIndex: '平台令牌',
+ manageOrder: '订单管理'
+};
diff --git a/src/i18n/zh/index.ts b/src/i18n/zh/index.ts
index 89d30b7..098292c 100644
--- a/src/i18n/zh/index.ts
+++ b/src/i18n/zh/index.ts
@@ -4,9 +4,13 @@ import api from './api';
import setting from './setting';
import midjourney from './midjourney';
import chat from './chat';
+import console from './console';
+import order from './order';
export default {
chat,
+ order,
+ console,
common,
application,
api,
diff --git a/src/i18n/zh/order/button.ts b/src/i18n/zh/order/button.ts
new file mode 100644
index 0000000..e06d785
--- /dev/null
+++ b/src/i18n/zh/order/button.ts
@@ -0,0 +1,8 @@
+export default {
+ pay: '支付',
+ continuePay: '继续支付',
+ checkDetail: '查看详情',
+ query: '查询',
+ finish: '手动完成',
+ update: '更新'
+};
diff --git a/src/i18n/zh/order/field.ts b/src/i18n/zh/order/field.ts
new file mode 100644
index 0000000..b7703d0
--- /dev/null
+++ b/src/i18n/zh/order/field.ts
@@ -0,0 +1,12 @@
+export default {
+ id: '订单号',
+ amount: '数量',
+ price: '金额',
+ description: '订单描述',
+ state: '状态',
+ createdAt: '创建时间',
+ service: '服务名称',
+ payWay: '支付方式',
+ api: 'API',
+ proxy: '代理'
+};
diff --git a/src/i18n/zh/order/index.ts b/src/i18n/zh/order/index.ts
new file mode 100644
index 0000000..71108c7
--- /dev/null
+++ b/src/i18n/zh/order/index.ts
@@ -0,0 +1,13 @@
+import field from './field';
+import button from './button';
+import message from './message';
+import state from './state';
+import title from './title';
+
+export default {
+ field,
+ button,
+ message,
+ state,
+ title
+};
diff --git a/src/i18n/zh/order/message.ts b/src/i18n/zh/order/message.ts
new file mode 100644
index 0000000..7a84ca7
--- /dev/null
+++ b/src/i18n/zh/order/message.ts
@@ -0,0 +1,10 @@
+export default {
+ paidSuccessfully: '支付成功',
+ createFailed: '创建失败',
+ wechatPayHelp: '请打开手机微信,扫一扫完成支付',
+ free: '免费',
+ buyInExternalUrl: '请在外部链接完成付款',
+ updateFailed: '修改失败',
+ updateSuccessfully: '修改成功',
+ confirmFinish: '此操作将手动将订单设置为支付状态且完成分销处理,无法撤销,请确认客户已经完成付款,是否继续?'
+};
diff --git a/src/i18n/zh/order/state.ts b/src/i18n/zh/order/state.ts
new file mode 100644
index 0000000..f372d31
--- /dev/null
+++ b/src/i18n/zh/order/state.ts
@@ -0,0 +1,6 @@
+export default {
+ pending: '待支付',
+ paid: '已支付',
+ expired: '支付超时',
+ failed: '支付失败'
+};
diff --git a/src/i18n/zh/order/title.ts b/src/i18n/zh/order/title.ts
new file mode 100644
index 0000000..50f5458
--- /dev/null
+++ b/src/i18n/zh/order/title.ts
@@ -0,0 +1,7 @@
+export default {
+ info: '订单信息',
+ wechatPay: '微信支付',
+ aliPay: '支付宝',
+ stripe: 'Stripe',
+ manageOrder: '管理订单'
+};
diff --git a/src/layouts/Console.vue b/src/layouts/Console.vue
new file mode 100644
index 0000000..06f4cff
--- /dev/null
+++ b/src/layouts/Console.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
diff --git a/src/operators/index.ts b/src/operators/index.ts
index 1d5b492..3242fc4 100644
--- a/src/operators/index.ts
+++ b/src/operators/index.ts
@@ -5,3 +5,4 @@ export * from './chat';
export * from './midjourney';
export * from './usage';
export * from './api';
+export * from './order';
diff --git a/src/operators/order/index.ts b/src/operators/order/index.ts
new file mode 100644
index 0000000..4a6cbae
--- /dev/null
+++ b/src/operators/order/index.ts
@@ -0,0 +1,2 @@
+export * from './models';
+export * from './operator';
diff --git a/src/operators/order/models.ts b/src/operators/order/models.ts
new file mode 100644
index 0000000..57128a5
--- /dev/null
+++ b/src/operators/order/models.ts
@@ -0,0 +1,33 @@
+import { IApplication } from '../application';
+
+export enum OrderState {
+ PENDING = 'Pending',
+ PAID = 'Paid',
+ EXPIRED = 'Expired',
+ FAILED = 'Failed'
+}
+
+export interface IOrder {
+ id?: string;
+ description?: string;
+ state?: OrderState;
+ price?: number;
+ amount?: number;
+ user_id?: number;
+ created_at?: string;
+ updated_at?: string;
+ application?: IApplication;
+ application_id?: string;
+ wechatpay_url?: string;
+ pay_id?: string;
+ pay_url?: string;
+ alipay_url?: string;
+ pay_way?: string;
+}
+
+export interface IOrderListResponse {
+ count: number;
+ items: IOrder[];
+}
+
+export type IOrderDetailResponse = IOrder;
diff --git a/src/operators/order/operator.ts b/src/operators/order/operator.ts
new file mode 100644
index 0000000..b141e11
--- /dev/null
+++ b/src/operators/order/operator.ts
@@ -0,0 +1,55 @@
+import { AxiosResponse } from 'axios';
+import { httpClient } from '../instance';
+import { IOrder, IOrderDetailResponse, IOrderListResponse } from './models';
+
+export interface IOrderQuery {
+ user_id?: string;
+ package_id?: string;
+ offset?: number;
+ limit?: number;
+ ordering: string;
+}
+
+class OrderService {
+ key = 'orders';
+
+ async getAll(query: IOrderQuery): Promise> {
+ return await httpClient.get(`/${this.key}/`, {
+ params: query
+ });
+ }
+
+ async get(id: string): Promise> {
+ return await httpClient.get(`/${this.key}/${id}`);
+ }
+
+ async create(data: IOrder): Promise> {
+ return await httpClient.post(`/${this.key}/`, data);
+ }
+
+ async update(id: string, data: IOrder): Promise> {
+ return await httpClient.put(`/${this.key}/${id}`, data);
+ }
+
+ async refresh(id: string): Promise> {
+ return await httpClient.post(`/${this.key}/${id}/refresh/`);
+ }
+
+ async pay(id: string, data: IOrder): Promise> {
+ return await httpClient.post(`/${this.key}/${id}/pay/`, data);
+ }
+
+ async updatePrice(id: string, data: IOrder): Promise> {
+ return await httpClient.post(`/${this.key}/${id}/update-price/`, data);
+ }
+
+ async finish(id: string): Promise> {
+ return await httpClient.post(`/${this.key}/${id}/finish/`);
+ }
+
+ async delete(id: string): Promise> {
+ return await httpClient.delete(`/${this.key}/${id}`);
+ }
+}
+
+export const orderOperator = new OrderService();
diff --git a/src/pages/chat/Conversation.vue b/src/pages/chat/Conversation.vue
index 6b30434..2b5cf08 100644
--- a/src/pages/chat/Conversation.vue
+++ b/src/pages/chat/Conversation.vue
@@ -46,7 +46,6 @@ import ApiStatus from '@/components/common/ApiStatus.vue';
import { ROUTE_CHAT_CONVERSATION, ROUTE_CHAT_CONVERSATION_NEW } from '@/router';
import { Status } from '@/store/common/models';
import { log } from '@/utils/log';
-import { ComponentCommonHelpEntry as HelpEntry } from '@zhishuyun/data';
export interface IData {
question: string;
@@ -60,8 +59,7 @@ export default defineComponent({
InputBox,
ModelSelector,
Message,
- ApiStatus,
- HelpEntry
+ ApiStatus
},
data(): IData {
return {
@@ -276,7 +274,7 @@ export default defineComponent({
}
.bottom {
width: 100%;
- height: 110px;
+ height: 90px;
}
}
diff --git a/src/pages/console/application/Buy.vue b/src/pages/console/application/Buy.vue
new file mode 100644
index 0000000..4bc1f32
--- /dev/null
+++ b/src/pages/console/application/Buy.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+ {{ $t('common.title.buyMore') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/console/application/List.vue b/src/pages/console/application/List.vue
new file mode 100644
index 0000000..9678b69
--- /dev/null
+++ b/src/pages/console/application/List.vue
@@ -0,0 +1,241 @@
+
+
+
+
+
+ {{ $t('common.title.allApplications') }}
+
+
+
+
+
+
+
+ {{ scope.row.id }}
+
+
+
+
+
+
+
+ {{ scope.row?.api?.title }}
+
+
+
+
+ {{ getRemainingAmount(scope.row) }}
+
+
+
+
+ {{ getUsedAmount(scope.row) }}
+
+
+
+
+
+
+ {{ $t('application.button.buyMore') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/console/order/Detail.vue b/src/pages/console/order/Detail.vue
new file mode 100644
index 0000000..c1d3275
--- /dev/null
+++ b/src/pages/console/order/Detail.vue
@@ -0,0 +1,325 @@
+
+
+
+
+
+ {{ $t('order.title.info') }}
+
+
+
+
+
+
+
+
+
+ {{ order?.id }}
+
+ {{ order?.description }}
+
+
+ {{ order?.application?.api?.title }}
+
+
+
+ {{ order?.amount }}{{ $t(`api.unit.${order?.application?.api?.unit}`) }}
+
+
+
+ {{ $dayjs.format(order?.created_at) }}
+
+
+
+ ¥{{ order?.price?.toFixed(2) }}
+
+ {{ $t('order.message.free') }}
+
+
+
+ {{ $t('order.title.wechatPay') }}
+
+
+ {{ $t('order.title.aliPay') }}
+
+
+ {{ $t('order.title.stripe') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('order.title.wechatPay') }}
+
+
+
+ {{ $t('order.title.aliPay') }}
+
+
+
+ {{ $t('order.title.stripe') }}
+
+
+
+ {{
+ $t('common.button.pay')
+ }}
+
+
+ {{
+ $t('common.button.repay')
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/console/order/List.vue b/src/pages/console/order/List.vue
new file mode 100644
index 0000000..50f3aba
--- /dev/null
+++ b/src/pages/console/order/List.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+ {{ $t('common.title.allOrders') }}
+
+
+
+
+
+
+
+ {{ scope.row.id }}
+
+
+
+
+
+
+
+ ¥{{ scope.row?.price?.toFixed(2) }}
+
+
+
+
+ {{ $dayjs.format(scope.row.created_at) }}
+
+
+
+
+ {{ scope.row.description }}
+
+
+
+
+
+ {{ $t('order.state.pending') }}
+
+
+ {{ $t('order.state.paid') }}
+
+
+ {{ $t('order.state.expired') }}
+
+
+ {{ $t('order.state.failed') }}
+
+
+
+
+
+
+
+ {{ $t('order.button.continuePay') }}
+
+
+ {{ $t('order.button.checkDetail') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/plugins/font-awesome.ts b/src/plugins/font-awesome.ts
index 62ff9b3..317c8d5 100644
--- a/src/plugins/font-awesome.ts
+++ b/src/plugins/font-awesome.ts
@@ -8,6 +8,7 @@ import {
faClock as faRegularClock
} from '@fortawesome/free-regular-svg-icons';
import {
+ faCompass as faSolidCompass,
faLocationArrow as faSolidLocationArrow,
faPaperclip as faSolidPaperclip,
faHashtag as faSolidHashtag,
@@ -30,6 +31,7 @@ import {
faBolt as faSolidBolt,
faQuestion as faSolidQuestion,
faWind as faSolidWind,
+ faStore as faSolidStore,
faTrash as faSolidTrash,
faChevronDown as faSolidChevronDown,
faArrowsRotate as faSolidArrowsRotate,
@@ -37,9 +39,13 @@ import {
faArrowRightFromBracket as faSolidArrowRightFromBracket,
faTriangleExclamation as faSolidTriangleExclamation,
faPenToSquare as faSolidPenToSquare,
- faXmark as faSolidXmark
+ faXmark as faSolidXmark,
+ faCube as faSolidCube
} from '@fortawesome/free-solid-svg-icons';
library.add(faRegularCopy);
+library.add(faSolidStore);
+library.add(faSolidCube);
+library.add(faSolidCompass);
library.add(faSolidPaperclip);
library.add(faSolidXmark);
library.add(faSolidRotateRight);
diff --git a/src/router/console.ts b/src/router/console.ts
new file mode 100644
index 0000000..da5891b
--- /dev/null
+++ b/src/router/console.ts
@@ -0,0 +1,44 @@
+import {
+ ROUTE_CONSOLE_APPLICATION_BUY,
+ ROUTE_CONSOLE_APPLICATION_LIST,
+ ROUTE_CONSOLE_ORDER_DETAIL,
+ ROUTE_CONSOLE_ORDER_LIST,
+ ROUTE_CONSOLE_ROOT
+} from './constants';
+
+export default {
+ path: '/console',
+ meta: {
+ auth: true
+ },
+ component: () => import('@/layouts/Console.vue'),
+ children: [
+ {
+ path: '',
+ name: ROUTE_CONSOLE_ROOT,
+ redirect: {
+ name: ROUTE_CONSOLE_APPLICATION_LIST
+ }
+ },
+ {
+ path: 'orders',
+ name: ROUTE_CONSOLE_ORDER_LIST,
+ component: () => import('@/pages/console/order/List.vue')
+ },
+ {
+ path: 'orders/:id',
+ name: ROUTE_CONSOLE_ORDER_DETAIL,
+ component: () => import('@/pages/console/order/Detail.vue')
+ },
+ {
+ path: 'applications',
+ name: ROUTE_CONSOLE_APPLICATION_LIST,
+ component: () => import('@/pages/console/application/List.vue')
+ },
+ {
+ path: 'applications/:id/buy',
+ name: ROUTE_CONSOLE_APPLICATION_BUY,
+ component: () => import('@/pages/console/application/Buy.vue')
+ }
+ ]
+};
diff --git a/src/router/constants.ts b/src/router/constants.ts
index ac19e82..b3649e2 100644
--- a/src/router/constants.ts
+++ b/src/router/constants.ts
@@ -9,3 +9,9 @@ export const ROUTE_CHAT_CONVERSATION_NEW = 'chat-conversation-new';
export const ROUTE_MIDJOURNEY_INDEX = 'midjourney-index';
export const ROUTE_MIDJOURNEY_HISTORY = 'midjourney-history';
+
+export const ROUTE_CONSOLE_ROOT = 'console-root';
+export const ROUTE_CONSOLE_ORDER_LIST = 'console-order-list';
+export const ROUTE_CONSOLE_ORDER_DETAIL = 'console-order-detail';
+export const ROUTE_CONSOLE_APPLICATION_LIST = 'console-application-list';
+export const ROUTE_CONSOLE_APPLICATION_BUY = 'console-application-buy';
diff --git a/src/router/index.ts b/src/router/index.ts
index 3e97ee9..c3962db 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -1,5 +1,6 @@
import { createRouter, createWebHistory } from 'vue-router';
import auth from './auth';
+import console from './console';
import chat from './chat';
import midjourney from './midjourney';
import { ROUTE_CHAT_INDEX, ROUTE_INDEX } from './constants';
@@ -12,6 +13,7 @@ const routes = [
name: ROUTE_CHAT_INDEX
}
},
+ console,
auth,
chat,
midjourney
diff --git a/yarn.lock b/yarn.lock
index cbe8465..b684803 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -338,11 +338,6 @@
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
-"@kurkle/color@^0.3.0":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f"
- integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==
-
"@lezer/common@^1.0.0":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.2.tgz#8fb9b86bdaa2ece57e7d59e5ffbcb37d71815087"
@@ -534,21 +529,6 @@
"@sentry/utils" "7.34.0"
tslib "^1.9.3"
-"@sindresorhus/slugify@^2.2.1":
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/@sindresorhus/slugify/-/slugify-2.2.1.tgz#fa2e2e25d6e1e74a2eeb5e2c37f5ccc516ed2c4b"
- integrity sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==
- dependencies:
- "@sindresorhus/transliterate" "^1.0.0"
- escape-string-regexp "^5.0.0"
-
-"@sindresorhus/transliterate@^1.0.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz#2309fff65a868047e6d2dd70dec747c5b36a8327"
- integrity sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==
- dependencies:
- escape-string-regexp "^5.0.0"
-
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
@@ -945,53 +925,6 @@
dependencies:
vue-demi "*"
-"@zhishuyun/data@^0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@zhishuyun/data/-/data-0.1.0.tgz#07d92b3f448aa0ae465e5b4840fa303681b54cdc"
- integrity sha512-hB1GP7lv+OIitm5jvTpLfzkdPSQVBl+XHOHTrargdKAH3AZBJx8at0rCGshRkGfw4Jq8tCrVTZSSCZ/l/AdJGw==
- dependencies:
- "@codemirror/lang-java" "^6.0.1"
- "@codemirror/lang-javascript" "^6.1.2"
- "@codemirror/lang-json" "^6.0.1"
- "@codemirror/lang-php" "^6.0.1"
- "@codemirror/lang-python" "^6.1.1"
- "@codemirror/theme-one-dark" "^6.1.0"
- "@fortawesome/fontawesome-svg-core" "^6.2.1"
- "@fortawesome/free-brands-svg-icons" "^6.2.1"
- "@fortawesome/free-regular-svg-icons" "^6.2.1"
- "@fortawesome/free-solid-svg-icons" "^6.2.1"
- "@fortawesome/vue-fontawesome" "^3.0.2"
- "@sentry/tracing" "^7.34.0"
- "@sentry/vue" "^7.34.0"
- "@sindresorhus/slugify" "^2.2.1"
- "@types/mustache" "^4.2.2"
- "@types/uuid" "^8.3.4"
- axios "^0.22.0"
- chart.js "^4.3.0"
- codemirror "^6.0.1"
- copy-to-clipboard "^3.3.3"
- dayjs "^1.10.7"
- element-plus "^2.2.28"
- github-markdown-css "^5.1.0"
- highlight.js "^11.7.0"
- jwt-decode "^3.1.2"
- markdown-it "^13.0.1"
- markdown-it-anchor "^8.6.7"
- mustache "^4.2.0"
- programming-languages-logos "^0.0.3"
- qrcode.vue "^3.3.3"
- query-string "^8.1.0"
- typescript-cookie "^1.0.3"
- url-join "^5.0.0"
- uuid "^8.3.2"
- vue "^3.2.6"
- vue-chartjs "^5.2.0"
- vue-codemirror "^6.1.1"
- vue-i18n "^9.1.7"
- vue-router "^4.0.11"
- vuex "^4.0.2"
- vuex-persistedstate "^4.0.0"
-
acorn-jsx@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@@ -1216,9 +1149,9 @@ camelcase-css@^2.0.1:
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001297:
- version "1.0.30001307"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz#27a67f13ebc4aa9c977e6b8256a11d5eafb30f27"
- integrity sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==
+ version "1.0.30001572"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz"
+ integrity sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==
chalk@^2.0.0:
version "2.4.2"
@@ -1237,13 +1170,6 @@ chalk@^4.0.0, chalk@^4.1.2:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chart.js@^4.3.0:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.4.1.tgz#ac5dc0e69a7758909158a96fe80ce43b3bb96a9f"
- integrity sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg==
- dependencies:
- "@kurkle/color" "^0.3.0"
-
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2, chokidar@^3.5.3:
version "3.5.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
@@ -1769,11 +1695,6 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-escape-string-regexp@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
- integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
-
eslint-config-prettier@^8.5.0:
version "8.5.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
@@ -2570,11 +2491,6 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
-jwt-decode@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59"
- integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==
-
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -2669,11 +2585,6 @@ magic-string@^0.30.3:
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.15"
-markdown-it-anchor@^8.6.7:
- version "8.6.7"
- resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634"
- integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==
-
markdown-it@^13.0.1:
version "13.0.1"
resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430"
@@ -3545,11 +3456,6 @@ vite@^2.9.0:
optionalDependencies:
fsevents "~2.3.2"
-vue-chartjs@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/vue-chartjs/-/vue-chartjs-5.3.0.tgz#59920a07d72f37a2375d495256e486b92813bf6e"
- integrity sha512-8XqX0JU8vFZ+WA2/knz4z3ThClduni2Nm0BMe2u0mXgTfd9pXrmJ07QBI+WAij5P/aPmPMX54HCE1seWL37ZdQ==
-
vue-codemirror@^6.1.1:
version "6.1.1"
resolved "https://registry.yarnpkg.com/vue-codemirror/-/vue-codemirror-6.1.1.tgz#246697ef4cfa6b2448dd592ade214bb7ff86611f"