@hardlydifficult/document-generator 1.1.1 → 1.1.3
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/Document.d.ts +1 -1
- package/dist/Document.d.ts.map +1 -1
- package/dist/Document.js +23 -17
- package/dist/Document.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/markdownConverter.d.ts +1 -1
- package/dist/markdownConverter.d.ts.map +1 -1
- package/dist/markdownConverter.js +13 -13
- package/dist/markdownConverter.js.map +1 -1
- package/dist/outputters/index.d.ts +2 -2
- package/dist/outputters/markdown.d.ts +1 -1
- package/dist/outputters/markdown.js +11 -11
- package/dist/outputters/plainText.d.ts +1 -1
- package/dist/outputters/plainText.d.ts.map +1 -1
- package/dist/outputters/plainText.js +11 -11
- package/dist/outputters/plainText.js.map +1 -1
- package/dist/types.d.ts +10 -10
- package/package.json +1 -1
package/dist/Document.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Block, DocumentOptions, KeyValueOptions,
|
|
1
|
+
import type { Block, DocumentOptions, KeyValueOptions, TimestampOptions, TruncatedListOptions } from "./types.js";
|
|
2
2
|
export declare class Document {
|
|
3
3
|
private blocks;
|
|
4
4
|
/**
|
package/dist/Document.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Document.d.ts","sourceRoot":"","sources":["../src/Document.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Document.d.ts","sourceRoot":"","sources":["../src/Document.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EAIL,eAAe,EAGf,eAAe,EAIf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAe;IAE7B;;;;;;;;;;;;;;;;;;OAkBG;gBACS,OAAO,CAAC,EAAE,eAAe;IAoBrC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAWxD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS1B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS3B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAS3B,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAUrC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAW3B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IActC;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;;;;;;;;OAWG;IACH,QAAQ,CACN,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAC3D,OAAO,GAAE,eAAoB,GAC5B,IAAI;IAsBP;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GAAG,IAAI;IA2BzE;;;;;;;;;OASG;IACH,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,IAAI;IAkB/C;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,KAAK,IAAI,QAAQ;IAMjB;;OAEG;IACH,SAAS,IAAI,KAAK,EAAE;IAIpB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
|
package/dist/Document.js
CHANGED
|
@@ -26,12 +26,12 @@ class Document {
|
|
|
26
26
|
*/
|
|
27
27
|
constructor(options) {
|
|
28
28
|
if (options !== undefined) {
|
|
29
|
-
if (options.header !== undefined && options.header !==
|
|
29
|
+
if (options.header !== undefined && options.header !== "") {
|
|
30
30
|
this.header(options.header);
|
|
31
31
|
}
|
|
32
32
|
if (options.sections !== undefined) {
|
|
33
33
|
for (const section of options.sections) {
|
|
34
|
-
if (section.title !== undefined && section.title !==
|
|
34
|
+
if (section.title !== undefined && section.title !== "") {
|
|
35
35
|
this.section(section.title);
|
|
36
36
|
}
|
|
37
37
|
this.text(section.content);
|
|
@@ -57,7 +57,7 @@ class Document {
|
|
|
57
57
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
58
58
|
header(text) {
|
|
59
59
|
const block = {
|
|
60
|
-
type:
|
|
60
|
+
type: "header",
|
|
61
61
|
text,
|
|
62
62
|
};
|
|
63
63
|
this.blocks.push(block);
|
|
@@ -65,7 +65,7 @@ class Document {
|
|
|
65
65
|
}
|
|
66
66
|
text(content) {
|
|
67
67
|
const block = {
|
|
68
|
-
type:
|
|
68
|
+
type: "text",
|
|
69
69
|
content,
|
|
70
70
|
};
|
|
71
71
|
this.blocks.push(block);
|
|
@@ -73,7 +73,7 @@ class Document {
|
|
|
73
73
|
}
|
|
74
74
|
list(items) {
|
|
75
75
|
const block = {
|
|
76
|
-
type:
|
|
76
|
+
type: "list",
|
|
77
77
|
items,
|
|
78
78
|
};
|
|
79
79
|
this.blocks.push(block);
|
|
@@ -81,14 +81,14 @@ class Document {
|
|
|
81
81
|
}
|
|
82
82
|
divider() {
|
|
83
83
|
const block = {
|
|
84
|
-
type:
|
|
84
|
+
type: "divider",
|
|
85
85
|
};
|
|
86
86
|
this.blocks.push(block);
|
|
87
87
|
return this;
|
|
88
88
|
}
|
|
89
89
|
context(text) {
|
|
90
90
|
const block = {
|
|
91
|
-
type:
|
|
91
|
+
type: "context",
|
|
92
92
|
text,
|
|
93
93
|
};
|
|
94
94
|
this.blocks.push(block);
|
|
@@ -96,7 +96,7 @@ class Document {
|
|
|
96
96
|
}
|
|
97
97
|
link(text, url) {
|
|
98
98
|
const block = {
|
|
99
|
-
type:
|
|
99
|
+
type: "link",
|
|
100
100
|
text,
|
|
101
101
|
url,
|
|
102
102
|
};
|
|
@@ -104,9 +104,9 @@ class Document {
|
|
|
104
104
|
return this;
|
|
105
105
|
}
|
|
106
106
|
code(content) {
|
|
107
|
-
const multiline = content.includes(
|
|
107
|
+
const multiline = content.includes("\n");
|
|
108
108
|
const block = {
|
|
109
|
-
type:
|
|
109
|
+
type: "code",
|
|
110
110
|
content,
|
|
111
111
|
multiline,
|
|
112
112
|
};
|
|
@@ -115,7 +115,7 @@ class Document {
|
|
|
115
115
|
}
|
|
116
116
|
image(url, alt) {
|
|
117
117
|
const block = {
|
|
118
|
-
type:
|
|
118
|
+
type: "image",
|
|
119
119
|
url,
|
|
120
120
|
alt,
|
|
121
121
|
};
|
|
@@ -149,17 +149,23 @@ class Document {
|
|
|
149
149
|
* ```
|
|
150
150
|
*/
|
|
151
151
|
keyValue(data, options = {}) {
|
|
152
|
-
const { style =
|
|
152
|
+
const { style = "plain", separator = ":", bold = true } = options;
|
|
153
153
|
const entries = Object.entries(data).filter(([, v]) => v !== undefined);
|
|
154
154
|
if (entries.length === 0) {
|
|
155
155
|
return this;
|
|
156
156
|
}
|
|
157
157
|
const lines = entries.map(([key, value], i) => {
|
|
158
158
|
const formattedKey = bold ? `**${key}**` : key;
|
|
159
|
-
|
|
159
|
+
let prefix = "";
|
|
160
|
+
if (style === "bullet") {
|
|
161
|
+
prefix = "• ";
|
|
162
|
+
}
|
|
163
|
+
else if (style === "numbered") {
|
|
164
|
+
prefix = `${String(i + 1)}. `;
|
|
165
|
+
}
|
|
160
166
|
return `${prefix}${formattedKey}${separator} ${String(value)}`;
|
|
161
167
|
});
|
|
162
|
-
return this.text(lines.join(
|
|
168
|
+
return this.text(lines.join("\n"));
|
|
163
169
|
}
|
|
164
170
|
/**
|
|
165
171
|
* Add a list with automatic truncation and "X more" message.
|
|
@@ -182,13 +188,13 @@ class Document {
|
|
|
182
188
|
const visible = items.slice(0, limit);
|
|
183
189
|
const remaining = items.length - limit;
|
|
184
190
|
const lines = visible.map((item, i) => {
|
|
185
|
-
const prefix = ordered ? `${String(i + 1)}. ` :
|
|
191
|
+
const prefix = ordered ? `${String(i + 1)}. ` : "• ";
|
|
186
192
|
return `${prefix}${format(item, i)}`;
|
|
187
193
|
});
|
|
188
194
|
if (remaining > 0) {
|
|
189
195
|
lines.push(moreText(remaining));
|
|
190
196
|
}
|
|
191
|
-
return this.text(lines.join(
|
|
197
|
+
return this.text(lines.join("\n"));
|
|
192
198
|
}
|
|
193
199
|
/**
|
|
194
200
|
* Add a timestamp in context format.
|
|
@@ -204,7 +210,7 @@ class Document {
|
|
|
204
210
|
const { date = new Date(), emoji = true, label } = options;
|
|
205
211
|
const iso = date.toISOString();
|
|
206
212
|
let text;
|
|
207
|
-
if (label !== undefined && label !==
|
|
213
|
+
if (label !== undefined && label !== "") {
|
|
208
214
|
text = `${label} ${iso}`;
|
|
209
215
|
}
|
|
210
216
|
else if (emoji) {
|
package/dist/Document.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Document.js","sourceRoot":"","sources":["../src/Document.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Document.js","sourceRoot":"","sources":["../src/Document.ts"],"names":[],"mappings":";;;AAAA,0DAAwE;AACxE,4DAA2E;AAiB3E,MAAa,QAAQ;IACX,MAAM,GAAY,EAAE,CAAC;IAE7B;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,OAAyB;QACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACvC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;wBACxD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC9B,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,SAAiB;QAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,gFAAgF;IAChF,qBAAqB;IACrB,gFAAgF;IAEhF,MAAM,CAAC,IAAY;QACjB,MAAM,KAAK,GAAgB;YACzB,IAAI,EAAE,QAAQ;YACd,IAAI;SACL,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,MAAM;YACZ,OAAO;SACR,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAe;QAClB,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,MAAM;YACZ,KAAK;SACN,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,SAAS;SAChB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,SAAS;YACf,IAAI;SACL,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,GAAW;QAC5B,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,MAAM;YACZ,IAAI;YACJ,GAAG;SACJ,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,MAAM;YACZ,OAAO;YACP,SAAS;SACV,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,GAAY;QAC7B,MAAM,KAAK,GAAe;YACxB,IAAI,EAAE,OAAO;YACb,GAAG;YACH,GAAG;SACJ,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gFAAgF;IAChF,sBAAsB;IACtB,gFAAgF;IAEhF;;;;;;;OAOG;IACH,OAAO,CAAC,KAAa;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,QAAQ,CACN,IAA2D,EAC3D,UAA2B,EAAE;QAE7B,MAAM,EAAE,KAAK,GAAG,OAAO,EAAE,SAAS,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAElE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/C,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;iBAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAChC,CAAC;YACD,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,aAAa,CAAI,KAAU,EAAE,UAAmC,EAAE;QAChE,MAAM,EACJ,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,CAAC,IAAO,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAC1C,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,EAC/D,OAAO,GAAG,KAAK,GAChB,GAAG,OAAO,CAAC;QAEZ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAEvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,UAA4B,EAAE;QACtC,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAY,CAAC;QACjB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxC,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,gFAAgF;IAChF,kBAAkB;IAClB,gFAAgF;IAEhF;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAA,wBAAc,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAA,0BAAe,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AAhSD,4BAgSC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { Document } from
|
|
2
|
-
export type { Block, HeaderBlock, TextBlock, ListBlock, DividerBlock, ContextBlock, LinkBlock, CodeBlock, ImageBlock, Platform, DocumentOptions, DocumentSection, KeyValueOptions, TruncatedListOptions, TimestampOptions, } from
|
|
3
|
-
export { toMarkdown } from
|
|
4
|
-
export { toPlainText } from
|
|
5
|
-
export { convertMarkdown, stripMarkdown } from
|
|
1
|
+
export { Document } from "./Document.js";
|
|
2
|
+
export type { Block, HeaderBlock, TextBlock, ListBlock, DividerBlock, ContextBlock, LinkBlock, CodeBlock, ImageBlock, Platform, DocumentOptions, DocumentSection, KeyValueOptions, TruncatedListOptions, TimestampOptions, } from "./types.js";
|
|
3
|
+
export { toMarkdown } from "./outputters/markdown.js";
|
|
4
|
+
export { toPlainText } from "./outputters/plainText.js";
|
|
5
|
+
export { convertMarkdown, stripMarkdown } from "./markdownConverter.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownConverter.d.ts","sourceRoot":"","sources":["../src/markdownConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"markdownConverter.d.ts","sourceRoot":"","sources":["../src/markdownConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAiExE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAalD"}
|
|
@@ -13,7 +13,7 @@ exports.stripMarkdown = stripMarkdown;
|
|
|
13
13
|
* Processing order: bold → italic → strikethrough (to avoid matching `**` as italic)
|
|
14
14
|
*/
|
|
15
15
|
function convertMarkdown(text, platform) {
|
|
16
|
-
if (platform ===
|
|
16
|
+
if (platform === "plaintext") {
|
|
17
17
|
return stripMarkdown(text);
|
|
18
18
|
}
|
|
19
19
|
let result = text;
|
|
@@ -25,11 +25,11 @@ function convertMarkdown(text, platform) {
|
|
|
25
25
|
const placeholder = `__BOLD_PLACEHOLDER_${String(placeholderIndex++)}__`;
|
|
26
26
|
let replacement;
|
|
27
27
|
switch (platform) {
|
|
28
|
-
case
|
|
29
|
-
case
|
|
28
|
+
case "markdown":
|
|
29
|
+
case "discord":
|
|
30
30
|
replacement = `**${content}**`;
|
|
31
31
|
break;
|
|
32
|
-
case
|
|
32
|
+
case "slack":
|
|
33
33
|
replacement = `*${content}*`;
|
|
34
34
|
break;
|
|
35
35
|
default:
|
|
@@ -42,10 +42,10 @@ function convertMarkdown(text, platform) {
|
|
|
42
42
|
// Use negative lookbehind/lookahead to ensure single asterisk
|
|
43
43
|
result = result.replace(/(?<!\*)\*([^*]+?)\*(?!\*)/g, (_match, content) => {
|
|
44
44
|
switch (platform) {
|
|
45
|
-
case
|
|
46
|
-
case
|
|
45
|
+
case "markdown":
|
|
46
|
+
case "discord":
|
|
47
47
|
return `*${content}*`;
|
|
48
|
-
case
|
|
48
|
+
case "slack":
|
|
49
49
|
return `_${content}_`;
|
|
50
50
|
default:
|
|
51
51
|
return content;
|
|
@@ -54,10 +54,10 @@ function convertMarkdown(text, platform) {
|
|
|
54
54
|
// Process strikethrough: ~~text~~
|
|
55
55
|
result = result.replace(/~~(.+?)~~/g, (_match, content) => {
|
|
56
56
|
switch (platform) {
|
|
57
|
-
case
|
|
58
|
-
case
|
|
57
|
+
case "markdown":
|
|
58
|
+
case "discord":
|
|
59
59
|
return `~~${content}~~`;
|
|
60
|
-
case
|
|
60
|
+
case "slack":
|
|
61
61
|
return `~${content}~`;
|
|
62
62
|
default:
|
|
63
63
|
return content;
|
|
@@ -75,11 +75,11 @@ function convertMarkdown(text, platform) {
|
|
|
75
75
|
function stripMarkdown(text) {
|
|
76
76
|
let result = text;
|
|
77
77
|
// Remove bold: **text** → text
|
|
78
|
-
result = result.replace(/\*\*(.+?)\*\*/g,
|
|
78
|
+
result = result.replace(/\*\*(.+?)\*\*/g, "$1");
|
|
79
79
|
// Remove italic: *text* → text (but not **text**)
|
|
80
|
-
result = result.replace(/(?<!\*)\*([^*]+?)\*(?!\*)/g,
|
|
80
|
+
result = result.replace(/(?<!\*)\*([^*]+?)\*(?!\*)/g, "$1");
|
|
81
81
|
// Remove strikethrough: ~~text~~ → text
|
|
82
|
-
result = result.replace(/~~(.+?)~~/g,
|
|
82
|
+
result = result.replace(/~~(.+?)~~/g, "$1");
|
|
83
83
|
return result;
|
|
84
84
|
}
|
|
85
85
|
//# sourceMappingURL=markdownConverter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownConverter.js","sourceRoot":"","sources":["../src/markdownConverter.ts"],"names":[],"mappings":";;AAYA,
|
|
1
|
+
{"version":3,"file":"markdownConverter.js","sourceRoot":"","sources":["../src/markdownConverter.ts"],"names":[],"mappings":";;AAYA,0CAiEC;AAKD,sCAaC;AA7FD;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAAC,IAAY,EAAE,QAAkB;IAC9D,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,8EAA8E;IAC9E,uEAAuE;IACvE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAe,EAAE,EAAE;QACpE,MAAM,WAAW,GAAG,sBAAsB,MAAM,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC;QACzE,IAAI,WAAmB,CAAC;QACxB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,SAAS;gBACZ,WAAW,GAAG,KAAK,OAAO,IAAI,CAAC;gBAC/B,MAAM;YACR,KAAK,OAAO;gBACV,WAAW,GAAG,IAAI,OAAO,GAAG,CAAC;gBAC7B,MAAM;YACR;gBACE,WAAW,GAAG,OAAO,CAAC;QAC1B,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC3C,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,8DAA8D;IAC9D,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,4BAA4B,EAC5B,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE;QAClC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,SAAS;gBACZ,OAAO,IAAI,OAAO,GAAG,CAAC;YACxB,KAAK,OAAO;gBACV,OAAO,IAAI,OAAO,GAAG,CAAC;YACxB;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kCAAkC;IAClC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE;QACxE,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,SAAS;gBACZ,OAAO,KAAK,OAAO,IAAI,CAAC;YAC1B,KAAK,OAAO;gBACV,OAAO,IAAI,OAAO,GAAG,CAAC;YACxB;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8CAA8C;IAC9C,KAAK,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,YAAY,EAAE,CAAC;QACtD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,+BAA+B;IAC/B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAEhD,kDAAkD;IAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;IAE5D,wCAAwC;IACxC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAE5C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { toMarkdown } from
|
|
2
|
-
export { toPlainText } from
|
|
1
|
+
export { toMarkdown } from "./markdown.js";
|
|
2
|
+
export { toPlainText } from "./plainText.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -5,31 +5,31 @@ function toMarkdown(blocks) {
|
|
|
5
5
|
return blocks
|
|
6
6
|
.map((block) => {
|
|
7
7
|
switch (block.type) {
|
|
8
|
-
case
|
|
8
|
+
case "header":
|
|
9
9
|
return `# ${block.text}\n\n`;
|
|
10
|
-
case
|
|
10
|
+
case "text":
|
|
11
11
|
return `${block.content}\n\n`;
|
|
12
|
-
case
|
|
13
|
-
return `${block.items.map((item) => `- ${item}`).join(
|
|
14
|
-
case
|
|
12
|
+
case "list":
|
|
13
|
+
return `${block.items.map((item) => `- ${item}`).join("\n")}\n\n`;
|
|
14
|
+
case "divider":
|
|
15
15
|
return `---\n\n`;
|
|
16
|
-
case
|
|
16
|
+
case "context":
|
|
17
17
|
return `*${block.text}*\n\n`;
|
|
18
|
-
case
|
|
18
|
+
case "link":
|
|
19
19
|
return `[${block.text}](${block.url})\n\n`;
|
|
20
|
-
case
|
|
20
|
+
case "code":
|
|
21
21
|
if (block.multiline) {
|
|
22
22
|
return `\`\`\`\n${block.content}\n\`\`\`\n\n`;
|
|
23
23
|
}
|
|
24
24
|
return `\`${block.content}\`\n\n`;
|
|
25
|
-
case
|
|
25
|
+
case "image": {
|
|
26
26
|
const alt = block.alt ?? block.url;
|
|
27
27
|
return `\n\n`;
|
|
28
28
|
}
|
|
29
29
|
default:
|
|
30
|
-
return
|
|
30
|
+
return "";
|
|
31
31
|
}
|
|
32
32
|
})
|
|
33
|
-
.join(
|
|
33
|
+
.join("");
|
|
34
34
|
}
|
|
35
35
|
//# sourceMappingURL=markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plainText.d.ts","sourceRoot":"","sources":["../../src/outputters/plainText.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plainText.d.ts","sourceRoot":"","sources":["../../src/outputters/plainText.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAmCnD"}
|
|
@@ -6,28 +6,28 @@ function toPlainText(blocks) {
|
|
|
6
6
|
return blocks
|
|
7
7
|
.map((block) => {
|
|
8
8
|
switch (block.type) {
|
|
9
|
-
case
|
|
9
|
+
case "header":
|
|
10
10
|
return `${block.text.toUpperCase()}\n\n`;
|
|
11
|
-
case
|
|
11
|
+
case "text":
|
|
12
12
|
return `${(0, markdownConverter_js_1.stripMarkdown)(block.content)}\n\n`;
|
|
13
|
-
case
|
|
14
|
-
return `${block.items.map((item) => `• ${(0, markdownConverter_js_1.stripMarkdown)(item)}`).join(
|
|
15
|
-
case
|
|
13
|
+
case "list":
|
|
14
|
+
return `${block.items.map((item) => `• ${(0, markdownConverter_js_1.stripMarkdown)(item)}`).join("\n")}\n\n`;
|
|
15
|
+
case "divider":
|
|
16
16
|
return `────────────────\n\n`;
|
|
17
|
-
case
|
|
17
|
+
case "context":
|
|
18
18
|
return `${(0, markdownConverter_js_1.stripMarkdown)(block.text)}\n\n`;
|
|
19
|
-
case
|
|
19
|
+
case "link":
|
|
20
20
|
return `${block.text} (${block.url})\n\n`;
|
|
21
|
-
case
|
|
21
|
+
case "code":
|
|
22
22
|
return `${block.content}\n\n`;
|
|
23
|
-
case
|
|
23
|
+
case "image": {
|
|
24
24
|
const alt = block.alt ?? block.url;
|
|
25
25
|
return `[Image: ${alt}]\n\n`;
|
|
26
26
|
}
|
|
27
27
|
default:
|
|
28
|
-
return
|
|
28
|
+
return "";
|
|
29
29
|
}
|
|
30
30
|
})
|
|
31
|
-
.join(
|
|
31
|
+
.join("");
|
|
32
32
|
}
|
|
33
33
|
//# sourceMappingURL=plainText.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plainText.js","sourceRoot":"","sources":["../../src/outputters/plainText.ts"],"names":[],"mappings":";;AAGA,kCAmCC;
|
|
1
|
+
{"version":3,"file":"plainText.js","sourceRoot":"","sources":["../../src/outputters/plainText.ts"],"names":[],"mappings":";;AAGA,kCAmCC;AAtCD,kEAAwD;AAGxD,SAAgB,WAAW,CAAC,MAAe;IACzC,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;YAE3C,KAAK,MAAM;gBACT,OAAO,GAAG,IAAA,oCAAa,EAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAE/C,KAAK,MAAM;gBACT,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAA,oCAAa,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAEnF,KAAK,SAAS;gBACZ,OAAO,sBAAsB,CAAC;YAEhC,KAAK,SAAS;gBACZ,OAAO,GAAG,IAAA,oCAAa,EAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAE5C,KAAK,MAAM;gBACT,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,OAAO,CAAC;YAE5C,KAAK,MAAM;gBACT,OAAO,GAAG,KAAK,CAAC,OAAO,MAAM,CAAC;YAEhC,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;gBACnC,OAAO,WAAW,GAAG,OAAO,CAAC;YAC/B,CAAC;YAED;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
export type Platform =
|
|
1
|
+
export type Platform = "markdown" | "slack" | "discord" | "plaintext";
|
|
2
2
|
export type Block = HeaderBlock | TextBlock | ListBlock | DividerBlock | ContextBlock | LinkBlock | CodeBlock | ImageBlock;
|
|
3
3
|
export interface HeaderBlock {
|
|
4
|
-
type:
|
|
4
|
+
type: "header";
|
|
5
5
|
text: string;
|
|
6
6
|
}
|
|
7
7
|
export interface TextBlock {
|
|
8
|
-
type:
|
|
8
|
+
type: "text";
|
|
9
9
|
content: string;
|
|
10
10
|
}
|
|
11
11
|
export interface ListBlock {
|
|
12
|
-
type:
|
|
12
|
+
type: "list";
|
|
13
13
|
items: string[];
|
|
14
14
|
}
|
|
15
15
|
export interface DividerBlock {
|
|
16
|
-
type:
|
|
16
|
+
type: "divider";
|
|
17
17
|
}
|
|
18
18
|
export interface ContextBlock {
|
|
19
|
-
type:
|
|
19
|
+
type: "context";
|
|
20
20
|
text: string;
|
|
21
21
|
}
|
|
22
22
|
export interface LinkBlock {
|
|
23
|
-
type:
|
|
23
|
+
type: "link";
|
|
24
24
|
text: string;
|
|
25
25
|
url: string;
|
|
26
26
|
}
|
|
27
27
|
export interface CodeBlock {
|
|
28
|
-
type:
|
|
28
|
+
type: "code";
|
|
29
29
|
content: string;
|
|
30
30
|
multiline: boolean;
|
|
31
31
|
}
|
|
32
32
|
export interface ImageBlock {
|
|
33
|
-
type:
|
|
33
|
+
type: "image";
|
|
34
34
|
url: string;
|
|
35
35
|
alt?: string;
|
|
36
36
|
}
|
|
@@ -45,7 +45,7 @@ export interface DocumentOptions {
|
|
|
45
45
|
}
|
|
46
46
|
export interface KeyValueOptions {
|
|
47
47
|
/** List style: plain (default), bullet, or numbered */
|
|
48
|
-
style?:
|
|
48
|
+
style?: "plain" | "bullet" | "numbered";
|
|
49
49
|
/** Separator between key and value. Default: ':' */
|
|
50
50
|
separator?: string;
|
|
51
51
|
/** Whether to bold keys. Default: true */
|