refactor: 优化代码结构和类型定义
feat(types): 添加express.d.ts类型引用 style: 格式化express.d.ts中的接口定义 refactor: 移除未使用的AntFC类型导入 chore: 删除自动生成的.umi-production文件 feat: 添加店铺管理相关表和初始化脚本 docs: 更新安全规则和交互指南文档 refactor: 统一使用FC类型替代React.FC perf: 优化图表组件导入方式 style: 添加.prettierrc配置文件 refactor: 调整组件导入顺序和结构 feat: 添加平台库存管理路由 fix: 修复订单同步时的库存检查逻辑 docs: 更新RBAC设计和租户管理文档 refactor: 优化部门控制器代码
This commit is contained in:
185
dashboard/public/mockServiceWorker.js
Normal file
185
dashboard/public/mockServiceWorker.js
Normal file
@@ -0,0 +1,185 @@
|
||||
/* eslint-disable */
|
||||
/* tslint:disable */
|
||||
|
||||
/**
|
||||
* Mock Service Worker
|
||||
* @see https://mswjs.io
|
||||
* - Please do NOT modify this file
|
||||
* - Please do NOT serve this file on production
|
||||
*/
|
||||
|
||||
const INTEGRITY_CHECKSUM = '7299013926a002954d549491a3946622';
|
||||
const bypassHeaderName = 'x-msw-bypass';
|
||||
|
||||
let clients = new Set();
|
||||
let workerId = Math.random().toString(36).substring(2, 15);
|
||||
|
||||
self.addEventListener('install', function () {
|
||||
return self.skipWaiting();
|
||||
});
|
||||
|
||||
self.addEventListener('activate', function (event) {
|
||||
return event.waitUntil(self.clients.claim());
|
||||
});
|
||||
|
||||
self.addEventListener('message', async function (event) {
|
||||
const clientId = event.source.id;
|
||||
const client = await self.clients.get(clientId);
|
||||
|
||||
if (!client) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event.data.type) {
|
||||
case 'KEEPALIVE_REQUEST': {
|
||||
sendToClient(client, {
|
||||
type: 'KEEPALIVE_RESPONSE',
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
case 'INTEGRITY_CHECK_REQUEST': {
|
||||
sendToClient(client, {
|
||||
type: 'INTEGRITY_CHECK_RESPONSE',
|
||||
payload: {
|
||||
checksum: INTEGRITY_CHECKSUM,
|
||||
},
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
case 'MOCK_ACTIVATE': {
|
||||
clients.add(clientId);
|
||||
|
||||
sendToClient(client, {
|
||||
type: 'MOCKING_ENABLED',
|
||||
payload: {
|
||||
workerId,
|
||||
},
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
case 'MOCK_DEACTIVATE': {
|
||||
clients.delete(clientId);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
self.addEventListener('fetch', function (event) {
|
||||
const request = event.request;
|
||||
const requestUrl = new URL(request.url);
|
||||
|
||||
// Bypass navigation requests.
|
||||
if (request.mode === 'navigate') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Bypass requests with the bypass header.
|
||||
if (request.headers.get(bypassHeaderName) === 'true') {
|
||||
const modifiedHeaders = new Headers(request.headers);
|
||||
modifiedHeaders.delete(bypassHeaderName);
|
||||
|
||||
return event.respondWith(
|
||||
fetch(request.url, {
|
||||
...request,
|
||||
headers: modifiedHeaders,
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
// Bypass non-GET requests when not in the workers list.
|
||||
if (request.method !== 'GET' && !clients.has(event.clientId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Bypass requests to non-relative URLs.
|
||||
if (requestUrl.origin !== location.origin) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.respondWith(
|
||||
handleRequest(event)
|
||||
.catch((error) => {
|
||||
console.error('[MSW] Failed to handle request:', error);
|
||||
return fetch(request);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
async function handleRequest(event) {
|
||||
const client = await self.clients.get(event.clientId);
|
||||
|
||||
if (!client) {
|
||||
return fetch(event.request);
|
||||
}
|
||||
|
||||
const response = await sendToClient(client, {
|
||||
type: 'REQUEST',
|
||||
payload: {
|
||||
id: Math.random().toString(36).substring(2, 15),
|
||||
url: event.request.url,
|
||||
method: event.request.method,
|
||||
headers: Object.fromEntries(event.request.headers.entries()),
|
||||
cache: event.request.cache,
|
||||
mode: event.request.mode,
|
||||
credentials: event.request.credentials,
|
||||
destination: event.request.destination,
|
||||
integrity: event.request.integrity,
|
||||
keepalive: event.request.keepalive,
|
||||
referrer: event.request.referrer,
|
||||
referrerPolicy: event.request.referrerPolicy,
|
||||
body: await getRequestBody(event.request),
|
||||
bodyUsed: event.request.bodyUsed,
|
||||
redirect: event.request.redirect,
|
||||
referrerPolicy: event.request.referrerPolicy,
|
||||
signal: event.request.signal,
|
||||
url: event.request.url,
|
||||
method: event.request.method,
|
||||
},
|
||||
});
|
||||
|
||||
if (!response) {
|
||||
return fetch(event.request);
|
||||
}
|
||||
|
||||
return new Response(response.body, {
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
headers: response.headers,
|
||||
});
|
||||
}
|
||||
|
||||
function getRequestBody(request) {
|
||||
const contentType = request.headers.get('content-type');
|
||||
|
||||
if (contentType && contentType.includes('application/json')) {
|
||||
return request.clone().json();
|
||||
}
|
||||
|
||||
if (contentType && contentType.includes('application/x-www-form-urlencoded')) {
|
||||
return request.clone().formData();
|
||||
}
|
||||
|
||||
return request.clone().text();
|
||||
}
|
||||
|
||||
function sendToClient(client, message) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const channel = new MessageChannel();
|
||||
|
||||
channel.port1.onmessage = (event) => {
|
||||
if (event.data.error) {
|
||||
reject(event.data.error);
|
||||
} else {
|
||||
resolve(event.data);
|
||||
}
|
||||
};
|
||||
|
||||
client.postMessage(message, [channel.port2]);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user