@shahadpichen/docpush 1.0.11 → 1.0.13
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/react/components/markdown-viewer.d.ts.map +1 -1
- package/dist/react/components/markdown-viewer.js +6 -2
- package/dist/react/components/markdown-viewer.js.map +1 -1
- package/dist/server/routes/media.d.ts.map +1 -1
- package/dist/server/routes/media.js +41 -59
- package/dist/server/routes/media.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-viewer.d.ts","sourceRoot":"","sources":["../../../src/react/components/markdown-viewer.tsx"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"markdown-viewer.d.ts","sourceRoot":"","sources":["../../../src/react/components/markdown-viewer.tsx"],"names":[],"mappings":"AAKA,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAkCzE"}
|
|
@@ -41,7 +41,11 @@ const utils_1 = require("../lib/utils");
|
|
|
41
41
|
function MarkdownViewer({ content, className }) {
|
|
42
42
|
// Basic markdown rendering - users can override with react-markdown
|
|
43
43
|
const html = React.useMemo(() => {
|
|
44
|
-
return content
|
|
44
|
+
return (content
|
|
45
|
+
// Images: 
|
|
46
|
+
.replace(/!\[([^\]]*)\]\(([^)]+)\)/gim, '<img src="$2" alt="$1" class="max-w-full h-auto rounded-lg my-4" />')
|
|
47
|
+
// Links: [text](url)
|
|
48
|
+
.replace(/\[([^\]]+)\]\(([^)]+)\)/gim, '<a href="$2" class="text-primary underline">$1</a>')
|
|
45
49
|
.replace(/^### (.*$)/gim, '<h3 class="text-lg font-semibold mt-6 mb-2">$1</h3>')
|
|
46
50
|
.replace(/^## (.*$)/gim, '<h2 class="text-xl font-semibold mt-8 mb-3">$1</h2>')
|
|
47
51
|
.replace(/^# (.*$)/gim, '<h1 class="text-2xl font-bold mt-10 mb-4">$1</h1>')
|
|
@@ -51,7 +55,7 @@ function MarkdownViewer({ content, className }) {
|
|
|
51
55
|
.replace(/`([^`]+)`/gim, '<code class="bg-muted px-1.5 py-0.5 rounded text-sm">$1</code>')
|
|
52
56
|
.replace(/^\- (.*$)/gim, '<li class="ml-4">$1</li>')
|
|
53
57
|
.replace(/\n\n/gim, '</p><p class="my-4">')
|
|
54
|
-
.replace(/\n/gim, '<br>');
|
|
58
|
+
.replace(/\n/gim, '<br>'));
|
|
55
59
|
}, [content]);
|
|
56
60
|
return ((0, jsx_runtime_1.jsx)("article", { className: (0, utils_1.cn)('prose prose-neutral dark:prose-invert max-w-none p-6', className), dangerouslySetInnerHTML: { __html: `<p>${html}</p>` } }));
|
|
57
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-viewer.js","sourceRoot":"","sources":["../../../src/react/components/markdown-viewer.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUb,
|
|
1
|
+
{"version":3,"file":"markdown-viewer.js","sourceRoot":"","sources":["../../../src/react/components/markdown-viewer.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUb,wCAkCC;;AA1CD,6CAA+B;AAC/B,wCAAkC;AAOlC,SAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,SAAS,EAAuB;IACxE,oEAAoE;IACpE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,CACL,OAAO;YACL,sBAAsB;aACrB,OAAO,CACN,6BAA6B,EAC7B,qEAAqE,CACtE;YACD,qBAAqB;aACpB,OAAO,CAAC,4BAA4B,EAAE,oDAAoD,CAAC;aAC3F,OAAO,CAAC,eAAe,EAAE,qDAAqD,CAAC;aAC/E,OAAO,CAAC,cAAc,EAAE,qDAAqD,CAAC;aAC9E,OAAO,CAAC,aAAa,EAAE,mDAAmD,CAAC;aAC3E,OAAO,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;aAClD,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC;aACtC,OAAO,CACN,6BAA6B,EAC7B,iFAAiF,CAClF;aACA,OAAO,CAAC,cAAc,EAAE,gEAAgE,CAAC;aACzF,OAAO,CAAC,cAAc,EAAE,0BAA0B,CAAC;aACnD,OAAO,CAAC,SAAS,EAAE,sBAAsB,CAAC;aAC1C,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAC5B,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,oCACE,SAAS,EAAE,IAAA,UAAE,EAAC,sDAAsD,EAAE,SAAS,CAAC,EAChF,uBAAuB,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,MAAM,EAAE,GACrD,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/server/routes/media.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,4CAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/server/routes/media.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,4CAAmB,CAAC;AA+GhC,eAAe,MAAM,CAAC"}
|
|
@@ -15,68 +15,50 @@ const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5MB
|
|
|
15
15
|
/**
|
|
16
16
|
* POST /api/media
|
|
17
17
|
* Upload an image file to the repository
|
|
18
|
+
* Body should be raw binary image data
|
|
18
19
|
*/
|
|
19
|
-
router.post('/', auth_1.requireEdit, async (req, res, next) => {
|
|
20
|
+
router.post('/', express_1.default.raw({ type: ['image/*'], limit: MAX_FILE_SIZE }), auth_1.requireEdit, async (req, res, next) => {
|
|
20
21
|
try {
|
|
21
22
|
const config = req.config;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const filename = `${(0, node_crypto_1.randomUUID)().slice(0, 8)}${ext}`;
|
|
62
|
-
const filePath = `assets/${filename}`;
|
|
63
|
-
// Upload to GitHub
|
|
64
|
-
const github = new github_1.GitHubClient(process.env.GITHUB_TOKEN || '', config.github);
|
|
65
|
-
await github.uploadMedia(filePath, buffer, `Upload image: ${filename}`);
|
|
66
|
-
// Return the URL to access the image
|
|
67
|
-
res.status(201).json({
|
|
68
|
-
success: true,
|
|
69
|
-
path: filePath,
|
|
70
|
-
url: `/api/media/${filePath}`,
|
|
71
|
-
markdown: ``,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
next(error);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
req.on('error', (error) => {
|
|
79
|
-
next(error);
|
|
23
|
+
const buffer = req.body;
|
|
24
|
+
if (!buffer || buffer.length === 0) {
|
|
25
|
+
return res.status(400).json({ error: 'No image data received' });
|
|
26
|
+
}
|
|
27
|
+
// Get filename from header or generate one
|
|
28
|
+
const contentType = req.headers['content-type'] || 'image/png';
|
|
29
|
+
const originalName = req.headers['x-filename'];
|
|
30
|
+
let ext = '.png';
|
|
31
|
+
if (originalName) {
|
|
32
|
+
ext = node_path_1.default.extname(originalName).toLowerCase();
|
|
33
|
+
}
|
|
34
|
+
else if (contentType.includes('jpeg') || contentType.includes('jpg')) {
|
|
35
|
+
ext = '.jpg';
|
|
36
|
+
}
|
|
37
|
+
else if (contentType.includes('gif')) {
|
|
38
|
+
ext = '.gif';
|
|
39
|
+
}
|
|
40
|
+
else if (contentType.includes('webp')) {
|
|
41
|
+
ext = '.webp';
|
|
42
|
+
}
|
|
43
|
+
else if (contentType.includes('svg')) {
|
|
44
|
+
ext = '.svg';
|
|
45
|
+
}
|
|
46
|
+
// Validate extension
|
|
47
|
+
if (!ALLOWED_EXTENSIONS.includes(ext)) {
|
|
48
|
+
return res.status(400).json({ error: `File type ${ext} not allowed` });
|
|
49
|
+
}
|
|
50
|
+
// Generate unique filename
|
|
51
|
+
const filename = `${(0, node_crypto_1.randomUUID)().slice(0, 8)}${ext}`;
|
|
52
|
+
const filePath = `assets/${filename}`;
|
|
53
|
+
// Upload to GitHub
|
|
54
|
+
const github = new github_1.GitHubClient(process.env.GITHUB_TOKEN || '', config.github);
|
|
55
|
+
await github.uploadMedia(filePath, buffer, `Upload image: ${filename}`);
|
|
56
|
+
// Return the URL to access the image
|
|
57
|
+
res.status(201).json({
|
|
58
|
+
success: true,
|
|
59
|
+
path: filePath,
|
|
60
|
+
url: `/api/media/${filePath}`,
|
|
61
|
+
markdown: ``,
|
|
80
62
|
});
|
|
81
63
|
}
|
|
82
64
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/server/routes/media.ts"],"names":[],"mappings":";;;;;AAAA,6CAAyC;AACzC,0DAA6B;AAC7B,sDAA8B;AAE9B,8CAAiD;AACjD,6CAAiD;AAEjD,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,2BAA2B;AAC3B,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9E,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAE7C
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/server/routes/media.ts"],"names":[],"mappings":"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"}
|