eyecite-ts 0.25.0 → 0.27.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.
Files changed (41) hide show
  1. package/dist/annotate/index.d.cts +1 -1
  2. package/dist/annotate/index.d.mts +1 -1
  3. package/dist/{citation-B8IB2eC6.d.mts → citation-CPhy2OJK.d.mts} +16 -5
  4. package/dist/citation-CPhy2OJK.d.mts.map +1 -0
  5. package/dist/{citation-_lNG83rc.d.cts → citation-CmhJwBIv.d.cts} +16 -5
  6. package/dist/citation-CmhJwBIv.d.cts.map +1 -0
  7. package/dist/data/index.cjs +1 -1
  8. package/dist/data/index.cjs.map +1 -1
  9. package/dist/data/index.mjs +1 -1
  10. package/dist/data/index.mjs.map +1 -1
  11. package/dist/index.cjs +5 -5
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.cts +17 -12
  14. package/dist/index.d.cts.map +1 -1
  15. package/dist/index.d.mts +17 -12
  16. package/dist/index.d.mts.map +1 -1
  17. package/dist/index.mjs +5 -5
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/knownCodes-Cf-QBqyM.mjs +2 -0
  20. package/dist/knownCodes-Cf-QBqyM.mjs.map +1 -0
  21. package/dist/knownCodes-exb5VIWR.cjs +2 -0
  22. package/dist/knownCodes-exb5VIWR.cjs.map +1 -0
  23. package/dist/reporters.gen-CjY2GNBF.mjs +28760 -0
  24. package/dist/reporters.gen-VFW44Ywx.cjs +28760 -0
  25. package/dist/{types-DPhytyc8.d.cts → types--BDDvuna.d.cts} +2 -2
  26. package/dist/{types-DPhytyc8.d.cts.map → types--BDDvuna.d.cts.map} +1 -1
  27. package/dist/{types-J9-lnmev.d.mts → types-DEuK2yoV.d.mts} +2 -2
  28. package/dist/{types-J9-lnmev.d.mts.map → types-DEuK2yoV.d.mts.map} +1 -1
  29. package/dist/utils/index.d.cts +2 -2
  30. package/dist/utils/index.d.mts +2 -2
  31. package/package.json +7 -2
  32. package/dist/citation-B8IB2eC6.d.mts.map +0 -1
  33. package/dist/citation-_lNG83rc.d.cts.map +0 -1
  34. package/dist/knownCodes-BO5bT4lZ.cjs +0 -2
  35. package/dist/knownCodes-BO5bT4lZ.cjs.map +0 -1
  36. package/dist/knownCodes-Ch2Jfq-m.mjs +0 -2
  37. package/dist/knownCodes-Ch2Jfq-m.mjs.map +0 -1
  38. package/dist/reporters-CtCZyH5W.mjs +0 -2
  39. package/dist/reporters-CtCZyH5W.mjs.map +0 -1
  40. package/dist/reporters-Wob0oyD9.cjs +0 -2
  41. package/dist/reporters-Wob0oyD9.cjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { n as Citation } from "../citation-_lNG83rc.cjs";
1
+ import { n as Citation } from "../citation-CmhJwBIv.cjs";
2
2
 
3
3
  //#region src/annotate/types.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { n as Citation } from "../citation-B8IB2eC6.mjs";
1
+ import { n as Citation } from "../citation-CPhy2OJK.mjs";
2
2
 
3
3
  //#region src/annotate/types.d.ts
4
4
  /**
@@ -527,9 +527,16 @@ interface FullCaseCitation extends CitationBase {
527
527
  */
528
528
  parentheticals?: Parenthetical[];
529
529
  /**
530
- * Subsequent history entries for this citation.
530
+ * Subsequent history entries attached to this citation.
531
+ *
532
+ * Populated on every chain link that received a history clause from the
533
+ * scanner — not just the chain's root (#619, post-#527 contract change).
534
+ * For `Smith, aff'd, X, cert. denied, Y`, both `Smith` (carrying
535
+ * `[affirmed]` linking to `X`) and `X` (carrying `[cert_denied]`
536
+ * linking to `Y`) populate this field. Walk `subsequentHistoryOf`
537
+ * back-pointers from child→parent to traverse the chain in reverse.
538
+ *
531
539
  * Each entry describes a procedural event (affirmed, reversed, etc.).
532
- * Only populated on the parent (original) citation.
533
540
  * @example [{ signal: "affirmed", rawSignal: "aff'd", signalSpan: {...}, order: 0 }]
534
541
  */
535
542
  subsequentHistoryEntries?: SubsequentHistoryEntry[];
@@ -1145,10 +1152,14 @@ interface ConstitutionalCitation extends CitationBase {
1145
1152
  type: "constitutional";
1146
1153
  /** Jurisdiction code: "US", 2-letter state code, or undefined for bare "Const." */
1147
1154
  jurisdiction?: string;
1148
- /** Article number (parsed from Roman numerals) — mutually exclusive with amendment */
1155
+ /** Article number (parsed from Roman numerals) — mutually exclusive with amendment / preamble */
1149
1156
  article?: number;
1150
- /** Amendment number (parsed from Roman numerals) — mutually exclusive with article */
1157
+ /** Amendment number (parsed from Roman numerals) — mutually exclusive with article / preamble */
1151
1158
  amendment?: number;
1159
+ /** True when the citation references the Preamble (`U.S. Const. pmbl.`,
1160
+ * `U.S. Const. preamble`). Mutually exclusive with article / amendment.
1161
+ * Section and clause are not applicable to preamble. #321 */
1162
+ preamble?: boolean;
1152
1163
  /** Section identifier (string to handle non-numeric like "3-a") */
1153
1164
  section?: string;
1154
1165
  /** Clause number (always numeric) */
@@ -1362,4 +1373,4 @@ type CitationOfType<T extends CitationType> = Extract<Citation, {
1362
1373
  type ExtractorMap = { [K in FullCitationType]: CitationOfType<K> };
1363
1374
  //#endregion
1364
1375
  export { SubsequentHistoryEntry as A, NeutralComponentSpans as B, RegulationCitation as C, ShortFormCitationType as D, ShortFormCitation as E, CaseComponentSpans as F, TreatiseComponentSpans as G, RestatementComponentSpans as H, ConstitutionalComponentSpans as I, spanFromGroupIndex as J, Span as K, FederalRegisterComponentSpans as L, TreatiseCitation as M, Warning as N, StatuteCitation as O, AnnotationComponentSpans as P, FederalRuleComponentSpans as R, PublicLawCitation as S, ShortFormCaseCitation as T, StatuteComponentSpans as U, PublicLawComponentSpans as V, StatutesAtLargeComponentSpans as W, parsePincite as X, PinciteInfo as Y, IdCitation as _, CitationSignal as a, Parenthetical as b, CourtInference as c, FederalRegisterCitation as d, FederalRuleCitation as f, HistorySignal as g, FullCitationType as h, CitationOfType as i, SupraCitation as j, StatutesAtLargeCitation as k, DocketCitation as l, FullCitation as m, Citation as n, CitationType as o, FullCaseCitation as p, TransformationMap as q, CitationBase as r, ConstitutionalCitation as s, AnnotationCitation as t, ExtractorMap as u, JournalCitation as v, RestatementCitation as w, ParentheticalType as x, NeutralCitation as y, JournalComponentSpans as z };
1365
- //# sourceMappingURL=citation-B8IB2eC6.d.mts.map
1376
+ //# sourceMappingURL=citation-CPhy2OJK.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citation-CPhy2OJK.d.mts","names":[],"sources":["../src/extract/pincite.ts","../src/extract/dates.ts","../src/clean/segmentMap.ts","../src/types/span.ts","../src/types/componentSpans.ts","../src/types/citation.ts"],"mappings":"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"}
@@ -527,9 +527,16 @@ interface FullCaseCitation extends CitationBase {
527
527
  */
528
528
  parentheticals?: Parenthetical[];
529
529
  /**
530
- * Subsequent history entries for this citation.
530
+ * Subsequent history entries attached to this citation.
531
+ *
532
+ * Populated on every chain link that received a history clause from the
533
+ * scanner — not just the chain's root (#619, post-#527 contract change).
534
+ * For `Smith, aff'd, X, cert. denied, Y`, both `Smith` (carrying
535
+ * `[affirmed]` linking to `X`) and `X` (carrying `[cert_denied]`
536
+ * linking to `Y`) populate this field. Walk `subsequentHistoryOf`
537
+ * back-pointers from child→parent to traverse the chain in reverse.
538
+ *
531
539
  * Each entry describes a procedural event (affirmed, reversed, etc.).
532
- * Only populated on the parent (original) citation.
533
540
  * @example [{ signal: "affirmed", rawSignal: "aff'd", signalSpan: {...}, order: 0 }]
534
541
  */
535
542
  subsequentHistoryEntries?: SubsequentHistoryEntry[];
@@ -1145,10 +1152,14 @@ interface ConstitutionalCitation extends CitationBase {
1145
1152
  type: "constitutional";
1146
1153
  /** Jurisdiction code: "US", 2-letter state code, or undefined for bare "Const." */
1147
1154
  jurisdiction?: string;
1148
- /** Article number (parsed from Roman numerals) — mutually exclusive with amendment */
1155
+ /** Article number (parsed from Roman numerals) — mutually exclusive with amendment / preamble */
1149
1156
  article?: number;
1150
- /** Amendment number (parsed from Roman numerals) — mutually exclusive with article */
1157
+ /** Amendment number (parsed from Roman numerals) — mutually exclusive with article / preamble */
1151
1158
  amendment?: number;
1159
+ /** True when the citation references the Preamble (`U.S. Const. pmbl.`,
1160
+ * `U.S. Const. preamble`). Mutually exclusive with article / amendment.
1161
+ * Section and clause are not applicable to preamble. #321 */
1162
+ preamble?: boolean;
1152
1163
  /** Section identifier (string to handle non-numeric like "3-a") */
1153
1164
  section?: string;
1154
1165
  /** Clause number (always numeric) */
@@ -1362,4 +1373,4 @@ type CitationOfType<T extends CitationType> = Extract<Citation, {
1362
1373
  type ExtractorMap = { [K in FullCitationType]: CitationOfType<K> };
1363
1374
  //#endregion
1364
1375
  export { SubsequentHistoryEntry as A, NeutralComponentSpans as B, RegulationCitation as C, ShortFormCitationType as D, ShortFormCitation as E, CaseComponentSpans as F, TreatiseComponentSpans as G, RestatementComponentSpans as H, ConstitutionalComponentSpans as I, spanFromGroupIndex as J, Span as K, FederalRegisterComponentSpans as L, TreatiseCitation as M, Warning as N, StatuteCitation as O, AnnotationComponentSpans as P, FederalRuleComponentSpans as R, PublicLawCitation as S, ShortFormCaseCitation as T, StatuteComponentSpans as U, PublicLawComponentSpans as V, StatutesAtLargeComponentSpans as W, parsePincite as X, PinciteInfo as Y, IdCitation as _, CitationSignal as a, Parenthetical as b, CourtInference as c, FederalRegisterCitation as d, FederalRuleCitation as f, HistorySignal as g, FullCitationType as h, CitationOfType as i, SupraCitation as j, StatutesAtLargeCitation as k, DocketCitation as l, FullCitation as m, Citation as n, CitationType as o, FullCaseCitation as p, TransformationMap as q, CitationBase as r, ConstitutionalCitation as s, AnnotationCitation as t, ExtractorMap as u, JournalCitation as v, RestatementCitation as w, ParentheticalType as x, NeutralCitation as y, JournalComponentSpans as z };
1365
- //# sourceMappingURL=citation-_lNG83rc.d.cts.map
1376
+ //# sourceMappingURL=citation-CmhJwBIv.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citation-CmhJwBIv.d.cts","names":[],"sources":["../src/extract/pincite.ts","../src/extract/dates.ts","../src/clean/segmentMap.ts","../src/types/span.ts","../src/types/componentSpans.ts","../src/types/citation.ts"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../knownCodes-BO5bT4lZ.cjs`);async function t(){let t=e.s();if(t)return t;let n=await import(`../../data/reporters.json`,{assert:{type:`json`}}),r=new Map,i=[],a=n.default||n;for(let[e,t]of Object.entries(a))for(let e of t){i.push(e);for(let t of Object.keys(e.editions)){let n=t.toLowerCase();r.has(n)||r.set(n,[]),r.get(n)?.push(e)}for(let[t,n]of Object.entries(e.variations||{})){let n=t.toLowerCase();r.has(n)||r.set(n,[]),r.get(n)?.push(e)}}let o={byAbbreviation:r,all:i};return e.c(o),o}function n(){return e.s()}async function r(e){return(await t()).byAbbreviation.get(e.toLowerCase())??[]}exports.abbreviatedCodes=e.t,exports.findAbbreviatedCode=e.n,exports.findNamedCode=e.r,exports.findReportersByAbbreviation=r,exports.getReportersSync=n,exports.loadReporters=t,exports.namedCodes=e.i,exports.stateStatuteEntries=e.o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../knownCodes-exb5VIWR.cjs`);async function t(){let t=e.s();if(t)return t;let n=await Promise.resolve().then(()=>require(`../reporters.gen-VFW44Ywx.cjs`)),r=new Map,i=[],a=n.default;for(let[e,t]of Object.entries(a))for(let e of t){i.push(e);for(let t of Object.keys(e.editions)){let n=t.toLowerCase();r.has(n)||r.set(n,[]),r.get(n)?.push(e)}for(let[t,n]of Object.entries(e.variations||{})){let n=t.toLowerCase();r.has(n)||r.set(n,[]),r.get(n)?.push(e)}}let o={byAbbreviation:r,all:i};return e.c(o),o}function n(){return e.s()}async function r(e){return(await t()).byAbbreviation.get(e.toLowerCase())??[]}exports.abbreviatedCodes=e.t,exports.findAbbreviatedCode=e.n,exports.findNamedCode=e.r,exports.findReportersByAbbreviation=r,exports.getReportersSync=n,exports.loadReporters=t,exports.namedCodes=e.i,exports.stateStatuteEntries=e.o;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["_getReportersSync"],"sources":["../../src/data/reporters.ts"],"sourcesContent":["/**\n * Reporter database integration for citation validation\n *\n * This module provides lazy-loadable access to the reporters-db database,\n * containing 1200+ court reporters with variant forms. The library works\n * in degraded mode (pattern-based extraction only) if reporters are not loaded.\n *\n * @example\n * // Degraded mode: extraction works without reporter data\n * const citations = await extract(text)\n *\n * @example\n * // Full mode: load reporters for validation\n * await loadReporters()\n * const citations = await extract(text) // Now with reporter validation\n */\n\n/**\n * Edition entry from reporters-db\n *\n * Represents a specific edition of a reporter with start/end dates.\n */\nexport interface ReporterEdition {\n /** Start date in ISO 8601 format */\n start: string | null\n /** End date in ISO 8601 format (null if ongoing) */\n end: string | null\n}\n\n/**\n * Reporter entry from reporters-db\n *\n * Represents a single court reporter with all metadata needed for\n * citation validation and enrichment.\n *\n * Note: The reporters-db structure has the actual data; this interface\n * represents it flexibly to handle all variations in the JSON.\n */\nexport interface ReporterEntry {\n /** Full reporter name (e.g., \"Federal Reporter\") */\n name: string\n /** Citation type: state, federal, specialty, neutral, state_regional, etc. */\n cite_type: string\n /** Editions keyed by abbreviation (e.g., {\"F.2d\": {...}, \"F.3d\": {...}}) */\n editions: Record<string, ReporterEdition>\n /** Variant forms mapped to canonical form (e.g., {\"F. 2d\": \"F.2d\"}) */\n variations?: Record<string, string | undefined>\n /** MLZ jurisdiction identifiers (optional) */\n mlz_jurisdiction?: string[]\n /** Publisher (optional) */\n publisher?: string\n /** Notes (optional) */\n notes?: string\n}\n\n/**\n * In-memory reporter database with fast O(1) lookup\n *\n * Uses Map-based indexing for case-insensitive abbreviation lookup.\n * All variant forms are indexed to support fuzzy matching.\n */\nexport interface ReportersDatabase {\n /** Fast O(1) lookup by abbreviation (lowercase normalized keys) */\n byAbbreviation: Map<string, ReporterEntry[]>\n /** All reporters (for iteration/filtering) */\n all: ReporterEntry[]\n}\n\nimport {\n getReportersSync as _getReportersSync,\n setReportersCache,\n} from \"./reportersCache\"\n\n/**\n * Load reporter database asynchronously with lazy loading\n *\n * Dynamic import prevents loading 1200+ reporters until explicitly requested.\n * Result is cached after first load for subsequent calls.\n *\n * @returns Promise resolving to indexed reporter database\n *\n * @example\n * const db = await loadReporters()\n * const reporters = db.byAbbreviation.get('f.2d') // Fast O(1) lookup\n */\nexport async function loadReporters(): Promise<ReportersDatabase> {\n const existing = _getReportersSync()\n if (existing) return existing\n\n // Dynamic import prevents loading until requested (keeps core bundle small)\n const data = await import(\"../../data/reporters.json\", {\n assert: { type: \"json\" },\n })\n\n const byAbbreviation = new Map<string, ReporterEntry[]>()\n const all: ReporterEntry[] = []\n\n // reporters.json structure: { \"A.\": [...], \"F.2d\": [...], ... }\n const reportersData = (data.default || data) as Record<string, ReporterEntry[]>\n\n // Build fast lookup index with lowercase normalization\n for (const [_canonicalAbbr, reporters] of Object.entries(reportersData)) {\n for (const reporter of reporters) {\n all.push(reporter)\n\n // Index by all edition abbreviations\n for (const editionAbbr of Object.keys(reporter.editions)) {\n const key = editionAbbr.toLowerCase()\n if (!byAbbreviation.has(key)) {\n byAbbreviation.set(key, [])\n }\n byAbbreviation.get(key)?.push(reporter)\n }\n\n // Index all variations for fuzzy matching\n for (const [variant, _canonical] of Object.entries(reporter.variations || {})) {\n const variantKey = variant.toLowerCase()\n if (!byAbbreviation.has(variantKey)) {\n byAbbreviation.set(variantKey, [])\n }\n byAbbreviation.get(variantKey)?.push(reporter)\n }\n }\n }\n\n const db: ReportersDatabase = { byAbbreviation, all }\n setReportersCache(db)\n return db\n}\n\n/**\n * Get cached reporter database synchronously (degraded mode support)\n *\n * Returns null if reporters not loaded yet. This enables the library to\n * work in degraded mode without reporter validation.\n *\n * @returns Cached database or null if not loaded\n *\n * @example\n * const db = getReportersSync()\n * if (db) {\n * // Full mode: validate citations\n * } else {\n * // Degraded mode: extract without validation\n * }\n */\nexport function getReportersSync(): ReportersDatabase | null {\n return _getReportersSync()\n}\n\n/**\n * Find reporters by abbreviation (case-insensitive)\n *\n * Loads reporter database if not already loaded. Returns all reporters\n * matching the abbreviation (including variant forms).\n *\n * @param abbr - Reporter abbreviation to look up\n * @returns Promise resolving to matching reporters (empty array if none)\n *\n * @example\n * const reporters = await findReportersByAbbreviation('F.2d')\n * // [{ abbreviation: 'F.2d', name: 'Federal Reporter, Second Series', ... }]\n *\n * @example\n * const unknown = await findReportersByAbbreviation('NONEXISTENT')\n * // [] (empty array, not error)\n */\nexport async function findReportersByAbbreviation(abbr: string): Promise<ReporterEntry[]> {\n const db = await loadReporters()\n return db.byAbbreviation.get(abbr.toLowerCase()) ?? []\n}\n"],"mappings":"iHAqFA,eAAsB,GAA4C,CAChE,IAAM,EAAWA,EAAAA,GAAmB,CACpC,GAAI,EAAU,OAAO,EAGrB,IAAM,EAAO,MAAM,OAAO,4BAA6B,CACrD,OAAQ,CAAE,KAAM,OAAQ,CACzB,EAEK,EAAiB,IAAI,IACrB,EAAuB,EAAE,CAGzB,EAAiB,EAAK,SAAW,EAGvC,IAAK,GAAM,CAAC,EAAgB,KAAc,OAAO,QAAQ,EAAc,CACrE,IAAK,IAAM,KAAY,EAAW,CAChC,EAAI,KAAK,EAAS,CAGlB,IAAK,IAAM,KAAe,OAAO,KAAK,EAAS,SAAS,CAAE,CACxD,IAAM,EAAM,EAAY,aAAa,CAChC,EAAe,IAAI,EAAI,EAC1B,EAAe,IAAI,EAAK,EAAE,CAAC,CAE7B,EAAe,IAAI,EAAI,EAAE,KAAK,EAAS,CAIzC,IAAK,GAAM,CAAC,EAAS,KAAe,OAAO,QAAQ,EAAS,YAAc,EAAE,CAAC,CAAE,CAC7E,IAAM,EAAa,EAAQ,aAAa,CACnC,EAAe,IAAI,EAAW,EACjC,EAAe,IAAI,EAAY,EAAE,CAAC,CAEpC,EAAe,IAAI,EAAW,EAAE,KAAK,EAAS,EAKpD,IAAM,EAAwB,CAAE,iBAAgB,MAAK,CAErD,OADA,EAAA,EAAkB,EAAG,CACd,EAmBT,SAAgB,GAA6C,CAC3D,OAAOA,EAAAA,GAAmB,CAoB5B,eAAsB,EAA4B,EAAwC,CAExF,OADW,MAAM,GAAe,EACtB,eAAe,IAAI,EAAK,aAAa,CAAC,EAAI,EAAE"}
1
+ {"version":3,"file":"index.cjs","names":["_getReportersSync"],"sources":["../../src/data/reporters.ts"],"sourcesContent":["/**\n * Reporter database integration for citation validation\n *\n * This module provides lazy-loadable access to the reporters-db database,\n * containing 1200+ court reporters with variant forms. The library works\n * in degraded mode (pattern-based extraction only) if reporters are not loaded.\n *\n * @example\n * // Degraded mode: extraction works without reporter data\n * const citations = await extract(text)\n *\n * @example\n * // Full mode: load reporters for validation\n * await loadReporters()\n * const citations = await extract(text) // Now with reporter validation\n */\n\n/**\n * Edition entry from reporters-db\n *\n * Represents a specific edition of a reporter with start/end dates.\n */\nexport interface ReporterEdition {\n /** Start date in ISO 8601 format */\n start: string | null\n /** End date in ISO 8601 format (null if ongoing) */\n end: string | null\n}\n\n/**\n * Reporter entry from reporters-db\n *\n * Represents a single court reporter with all metadata needed for\n * citation validation and enrichment.\n *\n * Note: The reporters-db structure has the actual data; this interface\n * represents it flexibly to handle all variations in the JSON.\n */\nexport interface ReporterEntry {\n /** Full reporter name (e.g., \"Federal Reporter\") */\n name: string\n /** Citation type: state, federal, specialty, neutral, state_regional, etc. */\n cite_type: string\n /** Editions keyed by abbreviation (e.g., {\"F.2d\": {...}, \"F.3d\": {...}}) */\n editions: Record<string, ReporterEdition>\n /** Variant forms mapped to canonical form (e.g., {\"F. 2d\": \"F.2d\"}) */\n variations?: Record<string, string | undefined>\n /** MLZ jurisdiction identifiers (optional) */\n mlz_jurisdiction?: string[]\n /** Publisher (optional) */\n publisher?: string\n /** Notes (optional) */\n notes?: string\n}\n\n/**\n * In-memory reporter database with fast O(1) lookup\n *\n * Uses Map-based indexing for case-insensitive abbreviation lookup.\n * All variant forms are indexed to support fuzzy matching.\n */\nexport interface ReportersDatabase {\n /** Fast O(1) lookup by abbreviation (lowercase normalized keys) */\n byAbbreviation: Map<string, ReporterEntry[]>\n /** All reporters (for iteration/filtering) */\n all: ReporterEntry[]\n}\n\nimport {\n getReportersSync as _getReportersSync,\n setReportersCache,\n} from \"./reportersCache\"\n\n/**\n * Load reporter database asynchronously with lazy loading\n *\n * Dynamic import prevents loading 1200+ reporters until explicitly requested.\n * Result is cached after first load for subsequent calls.\n *\n * @returns Promise resolving to indexed reporter database\n *\n * @example\n * const db = await loadReporters()\n * const reporters = db.byAbbreviation.get('f.2d') // Fast O(1) lookup\n */\nexport async function loadReporters(): Promise<ReportersDatabase> {\n const existing = _getReportersSync()\n if (existing) return existing\n\n // Dynamic import of a codegenned TS module. Rolldown auto-splits this into\n // a separate ESM + CJS chunk in dist/, preserving lazy loading without the\n // import-attribute syntax that was deprecated in Node 22+. See #642.\n const mod = await import(\"./reporters.gen.js\")\n\n const byAbbreviation = new Map<string, ReporterEntry[]>()\n const all: ReporterEntry[] = []\n\n // reporters.json structure: { \"A.\": [...], \"F.2d\": [...], ... }\n const reportersData = mod.default as Record<string, ReporterEntry[]>\n\n // Build fast lookup index with lowercase normalization\n for (const [_canonicalAbbr, reporters] of Object.entries(reportersData)) {\n for (const reporter of reporters) {\n all.push(reporter)\n\n // Index by all edition abbreviations\n for (const editionAbbr of Object.keys(reporter.editions)) {\n const key = editionAbbr.toLowerCase()\n if (!byAbbreviation.has(key)) {\n byAbbreviation.set(key, [])\n }\n byAbbreviation.get(key)?.push(reporter)\n }\n\n // Index all variations for fuzzy matching\n for (const [variant, _canonical] of Object.entries(reporter.variations || {})) {\n const variantKey = variant.toLowerCase()\n if (!byAbbreviation.has(variantKey)) {\n byAbbreviation.set(variantKey, [])\n }\n byAbbreviation.get(variantKey)?.push(reporter)\n }\n }\n }\n\n const db: ReportersDatabase = { byAbbreviation, all }\n setReportersCache(db)\n return db\n}\n\n/**\n * Get cached reporter database synchronously (degraded mode support)\n *\n * Returns null if reporters not loaded yet. This enables the library to\n * work in degraded mode without reporter validation.\n *\n * @returns Cached database or null if not loaded\n *\n * @example\n * const db = getReportersSync()\n * if (db) {\n * // Full mode: validate citations\n * } else {\n * // Degraded mode: extract without validation\n * }\n */\nexport function getReportersSync(): ReportersDatabase | null {\n return _getReportersSync()\n}\n\n/**\n * Find reporters by abbreviation (case-insensitive)\n *\n * Loads reporter database if not already loaded. Returns all reporters\n * matching the abbreviation (including variant forms).\n *\n * @param abbr - Reporter abbreviation to look up\n * @returns Promise resolving to matching reporters (empty array if none)\n *\n * @example\n * const reporters = await findReportersByAbbreviation('F.2d')\n * // [{ abbreviation: 'F.2d', name: 'Federal Reporter, Second Series', ... }]\n *\n * @example\n * const unknown = await findReportersByAbbreviation('NONEXISTENT')\n * // [] (empty array, not error)\n */\nexport async function findReportersByAbbreviation(abbr: string): Promise<ReporterEntry[]> {\n const db = await loadReporters()\n return db.byAbbreviation.get(abbr.toLowerCase()) ?? []\n}\n"],"mappings":"iHAqFA,eAAsB,GAA4C,CAChE,IAAM,EAAWA,EAAAA,GAAmB,CACpC,GAAI,EAAU,OAAO,EAKrB,IAAM,EAAM,MAAA,QAAA,SAAA,CAAA,SAAA,QAAM,gCAAA,CAAA,CAEZ,EAAiB,IAAI,IACrB,EAAuB,EAAE,CAGzB,EAAgB,EAAI,QAG1B,IAAK,GAAM,CAAC,EAAgB,KAAc,OAAO,QAAQ,EAAc,CACrE,IAAK,IAAM,KAAY,EAAW,CAChC,EAAI,KAAK,EAAS,CAGlB,IAAK,IAAM,KAAe,OAAO,KAAK,EAAS,SAAS,CAAE,CACxD,IAAM,EAAM,EAAY,aAAa,CAChC,EAAe,IAAI,EAAI,EAC1B,EAAe,IAAI,EAAK,EAAE,CAAC,CAE7B,EAAe,IAAI,EAAI,EAAE,KAAK,EAAS,CAIzC,IAAK,GAAM,CAAC,EAAS,KAAe,OAAO,QAAQ,EAAS,YAAc,EAAE,CAAC,CAAE,CAC7E,IAAM,EAAa,EAAQ,aAAa,CACnC,EAAe,IAAI,EAAW,EACjC,EAAe,IAAI,EAAY,EAAE,CAAC,CAEpC,EAAe,IAAI,EAAW,EAAE,KAAK,EAAS,EAKpD,IAAM,EAAwB,CAAE,iBAAgB,MAAK,CAErD,OADA,EAAA,EAAkB,EAAG,CACd,EAmBT,SAAgB,GAA6C,CAC3D,OAAOA,EAAAA,GAAmB,CAoB5B,eAAsB,EAA4B,EAAwC,CAExF,OADW,MAAM,GAAe,EACtB,eAAe,IAAI,EAAK,aAAa,CAAC,EAAI,EAAE"}
@@ -1,2 +1,2 @@
1
- import{c as e,i as t,n,o as r,r as i,s as a,t as o}from"../knownCodes-Ch2Jfq-m.mjs";async function s(){let t=a();if(t)return t;let n=await import(`../../data/reporters.json`,{assert:{type:`json`}}),r=new Map,i=[],o=n.default||n;for(let[e,t]of Object.entries(o))for(let e of t){i.push(e);for(let t of Object.keys(e.editions)){let n=t.toLowerCase();r.has(n)||r.set(n,[]),r.get(n)?.push(e)}for(let[t,n]of Object.entries(e.variations||{})){let n=t.toLowerCase();r.has(n)||r.set(n,[]),r.get(n)?.push(e)}}let s={byAbbreviation:r,all:i};return e(s),s}function c(){return a()}async function l(e){return(await s()).byAbbreviation.get(e.toLowerCase())??[]}export{o as abbreviatedCodes,n as findAbbreviatedCode,i as findNamedCode,l as findReportersByAbbreviation,c as getReportersSync,s as loadReporters,t as namedCodes,r as stateStatuteEntries};
1
+ import{c as e,i as t,n,o as r,r as i,s as a,t as o}from"../knownCodes-Cf-QBqyM.mjs";async function s(){let t=a();if(t)return t;let n=await import(`../reporters.gen-CjY2GNBF.mjs`),r=new Map,i=[],o=n.default;for(let[e,t]of Object.entries(o))for(let e of t){i.push(e);for(let t of Object.keys(e.editions)){let n=t.toLowerCase();r.has(n)||r.set(n,[]),r.get(n)?.push(e)}for(let[t,n]of Object.entries(e.variations||{})){let n=t.toLowerCase();r.has(n)||r.set(n,[]),r.get(n)?.push(e)}}let s={byAbbreviation:r,all:i};return e(s),s}function c(){return a()}async function l(e){return(await s()).byAbbreviation.get(e.toLowerCase())??[]}export{o as abbreviatedCodes,n as findAbbreviatedCode,i as findNamedCode,l as findReportersByAbbreviation,c as getReportersSync,s as loadReporters,t as namedCodes,r as stateStatuteEntries};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["_getReportersSync"],"sources":["../../src/data/reporters.ts"],"sourcesContent":["/**\n * Reporter database integration for citation validation\n *\n * This module provides lazy-loadable access to the reporters-db database,\n * containing 1200+ court reporters with variant forms. The library works\n * in degraded mode (pattern-based extraction only) if reporters are not loaded.\n *\n * @example\n * // Degraded mode: extraction works without reporter data\n * const citations = await extract(text)\n *\n * @example\n * // Full mode: load reporters for validation\n * await loadReporters()\n * const citations = await extract(text) // Now with reporter validation\n */\n\n/**\n * Edition entry from reporters-db\n *\n * Represents a specific edition of a reporter with start/end dates.\n */\nexport interface ReporterEdition {\n /** Start date in ISO 8601 format */\n start: string | null\n /** End date in ISO 8601 format (null if ongoing) */\n end: string | null\n}\n\n/**\n * Reporter entry from reporters-db\n *\n * Represents a single court reporter with all metadata needed for\n * citation validation and enrichment.\n *\n * Note: The reporters-db structure has the actual data; this interface\n * represents it flexibly to handle all variations in the JSON.\n */\nexport interface ReporterEntry {\n /** Full reporter name (e.g., \"Federal Reporter\") */\n name: string\n /** Citation type: state, federal, specialty, neutral, state_regional, etc. */\n cite_type: string\n /** Editions keyed by abbreviation (e.g., {\"F.2d\": {...}, \"F.3d\": {...}}) */\n editions: Record<string, ReporterEdition>\n /** Variant forms mapped to canonical form (e.g., {\"F. 2d\": \"F.2d\"}) */\n variations?: Record<string, string | undefined>\n /** MLZ jurisdiction identifiers (optional) */\n mlz_jurisdiction?: string[]\n /** Publisher (optional) */\n publisher?: string\n /** Notes (optional) */\n notes?: string\n}\n\n/**\n * In-memory reporter database with fast O(1) lookup\n *\n * Uses Map-based indexing for case-insensitive abbreviation lookup.\n * All variant forms are indexed to support fuzzy matching.\n */\nexport interface ReportersDatabase {\n /** Fast O(1) lookup by abbreviation (lowercase normalized keys) */\n byAbbreviation: Map<string, ReporterEntry[]>\n /** All reporters (for iteration/filtering) */\n all: ReporterEntry[]\n}\n\nimport {\n getReportersSync as _getReportersSync,\n setReportersCache,\n} from \"./reportersCache\"\n\n/**\n * Load reporter database asynchronously with lazy loading\n *\n * Dynamic import prevents loading 1200+ reporters until explicitly requested.\n * Result is cached after first load for subsequent calls.\n *\n * @returns Promise resolving to indexed reporter database\n *\n * @example\n * const db = await loadReporters()\n * const reporters = db.byAbbreviation.get('f.2d') // Fast O(1) lookup\n */\nexport async function loadReporters(): Promise<ReportersDatabase> {\n const existing = _getReportersSync()\n if (existing) return existing\n\n // Dynamic import prevents loading until requested (keeps core bundle small)\n const data = await import(\"../../data/reporters.json\", {\n assert: { type: \"json\" },\n })\n\n const byAbbreviation = new Map<string, ReporterEntry[]>()\n const all: ReporterEntry[] = []\n\n // reporters.json structure: { \"A.\": [...], \"F.2d\": [...], ... }\n const reportersData = (data.default || data) as Record<string, ReporterEntry[]>\n\n // Build fast lookup index with lowercase normalization\n for (const [_canonicalAbbr, reporters] of Object.entries(reportersData)) {\n for (const reporter of reporters) {\n all.push(reporter)\n\n // Index by all edition abbreviations\n for (const editionAbbr of Object.keys(reporter.editions)) {\n const key = editionAbbr.toLowerCase()\n if (!byAbbreviation.has(key)) {\n byAbbreviation.set(key, [])\n }\n byAbbreviation.get(key)?.push(reporter)\n }\n\n // Index all variations for fuzzy matching\n for (const [variant, _canonical] of Object.entries(reporter.variations || {})) {\n const variantKey = variant.toLowerCase()\n if (!byAbbreviation.has(variantKey)) {\n byAbbreviation.set(variantKey, [])\n }\n byAbbreviation.get(variantKey)?.push(reporter)\n }\n }\n }\n\n const db: ReportersDatabase = { byAbbreviation, all }\n setReportersCache(db)\n return db\n}\n\n/**\n * Get cached reporter database synchronously (degraded mode support)\n *\n * Returns null if reporters not loaded yet. This enables the library to\n * work in degraded mode without reporter validation.\n *\n * @returns Cached database or null if not loaded\n *\n * @example\n * const db = getReportersSync()\n * if (db) {\n * // Full mode: validate citations\n * } else {\n * // Degraded mode: extract without validation\n * }\n */\nexport function getReportersSync(): ReportersDatabase | null {\n return _getReportersSync()\n}\n\n/**\n * Find reporters by abbreviation (case-insensitive)\n *\n * Loads reporter database if not already loaded. Returns all reporters\n * matching the abbreviation (including variant forms).\n *\n * @param abbr - Reporter abbreviation to look up\n * @returns Promise resolving to matching reporters (empty array if none)\n *\n * @example\n * const reporters = await findReportersByAbbreviation('F.2d')\n * // [{ abbreviation: 'F.2d', name: 'Federal Reporter, Second Series', ... }]\n *\n * @example\n * const unknown = await findReportersByAbbreviation('NONEXISTENT')\n * // [] (empty array, not error)\n */\nexport async function findReportersByAbbreviation(abbr: string): Promise<ReporterEntry[]> {\n const db = await loadReporters()\n return db.byAbbreviation.get(abbr.toLowerCase()) ?? []\n}\n"],"mappings":"oFAqFA,eAAsB,GAA4C,CAChE,IAAM,EAAWA,GAAmB,CACpC,GAAI,EAAU,OAAO,EAGrB,IAAM,EAAO,MAAM,OAAO,4BAA6B,CACrD,OAAQ,CAAE,KAAM,OAAQ,CACzB,EAEK,EAAiB,IAAI,IACrB,EAAuB,EAAE,CAGzB,EAAiB,EAAK,SAAW,EAGvC,IAAK,GAAM,CAAC,EAAgB,KAAc,OAAO,QAAQ,EAAc,CACrE,IAAK,IAAM,KAAY,EAAW,CAChC,EAAI,KAAK,EAAS,CAGlB,IAAK,IAAM,KAAe,OAAO,KAAK,EAAS,SAAS,CAAE,CACxD,IAAM,EAAM,EAAY,aAAa,CAChC,EAAe,IAAI,EAAI,EAC1B,EAAe,IAAI,EAAK,EAAE,CAAC,CAE7B,EAAe,IAAI,EAAI,EAAE,KAAK,EAAS,CAIzC,IAAK,GAAM,CAAC,EAAS,KAAe,OAAO,QAAQ,EAAS,YAAc,EAAE,CAAC,CAAE,CAC7E,IAAM,EAAa,EAAQ,aAAa,CACnC,EAAe,IAAI,EAAW,EACjC,EAAe,IAAI,EAAY,EAAE,CAAC,CAEpC,EAAe,IAAI,EAAW,EAAE,KAAK,EAAS,EAKpD,IAAM,EAAwB,CAAE,iBAAgB,MAAK,CAErD,OADA,EAAkB,EAAG,CACd,EAmBT,SAAgB,GAA6C,CAC3D,OAAOA,GAAmB,CAoB5B,eAAsB,EAA4B,EAAwC,CAExF,OADW,MAAM,GAAe,EACtB,eAAe,IAAI,EAAK,aAAa,CAAC,EAAI,EAAE"}
1
+ {"version":3,"file":"index.mjs","names":["_getReportersSync"],"sources":["../../src/data/reporters.ts"],"sourcesContent":["/**\n * Reporter database integration for citation validation\n *\n * This module provides lazy-loadable access to the reporters-db database,\n * containing 1200+ court reporters with variant forms. The library works\n * in degraded mode (pattern-based extraction only) if reporters are not loaded.\n *\n * @example\n * // Degraded mode: extraction works without reporter data\n * const citations = await extract(text)\n *\n * @example\n * // Full mode: load reporters for validation\n * await loadReporters()\n * const citations = await extract(text) // Now with reporter validation\n */\n\n/**\n * Edition entry from reporters-db\n *\n * Represents a specific edition of a reporter with start/end dates.\n */\nexport interface ReporterEdition {\n /** Start date in ISO 8601 format */\n start: string | null\n /** End date in ISO 8601 format (null if ongoing) */\n end: string | null\n}\n\n/**\n * Reporter entry from reporters-db\n *\n * Represents a single court reporter with all metadata needed for\n * citation validation and enrichment.\n *\n * Note: The reporters-db structure has the actual data; this interface\n * represents it flexibly to handle all variations in the JSON.\n */\nexport interface ReporterEntry {\n /** Full reporter name (e.g., \"Federal Reporter\") */\n name: string\n /** Citation type: state, federal, specialty, neutral, state_regional, etc. */\n cite_type: string\n /** Editions keyed by abbreviation (e.g., {\"F.2d\": {...}, \"F.3d\": {...}}) */\n editions: Record<string, ReporterEdition>\n /** Variant forms mapped to canonical form (e.g., {\"F. 2d\": \"F.2d\"}) */\n variations?: Record<string, string | undefined>\n /** MLZ jurisdiction identifiers (optional) */\n mlz_jurisdiction?: string[]\n /** Publisher (optional) */\n publisher?: string\n /** Notes (optional) */\n notes?: string\n}\n\n/**\n * In-memory reporter database with fast O(1) lookup\n *\n * Uses Map-based indexing for case-insensitive abbreviation lookup.\n * All variant forms are indexed to support fuzzy matching.\n */\nexport interface ReportersDatabase {\n /** Fast O(1) lookup by abbreviation (lowercase normalized keys) */\n byAbbreviation: Map<string, ReporterEntry[]>\n /** All reporters (for iteration/filtering) */\n all: ReporterEntry[]\n}\n\nimport {\n getReportersSync as _getReportersSync,\n setReportersCache,\n} from \"./reportersCache\"\n\n/**\n * Load reporter database asynchronously with lazy loading\n *\n * Dynamic import prevents loading 1200+ reporters until explicitly requested.\n * Result is cached after first load for subsequent calls.\n *\n * @returns Promise resolving to indexed reporter database\n *\n * @example\n * const db = await loadReporters()\n * const reporters = db.byAbbreviation.get('f.2d') // Fast O(1) lookup\n */\nexport async function loadReporters(): Promise<ReportersDatabase> {\n const existing = _getReportersSync()\n if (existing) return existing\n\n // Dynamic import of a codegenned TS module. Rolldown auto-splits this into\n // a separate ESM + CJS chunk in dist/, preserving lazy loading without the\n // import-attribute syntax that was deprecated in Node 22+. See #642.\n const mod = await import(\"./reporters.gen.js\")\n\n const byAbbreviation = new Map<string, ReporterEntry[]>()\n const all: ReporterEntry[] = []\n\n // reporters.json structure: { \"A.\": [...], \"F.2d\": [...], ... }\n const reportersData = mod.default as Record<string, ReporterEntry[]>\n\n // Build fast lookup index with lowercase normalization\n for (const [_canonicalAbbr, reporters] of Object.entries(reportersData)) {\n for (const reporter of reporters) {\n all.push(reporter)\n\n // Index by all edition abbreviations\n for (const editionAbbr of Object.keys(reporter.editions)) {\n const key = editionAbbr.toLowerCase()\n if (!byAbbreviation.has(key)) {\n byAbbreviation.set(key, [])\n }\n byAbbreviation.get(key)?.push(reporter)\n }\n\n // Index all variations for fuzzy matching\n for (const [variant, _canonical] of Object.entries(reporter.variations || {})) {\n const variantKey = variant.toLowerCase()\n if (!byAbbreviation.has(variantKey)) {\n byAbbreviation.set(variantKey, [])\n }\n byAbbreviation.get(variantKey)?.push(reporter)\n }\n }\n }\n\n const db: ReportersDatabase = { byAbbreviation, all }\n setReportersCache(db)\n return db\n}\n\n/**\n * Get cached reporter database synchronously (degraded mode support)\n *\n * Returns null if reporters not loaded yet. This enables the library to\n * work in degraded mode without reporter validation.\n *\n * @returns Cached database or null if not loaded\n *\n * @example\n * const db = getReportersSync()\n * if (db) {\n * // Full mode: validate citations\n * } else {\n * // Degraded mode: extract without validation\n * }\n */\nexport function getReportersSync(): ReportersDatabase | null {\n return _getReportersSync()\n}\n\n/**\n * Find reporters by abbreviation (case-insensitive)\n *\n * Loads reporter database if not already loaded. Returns all reporters\n * matching the abbreviation (including variant forms).\n *\n * @param abbr - Reporter abbreviation to look up\n * @returns Promise resolving to matching reporters (empty array if none)\n *\n * @example\n * const reporters = await findReportersByAbbreviation('F.2d')\n * // [{ abbreviation: 'F.2d', name: 'Federal Reporter, Second Series', ... }]\n *\n * @example\n * const unknown = await findReportersByAbbreviation('NONEXISTENT')\n * // [] (empty array, not error)\n */\nexport async function findReportersByAbbreviation(abbr: string): Promise<ReporterEntry[]> {\n const db = await loadReporters()\n return db.byAbbreviation.get(abbr.toLowerCase()) ?? []\n}\n"],"mappings":"oFAqFA,eAAsB,GAA4C,CAChE,IAAM,EAAWA,GAAmB,CACpC,GAAI,EAAU,OAAO,EAKrB,IAAM,EAAM,MAAM,OAAO,iCAEnB,EAAiB,IAAI,IACrB,EAAuB,EAAE,CAGzB,EAAgB,EAAI,QAG1B,IAAK,GAAM,CAAC,EAAgB,KAAc,OAAO,QAAQ,EAAc,CACrE,IAAK,IAAM,KAAY,EAAW,CAChC,EAAI,KAAK,EAAS,CAGlB,IAAK,IAAM,KAAe,OAAO,KAAK,EAAS,SAAS,CAAE,CACxD,IAAM,EAAM,EAAY,aAAa,CAChC,EAAe,IAAI,EAAI,EAC1B,EAAe,IAAI,EAAK,EAAE,CAAC,CAE7B,EAAe,IAAI,EAAI,EAAE,KAAK,EAAS,CAIzC,IAAK,GAAM,CAAC,EAAS,KAAe,OAAO,QAAQ,EAAS,YAAc,EAAE,CAAC,CAAE,CAC7E,IAAM,EAAa,EAAQ,aAAa,CACnC,EAAe,IAAI,EAAW,EACjC,EAAe,IAAI,EAAY,EAAE,CAAC,CAEpC,EAAe,IAAI,EAAW,EAAE,KAAK,EAAS,EAKpD,IAAM,EAAwB,CAAE,iBAAgB,MAAK,CAErD,OADA,EAAkB,EAAG,CACd,EAmBT,SAAgB,GAA6C,CAC3D,OAAOA,GAAmB,CAoB5B,eAAsB,EAA4B,EAAwC,CAExF,OADW,MAAM,GAAe,EACtB,eAAe,IAAI,EAAK,aAAa,CAAC,EAAI,EAAE"}