nx-md-parser 2.0.2 → 2.2.0

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
@@ -240,7 +240,7 @@ console.log(colonResult.result); // Same structured JSON
240
240
  ### Format Selection & Auto-Detection
241
241
 
242
242
  ```typescript
243
- import { JSONTransformer, Schema, MarkdownFormat } from 'nx-md-parser';
243
+ import { JSONTransformer, Schema, MarkdownFormat, analyzeMarkdownFormat } from 'nx-md-parser';
244
244
 
245
245
  // Auto-detect format (recommended)
246
246
  const transformer = new JSONTransformer(schema); // Automatically chooses best parser
@@ -254,6 +254,12 @@ const bulletTransformer = new JSONTransformer(schema, {
254
254
  parserOptions: { format: MarkdownFormat.BULLET }
255
255
  });
256
256
 
257
+ // Analyze what formats your markdown supports
258
+ const analysis = analyzeMarkdownFormat(yourMarkdown);
259
+ console.log('Primary format:', analysis.primaryFormat);
260
+ console.log('Confidence:', analysis.allMatches[0]?.confidence);
261
+ console.log('Section ranges:', analysis.allMatches[0]?.sectionRanges);
262
+
257
263
  // Works with any registered format - the system is extensible!
258
264
  ```
259
265
 
@@ -491,11 +497,16 @@ const parser = new ColonParser();
491
497
 
492
498
  **FormatDetector** - Auto-detects and selects appropriate parsers
493
499
  ```typescript
494
- import { FormatDetector, getFormatDetector } from 'nx-md-parser';
500
+ import { FormatDetector, getFormatDetector, analyzeMarkdownFormat } from 'nx-md-parser';
495
501
 
496
502
  const detector = getFormatDetector();
497
503
  const format = detector.detect(markdown); // MarkdownFormat
498
504
  const parser = detector.getParser(format, markdown);
505
+
506
+ // Advanced format analysis with confidence scores and line ranges
507
+ const analysis = analyzeMarkdownFormat(markdown);
508
+ console.log(analysis.primaryFormat); // 'heading' | 'bullet' | 'colon'
509
+ console.log(analysis.allMatches[0]); // { format, confidence, sections, sectionRanges }
499
510
  ```
500
511
 
501
512
  #### Schema Builders
@@ -515,6 +526,13 @@ mergeTransformResults(...results: TransformResult[]): TransformResult
515
526
  jsonToMarkdown(data: any, level?: number): string
516
527
  ```
517
528
 
529
+ #### Format Analysis
530
+ ```typescript
531
+ analyzeMarkdownFormat(markdown: string): FormatAnalysisResult
532
+ // Returns detailed analysis of what formats the markdown supports
533
+ // with confidence scores, section counts, and line ranges
534
+ ```
535
+
518
536
  #### Schema Management
519
537
  ```typescript
520
538
  loadSchemaFromFile(filePath: string): SchemaType
@@ -630,6 +648,13 @@ ISC License - see [LICENSE](LICENSE) file for details.
630
648
 
631
649
  ---
632
650
 
651
+ ## 📋 What's New in v2.1
652
+
653
+ - **Format Analysis API**: New `analyzeMarkdownFormat()` function provides detailed format detection with confidence scores and line ranges
654
+ - **Multi-Format Detection**: Detects all supported formats in a document with ranking by confidence
655
+ - **Section Range Analysis**: Get exact line numbers for each section in your markdown
656
+ - **Mixed Content Detection**: Identifies documents that contain multiple format types
657
+
633
658
  ## 📋 What's New in v2.0
634
659
 
635
660
  - **Extensible Multi-Format Architecture**: Support for any markdown variant through custom parsers, not just headings and bullets
@@ -12,5 +12,8 @@ export { mergeTransformResults, jsonToMarkdown, loadSchemaFromFile, createTransf
12
12
  export type { SchemaType, ValidationStatus, TransformResult, MarkdownSection, ParserOptions, } from './lib/markdown-transformer/core/types';
13
13
  export { MarkdownFormat } from './lib/markdown-transformer/core/types';
14
14
  export { BaseMarkdownParser, HeadingParser, BulletParser, ColonParser, FormatDetector, getFormatDetector, resetFormatDetector } from './lib/markdown-transformer/parsers';
15
+ export type { FormatAnalysisResult, FormatMatch, SectionRange } from './lib/markdown-transformer/parsers/format-detector';
16
+ import type { FormatAnalysisResult } from './lib/markdown-transformer/parsers/format-detector';
17
+ export declare function analyzeMarkdownFormat(markdown: string): FormatAnalysisResult;
15
18
  export { mergeNoRedundancy, mergeMultiple, mergeWithRoles, loadJson, toCamelCase, fromCamelToTitle, toTitleCase, anyToMarkdownString, string as nxString, number as nxNumber, boolean as nxBoolean, array as nxArray, object as nxObject, bestMatchOneToMany, defaultMatcherConfig, JSONTransformer as NxHelpersJSONTransformer } from 'nx-helpers';
16
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,6CAA6C,CAAC;AAGrE,OAAO,EACL,cAAc,GACf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,+BAA+B,EAC/B,0BAA0B,EAC1B,+BAA+B,EAChC,MAAM,wCAAwC,CAAC;AAGhD,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAGvE,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EAEnB,MAAM,IAAI,QAAQ,EAClB,MAAM,IAAI,QAAQ,EAClB,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,OAAO,EAChB,MAAM,IAAI,QAAQ,EAElB,kBAAkB,EAClB,oBAAoB,EAEpB,eAAe,IAAI,wBAAwB,EAC5C,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,6CAA6C,CAAC;AAGrE,OAAO,EACL,cAAc,GACf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,+BAA+B,EAC/B,0BAA0B,EAC1B,+BAA+B,EAChC,MAAM,wCAAwC,CAAC;AAGhD,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAGvE,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,YAAY,EACb,MAAM,oDAAoD,CAAC;AAI5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAE/F,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAG5E;AAGD,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EAEnB,MAAM,IAAI,QAAQ,EAClB,MAAM,IAAI,QAAQ,EAClB,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,OAAO,EAChB,MAAM,IAAI,QAAQ,EAElB,kBAAkB,EAClB,oBAAoB,EAEpB,eAAe,IAAI,wBAAwB,EAC5C,MAAM,YAAY,CAAC"}
package/dist/src/index.js CHANGED
@@ -7,6 +7,7 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.NxHelpersJSONTransformer = exports.defaultMatcherConfig = exports.bestMatchOneToMany = exports.nxObject = exports.nxArray = exports.nxBoolean = exports.nxNumber = exports.nxString = exports.anyToMarkdownString = exports.toTitleCase = exports.fromCamelToTitle = exports.toCamelCase = exports.loadJson = exports.mergeWithRoles = exports.mergeMultiple = exports.mergeNoRedundancy = exports.resetFormatDetector = exports.getFormatDetector = exports.FormatDetector = exports.ColonParser = exports.BulletParser = exports.HeadingParser = exports.BaseMarkdownParser = exports.MarkdownFormat = exports.learnAliasesFromTransformations = exports.createNxHelpersTransformer = exports.createTransformerFromSchemaFile = exports.loadSchemaFromFile = exports.jsonToMarkdown = exports.mergeTransformResults = exports.MarkdownParser = exports.Schema = exports.LearningTransformer = exports.JSONTransformer = void 0;
10
+ exports.analyzeMarkdownFormat = analyzeMarkdownFormat;
10
11
  // Core functionality - what most users need
11
12
  var transformer_1 = require("./lib/markdown-transformer/core/transformer");
12
13
  Object.defineProperty(exports, "JSONTransformer", { enumerable: true, get: function () { return transformer_1.JSONTransformer; } });
@@ -35,6 +36,12 @@ Object.defineProperty(exports, "ColonParser", { enumerable: true, get: function
35
36
  Object.defineProperty(exports, "FormatDetector", { enumerable: true, get: function () { return parsers_1.FormatDetector; } });
36
37
  Object.defineProperty(exports, "getFormatDetector", { enumerable: true, get: function () { return parsers_1.getFormatDetector; } });
37
38
  Object.defineProperty(exports, "resetFormatDetector", { enumerable: true, get: function () { return parsers_1.resetFormatDetector; } });
39
+ // Convenience function for format analysis
40
+ const parsers_2 = require("./lib/markdown-transformer/parsers");
41
+ function analyzeMarkdownFormat(markdown) {
42
+ const detector = (0, parsers_2.getFormatDetector)();
43
+ return detector.analyzeFormat(markdown);
44
+ }
38
45
  // Essential nx-helpers re-exports (for advanced usage)
39
46
  var nx_helpers_1 = require("nx-helpers");
40
47
  Object.defineProperty(exports, "mergeNoRedundancy", { enumerable: true, get: function () { return nx_helpers_1.mergeNoRedundancy; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,4CAA4C;AAC5C,2EAA8E;AAArE,8GAAA,eAAe,OAAA;AACxB,4EAAmF;AAA1E,kHAAA,mBAAmB,OAAA;AAC5B,2EAAqE;AAA5D,qGAAA,MAAM,OAAA;AAEf,8CAA8C;AAC9C,2EAEqD;AADnD,6GAAA,cAAc,OAAA;AAEhB,gEAOgD;AAN9C,8GAAA,qBAAqB,OAAA;AACrB,uGAAA,cAAc,OAAA;AACd,2GAAA,kBAAkB,OAAA;AAClB,wHAAA,+BAA+B,OAAA;AAC/B,mHAAA,0BAA0B,OAAA;AAC1B,wHAAA,+BAA+B,OAAA;AAWjC,+DAAuE;AAA9D,uGAAA,cAAc,OAAA;AAEvB,iDAAiD;AACjD,8DAQ4C;AAP1C,6GAAA,kBAAkB,OAAA;AAClB,wGAAA,aAAa,OAAA;AACb,uGAAA,YAAY,OAAA;AACZ,sGAAA,WAAW,OAAA;AACX,yGAAA,cAAc,OAAA;AACd,4GAAA,iBAAiB,OAAA;AACjB,8GAAA,mBAAmB,OAAA;AAGrB,uDAAuD;AACvD,yCAoBoB;AAnBlB,+GAAA,iBAAiB,OAAA;AACjB,2GAAA,aAAa,OAAA;AACb,4GAAA,cAAc,OAAA;AACd,sGAAA,QAAQ,OAAA;AACR,yGAAA,WAAW,OAAA;AACX,8GAAA,gBAAgB,OAAA;AAChB,yGAAA,WAAW,OAAA;AACX,iHAAA,mBAAmB,OAAA;AACnB,kBAAkB;AAClB,sGAAA,MAAM,OAAY;AAClB,sGAAA,MAAM,OAAY;AAClB,uGAAA,OAAO,OAAa;AACpB,qGAAA,KAAK,OAAW;AAChB,sGAAA,MAAM,OAAY;AAClB,oBAAoB;AACpB,gHAAA,kBAAkB,OAAA;AAClB,kHAAA,oBAAoB,OAAA;AACpB,mBAAmB;AACnB,sHAAA,eAAe,OAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAkDH,sDAGC;AAnDD,4CAA4C;AAC5C,2EAA8E;AAArE,8GAAA,eAAe,OAAA;AACxB,4EAAmF;AAA1E,kHAAA,mBAAmB,OAAA;AAC5B,2EAAqE;AAA5D,qGAAA,MAAM,OAAA;AAEf,8CAA8C;AAC9C,2EAEqD;AADnD,6GAAA,cAAc,OAAA;AAEhB,gEAOgD;AAN9C,8GAAA,qBAAqB,OAAA;AACrB,uGAAA,cAAc,OAAA;AACd,2GAAA,kBAAkB,OAAA;AAClB,wHAAA,+BAA+B,OAAA;AAC/B,mHAAA,0BAA0B,OAAA;AAC1B,wHAAA,+BAA+B,OAAA;AAWjC,+DAAuE;AAA9D,uGAAA,cAAc,OAAA;AAEvB,iDAAiD;AACjD,8DAQ4C;AAP1C,6GAAA,kBAAkB,OAAA;AAClB,wGAAA,aAAa,OAAA;AACb,uGAAA,YAAY,OAAA;AACZ,sGAAA,WAAW,OAAA;AACX,yGAAA,cAAc,OAAA;AACd,4GAAA,iBAAiB,OAAA;AACjB,8GAAA,mBAAmB,OAAA;AAQrB,2CAA2C;AAC3C,gEAAuE;AAGvE,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,MAAM,QAAQ,GAAG,IAAA,2BAAiB,GAAE,CAAC;IACrC,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,uDAAuD;AACvD,yCAoBoB;AAnBlB,+GAAA,iBAAiB,OAAA;AACjB,2GAAA,aAAa,OAAA;AACb,4GAAA,cAAc,OAAA;AACd,sGAAA,QAAQ,OAAA;AACR,yGAAA,WAAW,OAAA;AACX,8GAAA,gBAAgB,OAAA;AAChB,yGAAA,WAAW,OAAA;AACX,iHAAA,mBAAmB,OAAA;AACnB,kBAAkB;AAClB,sGAAA,MAAM,OAAY;AAClB,sGAAA,MAAM,OAAY;AAClB,uGAAA,OAAO,OAAa;AACpB,qGAAA,KAAK,OAAW;AAChB,sGAAA,MAAM,OAAY;AAClB,oBAAoB;AACpB,gHAAA,kBAAkB,OAAA;AAClB,kHAAA,oBAAoB,OAAA;AACpB,mBAAmB;AACnB,sHAAA,eAAe,OAA4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"bullet-parser.d.ts","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/bullet-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhE,qBAAa,YAAa,SAAQ,kBAAkB;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAcnC,aAAa,IAAI,cAAc;IAI/B,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE;IA8DlD,OAAO,CAAC,eAAe;CA0BxB"}
1
+ {"version":3,"file":"bullet-parser.d.ts","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/bullet-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhE,qBAAa,YAAa,SAAQ,kBAAkB;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQnC,aAAa,IAAI,cAAc;IAI/B,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE;IA8DlD,OAAO,CAAC,eAAe;CA0BxB"}
@@ -5,16 +5,10 @@ const base_parser_1 = require("./base-parser");
5
5
  const types_1 = require("../core/types");
6
6
  class BulletParser extends base_parser_1.BaseMarkdownParser {
7
7
  canParse(markdown) {
8
- // Must have bullets at column 0 that look like sections
8
+ // Must have bullets at column 0
9
9
  const lines = markdown.split('\n');
10
- const bulletLines = lines.filter(l => /^-\s/.test(l));
11
- if (bulletLines.length === 0)
12
- return false;
13
- // Check if any bullets look like section headers (contain keywords)
14
- return bulletLines.some(line => {
15
- const text = line.replace(/^-\s+/, '').toLowerCase();
16
- return this.options.sectionKeywords.some(kw => text.includes(kw));
17
- });
10
+ const bulletLines = lines.filter(l => l.trim().startsWith('- '));
11
+ return bulletLines.length >= 2; // Need at least 2 bullet lines to be considered bullet format
18
12
  }
19
13
  getFormatName() {
20
14
  return types_1.MarkdownFormat.BULLET;
@@ -1 +1 @@
1
- {"version":3,"file":"bullet-parser.js","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/bullet-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bullet-parser.js","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/bullet-parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"colon-parser.d.ts","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/colon-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,qBAAa,WAAY,SAAQ,kBAAkB;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAWnC,aAAa,IAAI,cAAc;IAI/B,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE;IA6BlD,OAAO,CAAC,aAAa;CAoBtB"}
1
+ {"version":3,"file":"colon-parser.d.ts","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/colon-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,qBAAa,WAAY,SAAQ,kBAAkB;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IASnC,aAAa,IAAI,cAAc;IAI/B,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE;IA6BlD,OAAO,CAAC,aAAa;CAoBtB"}
@@ -7,10 +7,8 @@ class ColonParser extends base_parser_1.BaseMarkdownParser {
7
7
  canParse(markdown) {
8
8
  const lines = markdown.split('\n').filter(l => l.trim());
9
9
  // Must have at least some lines that look like key: value
10
- const colonLines = lines.filter(line => line.includes(':'));
11
- const totalLines = lines.length;
12
- // If more than 50% of lines contain colons, likely colon format
13
- return colonLines.length > totalLines * 0.3 && colonLines.length >= 2;
10
+ const colonLines = lines.filter(line => /^\s*[^:]+:\s*.+/.test(line));
11
+ return colonLines.length >= 2; // Need at least 2 colon-separated lines
14
12
  }
15
13
  getFormatName() {
16
14
  return types_1.MarkdownFormat.COLON;
@@ -1 +1 @@
1
- {"version":3,"file":"colon-parser.js","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/colon-parser.ts"],"names":[],"mappings":";;;AAAA,+CAAmD;AAEnD,yCAA+C;AAE/C,MAAa,WAAY,SAAQ,gCAAkB;IACjD,QAAQ,CAAC,QAAgB;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,0DAA0D;QAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;QAEhC,gEAAgE;QAChE,OAAO,UAAU,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,aAAa;QACX,OAAO,sBAAc,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,QAAgB;QAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,wCAAwC;YACxC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEvD,gFAAgF;gBAChF,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;oBACrC,QAAQ,CAAC,IAAI,CAAC;wBACZ,OAAO,EAAE,GAAG;wBACZ,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,OAAO;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,wBAAwB;QACxB,+BAA+B;QAC/B,+CAA+C;QAC/C,qCAAqC;QACrC,oBAAoB;QAEpB,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,KAAK,CAAC;QAClC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEjC,2CAA2C;QAC3C,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEjE,2CAA2C;QAC3C,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/G,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAElD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjED,kCAiEC"}
1
+ {"version":3,"file":"colon-parser.js","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/colon-parser.ts"],"names":[],"mappings":";;;AAAA,+CAAmD;AAEnD,yCAA+C;AAE/C,MAAa,WAAY,SAAQ,gCAAkB;IACjD,QAAQ,CAAC,QAAgB;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,0DAA0D;QAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtE,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,wCAAwC;IACzE,CAAC;IAED,aAAa;QACX,OAAO,sBAAc,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,QAAgB;QAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,wCAAwC;YACxC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEvD,gFAAgF;gBAChF,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;oBACrC,QAAQ,CAAC,IAAI,CAAC;wBACZ,OAAO,EAAE,GAAG;wBACZ,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,OAAO;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,wBAAwB;QACxB,+BAA+B;QAC/B,+CAA+C;QAC/C,qCAAqC;QACrC,oBAAoB;QAEpB,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,KAAK,CAAC;QAClC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEjC,2CAA2C;QAC3C,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEjE,2CAA2C;QAC3C,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/G,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAElD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA/DD,kCA+DC"}
@@ -6,5 +6,31 @@ export declare class FormatDetector {
6
6
  detect(markdown: string): MarkdownFormat;
7
7
  getParser(format: MarkdownFormat, markdown?: string): BaseMarkdownParser;
8
8
  registerParser(parser: BaseMarkdownParser): void;
9
+ /**
10
+ * Analyze markdown and return detailed format detection results
11
+ */
12
+ analyzeFormat(markdown: string): FormatAnalysisResult;
13
+ private calculateSectionRanges;
14
+ private isSectionHeaderLine;
15
+ private calculateConfidence;
16
+ private isSubsection;
17
+ }
18
+ export interface FormatAnalysisResult {
19
+ primaryFormat: MarkdownFormat | 'unknown';
20
+ allMatches: FormatMatch[];
21
+ lineCount: number;
22
+ hasMixedContent: boolean;
23
+ }
24
+ export interface FormatMatch {
25
+ format: MarkdownFormat;
26
+ confidence: number;
27
+ sections: number;
28
+ sectionRanges: SectionRange[];
29
+ }
30
+ export interface SectionRange {
31
+ section: string;
32
+ startLine: number;
33
+ endLine: number;
34
+ lineCount: number;
9
35
  }
10
36
  //# sourceMappingURL=format-detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-detector.d.ts","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/format-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAInD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9D,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAuB;gBAE1B,OAAO,GAAE,aAAkB;IAQvC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAYxC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,kBAAkB;IA2BxE,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;CAGjD"}
1
+ {"version":3,"file":"format-detector.d.ts","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/format-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAInD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAmB,MAAM,eAAe,CAAC;AAE/E,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAuB;gBAE1B,OAAO,GAAE,aAAkB;IAQvC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAYxC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,kBAAkB;IA2BxE,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIhD;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB;IAsCrD,OAAO,CAAC,sBAAsB;IA4C9B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,YAAY;CAIrB;AAGD,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,cAAc,GAAG,SAAS,CAAC;IAC1C,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -49,6 +49,136 @@ class FormatDetector {
49
49
  registerParser(parser) {
50
50
  this.parsers.push(parser);
51
51
  }
52
+ /**
53
+ * Analyze markdown and return detailed format detection results
54
+ */
55
+ analyzeFormat(markdown) {
56
+ const lines = markdown.split('\n');
57
+ const results = [];
58
+ // Try each parser
59
+ for (const parser of this.parsers) {
60
+ if (parser.canParse(markdown)) {
61
+ try {
62
+ const sections = parser.parseSections(markdown);
63
+ const format = parser.getFormatName();
64
+ // Calculate line ranges for each section
65
+ const sectionRanges = this.calculateSectionRanges(lines, sections);
66
+ results.push({
67
+ format,
68
+ confidence: this.calculateConfidence(markdown, format, sections),
69
+ sections: sections.length,
70
+ sectionRanges
71
+ });
72
+ }
73
+ catch (error) {
74
+ // Parser failed, skip it
75
+ continue;
76
+ }
77
+ }
78
+ }
79
+ // Sort by confidence (highest first)
80
+ results.sort((a, b) => b.confidence - a.confidence);
81
+ return {
82
+ primaryFormat: results[0]?.format || 'unknown',
83
+ allMatches: results,
84
+ lineCount: lines.length,
85
+ hasMixedContent: results.length > 1
86
+ };
87
+ }
88
+ calculateSectionRanges(lines, sections) {
89
+ const ranges = [];
90
+ let currentLine = 0;
91
+ for (const section of sections) {
92
+ // Find where this section starts in the lines
93
+ let sectionStart = -1;
94
+ let sectionEnd = -1;
95
+ // Look for the section header
96
+ for (let i = currentLine; i < lines.length; i++) {
97
+ const line = lines[i].trim();
98
+ if (this.isSectionHeaderLine(line, section.heading)) {
99
+ sectionStart = i;
100
+ break;
101
+ }
102
+ }
103
+ if (sectionStart !== -1) {
104
+ // Find where this section ends (next section or end of document)
105
+ sectionEnd = lines.length - 1;
106
+ for (let i = sectionStart + 1; i < lines.length; i++) {
107
+ const line = lines[i].trim();
108
+ // Check if this line starts a new section
109
+ if (sections.some(s => s !== section && this.isSectionHeaderLine(line, s.heading))) {
110
+ sectionEnd = i - 1;
111
+ break;
112
+ }
113
+ }
114
+ ranges.push({
115
+ section: section.heading,
116
+ startLine: sectionStart + 1, // 1-indexed
117
+ endLine: sectionEnd + 1,
118
+ lineCount: sectionEnd - sectionStart + 1
119
+ });
120
+ currentLine = sectionEnd + 1;
121
+ }
122
+ }
123
+ return ranges;
124
+ }
125
+ isSectionHeaderLine(line, heading) {
126
+ // Check different formats
127
+ return line === `### ${heading}` ||
128
+ line === `- ${heading}` ||
129
+ line === `${heading}:` ||
130
+ line === heading; // fallback
131
+ }
132
+ calculateConfidence(markdown, format, sections) {
133
+ if (sections.length === 0)
134
+ return 0;
135
+ const lines = markdown.split('\n');
136
+ const totalLines = lines.length;
137
+ const contentLines = lines.filter(l => l.trim()).length;
138
+ let score = 0;
139
+ // Base score from successful parsing
140
+ if (sections.length > 0)
141
+ score += 40; // Successfully parsed some sections
142
+ // Score based on section quality
143
+ const avgContentLength = sections.reduce((sum, s) => sum + s.content.length, 0) / sections.length;
144
+ if (avgContentLength > 10)
145
+ score += 20; // Good content extraction
146
+ // Score based on format-specific patterns
147
+ switch (format) {
148
+ case types_1.MarkdownFormat.HEADING:
149
+ // Check for proper heading hierarchy
150
+ const headingLevels = sections.map(s => s.level).filter(l => l >= 1 && l <= 6);
151
+ if (headingLevels.length === sections.length)
152
+ score += 20; // All valid heading levels
153
+ break;
154
+ case types_1.MarkdownFormat.BULLET:
155
+ // Check for reasonable number of top-level sections
156
+ const topLevelBullets = sections.filter(s => !this.isSubsection(s.heading, sections)).length;
157
+ if (topLevelBullets >= 2 && topLevelBullets <= 10)
158
+ score += 20; // Reasonable structure
159
+ break;
160
+ case types_1.MarkdownFormat.COLON:
161
+ // Check for key-value structure
162
+ const validKeys = sections.filter(s => s.heading.length > 0 &&
163
+ s.heading.length < 50 &&
164
+ !s.heading.includes('\n') &&
165
+ /^[A-Za-z]/.test(s.heading) // Starts with letter
166
+ ).length;
167
+ if (validKeys === sections.length)
168
+ score += 20; // All valid key names
169
+ break;
170
+ }
171
+ // Bonus for high content coverage
172
+ const parsedContentLines = sections.reduce((sum, s) => sum + s.content.split('\n').length, 0);
173
+ const coverageRatio = parsedContentLines / contentLines;
174
+ if (coverageRatio > 0.7)
175
+ score += 20; // Good content coverage
176
+ return Math.min(100, Math.max(0, score));
177
+ }
178
+ isSubsection(heading, allSections) {
179
+ // Simple heuristic: subsections often have longer, more specific names
180
+ return heading.length > 20 || heading.split(' ').length > 4;
181
+ }
52
182
  }
53
183
  exports.FormatDetector = FormatDetector;
54
184
  //# sourceMappingURL=format-detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-detector.js","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/format-detector.ts"],"names":[],"mappings":";;;AACA,qDAAiD;AACjD,mDAA+C;AAC/C,iDAA6C;AAC7C,yCAA8D;AAE9D,MAAa,cAAc;IAGzB,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,8BAAa,CAAC,OAAO,CAAC;YAC1B,IAAI,4BAAY,CAAC,OAAO,CAAC;YACzB,IAAI,0BAAW,CAAC,OAAO,CAAC;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAgB;QACrB,uDAAuD;QACvD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,OAAO,sBAAc,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,MAAsB,EAAE,QAAiB;QACjD,IAAI,MAAM,KAAK,sBAAc,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC/C,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,4CAA4C;QAC5C,IAAI,MAAM,KAAK,sBAAc,CAAC,KAAK,EAAE,CAAC;YACpC,wCAAwC;YACxC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,sBAAc,CAAC,OAAO,CAAC,CAAC;YAC3F,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,sBAAc,CAAC,MAAM,CAAC,CAAC;YAEzF,IAAI,aAAa,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5C,OAAO,aAAa,CAAC;YACvB,CAAC;YACD,IAAI,YAAY,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC3C,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,MAAM,CAAC,CAAC;QACpE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,6BAA6B;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,cAAc,CAAC,MAA0B;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF;AArDD,wCAqDC"}
1
+ {"version":3,"file":"format-detector.js","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/format-detector.ts"],"names":[],"mappings":";;;AACA,qDAAiD;AACjD,mDAA+C;AAC/C,iDAA6C;AAC7C,yCAA+E;AAE/E,MAAa,cAAc;IAGzB,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,8BAAa,CAAC,OAAO,CAAC;YAC1B,IAAI,4BAAY,CAAC,OAAO,CAAC;YACzB,IAAI,0BAAW,CAAC,OAAO,CAAC;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAgB;QACrB,uDAAuD;QACvD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,OAAO,sBAAc,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,MAAsB,EAAE,QAAiB;QACjD,IAAI,MAAM,KAAK,sBAAc,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC/C,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,4CAA4C;QAC5C,IAAI,MAAM,KAAK,sBAAc,CAAC,KAAK,EAAE,CAAC;YACpC,wCAAwC;YACxC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,sBAAc,CAAC,OAAO,CAAC,CAAC;YAC3F,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,sBAAc,CAAC,MAAM,CAAC,CAAC;YAEzF,IAAI,aAAa,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5C,OAAO,aAAa,CAAC;YACvB,CAAC;YACD,IAAI,YAAY,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC3C,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,MAAM,CAAC,CAAC;QACpE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,6BAA6B;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,cAAc,CAAC,MAA0B;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,QAAgB;QAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,kBAAkB;QAClB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAChD,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;oBAEtC,yCAAyC;oBACzC,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAEnE,OAAO,CAAC,IAAI,CAAC;wBACX,MAAM;wBACN,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;wBAChE,QAAQ,EAAE,QAAQ,CAAC,MAAM;wBACzB,aAAa;qBACd,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,yBAAyB;oBACzB,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QAEpD,OAAO;YACL,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS;YAC9C,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,eAAe,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC;SACpC,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,KAAe,EAAE,QAA2B;QACzE,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,8CAA8C;YAC9C,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;YAEpB,8BAA8B;YAC9B,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBACpD,YAAY,GAAG,CAAC,CAAC;oBACjB,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,iEAAiE;gBACjE,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9B,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC7B,0CAA0C;oBAC1C,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;wBACnF,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;wBACnB,MAAM;oBACR,CAAC;gBACH,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS,EAAE,YAAY,GAAG,CAAC,EAAE,YAAY;oBACzC,OAAO,EAAE,UAAU,GAAG,CAAC;oBACvB,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,CAAC;iBACzC,CAAC,CAAC;gBAEH,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,mBAAmB,CAAC,IAAY,EAAE,OAAe;QACvD,0BAA0B;QAC1B,OAAO,IAAI,KAAK,OAAO,OAAO,EAAE;YACzB,IAAI,KAAK,KAAK,OAAO,EAAE;YACvB,IAAI,KAAK,GAAG,OAAO,GAAG;YACtB,IAAI,KAAK,OAAO,CAAC,CAAC,WAAW;IACtC,CAAC;IAEO,mBAAmB,CAAC,QAAgB,EAAE,MAAsB,EAAE,QAA2B;QAC/F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAExD,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,qCAAqC;QACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,IAAI,EAAE,CAAC,CAAC,oCAAoC;QAE1E,iCAAiC;QACjC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QAClG,IAAI,gBAAgB,GAAG,EAAE;YAAE,KAAK,IAAI,EAAE,CAAC,CAAC,0BAA0B;QAElE,0CAA0C;QAC1C,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,sBAAc,CAAC,OAAO;gBACzB,qCAAqC;gBACrC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/E,IAAI,aAAa,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;oBAAE,KAAK,IAAI,EAAE,CAAC,CAAC,2BAA2B;gBACtF,MAAM;YAER,KAAK,sBAAc,CAAC,MAAM;gBACxB,oDAAoD;gBACpD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC7F,IAAI,eAAe,IAAI,CAAC,IAAI,eAAe,IAAI,EAAE;oBAAE,KAAK,IAAI,EAAE,CAAC,CAAC,uBAAuB;gBACvF,MAAM;YAER,KAAK,sBAAc,CAAC,KAAK;gBACvB,gCAAgC;gBAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACpC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;oBACpB,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;oBACrB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACzB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,qBAAqB;iBAClD,CAAC,MAAM,CAAC;gBACT,IAAI,SAAS,KAAK,QAAQ,CAAC,MAAM;oBAAE,KAAK,IAAI,EAAE,CAAC,CAAC,sBAAsB;gBACtE,MAAM;QACV,CAAC;QAED,kCAAkC;QAClC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9F,MAAM,aAAa,GAAG,kBAAkB,GAAG,YAAY,CAAC;QACxD,IAAI,aAAa,GAAG,GAAG;YAAE,KAAK,IAAI,EAAE,CAAC,CAAC,wBAAwB;QAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEO,YAAY,CAAC,OAAe,EAAE,WAA8B;QAClE,uEAAuE;QACvE,OAAO,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9D,CAAC;CACF;AAzMD,wCAyMC"}
@@ -3,6 +3,7 @@ export { HeadingParser } from './heading-parser';
3
3
  export { BulletParser } from './bullet-parser';
4
4
  export { ColonParser } from './colon-parser';
5
5
  export { FormatDetector } from './format-detector';
6
+ export type { FormatAnalysisResult, FormatMatch, SectionRange } from './format-detector';
6
7
  import { FormatDetector } from './format-detector';
7
8
  import { ParserOptions } from '../core/types';
8
9
  export declare function getFormatDetector(options?: ParserOptions): FormatDetector;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK9C,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAKzE;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEzF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK9C,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAKzE;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/index.ts"],"names":[],"mappings":";;;AAYA,8CAKC;AAED,kDAEC;AArBD,6CAAmD;AAA1C,iHAAA,kBAAkB,OAAA;AAC3B,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,uDAAmD;AAGnD,8BAA8B;AAC9B,IAAI,eAAe,GAA0B,IAAI,CAAC;AAElD,SAAgB,iBAAiB,CAAC,OAAuB;IACvD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,gCAAc,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAgB,mBAAmB;IACjC,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/markdown-transformer/parsers/index.ts"],"names":[],"mappings":";;;AAaA,8CAKC;AAED,kDAEC;AAtBD,6CAAmD;AAA1C,iHAAA,kBAAkB,OAAA;AAC3B,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,uDAAmD;AAGnD,8BAA8B;AAC9B,IAAI,eAAe,GAA0B,IAAI,CAAC;AAElD,SAAgB,iBAAiB,CAAC,OAAuB;IACvD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,gCAAc,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAgB,mBAAmB;IACjC,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nx-md-parser",
3
- "version": "2.0.2",
3
+ "version": "2.2.0",
4
4
  "description": "Extensible Multi-Format AI-Powered Markdown to JSON Transformer with support for any markdown variant through custom parsers, intelligent schema validation, auto-fixing, table parsing, and optional persistent machine learning",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",