flappa-doormal 2.14.1 → 2.15.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 +41 -0
- package/README.md +112 -4
- package/dist/index.d.mts +135 -102
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +727 -226
- package/dist/index.mjs.map +1 -1
- package/package.json +13 -8
package/AGENTS.md
CHANGED
|
@@ -604,6 +604,24 @@ bunx biome lint .
|
|
|
604
604
|
|
|
605
605
|
48. **The "adding content changes behavior" smell**: If adding unrelated content (like a second page) dramatically changes how the first page is processed, suspect incorrect span/window calculations. The fix pattern: ensure window calculations are scoped to the CURRENT context (current page) not the ORIGINAL context (all remaining content).
|
|
606
606
|
|
|
607
|
+
49. **Use `trimStart()` not `trim()` for user-provided patterns with semantic whitespace**: When processing user-provided patterns like the `words` field, only strip leading whitespace (likely accidental). Trailing whitespace may be intentional for whole-word matching (e.g., `'بل '` should match only the standalone word, not words starting with `بل` like `بلغ`). **Bug symptom**: `words: ['بل ']` matched `بلغ` because `.trim()` stripped the trailing space to just `بل`. **Fix**: Use `.trimStart()` to preserve trailing whitespace.
|
|
608
|
+
|
|
609
|
+
50. **When expected boundaries exceed segment length, trust content matches**: If `expectedBoundary >= remainingContent.length`, any deviation-based validation is meaningless. In this case the boundary search must scan the full segment content and rank candidates without a distance constraint. Otherwise early valid page starts can be missed and page attribution will drift.
|
|
610
|
+
|
|
611
|
+
51. **Infer start offset from the first boundary when necessary**: If the initial boundary search fails right after a structural split, rerun a relaxed search to find the true page start and infer `startOffsetInFromPage`. This corrects the baseline for all subsequent boundary estimates.
|
|
612
|
+
|
|
613
|
+
52. **Windowed boundary searches can be wrong when offsets drift**: If the approximate offset is skewed (e.g., repeated line-start markers), a windowed scan may miss the real boundary. A full-content scan is required to recover early matches.
|
|
614
|
+
|
|
615
|
+
53. **Harden maxPages=0 with targeted tests**: Add tests that hit the failure modes: segment starts at page boundary with repeated marker, very short pages (< 100 chars), minimal prefix lengths (15 chars), multiple candidate prefixes in content, tiny tail segments after structural splits, and fast-path threshold transitions (999 vs 1000 pages).
|
|
616
|
+
|
|
617
|
+
54. **Beware trusting `segment.to` in validation**: When validating `maxPages` violations, do NOT rely solely on `segment.to` if it exists. A segment might claim to end on page X (via `segment.to`) but its content physically matches text on page Y. If `maxPages=0`, trusting `segment.to` hides the violation. Always check the physical match location (`actualToId`) against the constraint, regardless of what the segment claims.
|
|
618
|
+
|
|
619
|
+
55. **Duplicate `case` labels in manual merges**: When applying fixes suggested by AI or manual merges, check surrounding code for duplicate `case` statements. JavaScript switch statements with duplicate cases are syntax errors (strict mode) or unreachable code. Validation errors usually catch this, but careful reading prevents it.
|
|
620
|
+
|
|
621
|
+
56. **Linting vs Checks**: `bunx biome check` is strict. Complexity limits (max 15/18) force you to decompose functions. If you receive a complexity error, extract the complex logic (e.g., switch cases, specific validation checks) into standalone helper functions.
|
|
622
|
+
|
|
623
|
+
57. **Validation Hints Specificity**: Generic error hints like "Check segmenter.ts" are unhelpful. Provide specific file names and logical components (e.g., "Check maxPages windowing in breakpoint-processor.ts"). User-friendly validation reports guide debugging much faster than "Something is wrong".
|
|
624
|
+
|
|
607
625
|
### Process Template (Multi-agent design review, TDD-first)
|
|
608
626
|
|
|
609
627
|
If you want to repeat the “write a plan → get multiple AI critiques → synthesize → update plan → implement TDD-first” workflow, use:
|
|
@@ -746,6 +764,24 @@ See README.md for complete examples.
|
|
|
746
764
|
|
|
747
765
|
## Debugging Tips
|
|
748
766
|
|
|
767
|
+
### Reading Validation Reports
|
|
768
|
+
|
|
769
|
+
`validateSegments(pages, options, segments)` returns a structured report for attribution and `maxPages` issues. Use it to quickly localize bugs without re-running segmentation.
|
|
770
|
+
|
|
771
|
+
**Key fields:**
|
|
772
|
+
- `summary.errors` / `summary.warnings`: Use to decide if the bug is a hard failure or a suspected edge case.
|
|
773
|
+
- `issues[].type`: The failure class (see below).
|
|
774
|
+
- `issues[].segmentIndex`: Which segment to inspect in output.
|
|
775
|
+
- `issues[].expected` / `issues[].actual`: Where attribution diverged.
|
|
776
|
+
- `issues[].pageContext`: Matching page preview + `matchIndex` (if found).
|
|
777
|
+
- `issues[].hint`: Direct pointer to likely culprit code path.
|
|
778
|
+
|
|
779
|
+
**Issue types and next steps:**
|
|
780
|
+
- `max_pages_violation`: Segment spans too many pages. Check breakpoint windowing in `breakpoint-processor.ts` and boundary logic in `breakpoint-utils.ts`.
|
|
781
|
+
- `page_attribution_mismatch`: Content matched a different page than `segment.from`. Focus on `buildBoundaryPositions()` and `findPageStartNearExpectedBoundary()`.
|
|
782
|
+
- `content_not_found`: Segment content not found in any page. Compare preprocessing, `pageJoiner`, and trimming behavior.
|
|
783
|
+
- `page_not_found`: Segment `from` is not in input pages; validate page IDs and input ordering.
|
|
784
|
+
|
|
749
785
|
### Page Boundary Detection Issues
|
|
750
786
|
|
|
751
787
|
If `maxPages=0` produces merged segments when pages have identical prefixes or duplicated content:
|
|
@@ -761,3 +797,8 @@ Key functions: `applyBreakpoints()` → `processOversizedSegment()` → `findBre
|
|
|
761
797
|
- Check `boundaryPositions built` log for page boundary byte offsets
|
|
762
798
|
- Check `iteration=N` logs for `currentFromIdx`, `cursorPos`, `windowEndPosition` per loop
|
|
763
799
|
|
|
800
|
+
## Known Issues
|
|
801
|
+
|
|
802
|
+
- **Binary Search Gap (Theoretical)**: `findBoundaryIdForOffset` returns `undefined` if the search offset falls exactly on a joiner character (e.g., a space or newline) between two pages. This is mathematically correct (the gap belongs to neither page) but may cause validation errors if a segment consists _only_ of such a gap or matches content starting/ending strictly within the gap. We have marked this as "accept" behavior for now, with a documented skipped test case.
|
|
803
|
+
|
|
804
|
+
|
package/README.md
CHANGED
|
@@ -92,6 +92,35 @@ const segments = segmentPages(pages, {
|
|
|
92
92
|
// ]
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
+
## Segment Validation
|
|
96
|
+
|
|
97
|
+
Use `validateSegments()` to sanity-check segmentation output against the input pages and options. This is useful for detecting page attribution issues or maxPages violations before sending segments to downstream systems.
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
import { segmentPages, validateSegments } from 'flappa-doormal';
|
|
101
|
+
|
|
102
|
+
const segments = segmentPages(pages, { rules, maxPages: 0 });
|
|
103
|
+
const report = validateSegments(pages, { rules, maxPages: 0 }, segments);
|
|
104
|
+
|
|
105
|
+
if (!report.ok) {
|
|
106
|
+
console.log(report.summary);
|
|
107
|
+
console.log(report.issues[0]);
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Example issue entry (truncated):
|
|
112
|
+
|
|
113
|
+
```json
|
|
114
|
+
{
|
|
115
|
+
"type": "page_attribution_mismatch",
|
|
116
|
+
"severity": "error",
|
|
117
|
+
"segmentIndex": 2,
|
|
118
|
+
"expected": { "from": 5 },
|
|
119
|
+
"actual": { "from": 4 },
|
|
120
|
+
"evidence": "Content found in page 5, but segment.from=4."
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
95
124
|
## Features
|
|
96
125
|
|
|
97
126
|
### 1. Template Tokens
|
|
@@ -947,6 +976,57 @@ const segments = segmentPages(pages, { rules });
|
|
|
947
976
|
// ]
|
|
948
977
|
```
|
|
949
978
|
|
|
979
|
+
## Advanced: Metadata Extraction & Data Migration
|
|
980
|
+
|
|
981
|
+
If you already have pre-segmented data (e.g., records from a database or JSON file) and want to use **flappa-doormal's** token system to extract metadata and clean the content without further splitting, you can use the **Metadata Extraction** pattern.
|
|
982
|
+
|
|
983
|
+
By setting `maxPages: 0`, you guarantee a **1:1 mapping**: each input page produces exactly one output segment, regardless of how much text is on the page.
|
|
984
|
+
|
|
985
|
+
### Example: Extracting multiple fields from pre-split records
|
|
986
|
+
|
|
987
|
+
```typescript
|
|
988
|
+
import { segmentPages, type Page } from 'flappa-doormal';
|
|
989
|
+
|
|
990
|
+
const excerpts = [
|
|
991
|
+
{ nass: '٧٠١٦ - ١ - ١ - فَقَصَّتْهَا حَفْصَةُ', id: 1 },
|
|
992
|
+
{ nass: '٧٠١٧ (أ) - بَابُ الْقَيْدِ', id: 2 },
|
|
993
|
+
{ nass: 'باب الصلاة - الفصل الأول', id: 3 },
|
|
994
|
+
];
|
|
995
|
+
|
|
996
|
+
// Convert your data to the Page format
|
|
997
|
+
const pages: Page[] = excerpts.map(e => ({ content: e.nass, id: e.id }));
|
|
998
|
+
|
|
999
|
+
const result = segmentPages(pages, {
|
|
1000
|
+
maxPages: 0, // IMPORTANT: Guarantees each page stays isolated (no merging/splitting)
|
|
1001
|
+
rules: [
|
|
1002
|
+
// 1. Extract triple numbers: ٧٠١٦ - ١ - ١
|
|
1003
|
+
{
|
|
1004
|
+
lineStartsAfter: ['{{raqms:num}} {{dash}} {{raqms:num2}} {{dash}} {{raqms:num3}} '],
|
|
1005
|
+
},
|
|
1006
|
+
// 2. Extract number + indicator: ٧٠١٧ (أ)
|
|
1007
|
+
{
|
|
1008
|
+
lineStartsAfter: ['{{raqms:num}} ({{harf:indicator}}) {{dash}} '],
|
|
1009
|
+
},
|
|
1010
|
+
// 3. Mark chapters using fuzzy tokens
|
|
1011
|
+
{
|
|
1012
|
+
fuzzy: true,
|
|
1013
|
+
lineStartsWith: ['{{bab}} '],
|
|
1014
|
+
meta: { type: 'Chapter' },
|
|
1015
|
+
},
|
|
1016
|
+
],
|
|
1017
|
+
});
|
|
1018
|
+
|
|
1019
|
+
// Segment 0: { content: 'فَقَصَّتْهَا حَفْصَةُ', meta: { num: '٧٠١٦', num2: '١', num3: '١' }, ... }
|
|
1020
|
+
// Segment 1: { content: 'بَابُ الْقَيْدِ', meta: { num: '٧٠١٧', indicator: 'أ' }, ... }
|
|
1021
|
+
// Segment 2: { content: 'باب الصلاة - الفصل الأول', meta: { type: 'Chapter' }, ... }
|
|
1022
|
+
```
|
|
1023
|
+
|
|
1024
|
+
### Why use this?
|
|
1025
|
+
- **Pattern Robustness**: Use `{{raqms}}`, `{{dash}}`, and `{{harf}}` instead of writing raw regex for every edge case.
|
|
1026
|
+
- **Prefix Cleaning**: `lineStartsAfter` automatically removes the matched pattern, leaving only the clean text.
|
|
1027
|
+
- **Deduplication**: Named captures like `{{raqms:num}}` automatically populate the `meta` object.
|
|
1028
|
+
- **Fuzzy Headers**: Use `fuzzy: true` to match headers like "Book" or "Chapter" regardless of Arabic diacritics.
|
|
1029
|
+
|
|
950
1030
|
## Rule Optimization
|
|
951
1031
|
|
|
952
1032
|
Use `optimizeRules()` to automatically merge compatible rules, remove duplicate patterns, and sort rules by specificity (longest patterns first):
|
|
@@ -1335,6 +1415,38 @@ Notes:
|
|
|
1335
1415
|
- Recovery is **explicitly scoped** by the `selector`; it will not “guess” which rules are mistaken.
|
|
1336
1416
|
- If your segments were heavily post-processed (trimmed/normalized/reordered), recovery may return unresolved items; see the report for details.
|
|
1337
1417
|
|
|
1418
|
+
#### `recoverMistakenMarkersForRuns(runs, opts?)`
|
|
1419
|
+
|
|
1420
|
+
Batch version of `recoverMistakenLineStartsAfterMarkers`. Processes multiple independent segmentation runs (e.g. from different books) and returns a consolidated report.
|
|
1421
|
+
|
|
1422
|
+
```typescript
|
|
1423
|
+
import { recoverMistakenMarkersForRuns } from 'flappa-doormal';
|
|
1424
|
+
|
|
1425
|
+
const results = recoverMistakenMarkersForRuns([
|
|
1426
|
+
{ pages: pages1, segments: segments1, options: options1, selector: selector1 },
|
|
1427
|
+
{ pages: pages2, segments: segments2, options: options2, selector: selector2 },
|
|
1428
|
+
]);
|
|
1429
|
+
```
|
|
1430
|
+
|
|
1431
|
+
### `validateSegments(pages, options, segments, validationOptions?)`
|
|
1432
|
+
|
|
1433
|
+
Validates that segments correctly map back to the source pages and adhere to constraints.
|
|
1434
|
+
|
|
1435
|
+
```typescript
|
|
1436
|
+
import { validateSegments } from 'flappa-doormal';
|
|
1437
|
+
|
|
1438
|
+
const report = validateSegments(pages, options, segments, {
|
|
1439
|
+
// Optional: Max content length to search before falling back (default: 500)
|
|
1440
|
+
// Segments longer than this are checked via fast path unless issues are found.
|
|
1441
|
+
fullSearchThreshold: 1000,
|
|
1442
|
+
});
|
|
1443
|
+
```
|
|
1444
|
+
|
|
1445
|
+
Returns a `SegmentValidationReport` containing:
|
|
1446
|
+
- `ok`: boolean
|
|
1447
|
+
- `summary`: counts of errors/warnings
|
|
1448
|
+
- `issues`: detailed list of problems (page attribution mismatch, maxPages violation, etc.)
|
|
1449
|
+
|
|
1338
1450
|
### `stripHtmlTags(html)`
|
|
1339
1451
|
|
|
1340
1452
|
Remove all HTML tags from content, keeping only text.
|
|
@@ -1668,7 +1780,3 @@ bun run deploy
|
|
|
1668
1780
|
## License
|
|
1669
1781
|
|
|
1670
1782
|
MIT
|
|
1671
|
-
|
|
1672
|
-
## Inspiration
|
|
1673
|
-
|
|
1674
|
-
The name of the project is from Asmāʾ, it seems to be some sort of gymnastic move.
|
package/dist/index.d.mts
CHANGED
|
@@ -150,8 +150,7 @@ type Breakpoint = string | BreakpointRule;
|
|
|
150
150
|
* { regex: '^[٠-٩]+ - (.*)', split: 'at' }
|
|
151
151
|
*/
|
|
152
152
|
type RegexPattern = {
|
|
153
|
-
/** Raw regex pattern string (no token expansion, no auto-escaping) */
|
|
154
|
-
regex: string;
|
|
153
|
+
/** Raw regex pattern string (no token expansion, no auto-escaping) */regex: string;
|
|
155
154
|
};
|
|
156
155
|
/**
|
|
157
156
|
* Template pattern rule - expands `{{tokens}}` before compiling to regex.
|
|
@@ -177,8 +176,7 @@ type RegexPattern = {
|
|
|
177
176
|
* @see TOKEN_PATTERNS for available tokens
|
|
178
177
|
*/
|
|
179
178
|
type TemplatePattern = {
|
|
180
|
-
/** Template string with `{{token}}` or `{{token:name}}` placeholders. Brackets `()[]` are auto-escaped. */
|
|
181
|
-
template: string;
|
|
179
|
+
/** Template string with `{{token}}` or `{{token:name}}` placeholders. Brackets `()[]` are auto-escaped. */template: string;
|
|
182
180
|
};
|
|
183
181
|
/**
|
|
184
182
|
* Line-start pattern rule - matches lines starting with any of the given patterns.
|
|
@@ -206,8 +204,7 @@ type TemplatePattern = {
|
|
|
206
204
|
* { lineStartsWith: ['({{harf}}) '], split: 'at' }
|
|
207
205
|
*/
|
|
208
206
|
type LineStartsWithPattern = {
|
|
209
|
-
/** Array of patterns that mark line beginnings (marker included in content). Brackets `()[]` are auto-escaped. */
|
|
210
|
-
lineStartsWith: string[];
|
|
207
|
+
/** Array of patterns that mark line beginnings (marker included in content). Brackets `()[]` are auto-escaped. */lineStartsWith: string[];
|
|
211
208
|
};
|
|
212
209
|
/**
|
|
213
210
|
* Line-start-after pattern rule - matches lines starting with patterns,
|
|
@@ -238,8 +235,7 @@ type LineStartsWithPattern = {
|
|
|
238
235
|
* { lineStartsAfter: ['({{harf}}): '], split: 'at' }
|
|
239
236
|
*/
|
|
240
237
|
type LineStartsAfterPattern = {
|
|
241
|
-
/** Array of patterns that mark line beginnings (marker excluded from content). Brackets `()[]` are auto-escaped. */
|
|
242
|
-
lineStartsAfter: string[];
|
|
238
|
+
/** Array of patterns that mark line beginnings (marker excluded from content). Brackets `()[]` are auto-escaped. */lineStartsAfter: string[];
|
|
243
239
|
};
|
|
244
240
|
/**
|
|
245
241
|
* Line-end pattern rule - matches lines ending with any of the given patterns.
|
|
@@ -261,8 +257,7 @@ type LineStartsAfterPattern = {
|
|
|
261
257
|
* { lineEndsWith: ['(انتهى)'], split: 'after' }
|
|
262
258
|
*/
|
|
263
259
|
type LineEndsWithPattern = {
|
|
264
|
-
/** Array of patterns that mark line endings. Brackets `()[]` are auto-escaped. */
|
|
265
|
-
lineEndsWith: string[];
|
|
260
|
+
/** Array of patterns that mark line endings. Brackets `()[]` are auto-escaped. */lineEndsWith: string[];
|
|
266
261
|
};
|
|
267
262
|
/**
|
|
268
263
|
* Union of all pattern types for split rules.
|
|
@@ -593,9 +588,7 @@ type SegmentationOptions = {
|
|
|
593
588
|
* `meta._flappa.rule` and/or `meta._flappa.breakpoint`.
|
|
594
589
|
*/
|
|
595
590
|
debug?: boolean | {
|
|
596
|
-
/** Where to store provenance in meta. @default '_flappa' */
|
|
597
|
-
metaKey?: string;
|
|
598
|
-
/** Which kinds of provenance to include. @default ['rule','breakpoint'] */
|
|
591
|
+
/** Where to store provenance in meta. @default '_flappa' */metaKey?: string; /** Which kinds of provenance to include. @default ['rule','breakpoint'] */
|
|
599
592
|
include?: Array<'rule' | 'breakpoint'>;
|
|
600
593
|
};
|
|
601
594
|
/**
|
|
@@ -734,6 +727,46 @@ type SegmentationOptions = {
|
|
|
734
727
|
preprocess?: PreprocessTransform[];
|
|
735
728
|
};
|
|
736
729
|
//#endregion
|
|
730
|
+
//#region src/types/validation.d.ts
|
|
731
|
+
type SegmentValidationIssueSeverity = 'error' | 'warn';
|
|
732
|
+
type SegmentValidationIssueType = 'max_pages_violation' | 'page_attribution_mismatch' | 'content_not_found' | 'page_not_found';
|
|
733
|
+
type SegmentValidationIssue = {
|
|
734
|
+
type: SegmentValidationIssueType;
|
|
735
|
+
severity: SegmentValidationIssueSeverity;
|
|
736
|
+
segmentIndex: number;
|
|
737
|
+
segment: {
|
|
738
|
+
from: number;
|
|
739
|
+
to?: number;
|
|
740
|
+
contentPreview: string;
|
|
741
|
+
};
|
|
742
|
+
expected?: {
|
|
743
|
+
from?: number;
|
|
744
|
+
to?: number;
|
|
745
|
+
};
|
|
746
|
+
actual?: {
|
|
747
|
+
from?: number;
|
|
748
|
+
to?: number;
|
|
749
|
+
};
|
|
750
|
+
pageContext?: {
|
|
751
|
+
pageId: number;
|
|
752
|
+
pagePreview: string;
|
|
753
|
+
matchIndex?: number;
|
|
754
|
+
};
|
|
755
|
+
evidence?: string;
|
|
756
|
+
hint?: string;
|
|
757
|
+
};
|
|
758
|
+
type SegmentValidationReport = {
|
|
759
|
+
ok: boolean;
|
|
760
|
+
summary: {
|
|
761
|
+
segmentCount: number;
|
|
762
|
+
pageCount: number;
|
|
763
|
+
issues: number;
|
|
764
|
+
errors: number;
|
|
765
|
+
warnings: number;
|
|
766
|
+
};
|
|
767
|
+
issues: SegmentValidationIssue[];
|
|
768
|
+
};
|
|
769
|
+
//#endregion
|
|
737
770
|
//#region src/types/index.d.ts
|
|
738
771
|
/**
|
|
739
772
|
* Output segment produced by `segmentPages()`.
|
|
@@ -935,13 +968,9 @@ declare const analyzeRepeatingSequences: (pages: Page[], options?: RepeatingSequ
|
|
|
935
968
|
* Result of detecting a token pattern in text
|
|
936
969
|
*/
|
|
937
970
|
type DetectedPattern = {
|
|
938
|
-
/** Token name from TOKEN_PATTERNS (e.g., 'raqms', 'dash') */
|
|
939
|
-
|
|
940
|
-
/**
|
|
941
|
-
match: string;
|
|
942
|
-
/** Start index in the original text */
|
|
943
|
-
index: number;
|
|
944
|
-
/** End index (exclusive) */
|
|
971
|
+
/** Token name from TOKEN_PATTERNS (e.g., 'raqms', 'dash') */token: string; /** The matched text */
|
|
972
|
+
match: string; /** Start index in the original text */
|
|
973
|
+
index: number; /** End index (exclusive) */
|
|
945
974
|
endIndex: number;
|
|
946
975
|
};
|
|
947
976
|
/**
|
|
@@ -1004,9 +1033,7 @@ declare const analyzeTextForRule: (text: string) => {
|
|
|
1004
1033
|
* Result from optimizing rules.
|
|
1005
1034
|
*/
|
|
1006
1035
|
type OptimizeResult = {
|
|
1007
|
-
/** Optimized rules (merged and sorted by specificity) */
|
|
1008
|
-
rules: SplitRule[];
|
|
1009
|
-
/** Number of rules that were merged into existing rules */
|
|
1036
|
+
/** Optimized rules (merged and sorted by specificity) */rules: SplitRule[]; /** Number of rules that were merged into existing rules */
|
|
1010
1037
|
mergedCount: number;
|
|
1011
1038
|
};
|
|
1012
1039
|
declare const optimizeRules: (rules: SplitRule[]) => {
|
|
@@ -1014,6 +1041,47 @@ declare const optimizeRules: (rules: SplitRule[]) => {
|
|
|
1014
1041
|
rules: SplitRule[];
|
|
1015
1042
|
};
|
|
1016
1043
|
//#endregion
|
|
1044
|
+
//#region src/preprocessing/transforms.d.ts
|
|
1045
|
+
/**
|
|
1046
|
+
* Remove zero-width control characters from text.
|
|
1047
|
+
*
|
|
1048
|
+
* @param text - Input text
|
|
1049
|
+
* @param mode - 'strip' (default) removes entirely, 'space' replaces with space
|
|
1050
|
+
* @returns Text with zero-width characters removed or replaced
|
|
1051
|
+
*/
|
|
1052
|
+
declare const removeZeroWidth: (text: string, mode?: "strip" | "space") => string;
|
|
1053
|
+
/**
|
|
1054
|
+
* Condense multiple periods (...) into ellipsis character (…).
|
|
1055
|
+
*
|
|
1056
|
+
* Prevents `{{tarqim}}` from false-matching inside ellipsis since
|
|
1057
|
+
* the `.` in tarqim matches individual periods.
|
|
1058
|
+
*
|
|
1059
|
+
* @param text - Input text
|
|
1060
|
+
* @returns Text with period sequences replaced by ellipsis
|
|
1061
|
+
*/
|
|
1062
|
+
declare const condenseEllipsis: (text: string) => string;
|
|
1063
|
+
/**
|
|
1064
|
+
* Join trailing و (waw) to the next word.
|
|
1065
|
+
*
|
|
1066
|
+
* Fixes OCR/digitization artifacts: ' و ' → ' و' (waw joined to next word)
|
|
1067
|
+
*
|
|
1068
|
+
* @param text - Input text
|
|
1069
|
+
* @returns Text with trailing waw joined to following word
|
|
1070
|
+
*/
|
|
1071
|
+
declare const fixTrailingWaw: (text: string) => string;
|
|
1072
|
+
/**
|
|
1073
|
+
* Apply preprocessing transforms to a page's content.
|
|
1074
|
+
*
|
|
1075
|
+
* Transforms run in array order. Each can be limited to specific pages
|
|
1076
|
+
* via `min`/`max` constraints.
|
|
1077
|
+
*
|
|
1078
|
+
* @param content - Page content to transform
|
|
1079
|
+
* @param pageId - Page ID for constraint checking
|
|
1080
|
+
* @param transforms - Array of transforms to apply
|
|
1081
|
+
* @returns Transformed content
|
|
1082
|
+
*/
|
|
1083
|
+
declare const applyPreprocessToPage: (content: string, pageId: number, transforms: PreprocessTransform[]) => string;
|
|
1084
|
+
//#endregion
|
|
1017
1085
|
//#region src/recovery.d.ts
|
|
1018
1086
|
type MarkerRecoverySelector = {
|
|
1019
1087
|
type: 'rule_indices';
|
|
@@ -1114,10 +1182,8 @@ type ValidationIssueType = 'missing_braces' | 'unknown_token' | 'duplicate' | 'e
|
|
|
1114
1182
|
type ValidationIssue = {
|
|
1115
1183
|
type: ValidationIssueType;
|
|
1116
1184
|
message: string;
|
|
1117
|
-
suggestion?: string;
|
|
1118
|
-
/** The
|
|
1119
|
-
token?: string;
|
|
1120
|
-
/** The specific pattern involved (for duplicate) */
|
|
1185
|
+
suggestion?: string; /** The token name involved in the issue (for unknown_token / missing_braces) */
|
|
1186
|
+
token?: string; /** The specific pattern involved (for duplicate) */
|
|
1121
1187
|
pattern?: string;
|
|
1122
1188
|
};
|
|
1123
1189
|
/**
|
|
@@ -1213,39 +1279,22 @@ declare const segmentPages: (pages: Page[], options: SegmentationOptions) => Seg
|
|
|
1213
1279
|
//#region src/segmentation/tokens.d.ts
|
|
1214
1280
|
/** Pre-defined token constants for use in patterns. */
|
|
1215
1281
|
declare const Token: {
|
|
1216
|
-
/** Chapter marker - باب */
|
|
1217
|
-
readonly
|
|
1218
|
-
/**
|
|
1219
|
-
readonly
|
|
1220
|
-
/**
|
|
1221
|
-
readonly
|
|
1222
|
-
|
|
1223
|
-
readonly
|
|
1224
|
-
|
|
1225
|
-
readonly
|
|
1226
|
-
/**
|
|
1227
|
-
readonly
|
|
1228
|
-
|
|
1229
|
-
readonly
|
|
1230
|
-
/**
|
|
1231
|
-
readonly
|
|
1232
|
-
/** Hadith transmission phrases */
|
|
1233
|
-
readonly NAQL: "{{naql}}";
|
|
1234
|
-
/** Newline character (for breakpoints) */
|
|
1235
|
-
readonly NEWLINE: "{{newline}}";
|
|
1236
|
-
/** Single ASCII digit */
|
|
1237
|
-
readonly NUM: "{{num}}";
|
|
1238
|
-
/** Composite: {{raqms}} {{dash}} (space) */
|
|
1239
|
-
readonly NUMBERED: "{{numbered}}";
|
|
1240
|
-
/** One or more ASCII digits */
|
|
1241
|
-
readonly NUMS: "{{nums}}";
|
|
1242
|
-
/** Single Arabic-Indic digit */
|
|
1243
|
-
readonly RAQM: "{{raqm}}";
|
|
1244
|
-
/** One or more Arabic-Indic digits */
|
|
1245
|
-
readonly RAQMS: "{{raqms}}";
|
|
1246
|
-
/** Source abbreviations (rijāl/takhrīj) */
|
|
1247
|
-
readonly RUMUZ: "{{rumuz}}";
|
|
1248
|
-
/** Punctuation marks */
|
|
1282
|
+
/** Chapter marker - باب */readonly BAB: "{{bab}}"; /** Basmala - بسم الله */
|
|
1283
|
+
readonly BASMALAH: "{{basmalah}}"; /** Bullet point variants */
|
|
1284
|
+
readonly BULLET: "{{bullet}}"; /** Dash variants (hyphen, en-dash, em-dash, tatweel) */
|
|
1285
|
+
readonly DASH: "{{dash}}"; /** Section marker - فصل / مسألة */
|
|
1286
|
+
readonly FASL: "{{fasl}}"; /** Single Arabic letter */
|
|
1287
|
+
readonly HARF: "{{harf}}"; /** Multiple Arabic letters separated by spaces */
|
|
1288
|
+
readonly HARFS: "{{harfs}}"; /** Book marker - كتاب */
|
|
1289
|
+
readonly KITAB: "{{kitab}}"; /** Hadith transmission phrases */
|
|
1290
|
+
readonly NAQL: "{{naql}}"; /** Newline character (for breakpoints) */
|
|
1291
|
+
readonly NEWLINE: "{{newline}}"; /** Single ASCII digit */
|
|
1292
|
+
readonly NUM: "{{num}}"; /** Composite: {{raqms}} {{dash}} (space) */
|
|
1293
|
+
readonly NUMBERED: "{{numbered}}"; /** One or more ASCII digits */
|
|
1294
|
+
readonly NUMS: "{{nums}}"; /** Single Arabic-Indic digit */
|
|
1295
|
+
readonly RAQM: "{{raqm}}"; /** One or more Arabic-Indic digits */
|
|
1296
|
+
readonly RAQMS: "{{raqms}}"; /** Source abbreviations (rijāl/takhrīj) */
|
|
1297
|
+
readonly RUMUZ: "{{rumuz}}"; /** Punctuation marks */
|
|
1249
1298
|
readonly TARQIM: "{{tarqim}}";
|
|
1250
1299
|
};
|
|
1251
1300
|
/**
|
|
@@ -1493,47 +1542,6 @@ declare const applyTokenMappings: (template: string, mappings: TokenMapping[]) =
|
|
|
1493
1542
|
*/
|
|
1494
1543
|
declare const stripTokenMappings: (template: string) => string;
|
|
1495
1544
|
//#endregion
|
|
1496
|
-
//#region src/preprocessing/transforms.d.ts
|
|
1497
|
-
/**
|
|
1498
|
-
* Remove zero-width control characters from text.
|
|
1499
|
-
*
|
|
1500
|
-
* @param text - Input text
|
|
1501
|
-
* @param mode - 'strip' (default) removes entirely, 'space' replaces with space
|
|
1502
|
-
* @returns Text with zero-width characters removed or replaced
|
|
1503
|
-
*/
|
|
1504
|
-
declare const removeZeroWidth: (text: string, mode?: "strip" | "space") => string;
|
|
1505
|
-
/**
|
|
1506
|
-
* Condense multiple periods (...) into ellipsis character (…).
|
|
1507
|
-
*
|
|
1508
|
-
* Prevents `{{tarqim}}` from false-matching inside ellipsis since
|
|
1509
|
-
* the `.` in tarqim matches individual periods.
|
|
1510
|
-
*
|
|
1511
|
-
* @param text - Input text
|
|
1512
|
-
* @returns Text with period sequences replaced by ellipsis
|
|
1513
|
-
*/
|
|
1514
|
-
declare const condenseEllipsis: (text: string) => string;
|
|
1515
|
-
/**
|
|
1516
|
-
* Join trailing و (waw) to the next word.
|
|
1517
|
-
*
|
|
1518
|
-
* Fixes OCR/digitization artifacts: ' و ' → ' و' (waw joined to next word)
|
|
1519
|
-
*
|
|
1520
|
-
* @param text - Input text
|
|
1521
|
-
* @returns Text with trailing waw joined to following word
|
|
1522
|
-
*/
|
|
1523
|
-
declare const fixTrailingWaw: (text: string) => string;
|
|
1524
|
-
/**
|
|
1525
|
-
* Apply preprocessing transforms to a page's content.
|
|
1526
|
-
*
|
|
1527
|
-
* Transforms run in array order. Each can be limited to specific pages
|
|
1528
|
-
* via `min`/`max` constraints.
|
|
1529
|
-
*
|
|
1530
|
-
* @param content - Page content to transform
|
|
1531
|
-
* @param pageId - Page ID for constraint checking
|
|
1532
|
-
* @param transforms - Array of transforms to apply
|
|
1533
|
-
* @returns Transformed content
|
|
1534
|
-
*/
|
|
1535
|
-
declare const applyPreprocessToPage: (content: string, pageId: number, transforms: PreprocessTransform[]) => string;
|
|
1536
|
-
//#endregion
|
|
1537
1545
|
//#region src/utils/textUtils.d.ts
|
|
1538
1546
|
/**
|
|
1539
1547
|
* Escapes regex metacharacters (parentheses and brackets) in template patterns,
|
|
@@ -1575,5 +1583,30 @@ declare const escapeTemplateBrackets: (pattern: string) => string;
|
|
|
1575
1583
|
declare const escapeRegex: (s: string) => string;
|
|
1576
1584
|
declare const makeDiacriticInsensitive: (text: string) => string;
|
|
1577
1585
|
//#endregion
|
|
1578
|
-
|
|
1586
|
+
//#region src/validation/validate-segments.d.ts
|
|
1587
|
+
type ValidationOptions = {
|
|
1588
|
+
/**
|
|
1589
|
+
* Threshold for short segment content (characters).
|
|
1590
|
+
* Segments shorter than this will trigger a full-document search fallback.
|
|
1591
|
+
* @default 500
|
|
1592
|
+
*/
|
|
1593
|
+
fullSearchThreshold?: number;
|
|
1594
|
+
};
|
|
1595
|
+
/**
|
|
1596
|
+
* Validates a list of segments against the source pages.
|
|
1597
|
+
* checks for:
|
|
1598
|
+
* - Page existence (invalid IDs)
|
|
1599
|
+
* - Content fidelity (content must exist in pages)
|
|
1600
|
+
* - Page attribution (from/to must match content location)
|
|
1601
|
+
* - Page constraints (maxPages violations)
|
|
1602
|
+
*
|
|
1603
|
+
* @param pages Input pages used for segmentation
|
|
1604
|
+
* @param options Operations used during segmentation (for preprocessing/joining consistency)
|
|
1605
|
+
* @param segments The output segments to validate
|
|
1606
|
+
* @param validationOptions Optional settings for validation behavior
|
|
1607
|
+
* @returns A detailed validation report
|
|
1608
|
+
*/
|
|
1609
|
+
declare const validateSegments: (pages: Page[], options: SegmentationOptions, segments: Segment[], validationOptions?: ValidationOptions) => SegmentValidationReport;
|
|
1610
|
+
//#endregion
|
|
1611
|
+
export { type Breakpoint, type BreakpointRule, type CommonLineStartPattern, type CondenseEllipsisRule, type DetectedPattern, type ExpandResult, type FixTrailingWawRule, type LineStartAnalysisOptions, type LineStartPatternExample, type Logger, type MarkerRecoveryReport, type MarkerRecoveryRun, type MarkerRecoverySelector, type OptimizeResult, PATTERN_TYPE_KEYS, type Page, type PageRange, type PageRangeConstraint, type PageRangeConstraintWithExclude, type PatternProcessor, type PatternTypeKey, type PreprocessTransform, type RemoveZeroWidthRule, type RepeatingSequenceExample, type RepeatingSequenceOptions, type RepeatingSequencePattern, type RuleValidationResult, type Segment, type SegmentValidationIssue, type SegmentValidationIssueSeverity, type SegmentValidationIssueType, type SegmentValidationReport, type SegmentationOptions, type SplitRule, TOKEN_PATTERNS, Token, type TokenKey, type TokenMapping, type ValidationIssue, type ValidationIssueType, type ValidationOptions, analyzeCommonLineStarts, analyzeRepeatingSequences, analyzeTextForRule, applyPreprocessToPage, applyTokenMappings, condenseEllipsis, containsTokens, detectTokenPatterns, escapeRegex, escapeTemplateBrackets, escapeWordsOutsideTokens, expandCompositeTokensInTemplate, expandTokens, expandTokensWithCaptures, fixTrailingWaw, formatValidationReport, generateTemplateFromText, getAvailableTokens, getTokenPattern, makeDiacriticInsensitive, optimizeRules, recoverMistakenLineStartsAfterMarkers, recoverMistakenMarkersForRuns, removeZeroWidth, segmentPages, shouldDefaultToFuzzy, stripTokenMappings, suggestPatternConfig, templateToRegex, validateRules, validateSegments, withCapture };
|
|
1579
1612
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/breakpoints.ts","../src/types/rules.ts","../src/types/options.ts","../src/types/index.ts","../src/analysis/line-starts.ts","../src/analysis/repeating-sequences.ts","../src/detection.ts","../src/optimization/optimize-rules.ts","../src/recovery.ts","../src/segmentation/breakpoint-utils.ts","../src/segmentation/pattern-validator.ts","../src/segmentation/segmenter.ts","../src/segmentation/tokens.ts","../src/preprocessing/transforms.ts","../src/utils/textUtils.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/breakpoints.ts","../src/types/rules.ts","../src/types/options.ts","../src/types/validation.ts","../src/types/index.ts","../src/analysis/line-starts.ts","../src/analysis/repeating-sequences.ts","../src/detection.ts","../src/optimization/optimize-rules.ts","../src/preprocessing/transforms.ts","../src/recovery.ts","../src/segmentation/breakpoint-utils.ts","../src/segmentation/pattern-validator.ts","../src/segmentation/segmenter.ts","../src/segmentation/tokens.ts","../src/utils/textUtils.ts","../src/validation/validate-segments.ts"],"mappings":"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"}
|