@deot/docs-dever 1.1.0 → 1.1.1
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/index.cjs +17 -2
- package/dist/index.js +17 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -227,6 +227,12 @@ var decodeWorkspacePath = (requestUrl, urlPrefix) => {
|
|
|
227
227
|
return decoded;
|
|
228
228
|
};
|
|
229
229
|
var isPackageReadme = (relative) => /^[^/]+\/README\.md$/u.test(relative);
|
|
230
|
+
/**
|
|
231
|
+
* 传统 workspace 把语言放在第一段目录,例如 `zh-CN/guide.md`。
|
|
232
|
+
* `docs/`、`src/` 这类共享目录不能当成语言,否则 SSE identity 对不上 Client。
|
|
233
|
+
* @param value
|
|
234
|
+
*/
|
|
235
|
+
var isLocaleDirectory = (value) => /^[a-z]{2}(?:-[A-Za-z0-9]{2,8})*$/u.test(value);
|
|
230
236
|
var getContentType = (extension) => {
|
|
231
237
|
switch (extension) {
|
|
232
238
|
case ".md": return "text/markdown; charset=utf-8";
|
|
@@ -386,6 +392,8 @@ var configureEvents = (server, workspace, entry, packages, rootReadme) => {
|
|
|
386
392
|
res.setHeader("Content-Type", "text/event-stream");
|
|
387
393
|
res.setHeader("Cache-Control", "no-cache");
|
|
388
394
|
res.setHeader("Connection", "keep-alive");
|
|
395
|
+
res.setHeader("X-Accel-Buffering", "no");
|
|
396
|
+
res.flushHeaders?.();
|
|
389
397
|
res.write(": connected\n\n");
|
|
390
398
|
clients.add(res);
|
|
391
399
|
req.on("close", () => clients.delete(res));
|
|
@@ -430,11 +438,18 @@ var configureEvents = (server, workspace, entry, packages, rootReadme) => {
|
|
|
430
438
|
}
|
|
431
439
|
const [lang, ...segments] = relative.split("/");
|
|
432
440
|
if (!lang || !segments.length) return;
|
|
433
|
-
const
|
|
441
|
+
const resourceType = getResourceType(relative);
|
|
442
|
+
const payload = JSON.stringify(isLocaleDirectory(lang) ? {
|
|
434
443
|
type,
|
|
435
444
|
lang,
|
|
436
445
|
source: `./${segments.join("/")}`,
|
|
437
|
-
resourceType
|
|
446
|
+
resourceType,
|
|
447
|
+
timestamp: Date.now()
|
|
448
|
+
} : {
|
|
449
|
+
type,
|
|
450
|
+
lang: "",
|
|
451
|
+
source: relative,
|
|
452
|
+
resourceType,
|
|
438
453
|
timestamp: Date.now()
|
|
439
454
|
});
|
|
440
455
|
clients.forEach((client) => client.write(`data: ${payload}\n\n`));
|
package/dist/index.js
CHANGED
|
@@ -198,6 +198,12 @@ var decodeWorkspacePath = (requestUrl, urlPrefix) => {
|
|
|
198
198
|
return decoded;
|
|
199
199
|
};
|
|
200
200
|
var isPackageReadme = (relative) => /^[^/]+\/README\.md$/u.test(relative);
|
|
201
|
+
/**
|
|
202
|
+
* 传统 workspace 把语言放在第一段目录,例如 `zh-CN/guide.md`。
|
|
203
|
+
* `docs/`、`src/` 这类共享目录不能当成语言,否则 SSE identity 对不上 Client。
|
|
204
|
+
* @param value
|
|
205
|
+
*/
|
|
206
|
+
var isLocaleDirectory = (value) => /^[a-z]{2}(?:-[A-Za-z0-9]{2,8})*$/u.test(value);
|
|
201
207
|
var getContentType = (extension) => {
|
|
202
208
|
switch (extension) {
|
|
203
209
|
case ".md": return "text/markdown; charset=utf-8";
|
|
@@ -357,6 +363,8 @@ var configureEvents = (server, workspace, entry, packages, rootReadme) => {
|
|
|
357
363
|
res.setHeader("Content-Type", "text/event-stream");
|
|
358
364
|
res.setHeader("Cache-Control", "no-cache");
|
|
359
365
|
res.setHeader("Connection", "keep-alive");
|
|
366
|
+
res.setHeader("X-Accel-Buffering", "no");
|
|
367
|
+
res.flushHeaders?.();
|
|
360
368
|
res.write(": connected\n\n");
|
|
361
369
|
clients.add(res);
|
|
362
370
|
req.on("close", () => clients.delete(res));
|
|
@@ -401,11 +409,18 @@ var configureEvents = (server, workspace, entry, packages, rootReadme) => {
|
|
|
401
409
|
}
|
|
402
410
|
const [lang, ...segments] = relative.split("/");
|
|
403
411
|
if (!lang || !segments.length) return;
|
|
404
|
-
const
|
|
412
|
+
const resourceType = getResourceType(relative);
|
|
413
|
+
const payload = JSON.stringify(isLocaleDirectory(lang) ? {
|
|
405
414
|
type,
|
|
406
415
|
lang,
|
|
407
416
|
source: `./${segments.join("/")}`,
|
|
408
|
-
resourceType
|
|
417
|
+
resourceType,
|
|
418
|
+
timestamp: Date.now()
|
|
419
|
+
} : {
|
|
420
|
+
type,
|
|
421
|
+
lang: "",
|
|
422
|
+
source: relative,
|
|
423
|
+
resourceType,
|
|
409
424
|
timestamp: Date.now()
|
|
410
425
|
});
|
|
411
426
|
clients.forEach((client) => client.write(`data: ${payload}\n\n`));
|