Skip to content

Commit ff6d4a4

Browse files
committed
fix(transform): 适配 SubStore upstream 源码结构变更
1 parent b7fcadd commit ff6d4a4

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

vite.substore-transform.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,9 @@ function __emitDone__(requestId, response) {
151151
context.done(response);
152152
return;
153153
}
154-
if (typeof globalThis.$done === 'function') {
155-
globalThis.$done(response);
154+
const fallbackDone = globalThis.$done;
155+
if (typeof fallbackDone === 'function') {
156+
fallbackDone(response);
156157
}
157158
}`,
158159
);
@@ -163,15 +164,19 @@ function __emitDone__(requestId, response) {
163164
);
164165
contents = contents.replace(
165166
'const res = Response();',
166-
'const res = Response(req.__requestId);',
167+
'const res = Response({}, request.__requestId);',
168+
);
169+
contents = contents.replaceAll(
170+
'const res = Response(cors.headers);',
171+
'const res = Response(cors.headers, request.__requestId);',
167172
);
168173
contents = contents.replace(
169174
/dispatch\s*\(\s*method\s*,\s*url\s*,\s*i\s*\)\s*;/g,
170175
'dispatch(request, i + 1);',
171176
);
172177
contents = contents.replace(
173-
'function Response() {',
174-
'function Response(requestId) {',
178+
'function Response(corsHeaders = {}) {',
179+
'function Response(corsHeaders = {}, requestId) {',
175180
);
176181
contents = contents.replace(
177182
'$done(response);',
@@ -204,6 +209,12 @@ function __emitDone__(requestId, response) {
204209
if (!contents.includes('dispatch(request, i + 1);')) {
205210
this.error('[sub-store-transform] express.js next() 补丁自检失败:仍可能把 method/url 当作 request 重新分发');
206211
}
212+
if (!contents.includes('function Response(corsHeaders = {}, requestId) {')) {
213+
this.error('[sub-store-transform] express.js Response 补丁自检失败:requestId 未绑定到 Response');
214+
}
215+
if (!contents.includes('Response(cors.headers, request.__requestId)')) {
216+
this.error('[sub-store-transform] express.js Response 补丁自检失败:cors 响应未绑定 requestId');
217+
}
207218
} else {
208219
this.error('[sub-store-transform] express.js 补丁未应用:未命中 app.start/dispatch($request) 片段');
209220
}
@@ -292,7 +303,7 @@ const tasks = {
292303
const before = contents.slice(0, startIdx);
293304
const chunk = contents.slice(startIdx, endIdx);
294305
const after = contents.slice(endIdx);
295-
const requiredNeedles = ['tasks.has(id)', 'tasks.set(id, result)', 'const id = hex_md5('];
306+
const requiredNeedles = ['tasks.has(id)', 'tasks.set(id, rawResult)', 'const id = hex_md5('];
296307
const missing = requiredNeedles.filter((n) => !chunk.includes(n));
297308
if (missing.length > 0) {
298309
this.error(`[sub-store-transform] download.js 结构已变化,补丁未应用:缺少关键片段: ${missing.join(', ')}`);

0 commit comments

Comments
 (0)