flappa-doormal 2.6.4 → 2.7.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/AGENTS.md CHANGED
@@ -71,13 +71,17 @@ src/
71
71
  4. **`rule-regex.ts`** - SplitRule → compiled regex builder
72
72
  - `buildRuleRegex()` - Compiles rule patterns (`lineStartsWith`, `lineStartsAfter`, `lineEndsWith`, `template`, `regex`)
73
73
  - `processPattern()` - Token expansion + auto-escaping + optional fuzzy application
74
- - `extractNamedCaptureNames()` - Extract `(?<name>...)` groups from raw regex patterns (NEW)
74
+ - `extractNamedCaptureNames()` - Extract `(?<name>...)` groups from raw regex patterns
75
75
 
76
- 5. **`breakpoint-processor.ts`** - Breakpoint post-processing engine
76
+ 5. **`pattern-validator.ts`** - Rule validation utilities
77
+ - `validateRules()` - Detects typos in patterns (missing `{{}}`, unknown tokens, duplicates)
78
+ - Returns parallel array structure for easy error tracking
79
+
80
+ 6. **`breakpoint-processor.ts`** - Breakpoint post-processing engine
77
81
  - `applyBreakpoints()` - Splits oversized structural segments using breakpoint patterns + windowing
78
82
  - Applies `pageJoiner` normalization to breakpoint-created segments
79
83
 
80
- 6. **`breakpoint-utils.ts`** - Breakpoint processing utilities (NEW)
84
+ 7. **`breakpoint-utils.ts`** - Breakpoint processing utilities
81
85
  - `normalizeBreakpoint()` - Convert string to BreakpointRule object
82
86
  - `isPageExcluded()` - Check if page is in exclude list
83
87
  - `isInBreakpointRange()` - Validate page against min/max/exclude constraints
package/README.md CHANGED
@@ -406,6 +406,28 @@ Key options:
406
406
  - If you paste these signatures into `lineStartsWith` / `lineStartsAfter` / `template`, that’s fine: those template pattern types **auto-escape `()[]`** outside `{{tokens}}`.
407
407
  - If you paste them into a raw `regex` rule, you may need to escape literal brackets yourself.
408
408
 
409
+ ## Rule Validation
410
+
411
+ Use `validateRules()` to detect common mistakes in rule patterns before running segmentation:
412
+
413
+ ```typescript
414
+ import { validateRules } from 'flappa-doormal';
415
+
416
+ const issues = validateRules([
417
+ { lineStartsAfter: ['raqms:num'] }, // Missing {{}}
418
+ { lineStartsWith: ['{{unknown}}'] }, // Unknown token
419
+ { lineStartsAfter: ['## (rumuz:rumuz)'] } // Typo - should be {{rumuz:rumuz}}
420
+ ]);
421
+
422
+ // issues[0]?.lineStartsAfter?.[0]?.type === 'missing_braces'
423
+ // issues[1]?.lineStartsWith?.[0]?.type === 'unknown_token'
424
+ // issues[2]?.lineStartsAfter?.[0]?.type === 'missing_braces'
425
+ ```
426
+
427
+ **Checks performed:**
428
+ - **Missing braces**: Detects token names like `raqms:num` without `{{}}`
429
+ - **Unknown tokens**: Flags tokens inside `{{}}` that don't exist (e.g., `{{nonexistent}}`)
430
+ - **Duplicates**: Finds duplicate patterns within the same rule
409
431
 
410
432
  ## Prompting LLMs / Agents to Generate Rules (Shamela books)
411
433
 
package/dist/index.d.mts CHANGED
@@ -766,6 +766,74 @@ type Segment = {
766
766
  meta?: Record<string, unknown>;
767
767
  };
768
768
  //#endregion
769
+ //#region src/segmentation/pattern-validator.d.ts
770
+ /**
771
+ * Types of validation issues that can be detected.
772
+ */
773
+ type ValidationIssueType = 'missing_braces' | 'unknown_token' | 'duplicate';
774
+ /**
775
+ * A validation issue found in a pattern.
776
+ */
777
+ type ValidationIssue = {
778
+ type: ValidationIssueType;
779
+ message: string;
780
+ suggestion?: string;
781
+ };
782
+ /**
783
+ * Validation result for a single rule, with issues keyed by pattern type.
784
+ * Arrays parallel the input pattern arrays - undefined means no issue.
785
+ */
786
+ type RuleValidationResult = {
787
+ lineStartsWith?: (ValidationIssue | undefined)[];
788
+ lineStartsAfter?: (ValidationIssue | undefined)[];
789
+ lineEndsWith?: (ValidationIssue | undefined)[];
790
+ template?: ValidationIssue;
791
+ };
792
+ /**
793
+ * Validates split rules for common pattern issues.
794
+ *
795
+ * Checks for:
796
+ * - Missing `{{}}` around known token names (e.g., `raqms:num` instead of `{{raqms:num}}`)
797
+ * - Unknown token names inside `{{}}` (e.g., `{{nonexistent}}`)
798
+ * - Duplicate patterns within the same rule
799
+ *
800
+ * @param rules - Array of split rules to validate
801
+ * @returns Array parallel to input with validation results (undefined if no issues)
802
+ *
803
+ * @example
804
+ * const issues = validateRules([
805
+ * { lineStartsAfter: ['raqms:num'] }, // Missing braces
806
+ * { lineStartsWith: ['{{unknown}}'] }, // Unknown token
807
+ * ]);
808
+ * // issues[0]?.lineStartsAfter?.[0]?.type === 'missing_braces'
809
+ * // issues[1]?.lineStartsWith?.[0]?.type === 'unknown_token'
810
+ */
811
+ declare const validateRules: (rules: SplitRule[]) => (RuleValidationResult | undefined)[];
812
+ //#endregion
813
+ //#region src/segmentation/replace.d.ts
814
+ /**
815
+ * A single replacement rule applied by `applyReplacements()` / `SegmentationOptions.replace`.
816
+ *
817
+ * Notes:
818
+ * - `regex` is a raw JavaScript regex source string (no token expansion).
819
+ * - Default flags are `gu` (global + unicode).
820
+ * - If `flags` is provided, it is validated and `g` + `u` are always enforced.
821
+ * - If `pageIds` is omitted, the rule applies to all pages.
822
+ * - If `pageIds` is `[]`, the rule applies to no pages (rule is skipped).
823
+ */
824
+ type ReplaceRule = NonNullable<SegmentationOptions['replace']>[number];
825
+ /**
826
+ * Applies ordered regex replacements to page content (per page).
827
+ *
828
+ * - Replacement rules are applied in array order.
829
+ * - Each rule is applied globally (flag `g` enforced) with unicode mode (flag `u` enforced).
830
+ * - `pageIds` can scope a rule to specific pages. `pageIds: []` skips the rule entirely.
831
+ *
832
+ * This function is intentionally **pure**:
833
+ * it returns a new pages array only when changes are needed, otherwise it returns the original pages.
834
+ */
835
+ declare const applyReplacements: (pages: Page[], rules?: ReplaceRule[]) => Page[];
836
+ //#endregion
769
837
  //#region src/segmentation/segmenter.d.ts
770
838
  /**
771
839
  * Applies breakpoints to oversized segments.
@@ -825,30 +893,6 @@ type Segment = {
825
893
  */
826
894
  declare const segmentPages: (pages: Page[], options: SegmentationOptions) => Segment[];
827
895
  //#endregion
828
- //#region src/segmentation/replace.d.ts
829
- /**
830
- * A single replacement rule applied by `applyReplacements()` / `SegmentationOptions.replace`.
831
- *
832
- * Notes:
833
- * - `regex` is a raw JavaScript regex source string (no token expansion).
834
- * - Default flags are `gu` (global + unicode).
835
- * - If `flags` is provided, it is validated and `g` + `u` are always enforced.
836
- * - If `pageIds` is omitted, the rule applies to all pages.
837
- * - If `pageIds` is `[]`, the rule applies to no pages (rule is skipped).
838
- */
839
- type ReplaceRule = NonNullable<SegmentationOptions['replace']>[number];
840
- /**
841
- * Applies ordered regex replacements to page content (per page).
842
- *
843
- * - Replacement rules are applied in array order.
844
- * - Each rule is applied globally (flag `g` enforced) with unicode mode (flag `u` enforced).
845
- * - `pageIds` can scope a rule to specific pages. `pageIds: []` skips the rule entirely.
846
- *
847
- * This function is intentionally **pure**:
848
- * it returns a new pages array only when changes are needed, otherwise it returns the original pages.
849
- */
850
- declare const applyReplacements: (pages: Page[], rules?: ReplaceRule[]) => Page[];
851
- //#endregion
852
896
  //#region src/segmentation/tokens.d.ts
853
897
  /**
854
898
  * Token-based template system for Arabic text pattern matching.
@@ -1263,5 +1307,5 @@ declare const analyzeTextForRule: (text: string) => {
1263
1307
  detected: DetectedPattern[];
1264
1308
  } | null;
1265
1309
  //#endregion
1266
- export { type Breakpoint, type BreakpointRule, type CommonLineStartPattern, type DetectedPattern, type ExpandResult, type LineStartAnalysisOptions, type LineStartPatternExample, type Logger, type Page, type PageRange, type ReplaceRule, type Segment, type SegmentationOptions, type SplitRule, TOKEN_PATTERNS, analyzeCommonLineStarts, analyzeTextForRule, applyReplacements, containsTokens, detectTokenPatterns, escapeRegex, escapeTemplateBrackets, expandCompositeTokensInTemplate, expandTokens, expandTokensWithCaptures, generateTemplateFromText, getAvailableTokens, getTokenPattern, makeDiacriticInsensitive, segmentPages, suggestPatternConfig, templateToRegex };
1310
+ export { type Breakpoint, type BreakpointRule, type CommonLineStartPattern, type DetectedPattern, type ExpandResult, type LineStartAnalysisOptions, type LineStartPatternExample, type Logger, type Page, type PageRange, type ReplaceRule, type RuleValidationResult, type Segment, type SegmentationOptions, type SplitRule, TOKEN_PATTERNS, type ValidationIssue, type ValidationIssueType, analyzeCommonLineStarts, analyzeTextForRule, applyReplacements, containsTokens, detectTokenPatterns, escapeRegex, escapeTemplateBrackets, expandCompositeTokensInTemplate, expandTokens, expandTokensWithCaptures, generateTemplateFromText, getAvailableTokens, getTokenPattern, makeDiacriticInsensitive, segmentPages, suggestPatternConfig, templateToRegex, validateRules };
1267
1311
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/segmentation/fuzzy.ts","../src/segmentation/types.ts","../src/segmentation/segmenter.ts","../src/segmentation/replace.ts","../src/segmentation/tokens.ts","../src/analysis.ts","../src/detection.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/segmentation/fuzzy.ts","../src/segmentation/types.ts","../src/segmentation/pattern-validator.ts","../src/segmentation/replace.ts","../src/segmentation/segmenter.ts","../src/segmentation/tokens.ts","../src/analysis.ts","../src/detection.ts"],"sourcesContent":[],"mappings":"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"}