flappa-doormal 2.18.0 → 2.20.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/dist/index.d.mts CHANGED
@@ -122,6 +122,150 @@ type BreakpointRule = PageRangeConstraintWithExclude & {
122
122
  */
123
123
  type Breakpoint = string | BreakpointRule;
124
124
  //#endregion
125
+ //#region src/types/dictionary.d.ts
126
+ /**
127
+ * Dictionary v2 profile types for Shamela-style Arabic dictionary segmentation.
128
+ */
129
+ type DictionaryHeadingClass = 'chapter' | 'entry' | 'marker' | 'cluster';
130
+ type DictionaryHeadingScanClass = DictionaryHeadingClass | 'noise';
131
+ type DictionarySegmentKind = 'chapter' | 'entry' | 'marker';
132
+ type DictionarySegmentMeta = {
133
+ kind: DictionarySegmentKind;
134
+ lemma?: string;
135
+ };
136
+ /** Family key used by diagnostics and authoring tools. */
137
+ type DictionaryFamilyUse = DictionaryFamily['use'];
138
+ /** Rejection reason emitted by dictionary-profile diagnostics. */
139
+ type DictionaryDiagnosticReason = 'qualifierTail' | 'structuralLeak' | 'intro' | 'authorityIntro' | 'stopLemma' | 'previousWord' | 'previousChar' | 'pageContinuation';
140
+ type DictionaryGate = {
141
+ use: 'headingText';
142
+ match: string;
143
+ fuzzy?: boolean;
144
+ } | {
145
+ use: 'headingToken';
146
+ token: 'bab' | 'fasl' | 'kitab';
147
+ };
148
+ type DictionaryProfileValidationIssueCode = 'invalid_version' | 'missing_zones' | 'duplicate_zone_name' | 'empty_zone_name' | 'empty_zone_families' | 'invalid_zone_page_range' | 'empty_heading_classes' | 'inert_heading_family' | 'empty_inline_prefixes' | 'invalid_gate_match' | 'invalid_gate_fuzzy' | 'duplicate_activate_after_gate' | 'invalid_stop_words' | 'invalid_previous_words' | 'invalid_previous_chars';
149
+ type DictionaryProfileValidationIssue = {
150
+ code: DictionaryProfileValidationIssueCode;
151
+ message: string;
152
+ path: string;
153
+ zoneName?: string;
154
+ };
155
+ type HeadingFamily = {
156
+ use: 'heading';
157
+ classes: DictionaryHeadingClass[];
158
+ emit: DictionarySegmentKind;
159
+ allowNextLineColon?: boolean;
160
+ allowSingleLetter?: boolean;
161
+ };
162
+ type LineEntryFamily = {
163
+ use: 'lineEntry';
164
+ wrappers?: 'none' | 'parentheses' | 'brackets' | 'curly' | 'any';
165
+ allowWhitespaceBeforeColon?: boolean;
166
+ allowMultiWord?: boolean;
167
+ emit: 'entry';
168
+ };
169
+ type InlineSubentryFamily = {
170
+ use: 'inlineSubentry';
171
+ prefixes?: string[];
172
+ stripPrefixesFromLemma?: boolean;
173
+ emit: 'entry';
174
+ };
175
+ type CodeLineFamily = {
176
+ use: 'codeLine';
177
+ wrappers?: 'none' | 'paired' | 'mismatched' | 'either';
178
+ emit: 'marker';
179
+ };
180
+ type PairedFormsFamily = {
181
+ use: 'pairedForms';
182
+ separator?: 'comma' | 'space';
183
+ emit: 'marker' | 'entry';
184
+ requireStatusTail?: boolean;
185
+ };
186
+ type DictionaryFamily = HeadingFamily | LineEntryFamily | InlineSubentryFamily | CodeLineFamily | PairedFormsFamily;
187
+ type PageContinuationBlocker = {
188
+ use: 'pageContinuation';
189
+ appliesTo?: DictionaryFamily['use'][];
190
+ };
191
+ type IntroBlocker = {
192
+ use: 'intro';
193
+ appliesTo?: DictionaryFamily['use'][];
194
+ };
195
+ type AuthorityIntroBlocker = {
196
+ use: 'authorityIntro';
197
+ appliesTo?: DictionaryFamily['use'][];
198
+ precision?: 'high' | 'aggressive';
199
+ };
200
+ type StopLemmaBlocker = {
201
+ use: 'stopLemma';
202
+ appliesTo?: DictionaryFamily['use'][];
203
+ words: string[];
204
+ };
205
+ type PreviousWordBlocker = {
206
+ use: 'previousWord';
207
+ appliesTo?: DictionaryFamily['use'][];
208
+ words: string[];
209
+ };
210
+ type PreviousCharBlocker = {
211
+ use: 'previousChar';
212
+ appliesTo?: DictionaryFamily['use'][];
213
+ chars: string[];
214
+ };
215
+ type DictionaryBlocker = PageContinuationBlocker | IntroBlocker | AuthorityIntroBlocker | StopLemmaBlocker | PreviousWordBlocker | PreviousCharBlocker;
216
+ type DictionaryZone = {
217
+ name: string;
218
+ when?: {
219
+ minPageId?: number;
220
+ maxPageId?: number;
221
+ activateAfter?: DictionaryGate[];
222
+ };
223
+ families: DictionaryFamily[];
224
+ blockers?: DictionaryBlocker[];
225
+ };
226
+ type ArabicDictionaryProfile = {
227
+ version: 2;
228
+ zones: DictionaryZone[];
229
+ };
230
+ /** Sampled accepted or rejected candidate from dictionary-profile diagnostics. */
231
+ type DictionaryDiagnosticSample = {
232
+ accepted: boolean;
233
+ absoluteIndex: number;
234
+ family: DictionaryFamilyUse;
235
+ kind: DictionarySegmentKind;
236
+ lemma?: string;
237
+ line: number;
238
+ pageId: number;
239
+ reason?: DictionaryDiagnosticReason;
240
+ text: string;
241
+ zone: string;
242
+ };
243
+ /** Options for dictionary-profile diagnostics collection. */
244
+ type DictionaryProfileDiagnosticsOptions = {
245
+ sampleLimit?: number;
246
+ };
247
+ /** Aggregate diagnostics for tuning a dictionary profile. */
248
+ type DictionaryProfileDiagnostics = {
249
+ acceptedCount: number;
250
+ acceptedKinds: Record<DictionarySegmentKind, number>;
251
+ blockerHits: Record<DictionaryDiagnosticReason, number>;
252
+ familyCounts: Record<DictionaryFamilyUse, {
253
+ accepted: number;
254
+ rejected: number;
255
+ }>;
256
+ pageCount: number;
257
+ rejectedCount: number;
258
+ rejectedLemmas: Array<{
259
+ count: number;
260
+ lemma: string;
261
+ }>;
262
+ samples: DictionaryDiagnosticSample[];
263
+ zoneCounts: Record<string, {
264
+ accepted: number;
265
+ rejected: number;
266
+ }>;
267
+ };
268
+ //#endregion
125
269
  //#region src/types/rules.d.ts
126
270
  /**
127
271
  * Literal regex pattern rule - no token expansion or auto-escaping is applied.
@@ -259,6 +403,73 @@ type LineStartsAfterPattern = {
259
403
  type LineEndsWithPattern = {
260
404
  /** Array of patterns that mark line endings. Brackets `()[]` are auto-escaped. */lineEndsWith: string[];
261
405
  };
406
+ /**
407
+ * Dictionary entry pattern options for Arabic lexicon-style headword matching.
408
+ *
409
+ * This captures authoring intent in a serializable shape and is compiled into
410
+ * a regex internally by the rule compiler.
411
+ */
412
+ type DictionaryEntryPatternOptions = {
413
+ /**
414
+ * Words that should never be treated as lemmas when followed by a colon.
415
+ *
416
+ * Matching is Arabic-normalized, diacritic-insensitive, and exact. Callers
417
+ * should provide canonical forms only; vocalized variants do not need to be
418
+ * listed separately.
419
+ */
420
+ stopWords: string[];
421
+ /**
422
+ * Allow balanced parenthesized headwords like `(عنبر):` or `(عنبر) :`.
423
+ * @default false
424
+ */
425
+ allowParenthesized?: boolean;
426
+ /**
427
+ * Allow optional whitespace before the trailing colon.
428
+ * @default false
429
+ */
430
+ allowWhitespaceBeforeColon?: boolean;
431
+ /**
432
+ * Allow comma-separated headword lists like `سبد، دبس:`.
433
+ * @default false
434
+ */
435
+ allowCommaSeparated?: boolean;
436
+ /**
437
+ * Allow conservative mid-line subentries that begin with `و`.
438
+ * Disable this when the rule should only split true line/page starts.
439
+ * @default true
440
+ */
441
+ midLineSubentries?: boolean;
442
+ /**
443
+ * Named capture key for the matched lemma metadata.
444
+ * @default 'lemma'
445
+ */
446
+ captureName?: string;
447
+ /**
448
+ * Minimum number of Arabic base letters in a lemma.
449
+ * @default 2
450
+ */
451
+ minLetters?: number;
452
+ /**
453
+ * Maximum number of Arabic base letters in a lemma.
454
+ * @default 10
455
+ */
456
+ maxLetters?: number;
457
+ };
458
+ /**
459
+ * Arabic dictionary entry pattern rule - serializable headword matcher compiled internally.
460
+ *
461
+ * @example
462
+ * {
463
+ * dictionaryEntry: {
464
+ * stopWords: ['قال', 'وقيل'],
465
+ * allowCommaSeparated: true,
466
+ * },
467
+ * meta: { type: 'entry' }
468
+ * }
469
+ */
470
+ type DictionaryEntryPattern = {
471
+ dictionaryEntry: DictionaryEntryPatternOptions;
472
+ };
262
473
  /**
263
474
  * Union of all pattern types for split rules.
264
475
  *
@@ -268,8 +479,9 @@ type LineEndsWithPattern = {
268
479
  * - `lineStartsWith` - Match line beginnings (marker included)
269
480
  * - `lineStartsAfter` - Match line beginnings (marker excluded)
270
481
  * - `lineEndsWith` - Match line endings
482
+ * - `dictionaryEntry` - Arabic dictionary headword matching
271
483
  */
272
- type PatternType = RegexPattern | TemplatePattern | LineStartsWithPattern | LineStartsAfterPattern | LineEndsWithPattern;
484
+ type PatternType = RegexPattern | TemplatePattern | LineStartsWithPattern | LineStartsAfterPattern | LineEndsWithPattern | DictionaryEntryPattern;
273
485
  /**
274
486
  * Pattern type key names for split rules.
275
487
  *
@@ -285,7 +497,7 @@ type PatternType = RegexPattern | TemplatePattern | LineStartsWithPattern | Line
285
497
  * const validateKey = (k: string): k is PatternTypeKey =>
286
498
  * (PATTERN_TYPE_KEYS as readonly string[]).includes(k);
287
499
  */
288
- declare const PATTERN_TYPE_KEYS: readonly ["lineStartsWith", "lineStartsAfter", "lineEndsWith", "template", "regex"];
500
+ declare const PATTERN_TYPE_KEYS: readonly ["lineStartsWith", "lineStartsAfter", "lineEndsWith", "template", "regex", "dictionaryEntry"];
289
501
  /**
290
502
  * String union of pattern type key names.
291
503
  *
@@ -417,7 +629,7 @@ type RuleConstraints = PageRangeConstraintWithExclude & {
417
629
  *
418
630
  * Each rule must specify:
419
631
  * - **Pattern** (exactly one): `regex`, `template`, `lineStartsWith`,
420
- * `lineStartsAfter`, or `lineEndsWith`
632
+ * `lineStartsAfter`, `lineEndsWith`, or `dictionaryEntry`
421
633
  * - **Split behavior**: `split` (optional, defaults to `'at'`), `occurrence`, `fuzzy`
422
634
  * - **Constraints** (optional): `min`, `max`, `meta`
423
635
  *
@@ -564,18 +776,13 @@ type PreprocessTransform = 'removeZeroWidth' | 'condenseEllipsis' | 'fixTrailing
564
776
  * error: (msg, ...args) => myLoggingService.error(msg, args),
565
777
  * };
566
778
  */
567
- interface Logger {
568
- /** Log a debug message (verbose debugging output) */
569
- debug?: (message: string, ...args: unknown[]) => void;
570
- /** Log an error message (critical failures) */
571
- error?: (message: string, ...args: unknown[]) => void;
572
- /** Log an informational message (key progress points) */
573
- info?: (message: string, ...args: unknown[]) => void;
574
- /** Log a trace message (extremely verbose, per-iteration details) */
575
- trace?: (message: string, ...args: unknown[]) => void;
576
- /** Log a warning message (potential issues) */
779
+ type Logger = {
780
+ /** Log a debug message (verbose debugging output) */debug?: (message: string, ...args: unknown[]) => void; /** Log an error message (critical failures) */
781
+ error?: (message: string, ...args: unknown[]) => void; /** Log an informational message (key progress points) */
782
+ info?: (message: string, ...args: unknown[]) => void; /** Log a trace message (extremely verbose, per-iteration details) */
783
+ trace?: (message: string, ...args: unknown[]) => void; /** Log a warning message (potential issues) */
577
784
  warn?: (message: string, ...args: unknown[]) => void;
578
- }
785
+ };
579
786
  /**
580
787
  * Segmentation options controlling how pages are split.
581
788
  *
@@ -609,6 +816,13 @@ interface Logger {
609
816
  * };
610
817
  */
611
818
  type SegmentationOptions = {
819
+ /**
820
+ * Dictionary profile for Shamela-style Arabic dictionaries.
821
+ *
822
+ * This authoring contract is compiled into internal matchers and merged
823
+ * with any regular `rules`.
824
+ */
825
+ dictionary?: ArabicDictionaryProfile;
612
826
  /**
613
827
  * Rules applied in order to find split points.
614
828
  *
@@ -1067,6 +1281,111 @@ declare const analyzeTextForRule: (text: string) => {
1067
1281
  detected: DetectedPattern[];
1068
1282
  } | null;
1069
1283
  //#endregion
1284
+ //#region src/dictionary/arabic-dictionary-rule.d.ts
1285
+ interface ArabicDictionaryEntryRuleOptions extends DictionaryEntryPatternOptions {
1286
+ /**
1287
+ * Suppress page-start matches when the previous page's last Arabic word
1288
+ * is in this stoplist, unless that page ends with strong sentence punctuation.
1289
+ */
1290
+ pageStartPrevWordStoplist?: string[];
1291
+ /**
1292
+ * Suppress non-page-start matches when the immediately previous Arabic word
1293
+ * on the same page is in this stoplist.
1294
+ */
1295
+ samePagePrevWordStoplist?: string[];
1296
+ /**
1297
+ * Static metadata merged into matching segments.
1298
+ */
1299
+ meta?: Record<string, unknown>;
1300
+ }
1301
+ /**
1302
+ * Creates a reusable split rule for Arabic dictionary entries.
1303
+ *
1304
+ * The returned rule preserves authoring intent as a serializable
1305
+ * `{ dictionaryEntry: ... }` pattern rather than eagerly compiling to a raw
1306
+ * regex string.
1307
+ *
1308
+ * @example
1309
+ * createArabicDictionaryEntryRule({
1310
+ * stopWords: ['وقيل', 'ويقال', 'قال'],
1311
+ * pageStartPrevWordStoplist: ['قال', 'وقيل', 'ويقال'],
1312
+ * })
1313
+ *
1314
+ * @example
1315
+ * createArabicDictionaryEntryRule({
1316
+ * allowParenthesized: true,
1317
+ * allowWhitespaceBeforeColon: true,
1318
+ * allowCommaSeparated: true,
1319
+ * stopWords: ['الليث', 'العجاج'],
1320
+ * })
1321
+ */
1322
+ /**
1323
+ * @deprecated Prefer the top-level `SegmentationOptions.dictionary` profile for
1324
+ * whole-book dictionary segmentation. Keep this helper for advanced single-rule
1325
+ * composition inside a broader `SplitRule[]` pipeline.
1326
+ */
1327
+ declare const createArabicDictionaryEntryRule: ({
1328
+ allowCommaSeparated,
1329
+ allowParenthesized,
1330
+ allowWhitespaceBeforeColon,
1331
+ captureName,
1332
+ maxLetters,
1333
+ meta,
1334
+ midLineSubentries,
1335
+ minLetters,
1336
+ pageStartPrevWordStoplist,
1337
+ samePagePrevWordStoplist,
1338
+ stopWords
1339
+ }: ArabicDictionaryEntryRuleOptions) => SplitRule;
1340
+ //#endregion
1341
+ //#region src/dictionary/heading-classifier.d.ts
1342
+ type DictionarySurfaceKind = DictionaryHeadingScanClass | 'lineEntry' | 'inlineSubentry' | 'codeLine' | 'pairedForms';
1343
+ type DictionarySurfaceMatch = {
1344
+ kind: DictionarySurfaceKind;
1345
+ pageId: number;
1346
+ text: string;
1347
+ lemma?: string;
1348
+ line: number;
1349
+ };
1350
+ type DictionaryMarkdownPage = {
1351
+ content: string;
1352
+ id: number;
1353
+ };
1354
+ type DictionarySurfaceReport = {
1355
+ counts: Record<DictionarySurfaceKind, number>;
1356
+ matches: DictionarySurfaceMatch[];
1357
+ };
1358
+ /**
1359
+ * Classifies a markdown heading line produced by `convertContentToMarkdown()`.
1360
+ */
1361
+ declare const classifyDictionaryHeading: (line: string) => DictionaryHeadingScanClass;
1362
+ /**
1363
+ * Extracts dictionary surface matches from a markdown page.
1364
+ */
1365
+ declare const scanDictionaryMarkdownPage: (page: DictionaryMarkdownPage) => DictionarySurfaceMatch[];
1366
+ /**
1367
+ * Aggregates dictionary surface counts across markdown pages.
1368
+ */
1369
+ declare const analyzeDictionaryMarkdownPages: (pages: DictionaryMarkdownPage[]) => DictionarySurfaceReport;
1370
+ //#endregion
1371
+ //#region src/dictionary/profile.d.ts
1372
+ declare class DictionaryProfileValidationError extends Error {
1373
+ readonly issues: DictionaryProfileValidationIssue[];
1374
+ constructor(issues: DictionaryProfileValidationIssue[]);
1375
+ }
1376
+ /**
1377
+ * Validates a dictionary profile without normalizing it.
1378
+ */
1379
+ declare const validateDictionaryProfile: (profile: ArabicDictionaryProfile) => DictionaryProfileValidationIssue[];
1380
+ //#endregion
1381
+ //#region src/dictionary/runtime.d.ts
1382
+ /**
1383
+ * Collects authoring diagnostics for a dictionary profile without creating segments.
1384
+ *
1385
+ * This is useful when tuning blockers and family choices for a new dictionary.
1386
+ */
1387
+ declare const diagnoseDictionaryProfile: (pages: Page[], profile: ArabicDictionaryProfile, options?: DictionaryProfileDiagnosticsOptions) => DictionaryProfileDiagnostics;
1388
+ //#endregion
1070
1389
  //#region src/optimization/optimize-rules.d.ts
1071
1390
  /**
1072
1391
  * Result from optimizing rules.
@@ -1121,99 +1440,6 @@ declare const fixTrailingWaw: (text: string) => string;
1121
1440
  */
1122
1441
  declare const applyPreprocessToPage: (content: string, pageId: number, transforms: PreprocessTransform[]) => string;
1123
1442
  //#endregion
1124
- //#region src/segmentation/arabic-dictionary-rule.d.ts
1125
- interface ArabicDictionaryEntryRuleOptions {
1126
- /**
1127
- * Words that should never be treated as lemmas when followed by a colon.
1128
- *
1129
- * Matching is Arabic-normalized, diacritic-insensitive, and exact. Callers
1130
- * should provide canonical forms only; vocalized variants do not need to be
1131
- * listed separately.
1132
- */
1133
- stopWords: string[];
1134
- /**
1135
- * Allow balanced parenthesized headwords like `(عنبر):` or `(عنبر) :`.
1136
- * @default false
1137
- */
1138
- allowParenthesized?: boolean;
1139
- /**
1140
- * Allow optional whitespace before the trailing colon.
1141
- * @default false
1142
- */
1143
- allowWhitespaceBeforeColon?: boolean;
1144
- /**
1145
- * Allow comma-separated headword lists like `سبد، دبس:`.
1146
- * @default false
1147
- */
1148
- allowCommaSeparated?: boolean;
1149
- /**
1150
- * Suppress page-start matches when the previous page's last Arabic word
1151
- * is in this stoplist, unless that page ends with strong sentence punctuation.
1152
- */
1153
- pageStartPrevWordStoplist?: string[];
1154
- /**
1155
- * Suppress non-page-start matches when the immediately previous Arabic word
1156
- * on the same page is in this stoplist.
1157
- */
1158
- samePagePrevWordStoplist?: string[];
1159
- /**
1160
- * Named capture key for the matched lemma.
1161
- * @default 'lemma'
1162
- */
1163
- captureName?: string;
1164
- /**
1165
- * Minimum number of Arabic base letters in a lemma.
1166
- * @default 2
1167
- */
1168
- minLetters?: number;
1169
- /**
1170
- * Maximum number of Arabic base letters in a lemma.
1171
- * @default 10
1172
- */
1173
- maxLetters?: number;
1174
- /**
1175
- * Static metadata merged into matching segments.
1176
- */
1177
- meta?: Record<string, unknown>;
1178
- }
1179
- /**
1180
- * Creates a reusable split rule for Arabic dictionary entries.
1181
- *
1182
- * The generated rule:
1183
- * - keeps the lemma marker in `segment.content`
1184
- * - stores the lemma in `segment.meta[captureName]`
1185
- * - matches root entries at true line/page starts
1186
- * - matches mid-line subentries conservatively when they begin with `و`
1187
- * - can optionally support parenthesized headwords like `(عنبر) :`
1188
- * - can optionally support comma-separated headword lists like `سبد، دبس:`
1189
- *
1190
- * @example
1191
- * createArabicDictionaryEntryRule({
1192
- * stopWords: ['وقيل', 'ويقال', 'قال'],
1193
- * pageStartPrevWordStoplist: ['قال', 'وقيل', 'ويقال'],
1194
- * })
1195
- *
1196
- * @example
1197
- * createArabicDictionaryEntryRule({
1198
- * allowParenthesized: true,
1199
- * allowWhitespaceBeforeColon: true,
1200
- * allowCommaSeparated: true,
1201
- * stopWords: ['الليث', 'العجاج'],
1202
- * })
1203
- */
1204
- declare const createArabicDictionaryEntryRule: ({
1205
- allowCommaSeparated,
1206
- allowParenthesized,
1207
- allowWhitespaceBeforeColon,
1208
- captureName,
1209
- maxLetters,
1210
- meta,
1211
- minLetters,
1212
- pageStartPrevWordStoplist,
1213
- samePagePrevWordStoplist,
1214
- stopWords
1215
- }: ArabicDictionaryEntryRuleOptions) => SplitRule;
1216
- //#endregion
1217
1443
  //#region src/segmentation/breakpoint-utils.d.ts
1218
1444
  /**
1219
1445
  * Escapes regex metacharacters outside of `{{token}}` delimiters.
@@ -1269,7 +1495,7 @@ declare const getSegmentDebugReason: (segment: Segment, options?: DebugReasonOpt
1269
1495
  /**
1270
1496
  * Types of validation issues that can be detected.
1271
1497
  */
1272
- type ValidationIssueType = 'missing_braces' | 'unknown_token' | 'duplicate' | 'empty_pattern' | 'invalid_regex';
1498
+ type ValidationIssueType = 'missing_braces' | 'unknown_token' | 'duplicate' | 'empty_pattern' | 'invalid_regex' | 'invalid_option';
1273
1499
  /**
1274
1500
  * A validation issue found in a pattern.
1275
1501
  */
@@ -1290,6 +1516,7 @@ type RuleValidationResult = {
1290
1516
  lineEndsWith?: (ValidationIssue | undefined)[];
1291
1517
  template?: ValidationIssue;
1292
1518
  regex?: ValidationIssue;
1519
+ dictionaryEntry?: Partial<Record<keyof DictionaryEntryPatternOptions, ValidationIssue>>;
1293
1520
  };
1294
1521
  /**
1295
1522
  * Validates split rules for common pattern issues.
@@ -1392,6 +1619,25 @@ declare const ARABIC_LETTER_WITH_OPTIONAL_MARKS_PATTERN = "[\u0621-\u063A\u0641-
1392
1619
  * One or more Arabic letters, where each letter may carry combining marks.
1393
1620
  */
1394
1621
  declare const ARABIC_WORD_WITH_OPTIONAL_MARKS_PATTERN = "(?:[\u0621-\u063A\u0641-\u064A][\\u0610-\\u061A\\u0640\\u064B-\\u065F\\u0670\\u06D6-\\u06ED]*)+";
1622
+ declare const BASE_TOKENS: {
1623
+ /** Chapter marker (باب). */readonly bab: "باب"; /** Basmala (بسم الله). Also matches ﷽. */
1624
+ readonly basmalah: string; /** Bullet point variants: `•`, `*`, `°`. */
1625
+ readonly bullet: "[•*°]"; /** Dash variants: `-` (U+002D), `–` (U+2013), `—` (U+2014), `ـ` (tatweel U+0640). */
1626
+ readonly dash: "[-–—ـ]"; /** Section marker (فصل / مسألة). */
1627
+ readonly fasl: string; /** Single Arabic letter (أ-ي). Does NOT include diacritics. */
1628
+ readonly harf: "[أ-ي]"; /** One or more single Arabic letters separated by spaces, allowing marks/tatweel on each isolated letter (e.g. `د ت س`, `هـ ث`). For multi-letter codes use `{{rumuz}}`. */
1629
+ readonly harfs: "[أ-غف-ي][\\u0610-\\u061A\\u0640\\u064B-\\u065F\\u0670\\u06D6-\\u06ED]*(?:\\s+[أ-غف-ي][\\u0610-\\u061A\\u0640\\u064B-\\u065F\\u0670\\u06D6-\\u06ED]*)*"; /** Horizontal rule / separator: 5+ repeated dashes, underscores, equals, or tatweels. Mixed allowed. */
1630
+ readonly hr: "[-–—ـ_=]{5,}"; /** Book marker (كتاب). */
1631
+ readonly kitab: "كتاب"; /** Hadith transmission phrases (حدثنا, أخبرنا, حدثني, etc.). */
1632
+ readonly naql: string; /** Newline character. Useful for breakpoints that split on line boundaries. */
1633
+ readonly newline: "\\n"; /** Single ASCII digit (0-9). */
1634
+ readonly num: "\\d"; /** One or more ASCII digits (0-9)+. */
1635
+ readonly nums: "\\d+"; /** Single Arabic-Indic digit (٠-٩, U+0660-U+0669). */
1636
+ readonly raqm: "[\\u0660-\\u0669]"; /** One or more Arabic-Indic digits (٠-٩)+. */
1637
+ readonly raqms: "[\\u0660-\\u0669]+"; /** Rijāl/takhrīj source abbreviations. Matches one or more codes separated by whitespace. */
1638
+ readonly rumuz: string; /** Arabic/common punctuation: `.`, `!`, `?`, `؟`, `؛`. */
1639
+ readonly tarqim: "[.!?؟؛]";
1640
+ };
1395
1641
  /** Pre-defined token constants for use in patterns. */
1396
1642
  declare const Token: {
1397
1643
  /** Chapter marker - باب */readonly BAB: "{{bab}}"; /** Basmala - بسم الله */
@@ -1417,12 +1663,18 @@ declare const Token: {
1417
1663
  * Type representing valid token constant keys.
1418
1664
  */
1419
1665
  type TokenKey = keyof typeof Token;
1666
+ /** Wraps a token constant with a named capture: `{{token}}` → `{{token:name}}`. */
1667
+ declare const withCapture: (token: string, name: string) => string;
1668
+ /** Composite tokens that reference base tokens. Pre-expanded at load time. @internal */
1669
+ declare const COMPOSITE_TOKENS: {
1670
+ /** Common hadith numbering format: Arabic-Indic digits + dash + space. */readonly numbered: "{{raqms}} {{dash}} ";
1671
+ };
1672
+ type BaseTokenName = keyof typeof BASE_TOKENS;
1673
+ type CompositeTokenName = keyof typeof COMPOSITE_TOKENS;
1420
1674
  /**
1421
1675
  * Type representing valid token pattern names for `getTokenPattern()`.
1422
1676
  */
1423
- type TokenPatternName = keyof typeof TOKEN_PATTERNS;
1424
- /** Wraps a token constant with a named capture: `{{token}}` → `{{token:name}}`. */
1425
- declare const withCapture: (token: string, name: string) => string;
1677
+ type TokenPatternName = BaseTokenName | CompositeTokenName;
1426
1678
  /** Expands composite tokens (e.g. `{{numbered}}`) to their underlying template form. */
1427
1679
  declare const expandCompositeTokensInTemplate: (template: string) => string;
1428
1680
  /**
@@ -1451,7 +1703,8 @@ declare const expandCompositeTokensInTemplate: (template: string) => string;
1451
1703
  * { lineStartsAfter: ['{{numbered}}'], split: 'at' }
1452
1704
  */
1453
1705
  declare const TOKEN_PATTERNS: {
1454
- /** Chapter marker (باب). */readonly bab: "باب"; /** Basmala (بسم الله). Also matches ﷽. */
1706
+ readonly numbered: string; /** Chapter marker (باب). */
1707
+ readonly bab: "باب"; /** Basmala (بسم الله). Also matches ﷽. */
1455
1708
  readonly basmalah: string; /** Bullet point variants: `•`, `*`, `°`. */
1456
1709
  readonly bullet: "[•*°]"; /** Dash variants: `-` (U+002D), `–` (U+2013), `—` (U+2014), `ـ` (tatweel U+0640). */
1457
1710
  readonly dash: "[-–—ـ]"; /** Section marker (فصل / مسألة). */
@@ -1756,5 +2009,5 @@ type ValidationOptions = {
1756
2009
  */
1757
2010
  declare const validateSegments: (pages: Page[], options: SegmentationOptions, segments: Segment[], validationOptions?: ValidationOptions) => SegmentValidationReport;
1758
2011
  //#endregion
1759
- export { ARABIC_BASE_LETTER_CLASS, ARABIC_LETTER_WITH_OPTIONAL_MARKS_PATTERN, ARABIC_MARKS_CLASS, ARABIC_WORD_WITH_OPTIONAL_MARKS_PATTERN, type ArabicDictionaryEntryRuleOptions, type Breakpoint, type BreakpointRule, type CommonLineStartPattern, type CondenseEllipsisRule, type DetectedPattern, type ExpandResult, type FixTrailingWawRule, type LineStartAnalysisOptions, type LineStartPatternExample, type Logger, 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 TokenPatternName, type ValidationIssue, type ValidationIssueType, type ValidationOptions, analyzeCommonLineStarts, analyzeRepeatingSequences, analyzeTextForRule, applyPreprocessToPage, applyTokenMappings, condenseEllipsis, containsTokens, createArabicDictionaryEntryRule, detectTokenPatterns, escapeRegex, escapeTemplateBrackets, escapeWordsOutsideTokens, expandCompositeTokensInTemplate, expandTokens, expandTokensWithCaptures, fixTrailingWaw, formatValidationReport, generateTemplateFromText, getAvailableTokens, getDebugReason, getSegmentDebugReason, getTokenPattern, makeDiacriticInsensitive, normalizeArabicForComparison, optimizeRules, removeZeroWidth, segmentPages, shouldDefaultToFuzzy, stripTokenMappings, suggestPatternConfig, templateToRegex, validateRules, validateSegments, withCapture };
2012
+ export { ARABIC_BASE_LETTER_CLASS, ARABIC_LETTER_WITH_OPTIONAL_MARKS_PATTERN, ARABIC_MARKS_CLASS, ARABIC_WORD_WITH_OPTIONAL_MARKS_PATTERN, type ArabicDictionaryEntryRuleOptions, type ArabicDictionaryProfile, type Breakpoint, type BreakpointRule, type CommonLineStartPattern, type CondenseEllipsisRule, type DetectedPattern, type DictionaryBlocker, type DictionaryDiagnosticReason, type DictionaryDiagnosticSample, type DictionaryEntryPatternOptions, type DictionaryFamily, type DictionaryFamilyUse, type DictionaryGate, type DictionaryHeadingClass, type DictionaryHeadingScanClass, type DictionaryMarkdownPage, type DictionaryProfileDiagnostics, type DictionaryProfileDiagnosticsOptions, DictionaryProfileValidationError, type DictionaryProfileValidationIssue, type DictionaryProfileValidationIssueCode, type DictionarySegmentKind, type DictionarySegmentMeta, type DictionarySurfaceKind, type DictionarySurfaceMatch, type DictionarySurfaceReport, type DictionaryZone, type ExpandResult, type FixTrailingWawRule, type LineStartAnalysisOptions, type LineStartPatternExample, type Logger, 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 TokenPatternName, type ValidationIssue, type ValidationIssueType, type ValidationOptions, analyzeCommonLineStarts, analyzeDictionaryMarkdownPages, analyzeRepeatingSequences, analyzeTextForRule, applyPreprocessToPage, applyTokenMappings, classifyDictionaryHeading, condenseEllipsis, containsTokens, createArabicDictionaryEntryRule, detectTokenPatterns, diagnoseDictionaryProfile, escapeRegex, escapeTemplateBrackets, escapeWordsOutsideTokens, expandCompositeTokensInTemplate, expandTokens, expandTokensWithCaptures, fixTrailingWaw, formatValidationReport, generateTemplateFromText, getAvailableTokens, getDebugReason, getSegmentDebugReason, getTokenPattern, makeDiacriticInsensitive, normalizeArabicForComparison, optimizeRules, removeZeroWidth, scanDictionaryMarkdownPage, segmentPages, shouldDefaultToFuzzy, stripTokenMappings, suggestPatternConfig, templateToRegex, validateDictionaryProfile, validateRules, validateSegments, withCapture };
1760
2013
  //# sourceMappingURL=index.d.mts.map
@@ -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/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/segmentation/arabic-dictionary-rule.ts","../src/segmentation/breakpoint-utils.ts","../src/segmentation/debug-meta.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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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/breakpoints.ts","../src/types/dictionary.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/dictionary/arabic-dictionary-rule.ts","../src/dictionary/heading-classifier.ts","../src/dictionary/profile.ts","../src/dictionary/runtime.ts","../src/optimization/optimize-rules.ts","../src/preprocessing/transforms.ts","../src/segmentation/breakpoint-utils.ts","../src/segmentation/debug-meta.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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"}