marhup 0.1.7

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.
Files changed (94) hide show
  1. package/README.md +377 -0
  2. package/dist/cli.d.ts +6 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +99 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/generator/code.d.ts +17 -0
  7. package/dist/generator/code.d.ts.map +1 -0
  8. package/dist/generator/code.js +36 -0
  9. package/dist/generator/code.js.map +1 -0
  10. package/dist/generator/image.d.ts +17 -0
  11. package/dist/generator/image.d.ts.map +1 -0
  12. package/dist/generator/image.js +186 -0
  13. package/dist/generator/image.js.map +1 -0
  14. package/dist/generator/index.d.ts +11 -0
  15. package/dist/generator/index.d.ts.map +1 -0
  16. package/dist/generator/index.js +22 -0
  17. package/dist/generator/index.js.map +1 -0
  18. package/dist/generator/list.d.ts +17 -0
  19. package/dist/generator/list.d.ts.map +1 -0
  20. package/dist/generator/list.js +33 -0
  21. package/dist/generator/list.js.map +1 -0
  22. package/dist/generator/mermaid.d.ts +17 -0
  23. package/dist/generator/mermaid.d.ts.map +1 -0
  24. package/dist/generator/mermaid.js +192 -0
  25. package/dist/generator/mermaid.js.map +1 -0
  26. package/dist/generator/pptx.d.ts +9 -0
  27. package/dist/generator/pptx.d.ts.map +1 -0
  28. package/dist/generator/pptx.js +90 -0
  29. package/dist/generator/pptx.js.map +1 -0
  30. package/dist/generator/table.d.ts +17 -0
  31. package/dist/generator/table.d.ts.map +1 -0
  32. package/dist/generator/table.js +48 -0
  33. package/dist/generator/table.js.map +1 -0
  34. package/dist/generator/text.d.ts +21 -0
  35. package/dist/generator/text.d.ts.map +1 -0
  36. package/dist/generator/text.js +57 -0
  37. package/dist/generator/text.js.map +1 -0
  38. package/dist/index.d.ts +20 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +73 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/layout/auto.d.ts +30 -0
  43. package/dist/layout/auto.d.ts.map +1 -0
  44. package/dist/layout/auto.js +155 -0
  45. package/dist/layout/auto.js.map +1 -0
  46. package/dist/layout/engine.d.ts +27 -0
  47. package/dist/layout/engine.d.ts.map +1 -0
  48. package/dist/layout/engine.js +59 -0
  49. package/dist/layout/engine.js.map +1 -0
  50. package/dist/layout/index.d.ts +7 -0
  51. package/dist/layout/index.d.ts.map +1 -0
  52. package/dist/layout/index.js +14 -0
  53. package/dist/layout/index.js.map +1 -0
  54. package/dist/layout/types.d.ts +22 -0
  55. package/dist/layout/types.d.ts.map +1 -0
  56. package/dist/layout/types.js +6 -0
  57. package/dist/layout/types.js.map +1 -0
  58. package/dist/mcp-handlers.d.ts +33 -0
  59. package/dist/mcp-handlers.d.ts.map +1 -0
  60. package/dist/mcp-handlers.js +280 -0
  61. package/dist/mcp-handlers.js.map +1 -0
  62. package/dist/mcp.d.ts +7 -0
  63. package/dist/mcp.d.ts.map +1 -0
  64. package/dist/mcp.js +44 -0
  65. package/dist/mcp.js.map +1 -0
  66. package/dist/parser/frontmatter.d.ts +19 -0
  67. package/dist/parser/frontmatter.d.ts.map +1 -0
  68. package/dist/parser/frontmatter.js +51 -0
  69. package/dist/parser/frontmatter.js.map +1 -0
  70. package/dist/parser/grid.d.ts +36 -0
  71. package/dist/parser/grid.d.ts.map +1 -0
  72. package/dist/parser/grid.js +92 -0
  73. package/dist/parser/grid.js.map +1 -0
  74. package/dist/parser/index.d.ts +7 -0
  75. package/dist/parser/index.d.ts.map +1 -0
  76. package/dist/parser/index.js +17 -0
  77. package/dist/parser/index.js.map +1 -0
  78. package/dist/parser/markdown.d.ts +9 -0
  79. package/dist/parser/markdown.d.ts.map +1 -0
  80. package/dist/parser/markdown.js +296 -0
  81. package/dist/parser/markdown.js.map +1 -0
  82. package/dist/theme/default.d.ts +11 -0
  83. package/dist/theme/default.d.ts.map +1 -0
  84. package/dist/theme/default.js +76 -0
  85. package/dist/theme/default.js.map +1 -0
  86. package/dist/theme/index.d.ts +5 -0
  87. package/dist/theme/index.d.ts.map +1 -0
  88. package/dist/theme/index.js +11 -0
  89. package/dist/theme/index.js.map +1 -0
  90. package/dist/types/index.d.ts +86 -0
  91. package/dist/types/index.d.ts.map +1 -0
  92. package/dist/types/index.js +23 -0
  93. package/dist/types/index.js.map +1 -0
  94. package/package.json +66 -0
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ /**
3
+ * Markdownパーサー
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseMarkdown = parseMarkdown;
7
+ const marked_1 = require("marked");
8
+ const frontmatter_1 = require("./frontmatter");
9
+ const grid_1 = require("./grid");
10
+ /**
11
+ * Markdownをパースしてドキュメント構造に変換
12
+ */
13
+ function parseMarkdown(markdown) {
14
+ // グローバルFront Matterを抽出
15
+ const { frontmatter: globalFrontmatter, body } = (0, frontmatter_1.parseFrontmatter)(markdown);
16
+ // スライド区切りで分割
17
+ const slideContents = splitSlides(body);
18
+ // 各スライドをパース
19
+ const slides = slideContents.map((content) => parseSlide(content));
20
+ return {
21
+ globalFrontmatter,
22
+ slides,
23
+ };
24
+ }
25
+ /**
26
+ * スライド区切り(---)で分割
27
+ */
28
+ function splitSlides(content) {
29
+ // 改行 + --- + 改行 をスライド区切りとして扱う
30
+ // ただしFront Matterは除外する
31
+ const slideDelimiter = /\n---\s*\n/;
32
+ return content.split(slideDelimiter).filter((s) => s.trim().length > 0);
33
+ }
34
+ /**
35
+ * 1スライド分のコンテンツをパース
36
+ */
37
+ function parseSlide(content) {
38
+ // スライド個別のFront Matterがあれば抽出
39
+ const { frontmatter, body } = (0, frontmatter_1.parseFrontmatter)(content);
40
+ // 要素をパース
41
+ const elements = parseSlideElements(body);
42
+ return {
43
+ frontmatter,
44
+ elements,
45
+ };
46
+ }
47
+ /**
48
+ * スライド内の要素をパース
49
+ */
50
+ function parseSlideElements(content) {
51
+ const elements = [];
52
+ const lines = content.split('\n');
53
+ let currentBlock = null;
54
+ let nonBlockLines = [];
55
+ const flushNonBlockLines = () => {
56
+ if (nonBlockLines.length > 0) {
57
+ const blockContent = nonBlockLines.join('\n');
58
+ if (blockContent.trim()) {
59
+ const blockElements = parseBlockContent(blockContent, undefined, undefined);
60
+ elements.push(...blockElements);
61
+ }
62
+ nonBlockLines = [];
63
+ }
64
+ };
65
+ for (let i = 0; i < lines.length; i++) {
66
+ const line = lines[i];
67
+ // グリッドブロックの開始をチェック
68
+ const { isGridBlock, position, style } = (0, grid_1.parseBlockGridLine)(line);
69
+ if (isGridBlock) {
70
+ // 前のノンブロック行があれば処理
71
+ flushNonBlockLines();
72
+ // 前のグリッドブロックがあれば処理
73
+ if (currentBlock && currentBlock.lines.length > 0) {
74
+ const blockElements = parseBlockContent(currentBlock.lines.join('\n'), currentBlock.position, currentBlock.style);
75
+ elements.push(...blockElements);
76
+ }
77
+ // 新しいブロックを開始
78
+ currentBlock = {
79
+ position,
80
+ style,
81
+ lines: [],
82
+ };
83
+ continue;
84
+ }
85
+ // 現在のグリッドブロックに行を追加
86
+ if (currentBlock) {
87
+ currentBlock.lines.push(line);
88
+ }
89
+ else {
90
+ // ブロック外の行はまとめておく
91
+ nonBlockLines.push(line);
92
+ }
93
+ }
94
+ // 最後のノンブロック行を処理
95
+ flushNonBlockLines();
96
+ // 最後のグリッドブロックを処理
97
+ if (currentBlock && currentBlock.lines.length > 0) {
98
+ const blockElements = parseBlockContent(currentBlock.lines.join('\n'), currentBlock.position, currentBlock.style);
99
+ elements.push(...blockElements);
100
+ }
101
+ return elements;
102
+ }
103
+ /**
104
+ * 1行をパース(見出しなど、インラインでグリッド指定があるケース)
105
+ */
106
+ function _parseLine(line) {
107
+ const elements = [];
108
+ // 見出しチェック
109
+ const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
110
+ if (headingMatch) {
111
+ const level = headingMatch[1].length;
112
+ const { position, style, cleanText } = (0, grid_1.extractGridAndStyle)(headingMatch[2]);
113
+ elements.push({
114
+ type: 'heading',
115
+ level,
116
+ content: cleanText,
117
+ position,
118
+ style,
119
+ raw: line,
120
+ });
121
+ return elements;
122
+ }
123
+ // 画像チェック
124
+ const imageMatch = line.match(/^!\[([^\]]*)\]\(([^)]+)\)(.*)$/);
125
+ if (imageMatch) {
126
+ const _altText = imageMatch[1];
127
+ const src = imageMatch[2];
128
+ const rest = imageMatch[3];
129
+ const { position, style } = (0, grid_1.extractGridAndStyle)(rest);
130
+ elements.push({
131
+ type: 'image',
132
+ content: src,
133
+ position,
134
+ style,
135
+ raw: line,
136
+ });
137
+ return elements;
138
+ }
139
+ return elements;
140
+ }
141
+ /**
142
+ * ブロックコンテンツをパース
143
+ */
144
+ function parseBlockContent(content, position, style) {
145
+ const elements = [];
146
+ const tokens = marked_1.marked.lexer(content);
147
+ // グリッドブロック内の要素を収集
148
+ const blockElements = [];
149
+ for (const token of tokens) {
150
+ const element = tokenToElement(token);
151
+ if (element) {
152
+ blockElements.push(element);
153
+ }
154
+ }
155
+ // 位置指定がある場合、領域を要素数で分割
156
+ if (position && blockElements.length > 0) {
157
+ const totalRows = position.rowEnd - position.rowStart + 1;
158
+ const rowsPerElement = Math.max(1, Math.floor(totalRows / blockElements.length));
159
+ let currentRow = position.rowStart;
160
+ for (let i = 0; i < blockElements.length; i++) {
161
+ const element = blockElements[i];
162
+ const isLast = i === blockElements.length - 1;
163
+ const elementRowEnd = isLast ? position.rowEnd : Math.min(currentRow + rowsPerElement - 1, position.rowEnd);
164
+ element.position = {
165
+ colStart: position.colStart,
166
+ colEnd: position.colEnd,
167
+ rowStart: currentRow,
168
+ rowEnd: elementRowEnd,
169
+ };
170
+ if (style && !element.style) {
171
+ element.style = style;
172
+ }
173
+ elements.push(element);
174
+ currentRow = elementRowEnd + 1;
175
+ }
176
+ }
177
+ else {
178
+ // 位置指定がない場合はそのまま追加
179
+ elements.push(...blockElements);
180
+ }
181
+ return elements;
182
+ }
183
+ /**
184
+ * marked トークンをSlideElementに変換
185
+ */
186
+ function tokenToElement(token) {
187
+ switch (token.type) {
188
+ case 'heading': {
189
+ const headingToken = token;
190
+ const { position, style, cleanText } = (0, grid_1.extractGridAndStyle)(headingToken.text);
191
+ return {
192
+ type: 'heading',
193
+ level: headingToken.depth,
194
+ content: cleanText,
195
+ position,
196
+ style,
197
+ raw: headingToken.raw,
198
+ };
199
+ }
200
+ case 'paragraph': {
201
+ const paragraphToken = token;
202
+ const { position, style, cleanText } = (0, grid_1.extractGridAndStyle)(paragraphToken.text);
203
+ // 画像をチェック
204
+ const imageMatch = paragraphToken.text.match(/^!\[([^\]]*)\]\(([^)]+)\)(.*)$/);
205
+ if (imageMatch) {
206
+ const src = imageMatch[2];
207
+ const rest = imageMatch[3];
208
+ const { position: imgPos, style: imgStyle } = (0, grid_1.extractGridAndStyle)(rest);
209
+ return {
210
+ type: 'image',
211
+ content: src,
212
+ position: imgPos || position,
213
+ style: imgStyle || style,
214
+ raw: paragraphToken.raw,
215
+ };
216
+ }
217
+ return {
218
+ type: 'paragraph',
219
+ content: cleanText,
220
+ position,
221
+ style,
222
+ raw: paragraphToken.raw,
223
+ };
224
+ }
225
+ case 'list': {
226
+ const listToken = token;
227
+ const items = parseListItems(listToken.items, listToken.ordered);
228
+ return {
229
+ type: 'list',
230
+ content: items,
231
+ raw: listToken.raw,
232
+ };
233
+ }
234
+ case 'table': {
235
+ const tableToken = token;
236
+ const tableData = {
237
+ headers: tableToken.header.map((h) => h.text),
238
+ rows: tableToken.rows.map((row) => row.map((cell) => cell.text)),
239
+ };
240
+ return {
241
+ type: 'table',
242
+ content: tableData,
243
+ raw: tableToken.raw,
244
+ };
245
+ }
246
+ case 'code': {
247
+ const codeToken = token;
248
+ // mermaid記法の場合は別タイプとして扱う
249
+ if (codeToken.lang === 'mermaid') {
250
+ return {
251
+ type: 'mermaid',
252
+ content: codeToken.text,
253
+ raw: codeToken.raw,
254
+ };
255
+ }
256
+ return {
257
+ type: 'code',
258
+ content: codeToken.text,
259
+ raw: codeToken.raw,
260
+ };
261
+ }
262
+ case 'blockquote': {
263
+ const blockquoteToken = token;
264
+ return {
265
+ type: 'blockquote',
266
+ content: blockquoteToken.text,
267
+ raw: blockquoteToken.raw,
268
+ };
269
+ }
270
+ default:
271
+ return null;
272
+ }
273
+ }
274
+ /**
275
+ * リストアイテムをパース
276
+ */
277
+ function parseListItems(items, ordered) {
278
+ return items.map((item) => ({
279
+ content: item.text.split('\n')[0], // 最初の行のみ
280
+ level: 0,
281
+ ordered,
282
+ children: item.tokens
283
+ ? parseNestedList(item.tokens)
284
+ : undefined,
285
+ }));
286
+ }
287
+ /**
288
+ * ネストしたリストをパース
289
+ */
290
+ function parseNestedList(tokens) {
291
+ const listToken = tokens.find((t) => t.type === 'list');
292
+ if (!listToken)
293
+ return undefined;
294
+ return parseListItems(listToken.items, listToken.ordered);
295
+ }
296
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/parser/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * デフォルトテーマ
3
+ */
4
+ import type { ThemeConfig } from '../types/index.js';
5
+ export declare const defaultTheme: ThemeConfig;
6
+ export declare const styleClasses: Record<string, Record<string, unknown>>;
7
+ /**
8
+ * スタイルクラスをpptxgenjs形式に変換
9
+ */
10
+ export declare function resolveStyleClasses(classes: string[]): Record<string, unknown>;
11
+ //# sourceMappingURL=default.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/theme/default.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,WAqB1B,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoChE,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW9E"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * デフォルトテーマ
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.styleClasses = exports.defaultTheme = void 0;
7
+ exports.resolveStyleClasses = resolveStyleClasses;
8
+ exports.defaultTheme = {
9
+ name: 'default',
10
+ colors: {
11
+ primary: '#2563eb', // 青
12
+ secondary: '#64748b', // グレー
13
+ accent: '#f59e0b', // オレンジ
14
+ background: '#ffffff', // 白
15
+ text: '#1e293b', // ダークグレー
16
+ },
17
+ fonts: {
18
+ title: 'Arial',
19
+ body: 'Arial',
20
+ code: 'Courier New',
21
+ },
22
+ fontSize: {
23
+ h1: 36,
24
+ h2: 28,
25
+ h3: 24,
26
+ body: 18,
27
+ small: 14,
28
+ },
29
+ };
30
+ // スタイルクラスの定義
31
+ exports.styleClasses = {
32
+ // 配置
33
+ center: { align: 'center', valign: 'middle' },
34
+ left: { align: 'left' },
35
+ right: { align: 'right' },
36
+ // 色
37
+ red: { color: '#dc2626' },
38
+ blue: { color: '#2563eb' },
39
+ green: { color: '#16a34a' },
40
+ gray: { color: '#6b7280' },
41
+ orange: { color: '#ea580c' },
42
+ purple: { color: '#9333ea' },
43
+ // 背景色
44
+ 'bg-red': { fill: { color: '#fef2f2' } },
45
+ 'bg-blue': { fill: { color: '#eff6ff' } },
46
+ 'bg-green': { fill: { color: '#f0fdf4' } },
47
+ 'bg-gray': { fill: { color: '#f9fafb' } },
48
+ // サイズ
49
+ small: { fontSize: 14 },
50
+ large: { fontSize: 24 },
51
+ // 装飾
52
+ bold: { bold: true },
53
+ highlight: { fill: { color: '#fef3c7' } },
54
+ card: {
55
+ fill: { color: '#f8fafc' },
56
+ line: { color: '#e2e8f0', width: 1 },
57
+ },
58
+ // 特殊
59
+ header: { fill: { color: '#1e40af' }, color: '#ffffff' },
60
+ footer: { fontSize: 12, color: '#9ca3af' },
61
+ note: { fontSize: 12, color: '#6b7280', italic: true },
62
+ };
63
+ /**
64
+ * スタイルクラスをpptxgenjs形式に変換
65
+ */
66
+ function resolveStyleClasses(classes) {
67
+ let result = {};
68
+ for (const className of classes) {
69
+ const style = exports.styleClasses[className];
70
+ if (style) {
71
+ result = { ...result, ...style };
72
+ }
73
+ }
74
+ return result;
75
+ }
76
+ //# sourceMappingURL=default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/theme/default.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * テーマモジュール
3
+ */
4
+ export { defaultTheme, styleClasses, resolveStyleClasses } from './default.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * テーマモジュール
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveStyleClasses = exports.styleClasses = exports.defaultTheme = void 0;
7
+ var default_js_1 = require("./default.js");
8
+ Object.defineProperty(exports, "defaultTheme", { enumerable: true, get: function () { return default_js_1.defaultTheme; } });
9
+ Object.defineProperty(exports, "styleClasses", { enumerable: true, get: function () { return default_js_1.styleClasses; } });
10
+ Object.defineProperty(exports, "resolveStyleClasses", { enumerable: true, get: function () { return default_js_1.resolveStyleClasses; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,2CAA+E;AAAtE,0GAAA,YAAY,OAAA;AAAE,0GAAA,YAAY,OAAA;AAAE,iHAAA,mBAAmB,OAAA"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * marhup 型定義
3
+ */
4
+ export interface GridPosition {
5
+ colStart: number;
6
+ colEnd: number;
7
+ rowStart: number;
8
+ rowEnd: number;
9
+ }
10
+ export interface StyleOptions {
11
+ classes: string[];
12
+ properties: Record<string, string>;
13
+ }
14
+ export interface ListItem {
15
+ content: string;
16
+ level: number;
17
+ ordered: boolean;
18
+ children?: ListItem[];
19
+ }
20
+ export interface TableData {
21
+ headers: string[];
22
+ rows: string[][];
23
+ }
24
+ export type ElementType = 'heading' | 'paragraph' | 'list' | 'image' | 'table' | 'code' | 'blockquote' | 'mermaid';
25
+ export interface SlideElement {
26
+ type: ElementType;
27
+ content: string | ListItem[] | TableData;
28
+ level?: number;
29
+ position?: GridPosition;
30
+ style?: StyleOptions;
31
+ raw?: string;
32
+ }
33
+ export interface PlacedElement extends SlideElement {
34
+ position: GridPosition;
35
+ }
36
+ export interface SlideFrontmatter {
37
+ title?: string;
38
+ grid?: string;
39
+ layout?: string;
40
+ theme?: string;
41
+ [key: string]: unknown;
42
+ }
43
+ export interface Slide {
44
+ frontmatter: SlideFrontmatter;
45
+ elements: SlideElement[];
46
+ }
47
+ export interface ParsedDocument {
48
+ globalFrontmatter: SlideFrontmatter;
49
+ slides: Slide[];
50
+ }
51
+ export interface GridConfig {
52
+ cols: number;
53
+ rows: number;
54
+ }
55
+ export interface ThemeConfig {
56
+ name: string;
57
+ colors: {
58
+ primary: string;
59
+ secondary: string;
60
+ accent: string;
61
+ background: string;
62
+ text: string;
63
+ };
64
+ fonts: {
65
+ title: string;
66
+ body: string;
67
+ code: string;
68
+ };
69
+ fontSize: {
70
+ h1: number;
71
+ h2: number;
72
+ h3: number;
73
+ body: number;
74
+ small: number;
75
+ };
76
+ }
77
+ export interface ConvertOptions {
78
+ output: string;
79
+ theme?: string;
80
+ grid?: string;
81
+ watch?: boolean;
82
+ basePath?: string;
83
+ }
84
+ export declare const DEFAULT_GRID: GridConfig;
85
+ export declare const DEFAULT_ELEMENT_HEIGHT: Record<ElementType, number>;
86
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * marhup 型定義
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_ELEMENT_HEIGHT = exports.DEFAULT_GRID = void 0;
7
+ // デフォルトグリッド
8
+ exports.DEFAULT_GRID = {
9
+ cols: 12,
10
+ rows: 9,
11
+ };
12
+ // デフォルト要素高さ(行数)
13
+ exports.DEFAULT_ELEMENT_HEIGHT = {
14
+ heading: 1,
15
+ paragraph: 2,
16
+ list: 3,
17
+ image: 4,
18
+ table: 3,
19
+ code: 3,
20
+ blockquote: 2,
21
+ mermaid: 4,
22
+ };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAoHH,YAAY;AACC,QAAA,YAAY,GAAe;IACtC,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,gBAAgB;AACH,QAAA,sBAAsB,GAAgC;IACjE,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,CAAC;CACX,CAAC"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "marhup",
3
+ "version": "0.1.7",
4
+ "description": "Markdownからグリッドベースのレイアウトで PowerPoint (PPTX) を生成するCLIツール",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "marhup": "./dist/cli.js",
9
+ "marhup-mcp": "./dist/mcp.js"
10
+ },
11
+ "scripts": {
12
+ "build": "run-s lint build:tsc",
13
+ "build:tsc": "tsc",
14
+ "dev": "tsc --watch",
15
+ "start": "node dist/cli.js",
16
+ "mcp": "node dist/mcp.js",
17
+ "test": "vitest run",
18
+ "test:watch": "vitest",
19
+ "typecheck": "tsc --noEmit",
20
+ "lint": "eslint src --ext .ts",
21
+ "lint:fix": "eslint src --ext .ts --fix",
22
+ "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
23
+ "format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
24
+ "example": "npm run build && node dist/cli.js examples/sample.md -o examples/output.pptx"
25
+ },
26
+ "keywords": [
27
+ "markdown",
28
+ "powerpoint",
29
+ "pptx",
30
+ "presentation",
31
+ "slides",
32
+ "grid-layout"
33
+ ],
34
+ "author": "",
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "https://github.com/ukiuni/marhup.git"
38
+ },
39
+ "license": "MIT",
40
+ "dependencies": {
41
+ "@mermaid-js/mermaid-cli": "^11.12.0",
42
+ "@modelcontextprotocol/sdk": "^1.0.0",
43
+ "commander": "^12.1.0",
44
+ "image-size": "^2.0.2",
45
+ "marked": "^11.2.0",
46
+ "pptxgenjs": "^3.12.0",
47
+ "yaml": "^2.3.4"
48
+ },
49
+ "devDependencies": {
50
+ "@types/node": "^20.11.0",
51
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
52
+ "@typescript-eslint/parser": "^6.19.0",
53
+ "eslint": "^8.56.0",
54
+ "npm-run-all": "^4.1.5",
55
+ "prettier": "^3.2.0",
56
+ "typescript": "^5.3.3",
57
+ "vitest": "^1.2.0"
58
+ },
59
+ "engines": {
60
+ "node": ">=18.0.0"
61
+ },
62
+ "files": [
63
+ "dist",
64
+ "README.md"
65
+ ]
66
+ }