mdts 0.4.4 → 0.4.5

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.
@@ -1,5 +1,5 @@
1
1
  <h1 align="center">
2
- <img src="./logo.svg" alt="mdts" width="400">
2
+ <img src="/logo.svg" alt="mdts" width="400">
3
3
  </h1>
4
4
 
5
5
  mdts (Markdown Tree Server) is a simple and efficient tool for serving and viewing markdown files with an interactive file tree and outline. It's designed to help you navigate and read your markdown-based documentation or notes with ease.
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
36
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
37
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -15,7 +48,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
48
  exports.createApp = exports.serve = void 0;
16
49
  const chokidar_1 = __importDefault(require("chokidar"));
17
50
  const express_1 = __importDefault(require("express"));
18
- const fs_1 = require("fs");
51
+ const fs = __importStar(require("fs"));
19
52
  const path_1 = __importDefault(require("path"));
20
53
  const ws_1 = require("ws");
21
54
  const filetree_1 = require("./routes/filetree");
@@ -25,7 +58,7 @@ const serve = (directory, port) => {
25
58
  const server = app.listen(port, () => {
26
59
  console.log(`🚀 Server listening at http://localhost:${port}`);
27
60
  });
28
- setupWatcher(directory, server);
61
+ setupWatcher(directory, server, port);
29
62
  return server;
30
63
  };
31
64
  exports.serve = serve;
@@ -47,7 +80,7 @@ const createApp = (directory, currentLocation = __dirname) => {
47
80
  const filePath = path_1.default.join(directory, req.path);
48
81
  let isDirectory = false;
49
82
  try {
50
- const stats = yield fs_1.promises.stat(filePath);
83
+ const stats = fs.statSync(filePath);
51
84
  isDirectory = stats.isDirectory();
52
85
  }
53
86
  catch (_a) {
@@ -65,26 +98,43 @@ const createApp = (directory, currentLocation = __dirname) => {
65
98
  return app;
66
99
  };
67
100
  exports.createApp = createApp;
68
- const setupWatcher = (directory, server) => {
101
+ const setupWatcher = (directory, server, port) => {
69
102
  const wss = new ws_1.WebSocketServer({ server });
103
+ wss.on('listening', () => {
104
+ console.log(`🚀 WebSocket server listening at ws://localhost:${port}`);
105
+ });
106
+ wss.on('connection', () => {
107
+ console.log('🤝 Livereload Client connected');
108
+ wss.on('close', () => {
109
+ console.log('👋 Livereload Client closed');
110
+ });
111
+ wss.on('wsClientError', (e) => {
112
+ console.error('🚫 Error on WebSocket server:', e);
113
+ });
114
+ wss.on('error', (e) => {
115
+ console.error('🚫 Error on WebSocket server:', e);
116
+ });
117
+ });
70
118
  const isMarkdownOrSimpleAsset = (filePath) => {
71
119
  const ext = filePath.toLowerCase().split('.').pop();
72
- return (ext &&
73
- (ext === 'md' ||
74
- ext === 'markdown' ||
75
- ext === 'png' ||
76
- ext === 'jpg' ||
77
- ext === 'jpeg' ||
78
- ext === 'gif' ||
79
- ext === 'svg'));
120
+ return ext && (ext === 'md' || ext === 'markdown');
80
121
  };
81
- let watcher;
122
+ let watcher = null;
82
123
  try {
83
124
  watcher = chokidar_1.default.watch(directory, {
84
125
  ignored: (watchedFilePath) => {
85
126
  if (watchedFilePath.includes('node_modules')) {
86
127
  return true;
87
128
  }
129
+ try {
130
+ if (fs.statSync(watchedFilePath).isDirectory()) {
131
+ return false; // Don't ignore directories
132
+ }
133
+ }
134
+ catch (_a) {
135
+ // On error (e.g., file not found), let chokidar handle it
136
+ return false;
137
+ }
88
138
  return !isMarkdownOrSimpleAsset(watchedFilePath);
89
139
  },
90
140
  ignoreInitial: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mdts",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "description": "A markdown preview server.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",