wormclaude 1.0.235 → 1.0.237
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clone-render.js +19 -2
- package/dist/clone.js +29 -0
- package/dist/theme.js +1 -1
- package/package.json +1 -1
package/dist/clone-render.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// puppeteer-core kullanır (Chromium İNDİRMEZ) → sistemde kurulu Chrome/Edge'i çalıştırır.
|
|
5
5
|
import fs from 'node:fs';
|
|
6
6
|
import path from 'node:path';
|
|
7
|
-
import { pageFile, assetFile, relHref, ASSET_EXT, PAGE_EXT } from './clone.js';
|
|
7
|
+
import { pageFile, assetFile, relHref, mirrorRootAssets, ASSET_EXT, PAGE_EXT } from './clone.js';
|
|
8
8
|
// Sistemde kurulu Chrome/Edge'i bul (puppeteer kendi Chromium'unu indirmesin)
|
|
9
9
|
export function findChrome() {
|
|
10
10
|
const win = [
|
|
@@ -168,7 +168,23 @@ export async function cloneSiteRendered(startUrl, outDir, opts = {}) {
|
|
|
168
168
|
continue;
|
|
169
169
|
}
|
|
170
170
|
const bare = abs.href.replace(/#.*$/, '');
|
|
171
|
-
|
|
171
|
+
let local = assetMap.get(bare) || pageMap.get(bare);
|
|
172
|
+
// HTML'de referans EDİLEN ama network'te yakalanmayan same-origin asset'leri açıkça indir.
|
|
173
|
+
// (Örn. polyfills `nomodule` script'ini modern headless Chrome yüklemez → yakalanmaz → 404.)
|
|
174
|
+
if (!local && abs.host === host && (ASSET_EXT.test(abs.pathname) || abs.pathname.includes('/_next/'))) {
|
|
175
|
+
try {
|
|
176
|
+
const resp = await fetch(bare);
|
|
177
|
+
if (resp.ok) {
|
|
178
|
+
const buf = Buffer.from(await resp.arrayBuffer());
|
|
179
|
+
const dest = assetFile(abs, assetsDir);
|
|
180
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
181
|
+
fs.writeFileSync(dest, buf);
|
|
182
|
+
assetMap.set(bare, dest);
|
|
183
|
+
local = dest;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch { /* yoksay */ }
|
|
187
|
+
}
|
|
172
188
|
if (local) {
|
|
173
189
|
const rel = relHref(pg.file, local);
|
|
174
190
|
html = html.split(`"${ref}"`).join(`"${rel}"`).split(`'${ref}'`).join(`'${rel}'`);
|
|
@@ -177,5 +193,6 @@ export async function cloneSiteRendered(startUrl, outDir, opts = {}) {
|
|
|
177
193
|
fs.mkdirSync(path.dirname(pg.file), { recursive: true });
|
|
178
194
|
fs.writeFileSync(pg.file, html);
|
|
179
195
|
}
|
|
196
|
+
mirrorRootAssets(root); // /_next/ vb. kök-mutlak yollar statik sunucuda çözülsün (SPA çalışsın)
|
|
180
197
|
return { pages: rendered.length, assets: assetMap.size, outDir: root, pageFiles: rendered.map((p) => p.file), errors: errors.slice(0, 30) };
|
|
181
198
|
}
|
package/dist/clone.js
CHANGED
|
@@ -31,6 +31,34 @@ export function assetFile(u, assetsDir) {
|
|
|
31
31
|
rel += '.bin';
|
|
32
32
|
return path.join(assetsDir, rel);
|
|
33
33
|
}
|
|
34
|
+
// Next.js/Nuxt/Vite/Astro SPA'ların JS RUNTIME'ı chunk'ları /_next/ gibi KÖK-MUTLAK yoldan yükler;
|
|
35
|
+
// statik HTML rewrite bunu düzeltemez (yol JS'in içinde). Kök-mutlak asset dizinlerini _assets/<host>/'tan
|
|
36
|
+
// klon KÖKÜNE aynala → statik sunucuda /_next/... kökten çözülür, SPA çalışır (yoksa "client-side exception").
|
|
37
|
+
export function mirrorRootAssets(root) {
|
|
38
|
+
const assetsDir = path.join(root, '_assets');
|
|
39
|
+
let hostDirs = [];
|
|
40
|
+
try {
|
|
41
|
+
hostDirs = fs.readdirSync(assetsDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
for (const dir of ['_next', '_nuxt', '_astro', 'assets']) {
|
|
47
|
+
const dst = path.join(root, dir);
|
|
48
|
+
if (fs.existsSync(dst))
|
|
49
|
+
continue;
|
|
50
|
+
for (const h of hostDirs) {
|
|
51
|
+
const src = path.join(assetsDir, h, dir);
|
|
52
|
+
try {
|
|
53
|
+
if (fs.existsSync(src) && fs.statSync(src).isDirectory()) {
|
|
54
|
+
fs.cpSync(src, dst, { recursive: true });
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch { }
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
34
62
|
export function relHref(fromFile, toFile) {
|
|
35
63
|
let r = path.relative(path.dirname(fromFile), toFile).replace(/\\/g, '/');
|
|
36
64
|
if (!r.startsWith('.'))
|
|
@@ -184,5 +212,6 @@ export async function cloneSite(startUrl, outDir, opts = {}) {
|
|
|
184
212
|
fs.mkdirSync(path.dirname(pg.file), { recursive: true });
|
|
185
213
|
fs.writeFileSync(pg.file, html);
|
|
186
214
|
}
|
|
215
|
+
mirrorRootAssets(root); // /_next/ vb. kök-mutlak yollar statik sunucuda çözülsün (SPA çalışsın)
|
|
187
216
|
return { pages: rawPages.length, assets: [...assetCache.values()].filter(Boolean).length, outDir: root, pageFiles: rawPages.map((p) => p.file), errors: errors.slice(0, 30) };
|
|
188
217
|
}
|
package/dist/theme.js
CHANGED