Skip to content

Commit 7d85856

Browse files
cyfung1031CodFrm
andauthored
🐛 修复类型错误 (#975)
* 1.3 bug fix * 构建前添加类型检查 * 移动类型检查 * 修复类型错误 --------- Co-authored-by: 王一之 <[email protected]>
1 parent 7d4eeb4 commit 7d85856

File tree

7 files changed

+39
-15
lines changed

7 files changed

+39
-15
lines changed

.github/workflows/test.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ jobs:
2727
run: pnpm i --frozen-lockfile
2828

2929
- name: Lint
30-
run: pnpm run lint
30+
run: |
31+
pnpm run typecheck
32+
pnpm run lint
3133
3234
- name: Unit Test
3335
run: |

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"preinstall": "pnpm dlx only-allow pnpm",
1010
"test": "vitest --test-timeout=500 --no-coverage --isolate=false --reporter=verbose",
1111
"coverage": "vitest run --coverage",
12+
"typecheck": "tsc --noEmit",
1213
"build": "cross-env NODE_ENV=production rspack build",
1314
"dev": "cross-env NODE_ENV=development rspack",
1415
"dev:noMap": "cross-env NODE_ENV=development NO_MAP=true rspack",

src/pages/install/App.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ function App() {
6161

6262
const installOrUpdateScript = async (newScript: Script, code: string) => {
6363
if (newScript.ignoreVersion) newScript.ignoreVersion = "";
64-
await scriptClient.install({ details: newScript, code });
64+
await scriptClient.install({ script: newScript, code });
6565
const metadata = newScript.metadata;
6666
setScriptInfo((prev) => (prev ? { ...prev, code, metadata } : prev));
6767
setOldScriptVersion(metadata!.version![0]);
@@ -314,7 +314,7 @@ function App() {
314314
(upsertScript as Script).checkUpdate = false;
315315
}
316316
// 故意只安装或执行,不改变显示内容
317-
await scriptClient.install({ details: upsertScript as Script, code: scriptCode });
317+
await scriptClient.install({ script: upsertScript as Script, code: scriptCode });
318318
if (isUpdate) {
319319
Message.success(t("install.update_success")!);
320320
setBtnText(t("install.update_success")!);
@@ -326,7 +326,7 @@ function App() {
326326
}
327327
if ((upsertScript as Script).ignoreVersion) (upsertScript as Script).ignoreVersion = "";
328328
// 故意只安装或执行,不改变显示内容
329-
await scriptClient.install({ details: upsertScript as Script, code: scriptCode });
329+
await scriptClient.install({ script: upsertScript as Script, code: scriptCode });
330330
if (isUpdate) {
331331
Message.success(t("install.update_success")!);
332332
setBtnText(t("install.update_success")!);

src/pkg/utils/yaml.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export function parseUserConfig(code: string): UserConfig | undefined {
2525
throw new Error(`UserConfig group "${groupKey}" is not a valid object.`);
2626
}
2727

28+
//@ts-ignore
2829
ret[groupKey] = groupValue;
2930

3031
if (groupKey === "#options") {

tests/mocks/fetch.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,5 @@ export const mockFetch = vi.fn(async (input: RequestInfo | URL, init?: RequestIn
2727
setNetworkRequestCounter(input);
2828
}
2929

30-
// @ts-expect-error
3130
return ret;
3231
});

tests/mocks/request.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ export class MockRequest implements Request {
1717
readonly destination: RequestDestination = "";
1818
readonly isHistoryNavigation: boolean = false;
1919
readonly isReloadNavigation: boolean = false;
20-
// @ts-expect-error
21-
readonly body: ReadableStream<Uint8Array> | null;
20+
readonly body: ReadableStream<Uint8Array<ArrayBuffer>> | null;
2221
#bytes: Uint8Array | null;
2322

2423
constructor(input: RequestInfo | URL, init?: RequestInit) {
@@ -62,9 +61,12 @@ export class MockRequest implements Request {
6261
}
6362

6463
this.body = this.#bytes
65-
? new ReadableStream<Uint8Array>({
64+
? new ReadableStream<Uint8Array<ArrayBuffer>>({
6665
start: (controller) => {
67-
controller.enqueue(this.#bytes!);
66+
const buffer = new ArrayBuffer(this.#bytes!.byteLength);
67+
const view = new Uint8Array(buffer);
68+
view.set(this.#bytes!);
69+
controller.enqueue(view);
6870
controller.close();
6971
},
7072
pull: () => {
@@ -124,9 +126,18 @@ export class MockRequest implements Request {
124126
return this.#bytes ? new TextDecoder().decode(this.#bytes) : "";
125127
}
126128

129+
async bytes(): Promise<Uint8Array<ArrayBuffer>> {
130+
if (this.bodyUsed) throw new TypeError("Body already consumed");
131+
(this as any).bodyUsed = true;
132+
if (!this.#bytes) return new Uint8Array(new ArrayBuffer(0));
133+
const buffer = new ArrayBuffer(this.#bytes.byteLength);
134+
const view = new Uint8Array(buffer);
135+
view.set(this.#bytes);
136+
return view;
137+
}
138+
127139
clone(): Request {
128140
if (this.bodyUsed) throw new TypeError("Cannot clone: Body already consumed");
129-
// @ts-expect-error
130141
return new MockRequest(this, {
131142
method: this.method,
132143
headers: this.headers,

tests/mocks/response.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ export class MockResponse implements Response {
1818
readonly redirected: boolean = false;
1919
readonly type: ResponseType = "basic";
2020
readonly headers: Headers;
21-
// @ts-expect-error
22-
readonly body: ReadableStream<Uint8Array> | null;
21+
readonly body: ReadableStream<Uint8Array<ArrayBuffer>> | null;
2322
bodyUsed: boolean = false;
2423
#bytes: Uint8Array;
2524

@@ -50,9 +49,12 @@ export class MockResponse implements Response {
5049
this.url = init?.url ?? "";
5150

5251
this.body = this.#bytes.length
53-
? new ReadableStream<Uint8Array>({
52+
? new ReadableStream<Uint8Array<ArrayBuffer>>({
5453
start: (controller) => {
55-
controller.enqueue(this.#bytes);
54+
const buffer = new ArrayBuffer(this.#bytes.byteLength);
55+
const view = new Uint8Array(buffer);
56+
view.set(this.#bytes);
57+
controller.enqueue(view);
5658
controller.close();
5759
},
5860
pull: () => {
@@ -112,9 +114,17 @@ export class MockResponse implements Response {
112114
return new TextDecoder().decode(this.#bytes);
113115
}
114116

117+
async bytes(): Promise<Uint8Array<ArrayBuffer>> {
118+
if (this.bodyUsed) throw new TypeError("Body already consumed");
119+
(this as any).bodyUsed = true;
120+
const buffer = new ArrayBuffer(this.#bytes.byteLength);
121+
const view = new Uint8Array(buffer);
122+
view.set(this.#bytes);
123+
return view;
124+
}
125+
115126
clone(): Response {
116127
if (this.bodyUsed) throw new TypeError("Cannot clone: Body already consumed");
117-
// @ts-expect-error
118128
return new MockResponse(this.#bytes.slice(), {
119129
status: this.status,
120130
statusText: this.statusText,

0 commit comments

Comments
 (0)