@principal-ade/markdown-utils 0.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.
Files changed (67) hide show
  1. package/README.md +148 -0
  2. package/dist/cjs/diff/diffPresentations.d.ts +17 -0
  3. package/dist/cjs/diff/diffPresentations.d.ts.map +1 -0
  4. package/dist/cjs/diff/diffSummary.d.ts +31 -0
  5. package/dist/cjs/diff/diffSummary.d.ts.map +1 -0
  6. package/dist/cjs/diff/index.d.ts +11 -0
  7. package/dist/cjs/diff/index.d.ts.map +1 -0
  8. package/dist/cjs/diff/matchSlides.d.ts +44 -0
  9. package/dist/cjs/diff/matchSlides.d.ts.map +1 -0
  10. package/dist/cjs/diff/textDiff.d.ts +30 -0
  11. package/dist/cjs/diff/textDiff.d.ts.map +1 -0
  12. package/dist/cjs/index.d.ts +12 -0
  13. package/dist/cjs/index.d.ts.map +1 -0
  14. package/dist/cjs/index.js +773 -0
  15. package/dist/cjs/package.json +1 -0
  16. package/dist/cjs/types/bash.d.ts +17 -0
  17. package/dist/cjs/types/bash.d.ts.map +1 -0
  18. package/dist/cjs/types/chunks.d.ts +23 -0
  19. package/dist/cjs/types/chunks.d.ts.map +1 -0
  20. package/dist/cjs/types/diff.d.ts +72 -0
  21. package/dist/cjs/types/diff.d.ts.map +1 -0
  22. package/dist/cjs/types/presentation.d.ts +48 -0
  23. package/dist/cjs/types/presentation.d.ts.map +1 -0
  24. package/dist/cjs/utils/bash-parser.d.ts +10 -0
  25. package/dist/cjs/utils/bash-parser.d.ts.map +1 -0
  26. package/dist/cjs/utils/image-urls.d.ts +15 -0
  27. package/dist/cjs/utils/image-urls.d.ts.map +1 -0
  28. package/dist/cjs/utils/markdown-parser.d.ts +7 -0
  29. package/dist/cjs/utils/markdown-parser.d.ts.map +1 -0
  30. package/dist/cjs/utils/presentation.d.ts +23 -0
  31. package/dist/cjs/utils/presentation.d.ts.map +1 -0
  32. package/dist/cjs/utils/slide-titles.d.ts +28 -0
  33. package/dist/cjs/utils/slide-titles.d.ts.map +1 -0
  34. package/dist/esm/diff/diffPresentations.d.ts +17 -0
  35. package/dist/esm/diff/diffPresentations.d.ts.map +1 -0
  36. package/dist/esm/diff/diffSummary.d.ts +31 -0
  37. package/dist/esm/diff/diffSummary.d.ts.map +1 -0
  38. package/dist/esm/diff/index.d.ts +11 -0
  39. package/dist/esm/diff/index.d.ts.map +1 -0
  40. package/dist/esm/diff/matchSlides.d.ts +44 -0
  41. package/dist/esm/diff/matchSlides.d.ts.map +1 -0
  42. package/dist/esm/diff/textDiff.d.ts +30 -0
  43. package/dist/esm/diff/textDiff.d.ts.map +1 -0
  44. package/dist/esm/index.d.ts +12 -0
  45. package/dist/esm/index.d.ts.map +1 -0
  46. package/dist/esm/index.js +741 -0
  47. package/dist/esm/package.json +1 -0
  48. package/dist/esm/types/bash.d.ts +17 -0
  49. package/dist/esm/types/bash.d.ts.map +1 -0
  50. package/dist/esm/types/chunks.d.ts +23 -0
  51. package/dist/esm/types/chunks.d.ts.map +1 -0
  52. package/dist/esm/types/diff.d.ts +72 -0
  53. package/dist/esm/types/diff.d.ts.map +1 -0
  54. package/dist/esm/types/presentation.d.ts +48 -0
  55. package/dist/esm/types/presentation.d.ts.map +1 -0
  56. package/dist/esm/utils/bash-parser.d.ts +10 -0
  57. package/dist/esm/utils/bash-parser.d.ts.map +1 -0
  58. package/dist/esm/utils/image-urls.d.ts +15 -0
  59. package/dist/esm/utils/image-urls.d.ts.map +1 -0
  60. package/dist/esm/utils/markdown-parser.d.ts +7 -0
  61. package/dist/esm/utils/markdown-parser.d.ts.map +1 -0
  62. package/dist/esm/utils/presentation.d.ts +23 -0
  63. package/dist/esm/utils/presentation.d.ts.map +1 -0
  64. package/dist/esm/utils/slide-titles.d.ts +28 -0
  65. package/dist/esm/utils/slide-titles.d.ts.map +1 -0
  66. package/dist/tsconfig.tsbuildinfo +1 -0
  67. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,17 @@
1
+ export interface BashCommand {
2
+ command: string;
3
+ description?: string;
4
+ line: number;
5
+ }
6
+ export interface BashCommandOptions {
7
+ /** Unique identifier for the command execution */
8
+ id?: string;
9
+ /** Whether to show output in terminal */
10
+ showInTerminal?: boolean;
11
+ /** Current working directory for command execution */
12
+ cwd?: string;
13
+ /** Whether to run command in background */
14
+ background?: boolean;
15
+ }
16
+ export type BashCommandResult = unknown;
17
+ //# sourceMappingURL=bash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/types/bash.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAGD,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC"}
@@ -0,0 +1,23 @@
1
+ export declare const CHUNK_TYPES: {
2
+ readonly MARKDOWN: "markdown_chunk";
3
+ readonly MERMAID: "mermaid_chunk";
4
+ readonly SLIDE: "slide_chunk";
5
+ readonly CODE: "code_chunk";
6
+ };
7
+ export type ChunkType = typeof CHUNK_TYPES[keyof typeof CHUNK_TYPES];
8
+ export interface BaseChunk<T extends string = string> {
9
+ type: T;
10
+ content: string;
11
+ id: string;
12
+ }
13
+ export type MarkdownChunk = BaseChunk<typeof CHUNK_TYPES.MARKDOWN>;
14
+ export type MermaidChunk = BaseChunk<typeof CHUNK_TYPES.MERMAID>;
15
+ export type SlideChunk = BaseChunk<typeof CHUNK_TYPES.SLIDE>;
16
+ export interface CodeChunk extends BaseChunk<typeof CHUNK_TYPES.CODE> {
17
+ language?: string;
18
+ }
19
+ export type ContentChunk = MarkdownChunk | MermaidChunk | CodeChunk;
20
+ export declare const isMarkdownChunk: (chunk: BaseChunk) => chunk is MarkdownChunk;
21
+ export declare const isMermaidChunk: (chunk: BaseChunk) => chunk is MermaidChunk;
22
+ export declare const isCodeChunk: (chunk: BaseChunk) => chunk is CodeChunk;
23
+ //# sourceMappingURL=chunks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../../src/types/chunks.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAGrE,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAClD,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAE7D,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AAGpE,eAAO,MAAM,eAAe,GAAI,OAAO,SAAS,KAAG,KAAK,IAAI,aACvB,CAAC;AAEtC,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,KAAG,KAAK,IAAI,YACvB,CAAC;AAErC,eAAO,MAAM,WAAW,GAAI,OAAO,SAAS,KAAG,KAAK,IAAI,SACvB,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { MarkdownPresentation, MarkdownSlide } from './presentation';
2
+ /**
3
+ * Status of a slide when comparing two presentations
4
+ */
5
+ export type DiffStatus = 'added' | 'removed' | 'modified' | 'unchanged' | 'moved';
6
+ /**
7
+ * Type of text change within a slide
8
+ */
9
+ export type TextDiffType = 'add' | 'remove' | 'unchanged';
10
+ /**
11
+ * Represents a text-level change within slide content
12
+ */
13
+ export interface TextDiff {
14
+ /** Type of change */
15
+ type: TextDiffType;
16
+ /** The text content */
17
+ value: string;
18
+ /** Optional line number for the change */
19
+ lineNumber?: number;
20
+ }
21
+ /**
22
+ * Represents the diff between two versions of a slide
23
+ */
24
+ export interface SlideDiff {
25
+ /** Status of this slide comparison */
26
+ status: DiffStatus;
27
+ /** The slide from the before version (undefined if added) */
28
+ beforeSlide?: MarkdownSlide;
29
+ /** The slide from the after version (undefined if removed) */
30
+ afterSlide?: MarkdownSlide;
31
+ /** Index in the before presentation (undefined if added) */
32
+ beforeIndex?: number;
33
+ /** Index in the after presentation (undefined if removed) */
34
+ afterIndex?: number;
35
+ /** Line-by-line content changes (populated for modified slides) */
36
+ contentChanges?: TextDiff[];
37
+ /** Whether the slide title changed */
38
+ titleChanged?: boolean;
39
+ }
40
+ /**
41
+ * Summary statistics for a presentation diff
42
+ */
43
+ export interface DiffSummary {
44
+ /** Total number of slides in before presentation */
45
+ totalSlidesBefore: number;
46
+ /** Total number of slides in after presentation */
47
+ totalSlidesAfter: number;
48
+ /** Number of added slides */
49
+ added: number;
50
+ /** Number of removed slides */
51
+ removed: number;
52
+ /** Number of modified slides */
53
+ modified: number;
54
+ /** Number of unchanged slides */
55
+ unchanged: number;
56
+ /** Number of moved slides (reordered but not modified) */
57
+ moved: number;
58
+ }
59
+ /**
60
+ * Complete diff analysis between two presentations
61
+ */
62
+ export interface PresentationDiff {
63
+ /** The before version of the presentation */
64
+ before: MarkdownPresentation;
65
+ /** The after version of the presentation */
66
+ after: MarkdownPresentation;
67
+ /** Array of slide-by-slide diffs */
68
+ slideDiffs: SlideDiff[];
69
+ /** Summary statistics */
70
+ summary: DiffSummary;
71
+ }
72
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/types/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;AAElF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,qBAAqB;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sCAAsC;IACtC,MAAM,EAAE,UAAU,CAAC;IACnB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,8DAA8D;IAC9D,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,MAAM,EAAE,oBAAoB,CAAC;IAC7B,4CAA4C;IAC5C,KAAK,EAAE,oBAAoB,CAAC;IAC5B,oCAAoC;IACpC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,yBAAyB;IACzB,OAAO,EAAE,WAAW,CAAC;CACtB"}
@@ -0,0 +1,48 @@
1
+ import { BaseChunk } from './chunks';
2
+ export declare enum MarkdownSourceType {
3
+ WORKSPACE_FILE = "workspace_file",
4
+ REMOTE_FILE = "remote_file",
5
+ GITHUB_FILE = "github_file",
6
+ DRAFT = "draft",
7
+ GITHUB_ISSUE = "github_issue",
8
+ GITHUB_PULL_REQUEST = "github_pull_request",
9
+ GITHUB_GIST = "github_gist"
10
+ }
11
+ export interface MarkdownSource {
12
+ type: MarkdownSourceType;
13
+ content: string;
14
+ filePath?: string;
15
+ workspaceRoot?: string;
16
+ editable?: boolean;
17
+ deletable?: boolean;
18
+ repositoryInfo?: RepositoryInfo;
19
+ }
20
+ export interface MarkdownSlideLocation {
21
+ startLine: number;
22
+ endLine: number;
23
+ content: string;
24
+ }
25
+ export interface MarkdownSlide<T extends BaseChunk = BaseChunk> {
26
+ id: string;
27
+ title: string;
28
+ location: MarkdownSlideLocation;
29
+ chunks: T[];
30
+ }
31
+ export interface RepositoryInfo {
32
+ /** GitHub repository owner/organization */
33
+ owner: string;
34
+ /** Repository name */
35
+ repo: string;
36
+ /** Branch/ref to use for raw URLs (defaults to 'main' if not specified) */
37
+ branch?: string;
38
+ /** Base path within the repository (for files in subdirectories) */
39
+ basePath?: string;
40
+ }
41
+ export interface MarkdownPresentation<T extends BaseChunk = BaseChunk> {
42
+ source?: MarkdownSource;
43
+ slides: MarkdownSlide<T>[];
44
+ originalContent: string;
45
+ /** Optional repository information for resolving relative URLs to GitHub raw URLs */
46
+ repositoryInfo?: RepositoryInfo;
47
+ }
48
+ //# sourceMappingURL=presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../../src/types/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,oBAAY,kBAAkB;IAC5B,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,mBAAmB,wBAAwB;IAC3C,WAAW,gBAAgB;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,qBAAqB,CAAC;IAChC,MAAM,EAAE,CAAC,EAAE,CAAC;CACb;AAGD,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACnE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC"}
@@ -0,0 +1,10 @@
1
+ import { BashCommand } from '../types/bash';
2
+ /**
3
+ * Parses a bash code block and extracts individual commands
4
+ */
5
+ export declare function parseBashCommands(codeString: string): BashCommand[];
6
+ /**
7
+ * Gets a display name for a command (truncated if too long)
8
+ */
9
+ export declare function getCommandDisplayName(command: BashCommand, maxLength?: number): string;
10
+ //# sourceMappingURL=bash-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash-parser.d.ts","sourceRoot":"","sources":["../../../src/utils/bash-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE,CAsGnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,CAa1F"}
@@ -0,0 +1,15 @@
1
+ import { RepositoryInfo } from '../types/presentation';
2
+ /**
3
+ * Determines if a URL is relative (not absolute)
4
+ */
5
+ export declare function isRelativeUrl(url: string): boolean;
6
+ /**
7
+ * Transforms a relative image URL to a GitHub raw URL
8
+ */
9
+ export declare function transformImageUrl(src: string, repositoryInfo?: RepositoryInfo): string;
10
+ /**
11
+ * Transforms image URLs in markdown content
12
+ * This can be used to preprocess markdown content before rendering
13
+ */
14
+ export declare function transformMarkdownImageUrls(markdownContent: string, repositoryInfo?: RepositoryInfo): string;
15
+ //# sourceMappingURL=image-urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-urls.d.ts","sourceRoot":"","sources":["../../../src/utils/image-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAuBlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,CA8CtF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,cAAc,GAC9B,MAAM,CAeR"}
@@ -0,0 +1,7 @@
1
+ import { BaseChunk, ContentChunk } from '../types/chunks';
2
+ /**
3
+ * Parses markdown content into chunks (markdown and mermaid)
4
+ * Can be extended with custom parsers for plugin support
5
+ */
6
+ export declare function parseMarkdownChunks<T extends BaseChunk = ContentChunk>(markdownContent: string, idPrefix: string, customParsers?: Array<(content: string, idPrefix: string) => T[]>): T[];
7
+ //# sourceMappingURL=markdown-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-parser.d.ts","sourceRoot":"","sources":["../../../src/utils/markdown-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAe,MAAM,iBAAiB,CAAC;AAavE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,SAAS,GAAG,YAAY,EACpE,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC,GAChE,CAAC,EAAE,CA+FL"}
@@ -0,0 +1,23 @@
1
+ import { BaseChunk } from '../types/chunks';
2
+ import { MarkdownPresentation, MarkdownSource, RepositoryInfo } from '../types/presentation';
3
+ /**
4
+ * Extract the title from slide content (first heading or first line)
5
+ */
6
+ export declare function extractSlideTitle(content: string): string;
7
+ /**
8
+ * Parse markdown into presentation from source
9
+ */
10
+ export declare function parseMarkdownIntoPresentationFromSource<T extends BaseChunk = BaseChunk>(source: MarkdownSource, customParsers?: Array<(content: string, idPrefix: string) => T[]>): MarkdownPresentation<T>;
11
+ /**
12
+ * Parse markdown content into presentation format
13
+ */
14
+ export declare function parseMarkdownIntoPresentation<T extends BaseChunk = BaseChunk>(markdownContent: string, repositoryInfo?: RepositoryInfo, customParsers?: Array<(content: string, idPrefix: string) => T[]>): MarkdownPresentation<T>;
15
+ /**
16
+ * Serialize presentation back to markdown
17
+ */
18
+ export declare function serializePresentationToMarkdown<T extends BaseChunk = BaseChunk>(presentation: MarkdownPresentation<T>): string;
19
+ /**
20
+ * Update a slide in the presentation
21
+ */
22
+ export declare function updatePresentationSlide<T extends BaseChunk = BaseChunk>(presentation: MarkdownPresentation<T>, slideIndex: number, newContent: string, customParsers?: Array<(content: string, idPrefix: string) => T[]>): MarkdownPresentation<T>;
23
+ //# sourceMappingURL=presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../../src/utils/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,oBAAoB,EAEpB,cAAc,EACd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAe/B;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBzD;AAED;;GAEG;AACH,wBAAgB,uCAAuC,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACrF,MAAM,EAAE,cAAc,EACtB,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC,GAChE,oBAAoB,CAAC,CAAC,CAAC,CASzB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAC3E,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,cAAc,EAC/B,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC,GAChE,oBAAoB,CAAC,CAAC,CAAC,CAkGzB;AAyCD;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAC7E,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,GACpC,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACrE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC,GAChE,oBAAoB,CAAC,CAAC,CAAC,CAwBzB"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Extracts the title from a markdown slide
3
+ * Looks for the first # or ## heading in the content
4
+ */
5
+ export declare function extractSlideTitle(content: string, slideIndex: number): string;
6
+ /**
7
+ * Extracts titles from all slides
8
+ */
9
+ export declare function extractAllSlideTitles(slides: string[]): string[];
10
+ /**
11
+ * Get all slide titles from a presentation
12
+ */
13
+ export declare function getAllSlideTitles(slides: Array<{
14
+ title: string;
15
+ }>): string[];
16
+ /**
17
+ * Find a slide by title
18
+ */
19
+ export declare function findSlideByTitle<T extends {
20
+ title: string;
21
+ }>(slides: T[], title: string): T | undefined;
22
+ /**
23
+ * Find slide index by title
24
+ */
25
+ export declare function findSlideIndexByTitle(slides: Array<{
26
+ title: string;
27
+ }>, title: string): number;
28
+ //# sourceMappingURL=slide-titles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slide-titles.d.ts","sourceRoot":"","sources":["../../../src/utils/slide-titles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA0B7E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,EAAE,CAE5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAC1D,MAAM,EAAE,CAAC,EAAE,EACX,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,SAAS,CAEf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAChC,KAAK,EAAE,MAAM,GACZ,MAAM,CAER"}
@@ -0,0 +1,17 @@
1
+ import { MarkdownPresentation } from '../types/presentation';
2
+ import { PresentationDiff } from '../types/diff';
3
+ /**
4
+ * Compares two markdown presentations and generates a complete diff analysis.
5
+ *
6
+ * The algorithm:
7
+ * 1. Matches slides between presentations (by title, then position)
8
+ * 2. Determines the status of each slide (added, removed, modified, unchanged, moved)
9
+ * 3. For modified slides, computes line-by-line content changes
10
+ * 4. Generates summary statistics
11
+ *
12
+ * @param before - The original presentation
13
+ * @param after - The modified presentation
14
+ * @returns Complete diff analysis including slide-by-slide comparison and summary
15
+ */
16
+ export declare function diffPresentations(before: MarkdownPresentation, after: MarkdownPresentation): PresentationDiff;
17
+ //# sourceMappingURL=diffPresentations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diffPresentations.d.ts","sourceRoot":"","sources":["../../../src/diff/diffPresentations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAyB,MAAM,eAAe,CAAC;AAKxE;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,oBAAoB,GAC1B,gBAAgB,CA6BlB"}
@@ -0,0 +1,31 @@
1
+ import { PresentationDiff, DiffSummary } from '../types/diff';
2
+ /**
3
+ * Calculates summary statistics for a presentation diff.
4
+ * Counts the number of slides in each status category.
5
+ *
6
+ * @param diff - The presentation diff to summarize
7
+ * @returns Summary statistics with counts for each diff status
8
+ */
9
+ export declare function calculateDiffSummary(diff: PresentationDiff): DiffSummary;
10
+ /**
11
+ * Checks if a presentation diff has any changes.
12
+ *
13
+ * @param diff - The presentation diff to check
14
+ * @returns true if there are any changes (added, removed, modified, or moved slides)
15
+ */
16
+ export declare function hasChanges(diff: PresentationDiff): boolean;
17
+ /**
18
+ * Gets the total number of changed slides (excluding unchanged).
19
+ *
20
+ * @param summary - The diff summary
21
+ * @returns Total number of changed slides
22
+ */
23
+ export declare function getTotalChangedSlides(summary: DiffSummary): number;
24
+ /**
25
+ * Formats a diff summary as a human-readable string.
26
+ *
27
+ * @param summary - The diff summary to format
28
+ * @returns Formatted string describing the changes
29
+ */
30
+ export declare function formatDiffSummary(summary: DiffSummary): string;
31
+ //# sourceMappingURL=diffSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diffSummary.d.ts","sourceRoot":"","sources":["../../../src/diff/diffSummary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAiCxE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAQ1D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAqB9D"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Diff utilities for comparing markdown presentations
3
+ * @module diff
4
+ */
5
+ export { diffPresentations } from './diffPresentations';
6
+ export { calculateDiffSummary, hasChanges, getTotalChangedSlides, formatDiffSummary, } from './diffSummary';
7
+ export { diffText, normalizedTextEquals, normalizeText } from './textDiff';
8
+ export { matchSlides, slidesAreEqual, normalizeSlideContent, } from './matchSlides';
9
+ export type { SlideMatch } from './matchSlides';
10
+ export type { DiffStatus, TextDiffType, TextDiff, SlideDiff, DiffSummary, PresentationDiff, } from '../types/diff';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/diff/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3E,OAAO,EACL,WAAW,EACX,cAAc,EACd,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,YAAY,EACV,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { MarkdownSlide } from '../types/presentation';
2
+ /**
3
+ * Represents a matched pair of slides from before and after presentations
4
+ */
5
+ export interface SlideMatch {
6
+ /** Slide from before presentation (undefined if added) */
7
+ beforeSlide?: MarkdownSlide;
8
+ /** Slide from after presentation (undefined if removed) */
9
+ afterSlide?: MarkdownSlide;
10
+ /** Index in before presentation (undefined if added) */
11
+ beforeIndex?: number;
12
+ /** Index in after presentation (undefined if removed) */
13
+ afterIndex?: number;
14
+ /** Whether the slide was matched by title or position */
15
+ matchedBy: 'title' | 'position' | 'none';
16
+ }
17
+ /**
18
+ * Matches slides between two presentations using a two-phase approach:
19
+ * 1. First, match slides by title
20
+ * 2. Then, match remaining slides by position
21
+ *
22
+ * @param beforeSlides - Slides from the before presentation
23
+ * @param afterSlides - Slides from the after presentation
24
+ * @returns Array of matched slide pairs
25
+ */
26
+ export declare function matchSlides(beforeSlides: MarkdownSlide[], afterSlides: MarkdownSlide[]): SlideMatch[];
27
+ /**
28
+ * Checks if two slides are equal (identical content).
29
+ * Compares normalized content to avoid false positives from whitespace differences.
30
+ *
31
+ * @param slide1 - First slide to compare
32
+ * @param slide2 - Second slide to compare
33
+ * @returns true if slides have identical content
34
+ */
35
+ export declare function slidesAreEqual(slide1: MarkdownSlide, slide2: MarkdownSlide): boolean;
36
+ /**
37
+ * Normalizes slide content for comparison.
38
+ * Extracts and normalizes the text content from the slide's location.
39
+ *
40
+ * @param slide - Slide to normalize
41
+ * @returns Normalized content string
42
+ */
43
+ export declare function normalizeSlideContent(slide: MarkdownSlide): string;
44
+ //# sourceMappingURL=matchSlides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchSlides.d.ts","sourceRoot":"","sources":["../../../src/diff/matchSlides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,YAAY,EAAE,aAAa,EAAE,EAC7B,WAAW,EAAE,aAAa,EAAE,GAC3B,UAAU,EAAE,CAyFd;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,GACpB,OAAO,CAGT;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAElE"}
@@ -0,0 +1,30 @@
1
+ import { TextDiff } from '../types/diff';
2
+ /**
3
+ * Performs a line-by-line diff between two text strings.
4
+ * Uses a simple longest common subsequence (LCS) based algorithm.
5
+ *
6
+ * @param beforeContent - The original text
7
+ * @param afterContent - The modified text
8
+ * @returns Array of TextDiff objects representing the changes
9
+ */
10
+ export declare function diffText(beforeContent: string, afterContent: string): TextDiff[];
11
+ /**
12
+ * Checks if two text strings are equal after normalization.
13
+ * Normalization includes trimming whitespace and normalizing line endings.
14
+ *
15
+ * @param text1 - First text to compare
16
+ * @param text2 - Second text to compare
17
+ * @returns true if texts are equal after normalization
18
+ */
19
+ export declare function normalizedTextEquals(text1: string, text2: string): boolean;
20
+ /**
21
+ * Normalizes text by:
22
+ * - Trimming leading/trailing whitespace
23
+ * - Normalizing line endings to \n
24
+ * - Removing trailing whitespace from each line
25
+ *
26
+ * @param text - Text to normalize
27
+ * @returns Normalized text
28
+ */
29
+ export declare function normalizeText(text: string): string;
30
+ //# sourceMappingURL=textDiff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textDiff.d.ts","sourceRoot":"","sources":["../../../src/diff/textDiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,QAAQ,EAAE,CAeZ;AA+ED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOlD"}
@@ -0,0 +1,12 @@
1
+ export { CHUNK_TYPES, type ChunkType, type BaseChunk, type MarkdownChunk, type MermaidChunk, type SlideChunk, type CodeChunk, type ContentChunk, isMarkdownChunk, isMermaidChunk, isCodeChunk, } from './types/chunks';
2
+ export { MarkdownSourceType, type MarkdownSource, type MarkdownSlideLocation, type MarkdownSlide, type RepositoryInfo, type MarkdownPresentation, } from './types/presentation';
3
+ export { type BashCommand, type BashCommandOptions, type BashCommandResult, } from './types/bash';
4
+ export { parseMarkdownChunks, } from './utils/markdown-parser';
5
+ export { extractSlideTitle, parseMarkdownIntoPresentationFromSource, parseMarkdownIntoPresentation, serializePresentationToMarkdown, updatePresentationSlide, } from './utils/presentation';
6
+ export { parseBashCommands, getCommandDisplayName, } from './utils/bash-parser';
7
+ export { isRelativeUrl, transformImageUrl, transformMarkdownImageUrls, } from './utils/image-urls';
8
+ export { extractAllSlideTitles, getAllSlideTitles, findSlideByTitle, findSlideIndexByTitle, } from './utils/slide-titles';
9
+ export type { DiffStatus, TextDiffType, TextDiff, SlideDiff, DiffSummary, PresentationDiff, } from './types/diff';
10
+ export { diffPresentations, calculateDiffSummary, hasChanges, getTotalChangedSlides, formatDiffSummary, diffText, normalizedTextEquals, normalizeText, matchSlides, slidesAreEqual, normalizeSlideContent, } from './diff';
11
+ export type { SlideMatch } from './diff';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,iBAAiB,EACjB,uCAAuC,EACvC,6BAA6B,EAC7B,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,cAAc,EACd,qBAAqB,GACtB,MAAM,QAAQ,CAAC;AAChB,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC"}