@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 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 payload = JSON.stringify({
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: getResourceType(relative),
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 payload = JSON.stringify({
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: getResourceType(relative),
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`));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deot/docs-dever",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",