prose-writer 0.1.3 → 0.2.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/README.md CHANGED
@@ -147,6 +147,15 @@ npm install prose-writer
147
147
  pnpm add prose-writer
148
148
  ```
149
149
 
150
+ ## Release
151
+
152
+ Releases are tag-driven and published via GitHub Actions using npm trusted publishing (OIDC).
153
+
154
+ 1. `npm version patch|minor|major`
155
+ 2. `git push --follow-tags`
156
+
157
+ The workflow expects the tag (`vX.Y.Z`) to match `package.json`.
158
+
150
159
  ## Exports
151
160
 
152
161
  Core:
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { ProseWriter, write } from './prose-writer';
1
+ export { ProseWriter, write } from './prose-writer.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { ProseWriter, write } from './prose-writer';
1
+ export { ProseWriter, write } from './prose-writer.js';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["export { ProseWriter, write } from './prose-writer.js';\n"]}
@@ -1 +1 @@
1
- export { bold, code, image, inline, italic, link, strike } from './prose-writer';
1
+ export { bold, code, image, inline, italic, link, strike } from './prose-writer.js';
package/dist/markdown.js CHANGED
@@ -1,2 +1,2 @@
1
- export { bold, code, image, inline, italic, link, strike } from './prose-writer';
1
+ export { bold, code, image, inline, italic, link, strike } from './prose-writer.js';
2
2
  //# sourceMappingURL=markdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["export { bold, code, image, inline, italic, link, strike } from './prose-writer.js';\n"]}
@@ -291,6 +291,18 @@ export declare const write: ((...content: WriterValue[]) => ProseWriter) & {
291
291
  tasks: (...args: [(l: ListBuilder) => void] | (WriterValue | [WriterValue, boolean])[]) => ProseWriter;
292
292
  callout: (type: "NOTE" | "TIP" | "IMPORTANT" | "WARNING" | "CAUTION", content: string | ((writer: ProseWriter & InlineUtils) => void)) => ProseWriter;
293
293
  schema: (schemaValue: unknown, options?: SchemaEmbedOptions) => ProseWriter;
294
+ heading: (level: 1 | 2 | 3 | 4 | 5 | 6, ...content: string[]) => ProseWriter;
295
+ blockquote: (...lines: string[]) => ProseWriter;
296
+ codeblock: (language: string, content: string | ((writer: ProseWriter & InlineUtils) => void)) => ProseWriter;
297
+ json: (data: unknown, options?: ValidationOptions) => ProseWriter;
298
+ yaml: (data: unknown, options?: ValidationOptions) => ProseWriter;
299
+ definitions: (obj: Record<string, string>) => ProseWriter;
300
+ section: (name: string, builder: (writer: ProseWriter & InlineUtils) => void, level?: 1 | 2 | 3 | 4 | 5 | 6) => ProseWriter;
301
+ tag: (name: string, content: string | ProseWriter | ((writer: ProseWriter & InlineUtils) => void)) => ProseWriter;
302
+ comment: (content: string) => ProseWriter;
303
+ raw: (content: string) => ProseWriter;
304
+ append: (writer: ProseWriter) => ProseWriter;
305
+ when: (condition: unknown, builder: (writer: ProseWriter & InlineUtils) => void) => ProseWriter;
294
306
  } & {
295
307
  safe: ((...content: WriterValue[]) => ProseWriter) & {
296
308
  with: (builder: (writer: ProseWriter & InlineUtils) => void) => ProseWriter;
@@ -300,6 +312,18 @@ export declare const write: ((...content: WriterValue[]) => ProseWriter) & {
300
312
  tasks: (...args: [(l: ListBuilder) => void] | (WriterValue | [WriterValue, boolean])[]) => ProseWriter;
301
313
  callout: (type: "NOTE" | "TIP" | "IMPORTANT" | "WARNING" | "CAUTION", content: string | ((writer: ProseWriter & InlineUtils) => void)) => ProseWriter;
302
314
  schema: (schemaValue: unknown, options?: SchemaEmbedOptions) => ProseWriter;
315
+ heading: (level: 1 | 2 | 3 | 4 | 5 | 6, ...content: string[]) => ProseWriter;
316
+ blockquote: (...lines: string[]) => ProseWriter;
317
+ codeblock: (language: string, content: string | ((writer: ProseWriter & InlineUtils) => void)) => ProseWriter;
318
+ json: (data: unknown, options?: ValidationOptions) => ProseWriter;
319
+ yaml: (data: unknown, options?: ValidationOptions) => ProseWriter;
320
+ definitions: (obj: Record<string, string>) => ProseWriter;
321
+ section: (name: string, builder: (writer: ProseWriter & InlineUtils) => void, level?: 1 | 2 | 3 | 4 | 5 | 6) => ProseWriter;
322
+ tag: (name: string, content: string | ProseWriter | ((writer: ProseWriter & InlineUtils) => void)) => ProseWriter;
323
+ comment: (content: string) => ProseWriter;
324
+ raw: (content: string) => ProseWriter;
325
+ append: (writer: ProseWriter) => ProseWriter;
326
+ when: (condition: unknown, builder: (writer: ProseWriter & InlineUtils) => void) => ProseWriter;
303
327
  };
304
328
  };
305
329
  /**
@@ -162,7 +162,7 @@ export class ProseWriter {
162
162
  return this;
163
163
  }
164
164
  const p = this.padding;
165
- this.parts.push(p + joined + '\n');
165
+ this.parts.push(p + joined.trim() + '\n');
166
166
  return this;
167
167
  }
168
168
  unorderedList(...args) {
@@ -965,6 +965,42 @@ const buildWrite = (safeMode) => {
965
965
  schema: (schemaValue, options) => {
966
966
  return createWriter().schema(schemaValue, options);
967
967
  },
968
+ heading: (level, ...content) => {
969
+ return createWriter().heading(level, ...content);
970
+ },
971
+ blockquote: (...lines) => {
972
+ return createWriter().blockquote(...lines);
973
+ },
974
+ codeblock: (language, content) => {
975
+ return createWriter().codeblock(language, content);
976
+ },
977
+ json: (data, options) => {
978
+ return createWriter().json(data, options);
979
+ },
980
+ yaml: (data, options) => {
981
+ return createWriter().yaml(data, options);
982
+ },
983
+ definitions: (obj) => {
984
+ return createWriter().definitions(obj);
985
+ },
986
+ section: (name, builder, level) => {
987
+ return createWriter().section(name, builder, level);
988
+ },
989
+ tag: (name, content) => {
990
+ return createWriter().tag(name, content);
991
+ },
992
+ comment: (content) => {
993
+ return createWriter().comment(content);
994
+ },
995
+ raw: (content) => {
996
+ return createWriter().raw(content);
997
+ },
998
+ append: (writer) => {
999
+ return createWriter().append(writer);
1000
+ },
1001
+ when: (condition, builder) => {
1002
+ return createWriter().when(condition, builder);
1003
+ },
968
1004
  });
969
1005
  };
970
1006
  const safeWrite = buildWrite(true);
@@ -1 +1 @@
1
- {"version":3,"file":"prose-writer.js","sourceRoot":"","sources":["../src/prose-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prose-writer.js","sourceRoot":"","sources":["../src/prose-writer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Inline formatting utilities that can be used within write() or builder functions.\n * These return strings and do not side-effect the writer.\n */\nexport interface InlineUtils {\n bold: (content: string | number | boolean | ProseWriter) => string;\n italic: (content: string | number | boolean | ProseWriter) => string;\n code: (content: string | number | boolean | ProseWriter) => string;\n inline: (content: string | number | boolean | ProseWriter) => string;\n strike: (content: string | number | boolean | ProseWriter) => string;\n link: (text: string | ProseWriter, url: string) => string;\n image: (alt: string | ProseWriter, url: string) => string;\n}\n\n/**\n * Builder for markdown lists.\n */\nexport interface ListBuilder extends InlineUtils {\n item(...content: (string | number | boolean | ProseWriter)[]): this;\n task(checked: boolean, ...content: (string | number | boolean | ProseWriter)[]): this;\n todo(...content: (string | number | boolean | ProseWriter)[]): this;\n done(...content: (string | number | boolean | ProseWriter)[]): this;\n comment(content: string): this;\n unorderedList(builder: (l: ListBuilder) => void): this;\n unorderedList(...items: (string | number | boolean | ProseWriter)[]): this;\n list(builder: (l: ListBuilder) => void): this;\n list(...items: (string | number | boolean | ProseWriter)[]): this;\n orderedList(builder: (l: ListBuilder) => void): this;\n orderedList(...items: (string | number | boolean | ProseWriter)[]): this;\n}\n\nclass SafeString {\n private value: string;\n\n constructor(value: string) {\n this.value = value;\n }\n\n toString(): string {\n return this.value;\n }\n\n valueOf(): string {\n return this.value;\n }\n}\n\nexport type OutputFormat = 'json' | 'yaml';\n\nexport type ValidationIssue = {\n message: string;\n path?: string;\n};\n\nexport type ValidationResult = {\n valid: boolean;\n issues?: ValidationIssue[];\n};\n\nexport type OutputValidator = (options: {\n format: OutputFormat;\n data: unknown;\n schema?: unknown;\n}) => ValidationResult;\n\nexport type JsonSchemaAdapter = (schema: unknown, data: unknown) => ValidationResult;\n\nexport type ValidationOptions = {\n schema?: unknown;\n validate?: OutputValidator;\n label?: string;\n parseYaml?: (input: string) => unknown;\n};\n\nexport type SchemaEmbedOptions = {\n format?: OutputFormat;\n title?: string;\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n tag?: string;\n};\n\ntype WriterOptions = {\n safe?: boolean;\n};\n\ntype WriterValue = string | number | boolean | ProseWriter;\ntype ContentValue = WriterValue | SafeString;\n\nconst escapeXmlText = (value: string): string =>\n value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nconst escapeMarkdownLineStart = (line: string): string => {\n if (/^\\s*#{1,6}\\s/.test(line)) {\n return line.replace(/^(\\s*)(#{1,6})/, '$1\\\\$2');\n }\n if (/^\\s*>/.test(line)) {\n return line.replace(/^(\\s*)>/, '$1\\\\>');\n }\n if (/^\\s*([-+*])\\s/.test(line)) {\n return line.replace(/^(\\s*)([-+*])/, '$1\\\\$2');\n }\n if (/^\\s*\\d+\\.\\s/.test(line)) {\n return line.replace(/^(\\s*)(\\d+)\\./, '$1$2\\\\.');\n }\n return line;\n};\n\nconst escapeMarkdownText = (value: string): string => {\n const escaped = escapeXmlText(value)\n .replace(/([\\\\`*_~()|!])/g, '\\\\$1')\n .replace(/\\[/g, '\\\\[')\n .replace(/\\]/g, '\\\\]');\n return escaped\n .split('\\n')\n .map((line) => escapeMarkdownLineStart(line))\n .join('\\n');\n};\n\nconst wrapInlineCode = (value: string): string => {\n const matches = value.match(/`+/g);\n const fenceSize = (matches ? Math.max(...matches.map((m) => m.length)) : 0) + 1;\n const fence = '`'.repeat(fenceSize);\n const needsPadding = /^\\s|\\s$/.test(value);\n const content = needsPadding ? ` ${value} ` : value;\n return `${fence}${content}${fence}`;\n};\n\nconst escapeLinkDestination = (url: string): string => {\n const encoded = encodeURI(url);\n return encoded.replace(/[()]/g, '\\\\$&');\n};\n\nconst sanitizeLinkDestination = (url: string): string => {\n const trimmed = url.trim();\n const lower = trimmed.toLowerCase();\n if (/^[a-z][a-z0-9+.-]*:/.test(lower) && !/^(https?|mailto):/.test(lower)) {\n return '#';\n }\n return escapeLinkDestination(trimmed);\n};\n\nconst toContentString = (\n content: ContentValue,\n trim: 'none' | 'end' | 'both' = 'none',\n): { value: string; isTrusted: boolean } => {\n if (content instanceof SafeString) {\n return { value: content.toString(), isTrusted: true };\n }\n if (content instanceof ProseWriter) {\n const raw = content.toString();\n if (trim === 'end') return { value: raw.trimEnd(), isTrusted: true };\n if (trim === 'both') return { value: raw.trim(), isTrusted: true };\n return { value: raw, isTrusted: true };\n }\n return { value: String(content), isTrusted: false };\n};\n\nconst toSafeInlineText = (content: ContentValue): string => {\n const { value, isTrusted } = toContentString(content, 'both');\n return isTrusted ? value : escapeMarkdownText(value);\n};\n\nconst asSafeString = (value: string): string =>\n new SafeString(value) as unknown as string;\n\nconst safeBold = (content: ContentValue): string =>\n asSafeString(`**${toSafeInlineText(content)}**`);\n\nconst safeItalic = (content: ContentValue): string =>\n asSafeString(`*${toSafeInlineText(content)}*`);\n\nconst safeStrike = (content: ContentValue): string =>\n asSafeString(`~~${toSafeInlineText(content)}~~`);\n\nconst safeInlineCode = (content: ContentValue): string => {\n const { value } = toContentString(content, 'both');\n return asSafeString(wrapInlineCode(value));\n};\n\nconst safeLink = (text: string | ProseWriter, url: string): string => {\n const { value, isTrusted } = toContentString(text, 'both');\n const safeText = isTrusted ? value : escapeMarkdownText(value);\n const safeUrl = sanitizeLinkDestination(url);\n return asSafeString(`[${safeText}](${safeUrl})`);\n};\n\nconst safeImage = (alt: string | ProseWriter, url: string): string => {\n const { value, isTrusted } = toContentString(alt, 'both');\n const safeAlt = isTrusted ? value : escapeMarkdownText(value);\n const safeUrl = sanitizeLinkDestination(url);\n return asSafeString(`![${safeAlt}](${safeUrl})`);\n};\n\nconst formatValidationIssues = (issues: ValidationIssue[]): string => {\n if (issues.length === 0) {\n return 'No validation issues were provided.';\n }\n return issues\n .map((issue, index) => {\n const path = issue.path ? `${issue.path}: ` : '';\n return `${index + 1}. ${path}${issue.message}`;\n })\n .join('\\n');\n};\n\nexport class ValidationError extends Error {\n format: OutputFormat;\n issues: ValidationIssue[];\n\n constructor(format: OutputFormat, issues: ValidationIssue[], label?: string) {\n const title = label ?? `${format.toUpperCase()} validation failed`;\n super(`${title}\\n${formatValidationIssues(issues)}`);\n this.name = 'ValidationError';\n this.format = format;\n this.issues = issues;\n }\n}\n\nexport const createJsonSchemaValidator = (\n adapter: JsonSchemaAdapter,\n): OutputValidator => {\n return ({ format, data, schema }): ValidationResult => {\n if (format !== 'json' || schema === undefined) {\n return { valid: true };\n }\n return adapter(schema, data);\n };\n};\n\nexport const createYamlParserAdapter = (\n parser: (input: string) => unknown,\n): ((input: string) => unknown) => {\n return (input: string) => parser(input);\n};\n\n/**\n * A chainable prose writer for building formatted text/markdown strings.\n */\nexport class ProseWriter {\n private parts: string[] = [];\n private _skipNextPadding = false;\n private safeMode: boolean;\n\n constructor(content?: string, options: WriterOptions = {}) {\n this.safeMode = options.safe ?? false;\n if (content !== undefined) {\n this.parts.push(content.endsWith('\\n') ? content : content + '\\n');\n }\n }\n\n private createChildWriter(): ProseWriter {\n return new ProseWriter(undefined, { safe: this.safeMode });\n }\n\n /**\n * Appends content to the prose.\n * Multiple arguments are joined with a space.\n * Chaining write() calls creates separate paragraphs by default.\n */\n write(...content: (string | number | boolean | ProseWriter)[]): this {\n const joined = content\n .map((c) => {\n const { value, isTrusted } = toContentString(c, 'end');\n if (this.safeMode && !isTrusted) {\n return escapeMarkdownText(value);\n }\n return value;\n })\n .join(' ');\n\n if (this.parts.length === 0 && joined.length === 0) {\n return this;\n }\n\n const p = this.padding;\n this.parts.push(p + joined.trim() + '\\n');\n return this;\n }\n\n /**\n * Appends an unordered list.\n * Each item is prefixed with `- ` on its own line.\n * Supports nesting by passing another ProseWriter instance or a builder function.\n */\n unorderedList(builder: (l: ListBuilder) => void): this;\n unorderedList(...items: (string | number | boolean | ProseWriter)[]): this;\n unorderedList(\n ...args: [(l: ListBuilder) => void] | (string | number | boolean | ProseWriter)[]\n ): this {\n if (args.length === 1 && typeof args[0] === 'function') {\n const { builder, getItems } = this.createListBuilder();\n (args[0] as (l: ListBuilder) => void)(builder);\n const items = getItems();\n const listContent = items\n .map((item) => {\n if (item instanceof ProseWriter) {\n return item\n .toString()\n .trimEnd()\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n');\n }\n return `- ${item}`;\n })\n .join('\\n');\n this.parts.push(`${this.padding}${listContent}\\n\\n`);\n return this;\n }\n\n const items = args as (string | number | boolean | ProseWriter)[];\n const listContent = items\n .map((item) => {\n if (item instanceof ProseWriter) {\n return item\n .toString()\n .trimEnd()\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n');\n }\n const { value, isTrusted } = toContentString(item);\n const text = this.safeMode && !isTrusted ? escapeMarkdownText(value) : value;\n return `- ${text}`;\n })\n .join('\\n');\n this.parts.push(`${this.padding}${listContent}\\n\\n`);\n return this;\n }\n\n /**\n * Alias for unorderedList().\n */\n list(builder: (l: ListBuilder) => void): this;\n list(...items: (string | number | boolean | ProseWriter)[]): this;\n list(\n ...args: [(l: ListBuilder) => void] | (string | number | boolean | ProseWriter)[]\n ): this {\n if (args.length === 1 && typeof args[0] === 'function') {\n return this.unorderedList(args[0] as (l: ListBuilder) => void);\n }\n return this.unorderedList(...(args as (string | number | boolean | ProseWriter)[]));\n }\n\n /**\n * Appends an ordered list.\n * Each item is prefixed with its number on its own line.\n * Supports nesting by passing another ProseWriter instance or a builder function.\n */\n orderedList(builder: (l: ListBuilder) => void): this;\n orderedList(...items: (string | number | boolean | ProseWriter)[]): this;\n orderedList(\n ...args: [(l: ListBuilder) => void] | (string | number | boolean | ProseWriter)[]\n ): this {\n if (args.length === 1 && typeof args[0] === 'function') {\n const { builder, getItems } = this.createListBuilder();\n (args[0] as (l: ListBuilder) => void)(builder);\n let index = 1;\n const items = getItems();\n const listContent = items\n .map((item) => {\n if (item instanceof ProseWriter) {\n return item\n .toString()\n .trimEnd()\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n');\n }\n return `${index++}. ${item}`;\n })\n .join('\\n');\n this.parts.push(`${this.padding}${listContent}\\n\\n`);\n return this;\n }\n\n let index = 1;\n const items = args as (string | number | boolean | ProseWriter)[];\n const listContent = items\n .map((item) => {\n if (item instanceof ProseWriter) {\n return item\n .toString()\n .trimEnd()\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n');\n }\n const { value, isTrusted } = toContentString(item);\n const text = this.safeMode && !isTrusted ? escapeMarkdownText(value) : value;\n return `${index++}. ${text}`;\n })\n .join('\\n');\n this.parts.push(`${this.padding}${listContent}\\n\\n`);\n return this;\n }\n\n /**\n * Appends a task list with checkboxes.\n */\n tasks(builder: (l: ListBuilder) => void): this;\n tasks(\n ...items: (\n | string\n | number\n | boolean\n | ProseWriter\n | [string | number | boolean | ProseWriter, boolean]\n )[]\n ): this;\n tasks(\n ...args:\n | [(l: ListBuilder) => void]\n | (\n | string\n | number\n | boolean\n | ProseWriter\n | [string | number | boolean | ProseWriter, boolean]\n )[]\n ): this {\n if (args.length === 1 && typeof args[0] === 'function') {\n const { builder, getItems } = this.createListBuilder();\n (args[0] as (l: ListBuilder) => void)(builder);\n const items = getItems();\n const listContent = items\n .map((item) => {\n if (item instanceof ProseWriter) {\n return item\n .toString()\n .trimEnd()\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n');\n }\n return `- ${item}`;\n })\n .join('\\n');\n this.parts.push(`${this.padding}${listContent}\\n\\n`);\n return this;\n }\n\n const items = (\n args as (\n | string\n | number\n | boolean\n | ProseWriter\n | [string | number | boolean | ProseWriter, boolean]\n )[]\n ).map((arg) => {\n if (Array.isArray(arg) && arg.length === 2 && typeof arg[1] === 'boolean') {\n const [content, checked] = arg;\n const checkbox = checked ? '[x] ' : '[ ] ';\n const text = this.createChildWriter().write(content).toString().trimEnd();\n return checkbox + text;\n }\n const checkbox = '[ ] ';\n const text = this.createChildWriter()\n .write(arg as string | number | boolean | ProseWriter)\n .toString()\n .trimEnd();\n return checkbox + text;\n });\n\n const listContent = items.map((item) => `- ${item}`).join('\\n');\n this.parts.push(`${this.padding}${listContent}\\n\\n`);\n return this;\n }\n\n /**\n * Appends a GitHub Alert (callout).\n */\n callout(\n type: 'NOTE' | 'TIP' | 'IMPORTANT' | 'WARNING' | 'CAUTION',\n content: string | ((writer: ProseWriter & InlineUtils) => void),\n ): this {\n let contentString: string;\n if (typeof content === 'function') {\n const writer = this.createChildWriter();\n content(writer.enhanced);\n contentString = writer.toString().trimEnd();\n } else {\n const { value, isTrusted } = toContentString(content);\n contentString = this.safeMode && !isTrusted ? escapeMarkdownText(value) : value;\n }\n\n const lines = contentString.split('\\n');\n const alertLines = [`[!${type.toUpperCase()}]`, ...lines];\n const alertContent = alertLines.map((line) => `> ${line}`).join('\\n');\n\n this.parts.push(`${this.padding}${alertContent}\\n\\n`);\n return this;\n }\n\n /**\n * Appends a markdown heading at the specified level.\n */\n heading(level: 1 | 2 | 3 | 4 | 5 | 6, ...content: string[]): this {\n const hashes = '#'.repeat(level);\n const joined = content\n .map((part) => {\n const { value, isTrusted } = toContentString(part);\n if (this.safeMode && !isTrusted) {\n return escapeMarkdownText(value);\n }\n return value;\n })\n .join(' ');\n this.parts.push(`${this.padding}${hashes} ${joined}\\n\\n`);\n return this;\n }\n\n /**\n * Appends a blockquote with the given lines.\n * Lines are separated by an empty blockquote line.\n */\n blockquote(...lines: string[]): this {\n const quotedLines = lines\n .map((line) => {\n const { value, isTrusted } = toContentString(line);\n if (this.safeMode && !isTrusted) {\n return escapeMarkdownText(value);\n }\n return value;\n })\n .map((line) => `> ${line}`)\n .join('\\n>\\n');\n this.parts.push(`${this.padding}${quotedLines}\\n\\n`);\n return this;\n }\n\n /**\n * Appends a fenced code block with the specified language.\n */\n codeblock(\n language: string,\n content: string | ((writer: ProseWriter & InlineUtils) => void),\n ): this {\n let code: string;\n if (typeof content === 'function') {\n const writer = new ProseWriter();\n content(writer.enhanced);\n code = writer.toString().trim();\n } else {\n code = content;\n }\n this.parts.push(`${this.padding}\\`\\`\\`${language}\\n${code}\\n\\`\\`\\`\\n\\n`);\n return this;\n }\n\n /**\n * Appends a horizontal separator.\n */\n get separator(): this {\n this.parts.push(`${this.padding}---\\n\\n`);\n return this;\n }\n\n /**\n * Appends a JSON code block.\n * If data is not a string, it will be stringified with formatting.\n */\n json(data: unknown, options: ValidationOptions = {}): this {\n this.validateOutput('json', data, options);\n const jsonString = typeof data === 'string' ? data : JSON.stringify(data, null, 2);\n return this.codeblock('json', jsonString);\n }\n\n /**\n * Appends the content from another ProseWriter instance.\n * Enables composition of prompts from reusable pieces.\n */\n append(writer: ProseWriter): this {\n const content = writer.toString();\n if (content.length > 0) {\n this.parts.push(this.padding + content);\n }\n return this;\n }\n\n /**\n * Returns a version of this writer with inline formatters as methods.\n * This is passed to builder functions to allow using formatters without imports.\n */\n private get enhanced(): this & InlineUtils {\n const formatters: Record<string, unknown> = this.safeMode\n ? {\n bold: safeBold,\n italic: safeItalic,\n code: safeInlineCode,\n inline: safeInlineCode,\n link: safeLink,\n strike: safeStrike,\n image: safeImage,\n }\n : {\n bold,\n italic,\n code,\n inline,\n link,\n strike,\n image,\n };\n return new Proxy(this, {\n get(target, prop) {\n if (typeof prop === 'string' && prop in formatters) {\n return formatters[prop];\n }\n const val = Reflect.get(target, prop, target) as unknown;\n if (typeof val === 'function') {\n return (val as (...args: unknown[]) => unknown).bind(target);\n }\n return val;\n },\n }) as this & InlineUtils;\n }\n\n /**\n * Conditionally executes a builder function.\n * If the condition is truthy, the builder is called with this instance.\n */\n when(condition: unknown, builder: (writer: this & InlineUtils) => void): this {\n if (condition) {\n builder(this.enhanced);\n }\n return this;\n }\n\n /**\n * Executes a builder function with this instance.\n * Useful for logical grouping in chains.\n */\n with(builder: (writer: this & InlineUtils) => void): this {\n builder(this.enhanced);\n return this;\n }\n\n /**\n * Wraps content in XML-style tags.\n * Useful for Claude and other models that respond well to XML delimiters.\n */\n tag(\n name: string,\n content: string | ProseWriter | ((writer: ProseWriter & InlineUtils) => void),\n ): this {\n let contentString: string;\n if (typeof content === 'function') {\n const writer = this.createChildWriter();\n content(writer.enhanced);\n contentString = writer.toString();\n } else {\n const { value, isTrusted } = toContentString(content);\n if (this.safeMode && !isTrusted) {\n contentString = escapeMarkdownText(value);\n } else {\n contentString = value;\n }\n }\n this.parts.push(`${this.padding}<${name}>\\n${contentString.trimEnd()}\\n</${name}>\\n`);\n return this;\n }\n\n /**\n * Appends inline code (wrapped in backticks).\n */\n code(content: string | number | boolean | ProseWriter): this {\n const formatted = this.safeMode ? safeInlineCode(content) : code(content);\n this.parts.push(this.padding + formatted + '\\n');\n return this;\n }\n\n /**\n * Creates a semantic section with a heading and content built by the builder function.\n * @param name - The section heading text\n * @param builder - A function that receives a fresh ProseWriter to build section content\n * @param level - Optional heading level (defaults to 2)\n */\n section(\n name: string,\n builder: (writer: ProseWriter & InlineUtils) => void,\n level: 1 | 2 | 3 | 4 | 5 | 6 = 2,\n ): this {\n const sectionWriter = this.createChildWriter();\n builder(sectionWriter.enhanced);\n const hashes = '#'.repeat(level);\n const title = this.safeMode ? escapeMarkdownText(name) : name;\n this.parts.push(`${this.padding}${hashes} ${title}\\n\\n${sectionWriter.toString()}`);\n return this;\n }\n\n /**\n * Creates a copy of this ProseWriter with the same content.\n * Useful for creating variations of a base prompt.\n */\n clone(): ProseWriter {\n const cloned = new ProseWriter(undefined, { safe: this.safeMode });\n cloned.parts = [...this.parts];\n return cloned;\n }\n\n /**\n * Appends a markdown table with headers and rows.\n * Type-safe: Each row can be an array of strings matching the header length,\n * or an object where keys match the header names.\n */\n table<T extends string>(\n headers: [...T[]],\n rows: (string[] | Record<T, string | number | boolean | ProseWriter>)[],\n ): this {\n const safeHeaders = this.safeMode\n ? headers.map((header) => escapeMarkdownText(header))\n : headers;\n const headerRow = `| ${safeHeaders.join(' | ')} |`;\n const separatorRow = `| ${headers.map(() => '---').join(' | ')} |`;\n\n const dataRows = rows\n .map((row) => {\n const values = Array.isArray(row)\n ? row.map((val) => {\n const text = String(val ?? '');\n return this.safeMode ? escapeMarkdownText(text) : text;\n })\n : headers.map((h) => {\n const val = row[h];\n if (val instanceof ProseWriter) return val.toPlainText();\n const text = String(val ?? '');\n return this.safeMode ? escapeMarkdownText(text) : text;\n });\n return `| ${values.join(' | ')} |`;\n })\n .join('\\n');\n\n this.parts.push(`${this.padding}${headerRow}\\n${separatorRow}\\n${dataRows}\\n\\n`);\n return this;\n }\n\n /**\n * Appends a definition list with key-value pairs.\n * Each key is bolded, followed by a colon and the value.\n */\n definitions(obj: Record<string, string>): this {\n const entries = Object.entries(obj)\n .map(([key, value]) => {\n if (this.safeMode) {\n return `${safeBold(key)}: ${escapeMarkdownText(value)}`;\n }\n return `**${key}**: ${value}`;\n })\n .join('\\n');\n this.parts.push(`${this.padding}${entries}\\n\\n`);\n return this;\n }\n\n /**\n * Embeds a schema or output contract in the prompt.\n */\n schema(schemaValue: unknown, options: SchemaEmbedOptions = {}): this {\n const { format = 'json', title, level = 2, tag } = options;\n if (title) {\n this.heading(level, title);\n }\n\n if (tag) {\n const schemaWriter = this.createChildWriter();\n if (format === 'json') {\n schemaWriter.json(schemaValue);\n } else {\n schemaWriter.yaml(schemaValue);\n }\n return this.tag(tag, schemaWriter);\n }\n\n if (format === 'json') {\n return this.json(schemaValue);\n }\n return this.yaml(schemaValue);\n }\n\n /**\n * Appends bold text.\n */\n bold(content: string | number | boolean | ProseWriter): this {\n const formatted = this.safeMode ? safeBold(content) : bold(content);\n this.parts.push(this.padding + formatted + '\\n');\n return this;\n }\n\n /**\n * Appends italic text.\n */\n italic(content: string | number | boolean | ProseWriter): this {\n const formatted = this.safeMode ? safeItalic(content) : italic(content);\n this.parts.push(this.padding + formatted + '\\n');\n return this;\n }\n\n /**\n * Appends strikethrough text.\n */\n strike(content: string | number | boolean | ProseWriter): this {\n const formatted = this.safeMode ? safeStrike(content) : strike(content);\n this.parts.push(this.padding + formatted + '\\n');\n return this;\n }\n\n /**\n * Appends raw content without any processing.\n */\n raw(content: string): this {\n this.parts.push(content);\n return this;\n }\n\n /**\n * Appends a markdown link.\n */\n link(text: string | ProseWriter, url: string): this {\n const formatted = this.safeMode ? safeLink(text, url) : link(text, url);\n this.parts.push(this.padding + formatted + '\\n');\n return this;\n }\n\n /**\n * Appends a markdown image.\n */\n image(alt: string | ProseWriter, url: string): this {\n const formatted = this.safeMode ? safeImage(alt, url) : image(alt, url);\n this.parts.push(this.padding + formatted + '\\n');\n return this;\n }\n\n /**\n * Appends an HTML comment.\n */\n comment(content: string): this {\n this.parts.push(`${this.padding}<!-- ${content} -->\\n\\n`);\n return this;\n }\n\n /**\n * Appends a YAML code block.\n * If data is not a string, it will be converted to YAML format.\n */\n yaml(data: unknown, options: ValidationOptions = {}): this {\n this.validateOutput('yaml', data, options);\n const yamlString = typeof data === 'string' ? data : this.toYamlString(data);\n return this.codeblock('yaml', yamlString);\n }\n\n /**\n * Converts a value to a simple YAML string representation.\n */\n private toYamlString(data: unknown, indent: number = 0): string {\n const prefix = ' '.repeat(indent);\n\n if (data === null || data === undefined) {\n return 'null';\n }\n\n if (typeof data === 'string') {\n // Quote strings that contain special characters\n if (/[:\\n#\"']/.test(data) || data === '') {\n return `\"${data.replace(/\"/g, '\\\\\"')}\"`;\n }\n return data;\n }\n\n if (typeof data === 'number' || typeof data === 'boolean') {\n return String(data);\n }\n\n if (Array.isArray(data)) {\n if (data.length === 0) return '[]';\n return data\n .map((item) => `${prefix}- ${this.toYamlString(item, indent + 1)}`)\n .join('\\n');\n }\n\n if (typeof data === 'object') {\n const entries = Object.entries(data as Record<string, unknown>);\n if (entries.length === 0) return '{}';\n return entries\n .map(([key, value]) => {\n const valueStr = this.toYamlString(value, indent + 1);\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n return `${prefix}${key}:\\n${valueStr}`;\n }\n if (Array.isArray(value)) {\n return `${prefix}${key}:\\n${valueStr}`;\n }\n return `${prefix}${key}: ${valueStr}`;\n })\n .join('\\n');\n }\n\n // Fallback for any other types - use JSON stringify\n return JSON.stringify(data) ?? 'null';\n }\n\n /**\n * Wraps content with custom delimiters.\n */\n delimit(open: string, close: string, content: string | ProseWriter): this {\n const contentString = content instanceof ProseWriter ? content.toString() : content;\n this.parts.push(`${this.padding}${open}\\n${contentString}\\n${close}\\n`);\n return this;\n }\n\n /**\n * Returns a new ProseWriter with consecutive newlines collapsed to double newlines.\n */\n compact(): ProseWriter {\n const content = this.toString().replace(/\\n{3,}/g, '\\n\\n');\n return new ProseWriter(content, { safe: this.safeMode });\n }\n\n /**\n * Returns a new ProseWriter with leading and trailing whitespace removed.\n */\n trim(): ProseWriter {\n const content = this.toString().trim();\n return new ProseWriter(content, { safe: this.safeMode });\n }\n\n /**\n * Estimates the number of tokens in the prose.\n * By default, uses a rough approximation of ~4 characters per token.\n * An optional counter function can be provided for more accurate counting.\n */\n tokens(counter?: (content: string) => number): number {\n const content = this.toString();\n if (counter) {\n return counter(content);\n }\n // Rough estimation: ~4 characters per token for English text\n return Math.ceil(content.length / 4);\n }\n\n /**\n * Iterates over items and applies a builder function for each.\n */\n each<T>(\n items: T[],\n builder: (item: T, writer: this & InlineUtils, index: number) => void,\n ): this {\n items.forEach((item, index) => {\n builder(item, this.enhanced, index);\n });\n return this;\n }\n\n /**\n * Converts the prose to plain text by stripping markdown formatting.\n */\n toPlainText(): string {\n let text = this.toString();\n\n // Remove code blocks (preserve content)\n text = text.replace(/```[\\s\\S]*?```/g, (match) => {\n const lines = match.split('\\n');\n return lines.slice(1, -1).join('\\n');\n });\n\n // Remove inline code backticks\n text = text.replace(/`([^`]+)`/g, '$1');\n\n // Remove headings (keep text)\n text = text.replace(/^#{1,6}\\s+(.*)$/gm, '$1');\n\n // Remove bold\n text = text.replace(/\\*\\*([^*]+)\\*\\*/g, '$1');\n\n // Remove italic\n text = text.replace(/\\*([^*]+)\\*/g, '$1');\n\n // Remove links (keep text)\n text = text.replace(/\\[([^\\]]+)\\]\\([^)]+\\)/g, '$1');\n\n // Remove blockquote markers\n text = text.replace(/^>\\s?/gm, '');\n\n // Remove horizontal rules\n text = text.replace(/^---$/gm, '');\n\n // Remove list markers\n text = text.replace(/^[-*]\\s+/gm, '');\n text = text.replace(/^\\d+\\.\\s+/gm, '');\n\n // Remove XML tags (keep content)\n text = text.replace(/<[^>]+>/g, '');\n\n // Remove table formatting\n text = text.replace(/\\|/g, ' ');\n text = text.replace(/^[\\s-]+$/gm, '');\n\n // Collapse multiple spaces\n text = text.replace(/ {2,}/g, ' ');\n\n // Collapse multiple newlines\n text = text.replace(/\\n{3,}/g, '\\n\\n');\n\n return text.trim();\n }\n\n /**\n * Runs output validation if a validator is provided.\n */\n private validateOutput(\n format: OutputFormat,\n data: unknown,\n options: ValidationOptions,\n ): void {\n if (!options.validate) return;\n let validationData = data;\n if (format === 'json' && typeof data === 'string') {\n try {\n validationData = JSON.parse(data);\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Invalid JSON string';\n throw new ValidationError(\n format,\n [{ path: '$', message: `Invalid JSON string: ${message}` }],\n options.label,\n );\n }\n }\n if (format === 'yaml' && typeof data === 'string' && options.parseYaml) {\n try {\n validationData = options.parseYaml(data);\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Invalid YAML string';\n throw new ValidationError(\n format,\n [{ path: '$', message: `Invalid YAML string: ${message}` }],\n options.label,\n );\n }\n }\n const result = options.validate({\n format,\n data: validationData,\n schema: options.schema,\n });\n if (result.valid) return;\n throw new ValidationError(format, result.issues ?? [], options.label);\n }\n\n /**\n * Returns necessary newline padding if there is existing content.\n * Ensures exactly two newlines (a paragraph break) before a block element.\n */\n private get padding(): string {\n if (this._skipNextPadding || this.parts.length === 0) {\n this._skipNextPadding = false;\n return '';\n }\n const lastPart = this.parts[this.parts.length - 1]!;\n if (lastPart.endsWith('\\n\\n')) return '';\n if (lastPart.endsWith('\\n')) return '\\n';\n return '\\n\\n';\n }\n\n /**\n * Internal helper to create a list builder.\n */\n private createListBuilder(): {\n builder: ListBuilder;\n getItems: () => (string | number | boolean | ProseWriter)[];\n } {\n const items: (string | number | boolean | ProseWriter)[] = [];\n const lb: ListBuilder = {\n item: (...content: (string | number | boolean | ProseWriter)[]) => {\n items.push(\n this.createChildWriter()\n .write(...content)\n .toString()\n .trimEnd(),\n );\n return lb;\n },\n task: (\n checked: boolean,\n ...content: (string | number | boolean | ProseWriter)[]\n ) => {\n const checkbox = checked ? '[x] ' : '[ ] ';\n const text = this.createChildWriter()\n .write(...content)\n .toString()\n .trimEnd();\n items.push(checkbox + text);\n return lb;\n },\n todo: (...content: (string | number | boolean | ProseWriter)[]) =>\n lb.task(false, ...content),\n done: (...content: (string | number | boolean | ProseWriter)[]) =>\n lb.task(true, ...content),\n unorderedList: (\n ...args: [(l: ListBuilder) => void] | (string | number | boolean | ProseWriter)[]\n ) => {\n const sub = this.createChildWriter();\n if (args.length === 1 && typeof args[0] === 'function') {\n sub.unorderedList(args[0] as (l: ListBuilder) => void);\n } else {\n sub.unorderedList(...(args as (string | number | boolean | ProseWriter)[]));\n }\n items.push(sub);\n return lb;\n },\n list: (\n ...args: [(l: ListBuilder) => void] | (string | number | boolean | ProseWriter)[]\n ) => {\n const sub = this.createChildWriter();\n if (args.length === 1 && typeof args[0] === 'function') {\n sub.list(args[0] as (l: ListBuilder) => void);\n } else {\n sub.list(...(args as (string | number | boolean | ProseWriter)[]));\n }\n items.push(sub);\n return lb;\n },\n orderedList: (\n ...args: [(l: ListBuilder) => void] | (string | number | boolean | ProseWriter)[]\n ) => {\n const sub = this.createChildWriter();\n if (args.length === 1 && typeof args[0] === 'function') {\n sub.orderedList(args[0] as (l: ListBuilder) => void);\n } else {\n sub.orderedList(...(args as (string | number | boolean | ProseWriter)[]));\n }\n items.push(sub);\n return lb;\n },\n comment: (content: string) => {\n const sub = this.createChildWriter();\n sub.comment(content);\n items.push(sub);\n return lb;\n },\n bold: this.safeMode ? safeBold : bold,\n italic: this.safeMode ? safeItalic : italic,\n code: this.safeMode ? safeInlineCode : code,\n inline: this.safeMode ? safeInlineCode : inline,\n strike: this.safeMode ? safeStrike : strike,\n link: this.safeMode ? safeLink : link,\n image: this.safeMode ? safeImage : image,\n };\n return { builder: lb, getItems: () => items };\n }\n\n /**\n * Creates an empty ProseWriter instance.\n */\n static empty(): ProseWriter {\n return new ProseWriter();\n }\n\n /**\n * Joins multiple ProseWriter instances into one.\n */\n static join(...writers: ProseWriter[]): ProseWriter {\n const result = new ProseWriter();\n for (const writer of writers) {\n result.parts.push(writer.toString());\n }\n return result;\n }\n\n /**\n * Converts the accumulated prose to a string.\n */\n toString(): string {\n return this.parts.join('');\n }\n\n /**\n * Returns the primitive value (string) for type coercion.\n */\n [Symbol.toPrimitive](hint: string): string | number {\n if (hint === 'number') {\n return Number.NaN;\n }\n return this.toString();\n }\n\n /**\n * Returns the string tag for the object.\n */\n get [Symbol.toStringTag](): string {\n return 'ProseWriter';\n }\n}\n\n/**\n * Creates a new ProseWriter instance with the given content.\n */\nconst buildWrite = (safeMode: boolean) => {\n const createWriter = () => new ProseWriter(undefined, { safe: safeMode });\n return Object.assign(\n (...content: WriterValue[]): ProseWriter => {\n return createWriter().write(...content);\n },\n {\n with: (builder: (writer: ProseWriter & InlineUtils) => void): ProseWriter => {\n return createWriter().with(builder);\n },\n unorderedList: (\n ...args: [(l: ListBuilder) => void] | WriterValue[]\n ): ProseWriter => {\n const pw = createWriter();\n if (args.length === 1 && typeof args[0] === 'function') {\n return pw.unorderedList(args[0] as (l: ListBuilder) => void);\n }\n return pw.unorderedList(...(args as WriterValue[]));\n },\n list: (...args: [(l: ListBuilder) => void] | WriterValue[]): ProseWriter => {\n const pw = createWriter();\n if (args.length === 1 && typeof args[0] === 'function') {\n return pw.list(args[0] as (l: ListBuilder) => void);\n }\n return pw.list(...(args as WriterValue[]));\n },\n orderedList: (...args: [(l: ListBuilder) => void] | WriterValue[]): ProseWriter => {\n const pw = createWriter();\n if (args.length === 1 && typeof args[0] === 'function') {\n return pw.orderedList(args[0] as (l: ListBuilder) => void);\n }\n return pw.orderedList(...(args as WriterValue[]));\n },\n tasks: (\n ...args: [(l: ListBuilder) => void] | (WriterValue | [WriterValue, boolean])[]\n ): ProseWriter => {\n const pw = createWriter();\n if (args.length === 1 && typeof args[0] === 'function') {\n return pw.tasks(args[0] as (l: ListBuilder) => void);\n }\n return pw.tasks(...(args as (WriterValue | [WriterValue, boolean])[]));\n },\n callout: (\n type: 'NOTE' | 'TIP' | 'IMPORTANT' | 'WARNING' | 'CAUTION',\n content: string | ((writer: ProseWriter & InlineUtils) => void),\n ): ProseWriter => {\n return createWriter().callout(type, content);\n },\n schema: (schemaValue: unknown, options?: SchemaEmbedOptions): ProseWriter => {\n return createWriter().schema(schemaValue, options);\n },\n heading: (level: 1 | 2 | 3 | 4 | 5 | 6, ...content: string[]): ProseWriter => {\n return createWriter().heading(level, ...content);\n },\n blockquote: (...lines: string[]): ProseWriter => {\n return createWriter().blockquote(...lines);\n },\n codeblock: (\n language: string,\n content: string | ((writer: ProseWriter & InlineUtils) => void),\n ): ProseWriter => {\n return createWriter().codeblock(language, content);\n },\n json: (data: unknown, options?: ValidationOptions): ProseWriter => {\n return createWriter().json(data, options);\n },\n yaml: (data: unknown, options?: ValidationOptions): ProseWriter => {\n return createWriter().yaml(data, options);\n },\n definitions: (obj: Record<string, string>): ProseWriter => {\n return createWriter().definitions(obj);\n },\n section: (\n name: string,\n builder: (writer: ProseWriter & InlineUtils) => void,\n level?: 1 | 2 | 3 | 4 | 5 | 6,\n ): ProseWriter => {\n return createWriter().section(name, builder, level);\n },\n tag: (\n name: string,\n content: string | ProseWriter | ((writer: ProseWriter & InlineUtils) => void),\n ): ProseWriter => {\n return createWriter().tag(name, content);\n },\n comment: (content: string): ProseWriter => {\n return createWriter().comment(content);\n },\n raw: (content: string): ProseWriter => {\n return createWriter().raw(content);\n },\n append: (writer: ProseWriter): ProseWriter => {\n return createWriter().append(writer);\n },\n when: (\n condition: unknown,\n builder: (writer: ProseWriter & InlineUtils) => void,\n ): ProseWriter => {\n return createWriter().when(condition, builder);\n },\n },\n );\n};\n\nconst safeWrite = buildWrite(true);\n\nexport const write = Object.assign(buildWrite(false), { safe: safeWrite });\n\n/**\n * Appends bold formatting to a string.\n */\nexport const bold = (content: string | number | boolean | ProseWriter): string =>\n `**${content instanceof ProseWriter ? content.toString().trim() : content}**`;\n\n/**\n * Appends italic formatting to a string.\n */\nexport const italic = (content: string | number | boolean | ProseWriter): string =>\n `*${content instanceof ProseWriter ? content.toString().trim() : content}*`;\n\n/**\n * Appends inline code formatting to a string.\n */\nexport const code = (content: string | number | boolean | ProseWriter): string =>\n `\\`${content instanceof ProseWriter ? content.toString().trim() : content}\\``;\n\n/**\n * Alias for code().\n */\nexport const inline = code;\n\n/**\n * Appends strikethrough formatting to a string.\n */\nexport const strike = (content: string | number | boolean | ProseWriter): string =>\n `~~${content instanceof ProseWriter ? content.toString().trim() : content}~~`;\n\n/**\n * Creates a markdown link string.\n */\nexport const link = (text: string | ProseWriter, url: string): string =>\n `[${text instanceof ProseWriter ? text.toString().trim() : text}](${url})`;\n\n/**\n * Creates a markdown image string.\n */\nexport const image = (alt: string | ProseWriter, url: string): string =>\n `![${alt instanceof ProseWriter ? alt.toString().trim() : alt}](${url})`;\n"]}
package/dist/safe.d.ts CHANGED
@@ -1,9 +1,21 @@
1
- export declare const write: ((...content: (string | number | boolean | import("./prose-writer").ProseWriter)[]) => import("./prose-writer").ProseWriter) & {
2
- with: (builder: (writer: import("./prose-writer").ProseWriter & import("./prose-writer").InlineUtils) => void) => import("./prose-writer").ProseWriter;
3
- unorderedList: (...args: [(l: import("./prose-writer").ListBuilder) => void] | (string | number | boolean | import("./prose-writer").ProseWriter)[]) => import("./prose-writer").ProseWriter;
4
- list: (...args: [(l: import("./prose-writer").ListBuilder) => void] | (string | number | boolean | import("./prose-writer").ProseWriter)[]) => import("./prose-writer").ProseWriter;
5
- orderedList: (...args: [(l: import("./prose-writer").ListBuilder) => void] | (string | number | boolean | import("./prose-writer").ProseWriter)[]) => import("./prose-writer").ProseWriter;
6
- tasks: (...args: [(l: import("./prose-writer").ListBuilder) => void] | ((string | number | boolean | import("./prose-writer").ProseWriter) | [string | number | boolean | import("./prose-writer").ProseWriter, boolean])[]) => import("./prose-writer").ProseWriter;
7
- callout: (type: "NOTE" | "TIP" | "IMPORTANT" | "WARNING" | "CAUTION", content: string | ((writer: import("./prose-writer").ProseWriter & import("./prose-writer").InlineUtils) => void)) => import("./prose-writer").ProseWriter;
8
- schema: (schemaValue: unknown, options?: import("./prose-writer").SchemaEmbedOptions) => import("./prose-writer").ProseWriter;
1
+ export declare const write: ((...content: (string | number | boolean | import("./prose-writer.js").ProseWriter)[]) => import("./prose-writer.js").ProseWriter) & {
2
+ with: (builder: (writer: import("./prose-writer.js").ProseWriter & import("./prose-writer.js").InlineUtils) => void) => import("./prose-writer.js").ProseWriter;
3
+ unorderedList: (...args: [(l: import("./prose-writer.js").ListBuilder) => void] | (string | number | boolean | import("./prose-writer.js").ProseWriter)[]) => import("./prose-writer.js").ProseWriter;
4
+ list: (...args: [(l: import("./prose-writer.js").ListBuilder) => void] | (string | number | boolean | import("./prose-writer.js").ProseWriter)[]) => import("./prose-writer.js").ProseWriter;
5
+ orderedList: (...args: [(l: import("./prose-writer.js").ListBuilder) => void] | (string | number | boolean | import("./prose-writer.js").ProseWriter)[]) => import("./prose-writer.js").ProseWriter;
6
+ tasks: (...args: [(l: import("./prose-writer.js").ListBuilder) => void] | ((string | number | boolean | import("./prose-writer.js").ProseWriter) | [string | number | boolean | import("./prose-writer.js").ProseWriter, boolean])[]) => import("./prose-writer.js").ProseWriter;
7
+ callout: (type: "NOTE" | "TIP" | "IMPORTANT" | "WARNING" | "CAUTION", content: string | ((writer: import("./prose-writer.js").ProseWriter & import("./prose-writer.js").InlineUtils) => void)) => import("./prose-writer.js").ProseWriter;
8
+ schema: (schemaValue: unknown, options?: import("./prose-writer.js").SchemaEmbedOptions) => import("./prose-writer.js").ProseWriter;
9
+ heading: (level: 1 | 2 | 3 | 4 | 5 | 6, ...content: string[]) => import("./prose-writer.js").ProseWriter;
10
+ blockquote: (...lines: string[]) => import("./prose-writer.js").ProseWriter;
11
+ codeblock: (language: string, content: string | ((writer: import("./prose-writer.js").ProseWriter & import("./prose-writer.js").InlineUtils) => void)) => import("./prose-writer.js").ProseWriter;
12
+ json: (data: unknown, options?: import("./prose-writer.js").ValidationOptions) => import("./prose-writer.js").ProseWriter;
13
+ yaml: (data: unknown, options?: import("./prose-writer.js").ValidationOptions) => import("./prose-writer.js").ProseWriter;
14
+ definitions: (obj: Record<string, string>) => import("./prose-writer.js").ProseWriter;
15
+ section: (name: string, builder: (writer: import("./prose-writer.js").ProseWriter & import("./prose-writer.js").InlineUtils) => void, level?: 1 | 2 | 3 | 4 | 5 | 6) => import("./prose-writer.js").ProseWriter;
16
+ tag: (name: string, content: string | import("./prose-writer.js").ProseWriter | ((writer: import("./prose-writer.js").ProseWriter & import("./prose-writer.js").InlineUtils) => void)) => import("./prose-writer.js").ProseWriter;
17
+ comment: (content: string) => import("./prose-writer.js").ProseWriter;
18
+ raw: (content: string) => import("./prose-writer.js").ProseWriter;
19
+ append: (writer: import("./prose-writer.js").ProseWriter) => import("./prose-writer.js").ProseWriter;
20
+ when: (condition: unknown, builder: (writer: import("./prose-writer.js").ProseWriter & import("./prose-writer.js").InlineUtils) => void) => import("./prose-writer.js").ProseWriter;
9
21
  };
package/dist/safe.js CHANGED
@@ -1,3 +1,3 @@
1
- import { write as baseWrite } from './prose-writer';
1
+ import { write as baseWrite } from './prose-writer.js';
2
2
  export const write = baseWrite.safe;
3
3
  //# sourceMappingURL=safe.js.map
package/dist/safe.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"safe.js","sourceRoot":"","sources":["../src/safe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"safe.js","sourceRoot":"","sources":["../src/safe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC","sourcesContent":["import { write as baseWrite } from './prose-writer.js';\n\nexport const write = baseWrite.safe;\n"]}
package/dist/schema.d.ts CHANGED
@@ -1 +1 @@
1
- export type { SchemaEmbedOptions } from './prose-writer';
1
+ export type { SchemaEmbedOptions } from './prose-writer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"","sourcesContent":["export type { SchemaEmbedOptions } from './prose-writer.js';\n"]}
@@ -1,2 +1,2 @@
1
- export type { OutputFormat, OutputValidator, ValidationIssue, ValidationOptions, ValidationResult, } from './prose-writer';
2
- export { createJsonSchemaValidator, createYamlParserAdapter, ValidationError, } from './prose-writer';
1
+ export type { OutputFormat, OutputValidator, ValidationIssue, ValidationOptions, ValidationResult, } from './prose-writer.js';
2
+ export { createJsonSchemaValidator, createYamlParserAdapter, ValidationError, } from './prose-writer.js';
@@ -1,2 +1,2 @@
1
- export { createJsonSchemaValidator, createYamlParserAdapter, ValidationError, } from './prose-writer';
1
+ export { createJsonSchemaValidator, createYamlParserAdapter, ValidationError, } from './prose-writer.js';
2
2
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,GAChB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC","sourcesContent":["export type {\n OutputFormat,\n OutputValidator,\n ValidationIssue,\n ValidationOptions,\n ValidationResult,\n} from './prose-writer.js';\nexport {\n createJsonSchemaValidator,\n createYamlParserAdapter,\n ValidationError,\n} from './prose-writer.js';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prose-writer",
3
- "version": "0.1.3",
3
+ "version": "0.2.3",
4
4
  "description": "A chainable TypeScript library for building formatted text and markdown strings",
5
5
  "keywords": [
6
6
  "markdown",
@@ -12,6 +12,10 @@
12
12
  "chainable",
13
13
  "builder"
14
14
  ],
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/stevekinney/prose-writer"
18
+ },
15
19
  "license": "MIT",
16
20
  "author": "",
17
21
  "sideEffects": false,
@@ -59,14 +63,16 @@
59
63
  "scripts": {
60
64
  "build": "tsc -p tsconfig.build.json",
61
65
  "build:types": "tsc -p tsconfig.build.json --emitDeclarationOnly",
66
+ "check:dist-import-extensions": "bun run scripts/check-dist-import-extensions.ts",
62
67
  "clean": "rm -rf dist coverage .eslintcache",
63
68
  "dev": "bun --watch run src/index.ts",
64
69
  "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json,md}\"",
65
70
  "format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,json,md}\"",
66
71
  "lint": "eslint .",
67
72
  "lint:fix": "eslint . --fix",
73
+ "prepack": "bun run build && bun run check:dist-import-extensions",
68
74
  "prepare": "husky",
69
- "prepublishOnly": "bun run validate && bun run build",
75
+ "prepublishOnly": "bun run validate",
70
76
  "start": "bun run src/index.ts",
71
77
  "test": "bun test",
72
78
  "test:coverage": "bun test --coverage",