eyecite-ts 0.5.0 → 0.6.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 (40) hide show
  1. package/README.md +38 -8
  2. package/dist/annotate/index.cjs.map +1 -1
  3. package/dist/annotate/index.d.cts +1 -1
  4. package/dist/annotate/index.d.mts +1 -1
  5. package/dist/annotate/index.mjs.map +1 -1
  6. package/dist/{citation-25ZydLsu.d.mts → citation-BwXdJTA9.d.mts} +177 -12
  7. package/dist/citation-BwXdJTA9.d.mts.map +1 -0
  8. package/dist/{citation-Cymq3pJ-.d.cts → citation-By8QXtGC.d.cts} +177 -12
  9. package/dist/citation-By8QXtGC.d.cts.map +1 -0
  10. package/dist/data/index.cjs.map +1 -1
  11. package/dist/data/index.d.cts +90 -90
  12. package/dist/data/index.d.cts.map +1 -1
  13. package/dist/data/index.d.mts +90 -90
  14. package/dist/data/index.d.mts.map +1 -1
  15. package/dist/data/index.mjs.map +1 -1
  16. package/dist/index.cjs +1 -1
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +110 -128
  19. package/dist/index.d.cts.map +1 -1
  20. package/dist/index.d.mts +110 -128
  21. package/dist/index.d.mts.map +1 -1
  22. package/dist/index.mjs +1 -1
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/knownCodes-CI-vnoBO.cjs.map +1 -1
  25. package/dist/knownCodes-MkDSiR1j.mjs.map +1 -1
  26. package/dist/types-BfYnmSHC.d.mts +115 -0
  27. package/dist/types-BfYnmSHC.d.mts.map +1 -0
  28. package/dist/types-C_5aOCZ1.d.cts +115 -0
  29. package/dist/types-C_5aOCZ1.d.cts.map +1 -0
  30. package/dist/utils/index.cjs +7 -0
  31. package/dist/utils/index.cjs.map +1 -0
  32. package/dist/utils/index.d.cts +122 -0
  33. package/dist/utils/index.d.cts.map +1 -0
  34. package/dist/utils/index.d.mts +122 -0
  35. package/dist/utils/index.d.mts.map +1 -0
  36. package/dist/utils/index.mjs +7 -0
  37. package/dist/utils/index.mjs.map +1 -0
  38. package/package.json +10 -1
  39. package/dist/citation-25ZydLsu.d.mts.map +0 -1
  40. package/dist/citation-Cymq3pJ-.d.cts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"knownCodes-CI-vnoBO.cjs","names":[],"sources":["../src/data/knownCodes.ts"],"sourcesContent":["/**\n * Known statutory code registry for abbreviated-code jurisdictions\n *\n * Provides a registry of state statutory codes that use abbreviated\n * citation forms (e.g., \"R.C. § 1.01\", \"MCL 750.83\"). Used by the\n * citation extractor to identify and normalize state statute citations.\n */\n\n/**\n * A single entry in the known codes registry.\n *\n * PA has two entries (Pa.C.S. and P.S.) because it has two distinct\n * code families with separate abbreviation sets.\n */\nexport interface CodeEntry {\n /** Two-letter state abbreviation (e.g., \"OH\", \"MI\") */\n jurisdiction: string\n /** Short canonical abbreviation used internally (e.g., \"RC\", \"MCL\") */\n abbreviation: string\n /** All recognized text patterns that identify this code */\n patterns: string[]\n /** Citation family — determines which citation pattern family this belongs to */\n family: 'federal' | 'named' | 'abbreviated' | 'chapterAct' | 'prose'\n}\n\n/**\n * Registry of state statutory codes that use abbreviated citation forms.\n *\n * Covers 12 jurisdictions. Pennsylvania has two entries because it\n * maintains two distinct code families (Pa.C.S. and P.S.).\n *\n * Note: Short 2-letter patterns (GS, IC, PS, RC, FS) may produce false positives\n * in non-legal text (e.g., \"GS 5\" for government service grade). The extraction\n * layer mitigates this via confidence scoring — citations without a § symbol receive\n * lower confidence (0.85 vs 0.95). Consumers should filter by confidence threshold.\n */\nexport const abbreviatedCodes: CodeEntry[] = [\n {\n jurisdiction: 'FL',\n abbreviation: 'STAT',\n family: 'abbreviated',\n patterns: [\n 'Fla. Stat.', 'Fla Stat', 'Fla. Stat. Ann.', 'F.S.', 'FS',\n ],\n },\n {\n jurisdiction: 'OH',\n abbreviation: 'RC',\n family: 'abbreviated',\n patterns: [\n 'R.C.', 'RC', 'O.R.C.', 'ORC', 'Ohio Rev. Code', 'Ohio Rev. Code Ann.',\n ],\n },\n {\n jurisdiction: 'MI',\n abbreviation: 'MCL',\n family: 'abbreviated',\n patterns: [\n 'MCL', 'M.C.L.', 'Mich. Comp. Laws', 'Mich. Comp. Laws Ann.', 'Mich. Comp. Laws Serv.', 'MCLA', 'MCLS',\n ],\n },\n {\n jurisdiction: 'UT',\n abbreviation: 'UC',\n family: 'abbreviated',\n patterns: [\n 'Utah Code', 'Utah Code Ann.', 'U.C.A.', 'UCA',\n ],\n },\n {\n jurisdiction: 'CO',\n abbreviation: 'CRS',\n family: 'abbreviated',\n patterns: [\n 'C.R.S.', 'CRS', 'Colo. Rev. Stat.', 'Colo. Rev. Stat. Ann.',\n ],\n },\n {\n jurisdiction: 'WA',\n abbreviation: 'RCW',\n family: 'abbreviated',\n patterns: [\n 'RCW', 'Wash. Rev. Code', 'Wash. Rev. Code Ann.',\n ],\n },\n {\n jurisdiction: 'NC',\n abbreviation: 'GS',\n family: 'abbreviated',\n patterns: [\n 'G.S.', 'GS', 'N.C. Gen. Stat.', 'N.C. Gen. Stat. Ann.', 'N.C.G.S.', 'NCGS',\n ],\n },\n {\n jurisdiction: 'GA',\n abbreviation: 'OCGA',\n family: 'abbreviated',\n patterns: [\n 'O.C.G.A.', 'OCGA', 'Ga. Code', 'Ga. Code Ann.',\n ],\n },\n {\n jurisdiction: 'PA',\n abbreviation: 'PaCS',\n family: 'abbreviated',\n patterns: [\n 'Pa.C.S.', 'Pa.C.S.A.', 'Pa. C.S.', 'Pa. C.S.A.', 'Pa. Cons. Stat.',\n ],\n },\n {\n jurisdiction: 'PA',\n abbreviation: 'PS',\n family: 'abbreviated',\n patterns: [\n 'P.S.', 'PS',\n ],\n },\n {\n jurisdiction: 'IN',\n abbreviation: 'IC',\n family: 'abbreviated',\n patterns: [\n 'Ind. Code', 'Ind. Code Ann.', 'Indiana Code', 'Indiana Code Ann.', 'I.C.', 'IC', 'Burns Ind. Code', 'Burns Ind. Code Ann.',\n ],\n },\n {\n jurisdiction: 'NJ',\n abbreviation: 'NJSA',\n family: 'abbreviated',\n patterns: [\n 'N.J.S.A.', 'NJSA', 'N.J.S.', 'NJS',\n ],\n },\n {\n jurisdiction: 'DE',\n abbreviation: 'DelC',\n family: 'abbreviated',\n patterns: [\n 'Del. C.', 'Del C', 'Del. Code', 'Del. Code Ann.',\n ],\n },\n]\n\n/**\n * Registry of state statutory codes that use named-code citation forms.\n *\n * Named-code jurisdictions identify their code by name in citations (e.g.,\n * \"N.Y. Penal Law § 120.05\", \"Cal. Civ. Proc. Code § 437c\"), rather than by\n * a standalone abbreviation. The jurisdiction prefix is handled by the\n * extraction layer; these patterns cover only the code name portion.\n *\n * Ordering note: within each jurisdiction, more specific patterns must come\n * before more general ones (e.g., \"Civ. Proc.\" before \"Civ.\") so that\n * findNamedCode's longest-match wins correctly.\n *\n * Covers 7 jurisdictions: NY (21 entries), CA (29 entries), TX (29 entries),\n * MD (36 entries), VA (1 entry), AL (1 entry), MA (1 entry).\n */\nexport const namedCodes: CodeEntry[] = [\n // ── New York (21 entries) ──────────────────────────────────────────────────\n {\n jurisdiction: 'NY',\n abbreviation: 'CPLR',\n family: 'named',\n patterns: ['C.P.L.R.', 'CPLR', 'Civ. Prac. L. & R.', 'Civil Practice Law & Rules'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'CPL',\n family: 'named',\n patterns: ['Crim. Proc.', 'Criminal Procedure'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'GBS',\n family: 'named',\n patterns: ['Gen. Bus.', 'General Business'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'GOB',\n family: 'named',\n patterns: ['Gen. Oblig.', 'General Obligations'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'PEN',\n family: 'named',\n patterns: ['Penal'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'ISC',\n family: 'named',\n patterns: ['Ins.', 'Insurance'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'LAB',\n family: 'named',\n patterns: ['Lab.', 'Labor'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'RPL',\n family: 'named',\n patterns: ['Real Prop.', 'Real Property'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'EXC',\n family: 'named',\n patterns: ['Exec.', 'Executive'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'JUD',\n family: 'named',\n patterns: ['Jud.', 'Judiciary'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'SCP',\n family: 'named',\n patterns: [\"Surr. Ct. Proc.\", \"Surrogate's Court Procedure\"],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'CVR',\n family: 'named',\n patterns: ['Civ. Rights', 'Civil Rights'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'CVP',\n family: 'named',\n patterns: ['Civ. Prac.', 'Civil Practice'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'EDN',\n family: 'named',\n patterns: ['Educ.', 'Education'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'TAX',\n family: 'named',\n patterns: ['Tax'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'PBH',\n family: 'named',\n patterns: ['Pub. Health', 'Public Health'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'SOS',\n family: 'named',\n patterns: ['Soc. Serv.', 'Social Services'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'ELN',\n family: 'named',\n patterns: ['Elec.', 'Election'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'ENV',\n family: 'named',\n patterns: ['Env. Conserv.', 'Environmental Conservation'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'BNK',\n family: 'named',\n patterns: ['Bank.', 'Banking'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'DRL',\n family: 'named',\n patterns: ['Dom. Rel.', 'Domestic Relations'],\n },\n\n // ── California (29 entries) ────────────────────────────────────────────────\n // CRITICAL: more specific patterns must come before general ones\n // (e.g., CCP \"Civ. Proc.\" before CIV \"Civ.\")\n {\n jurisdiction: 'CA',\n abbreviation: 'CCP',\n family: 'named',\n patterns: ['Civ. Proc.', 'Civil Procedure'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'BPC',\n family: 'named',\n patterns: ['Bus. & Prof.', 'Business & Professions'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'HSC',\n family: 'named',\n patterns: ['Health & Saf.', 'Health & Safety'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'RTC',\n family: 'named',\n patterns: ['Rev. & Tax.', 'Revenue & Taxation'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'FGC',\n family: 'named',\n patterns: ['Fish & Game'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'FAC',\n family: 'named',\n patterns: ['Food & Agric.', 'Food & Agricultural'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'HNC',\n family: 'named',\n patterns: ['Harb. & Nav.', 'Harbors & Navigation'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'MVC',\n family: 'named',\n patterns: ['Mil. & Vet.', 'Military & Veterans'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PCC',\n family: 'named',\n patterns: ['Pub. Cont.', 'Public Contract', 'Public Contracts'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PRC',\n family: 'named',\n patterns: ['Pub. Res.', 'Public Resources'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PUC',\n family: 'named',\n patterns: ['Pub. Util.', 'Public Utilities'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'SHC',\n family: 'named',\n patterns: ['Sts. & High.', 'Streets & Highways'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'UIC',\n family: 'named',\n patterns: ['Unemp. Ins.', 'Unemployment Insurance'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'WIC',\n family: 'named',\n patterns: ['Welf. & Inst.', 'Welfare & Institutions'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'CIV',\n family: 'named',\n patterns: ['Civ.', 'Civil'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'COM',\n family: 'named',\n patterns: ['Com.', 'Commercial'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'CORP',\n family: 'named',\n patterns: ['Corp.', 'Corporations'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'EDC',\n family: 'named',\n patterns: ['Educ.', 'Education'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'ELEC',\n family: 'named',\n patterns: ['Elec.', 'Elections'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'EVID',\n family: 'named',\n patterns: ['Evid.', 'Evidence'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'FAM',\n family: 'named',\n patterns: ['Fam.', 'Family'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'FIN',\n family: 'named',\n patterns: ['Fin.', 'Financial'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'GOV',\n family: 'named',\n patterns: ['Gov.', 'Government'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'INS',\n family: 'named',\n patterns: ['Ins.', 'Insurance'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'LAB',\n family: 'named',\n patterns: ['Lab.', 'Labor'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PEN',\n family: 'named',\n patterns: ['Penal'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PROB',\n family: 'named',\n patterns: ['Prob.', 'Probate'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'VEH',\n family: 'named',\n patterns: ['Veh.', 'Vehicle'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'WAT',\n family: 'named',\n patterns: ['Wat.', 'Water'],\n },\n\n // ── Texas (30 entries) ────────────────────────────────────────────────────\n {\n jurisdiction: 'TX',\n abbreviation: 'CP',\n family: 'named',\n patterns: ['Civ. Prac. & Rem.', 'Civil Practice & Remedies'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'CR',\n family: 'named',\n patterns: ['Crim. Proc.', 'Code of Criminal Procedure'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'BC',\n family: 'named',\n patterns: ['Bus. & Com.', 'Business & Commerce'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'BO',\n family: 'named',\n patterns: ['Bus. Org.', 'Business Organizations'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'HS',\n family: 'named',\n patterns: ['Health & Saf.', 'Health & Safety'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'HR',\n family: 'named',\n patterns: ['Human Res.', 'Human Resources'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'LG',\n family: 'named',\n patterns: ['Local Gov.', 'Local Government'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'NR',\n family: 'named',\n patterns: ['Nat. Res.', 'Natural Resources'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'PW',\n family: 'named',\n patterns: ['Parks & Wild.', 'Parks & Wildlife'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'SD',\n family: 'named',\n patterns: ['Spec. Dist.', 'Special District'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'AL',\n family: 'named',\n patterns: ['Alco. Bev.', 'Alcoholic Beverage'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'WL',\n family: 'named',\n patterns: ['Water'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'CV',\n family: 'named',\n patterns: [\"Vernon's Civ. Stat.\", \"Vernon's Civil Statutes\"],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'GV',\n family: 'named',\n patterns: [\"Gov't\", 'Government'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'AG',\n family: 'named',\n patterns: ['Agric.', 'Agriculture'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'ED',\n family: 'named',\n patterns: ['Educ.', 'Education'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'EL',\n family: 'named',\n patterns: ['Elec.', 'Election'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'ES',\n family: 'named',\n patterns: ['Est.', 'Estates'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'FA',\n family: 'named',\n patterns: ['Fam.', 'Family'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'FI',\n family: 'named',\n patterns: ['Fin.', 'Finance'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'IN',\n family: 'named',\n patterns: ['Ins.', 'Insurance'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'LA',\n family: 'named',\n patterns: ['Lab.', 'Labor'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'OC',\n family: 'named',\n patterns: ['Occup.', 'Occupations'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'PE',\n family: 'named',\n patterns: ['Penal'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'PB',\n family: 'named',\n patterns: ['Prob.', 'Probate'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'PR',\n family: 'named',\n patterns: ['Prop.', 'Property'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'TX',\n family: 'named',\n patterns: ['Tax'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'TN',\n family: 'named',\n patterns: ['Transp.', 'Transportation'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'UT',\n family: 'named',\n patterns: ['Util.', 'Utilities'],\n },\n\n // ── Maryland (36 entries) ─────────────────────────────────────────────────\n {\n jurisdiction: 'MD',\n abbreviation: 'gag',\n family: 'named',\n patterns: ['Agric.', 'Agriculture'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gab',\n family: 'named',\n patterns: ['Alc. Bev.', 'Alcoholic Beverages and Cannabis'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gbo',\n family: 'named',\n patterns: ['Bus. Occ. & Prof.', 'Business Occupations and Professions'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gbr',\n family: 'named',\n patterns: ['Bus. Reg.', 'Business Regulation'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcl',\n family: 'named',\n patterns: ['Com. Law', 'Commercial Law'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gca',\n family: 'named',\n patterns: [\"Corps. & Ass'ns\", 'Corporations and Associations'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcs',\n family: 'named',\n patterns: ['Corr. Servs.', 'Correctional Services'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcj',\n family: 'named',\n patterns: ['Cts. & Jud. Proc.', 'Courts and Judicial Proceedings'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcr',\n family: 'named',\n patterns: ['Crim. Law', 'Criminal Law'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcp',\n family: 'named',\n patterns: ['Crim. Proc.', 'Criminal Procedure'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gec',\n family: 'named',\n patterns: ['Econ. Dev.', 'Economic Development'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ged',\n family: 'named',\n patterns: ['Educ.', 'Education'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gel',\n family: 'named',\n patterns: ['Elec. Law', 'Election Law'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gen',\n family: 'named',\n patterns: ['Envir.', 'Environment'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'get',\n family: 'named',\n patterns: ['Est. & Trusts', 'Estates and Trusts'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gfl',\n family: 'named',\n patterns: ['Fam. Law', 'Family Law'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gfi',\n family: 'named',\n patterns: ['Fin. Inst.', 'Financial Institutions'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ggp',\n family: 'named',\n patterns: ['Gen. Prov.', 'General Provisions'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ghg',\n family: 'named',\n patterns: ['Health-Gen.', 'Health - General'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gho',\n family: 'named',\n patterns: ['Health Occ.', 'Health Occupations'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ghs',\n family: 'named',\n patterns: ['Hous. & Cmty. Dev.', 'Housing and Community Development'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ghu',\n family: 'named',\n patterns: ['Hum. Servs.', 'Human Services'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gin',\n family: 'named',\n patterns: ['Ins.', 'Insurance'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gle',\n family: 'named',\n patterns: ['Lab. & Empl.', 'Labor and Employment'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'glu',\n family: 'named',\n patterns: ['Land Use'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'glg',\n family: 'named',\n patterns: [\"Local Gov't\", 'Local Government'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gnr',\n family: 'named',\n patterns: ['Nat. Res.', 'Natural Resources'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gps',\n family: 'named',\n patterns: ['Pub. Safety', 'Public Safety'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gpu',\n family: 'named',\n patterns: ['PUC', 'Public Utilities'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'grp',\n family: 'named',\n patterns: ['Real Prop.', 'Real Property'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gsf',\n family: 'named',\n patterns: ['State Fin. & Proc.', 'State Finance and Procurement'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gsg',\n family: 'named',\n patterns: [\"State Gov't\", 'State Government'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gsp',\n family: 'named',\n patterns: ['State Pers. & Pens.', 'State Personnel and Pensions'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gtg',\n family: 'named',\n patterns: ['Tax-Gen.', 'Tax - General'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gtp',\n family: 'named',\n patterns: ['Tax-Prop.', 'Tax - Property'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gtr',\n family: 'named',\n patterns: ['Transp.', 'Transportation'],\n },\n\n // ── Virginia (1 entry) ────────────────────────────────────────────────────\n {\n jurisdiction: 'VA',\n abbreviation: 'CODE',\n family: 'named',\n patterns: ['Code', 'Code Ann.'],\n },\n\n // ── Alabama (1 entry) ─────────────────────────────────────────────────────\n {\n jurisdiction: 'AL',\n abbreviation: 'CODE',\n family: 'named',\n patterns: ['Code', 'Code Ann.'],\n },\n\n // ── Massachusetts (1 entry) ───────────────────────────────────────────────\n {\n jurisdiction: 'MA',\n abbreviation: 'GL',\n family: 'named',\n patterns: ['Gen. Laws', 'General Laws'],\n },\n]\n\n/**\n * Find a CodeEntry by jurisdiction and code name token.\n *\n * Lookup strategy: for each candidate entry in the given jurisdiction,\n * check whether the normalized codeName matches or starts with any of the\n * entry's patterns (case-insensitive). Returns the entry with the longest\n * matching pattern to prefer more specific codes over general ones\n * (e.g., \"Civ. Proc.\" over \"Civ.\").\n *\n * @param jurisdiction - Two-letter state abbreviation (e.g., \"CA\", \"NY\")\n * @param codeName - The code name token to look up (e.g., \"Penal\", \"Civ. Proc.\")\n * @returns Matching CodeEntry, or undefined if not found\n *\n * @example\n * findNamedCode('NY', 'Penal') // → NY PEN entry\n * findNamedCode('CA', 'Civ. Proc.') // → CA CCP entry (not CA CIV)\n * findNamedCode('MD', 'Crim. Law') // → MD gcr entry\n * findNamedCode('NY', 'Unknown') // → undefined\n */\nexport function findNamedCode(jurisdiction: string, codeName: string): CodeEntry | undefined {\n const normalized = codeName.replace(/\\s+/g, ' ').trim().toLowerCase()\n const candidates = _byJurisdiction.get(jurisdiction)\n if (!candidates) return undefined\n\n let bestMatch: CodeEntry | undefined\n let bestLen = 0\n\n for (const { entry, lower } of candidates) {\n if (normalized === lower || normalized.startsWith(lower)) {\n if (lower.length > bestLen) {\n bestMatch = entry\n bestLen = lower.length\n }\n }\n }\n return bestMatch\n}\n\n/**\n * Pre-built index: jurisdiction → array of { entry, lower } for O(1) jurisdiction lookup.\n * Patterns are pre-lowercased to avoid per-call allocations.\n */\nconst _byJurisdiction = new Map<string, Array<{ entry: CodeEntry; lower: string }>>()\nfor (const entry of namedCodes) {\n let arr = _byJurisdiction.get(entry.jurisdiction)\n if (!arr) {\n arr = []\n _byJurisdiction.set(entry.jurisdiction, arr)\n }\n for (const pattern of entry.patterns) {\n arr.push({ entry, lower: pattern.toLowerCase() })\n }\n}\n\n/**\n * Build a case-insensitive lookup index from pattern → CodeEntry.\n * Exact match first; prefix fallback is handled in findAbbreviatedCode.\n */\nconst _byPattern = new Map<string, CodeEntry>()\nfor (const entry of abbreviatedCodes) {\n for (const pattern of entry.patterns) {\n _byPattern.set(pattern.toLowerCase(), entry)\n }\n}\n\n/**\n * Find a CodeEntry by an abbreviated text token.\n *\n * Lookup order:\n * 1. Exact case-insensitive match against all patterns\n * 2. Prefix match — returns the entry whose pattern is the longest\n * prefix of `abbrevText` (handles tokens like \"RCW\" inside longer text)\n *\n * @param abbrevText - The abbreviation token to look up\n * @returns Matching CodeEntry, or undefined if not found\n *\n * @example\n * findAbbreviatedCode('R.C.') // → OH entry\n * findAbbreviatedCode('MCL') // → MI entry\n * findAbbreviatedCode('UNKNOWN') // → undefined\n */\nexport function findAbbreviatedCode(abbrevText: string): CodeEntry | undefined {\n const lower = abbrevText.toLowerCase()\n\n // 1. Exact match\n const exact = _byPattern.get(lower)\n if (exact) return exact\n\n // 2. Prefix fallback — find the longest pattern that is a prefix of abbrevText\n let bestMatch: CodeEntry | undefined\n let bestLen = 0\n for (const [pattern, entry] of _byPattern) {\n if (lower.startsWith(pattern) && pattern.length > bestLen) {\n bestMatch = entry\n bestLen = pattern.length\n }\n }\n return bestMatch\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"knownCodes-CI-vnoBO.cjs","names":[],"sources":["../src/data/knownCodes.ts"],"sourcesContent":["/**\n * Known statutory code registry for abbreviated-code jurisdictions\n *\n * Provides a registry of state statutory codes that use abbreviated\n * citation forms (e.g., \"R.C. § 1.01\", \"MCL 750.83\"). Used by the\n * citation extractor to identify and normalize state statute citations.\n */\n\n/**\n * A single entry in the known codes registry.\n *\n * PA has two entries (Pa.C.S. and P.S.) because it has two distinct\n * code families with separate abbreviation sets.\n */\nexport interface CodeEntry {\n /** Two-letter state abbreviation (e.g., \"OH\", \"MI\") */\n jurisdiction: string\n /** Short canonical abbreviation used internally (e.g., \"RC\", \"MCL\") */\n abbreviation: string\n /** All recognized text patterns that identify this code */\n patterns: string[]\n /** Citation family — determines which citation pattern family this belongs to */\n family: \"federal\" | \"named\" | \"abbreviated\" | \"chapterAct\" | \"prose\"\n}\n\n/**\n * Registry of state statutory codes that use abbreviated citation forms.\n *\n * Covers 12 jurisdictions. Pennsylvania has two entries because it\n * maintains two distinct code families (Pa.C.S. and P.S.).\n *\n * Note: Short 2-letter patterns (GS, IC, PS, RC, FS) may produce false positives\n * in non-legal text (e.g., \"GS 5\" for government service grade). The extraction\n * layer mitigates this via confidence scoring — citations without a § symbol receive\n * lower confidence (0.85 vs 0.95). Consumers should filter by confidence threshold.\n */\nexport const abbreviatedCodes: CodeEntry[] = [\n {\n jurisdiction: \"FL\",\n abbreviation: \"STAT\",\n family: \"abbreviated\",\n patterns: [\"Fla. Stat.\", \"Fla Stat\", \"Fla. Stat. Ann.\", \"F.S.\", \"FS\"],\n },\n {\n jurisdiction: \"OH\",\n abbreviation: \"RC\",\n family: \"abbreviated\",\n patterns: [\"R.C.\", \"RC\", \"O.R.C.\", \"ORC\", \"Ohio Rev. Code\", \"Ohio Rev. Code Ann.\"],\n },\n {\n jurisdiction: \"MI\",\n abbreviation: \"MCL\",\n family: \"abbreviated\",\n patterns: [\n \"MCL\",\n \"M.C.L.\",\n \"Mich. Comp. Laws\",\n \"Mich. Comp. Laws Ann.\",\n \"Mich. Comp. Laws Serv.\",\n \"MCLA\",\n \"MCLS\",\n ],\n },\n {\n jurisdiction: \"UT\",\n abbreviation: \"UC\",\n family: \"abbreviated\",\n patterns: [\"Utah Code\", \"Utah Code Ann.\", \"U.C.A.\", \"UCA\"],\n },\n {\n jurisdiction: \"CO\",\n abbreviation: \"CRS\",\n family: \"abbreviated\",\n patterns: [\"C.R.S.\", \"CRS\", \"Colo. Rev. Stat.\", \"Colo. Rev. Stat. Ann.\"],\n },\n {\n jurisdiction: \"WA\",\n abbreviation: \"RCW\",\n family: \"abbreviated\",\n patterns: [\"RCW\", \"Wash. Rev. Code\", \"Wash. Rev. Code Ann.\"],\n },\n {\n jurisdiction: \"NC\",\n abbreviation: \"GS\",\n family: \"abbreviated\",\n patterns: [\"G.S.\", \"GS\", \"N.C. Gen. Stat.\", \"N.C. Gen. Stat. Ann.\", \"N.C.G.S.\", \"NCGS\"],\n },\n {\n jurisdiction: \"GA\",\n abbreviation: \"OCGA\",\n family: \"abbreviated\",\n patterns: [\"O.C.G.A.\", \"OCGA\", \"Ga. Code\", \"Ga. Code Ann.\"],\n },\n {\n jurisdiction: \"PA\",\n abbreviation: \"PaCS\",\n family: \"abbreviated\",\n patterns: [\"Pa.C.S.\", \"Pa.C.S.A.\", \"Pa. C.S.\", \"Pa. C.S.A.\", \"Pa. Cons. Stat.\"],\n },\n {\n jurisdiction: \"PA\",\n abbreviation: \"PS\",\n family: \"abbreviated\",\n patterns: [\"P.S.\", \"PS\"],\n },\n {\n jurisdiction: \"IN\",\n abbreviation: \"IC\",\n family: \"abbreviated\",\n patterns: [\n \"Ind. Code\",\n \"Ind. Code Ann.\",\n \"Indiana Code\",\n \"Indiana Code Ann.\",\n \"I.C.\",\n \"IC\",\n \"Burns Ind. Code\",\n \"Burns Ind. Code Ann.\",\n ],\n },\n {\n jurisdiction: \"NJ\",\n abbreviation: \"NJSA\",\n family: \"abbreviated\",\n patterns: [\"N.J.S.A.\", \"NJSA\", \"N.J.S.\", \"NJS\"],\n },\n {\n jurisdiction: \"DE\",\n abbreviation: \"DelC\",\n family: \"abbreviated\",\n patterns: [\"Del. C.\", \"Del C\", \"Del. Code\", \"Del. Code Ann.\"],\n },\n]\n\n/**\n * Registry of state statutory codes that use named-code citation forms.\n *\n * Named-code jurisdictions identify their code by name in citations (e.g.,\n * \"N.Y. Penal Law § 120.05\", \"Cal. Civ. Proc. Code § 437c\"), rather than by\n * a standalone abbreviation. The jurisdiction prefix is handled by the\n * extraction layer; these patterns cover only the code name portion.\n *\n * Ordering note: within each jurisdiction, more specific patterns must come\n * before more general ones (e.g., \"Civ. Proc.\" before \"Civ.\") so that\n * findNamedCode's longest-match wins correctly.\n *\n * Covers 7 jurisdictions: NY (21 entries), CA (29 entries), TX (29 entries),\n * MD (36 entries), VA (1 entry), AL (1 entry), MA (1 entry).\n */\nexport const namedCodes: CodeEntry[] = [\n // ── New York (21 entries) ──────────────────────────────────────────────────\n {\n jurisdiction: \"NY\",\n abbreviation: \"CPLR\",\n family: \"named\",\n patterns: [\"C.P.L.R.\", \"CPLR\", \"Civ. Prac. L. & R.\", \"Civil Practice Law & Rules\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"CPL\",\n family: \"named\",\n patterns: [\"Crim. Proc.\", \"Criminal Procedure\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"GBS\",\n family: \"named\",\n patterns: [\"Gen. Bus.\", \"General Business\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"GOB\",\n family: \"named\",\n patterns: [\"Gen. Oblig.\", \"General Obligations\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"PEN\",\n family: \"named\",\n patterns: [\"Penal\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"ISC\",\n family: \"named\",\n patterns: [\"Ins.\", \"Insurance\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"LAB\",\n family: \"named\",\n patterns: [\"Lab.\", \"Labor\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"RPL\",\n family: \"named\",\n patterns: [\"Real Prop.\", \"Real Property\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"EXC\",\n family: \"named\",\n patterns: [\"Exec.\", \"Executive\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"JUD\",\n family: \"named\",\n patterns: [\"Jud.\", \"Judiciary\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"SCP\",\n family: \"named\",\n patterns: [\"Surr. Ct. Proc.\", \"Surrogate's Court Procedure\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"CVR\",\n family: \"named\",\n patterns: [\"Civ. Rights\", \"Civil Rights\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"CVP\",\n family: \"named\",\n patterns: [\"Civ. Prac.\", \"Civil Practice\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"EDN\",\n family: \"named\",\n patterns: [\"Educ.\", \"Education\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"TAX\",\n family: \"named\",\n patterns: [\"Tax\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"PBH\",\n family: \"named\",\n patterns: [\"Pub. Health\", \"Public Health\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"SOS\",\n family: \"named\",\n patterns: [\"Soc. Serv.\", \"Social Services\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"ELN\",\n family: \"named\",\n patterns: [\"Elec.\", \"Election\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"ENV\",\n family: \"named\",\n patterns: [\"Env. Conserv.\", \"Environmental Conservation\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"BNK\",\n family: \"named\",\n patterns: [\"Bank.\", \"Banking\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"DRL\",\n family: \"named\",\n patterns: [\"Dom. Rel.\", \"Domestic Relations\"],\n },\n\n // ── California (29 entries) ────────────────────────────────────────────────\n // CRITICAL: more specific patterns must come before general ones\n // (e.g., CCP \"Civ. Proc.\" before CIV \"Civ.\")\n {\n jurisdiction: \"CA\",\n abbreviation: \"CCP\",\n family: \"named\",\n patterns: [\"Civ. Proc.\", \"Civil Procedure\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"BPC\",\n family: \"named\",\n patterns: [\"Bus. & Prof.\", \"Business & Professions\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"HSC\",\n family: \"named\",\n patterns: [\"Health & Saf.\", \"Health & Safety\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"RTC\",\n family: \"named\",\n patterns: [\"Rev. & Tax.\", \"Revenue & Taxation\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"FGC\",\n family: \"named\",\n patterns: [\"Fish & Game\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"FAC\",\n family: \"named\",\n patterns: [\"Food & Agric.\", \"Food & Agricultural\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"HNC\",\n family: \"named\",\n patterns: [\"Harb. & Nav.\", \"Harbors & Navigation\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"MVC\",\n family: \"named\",\n patterns: [\"Mil. & Vet.\", \"Military & Veterans\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PCC\",\n family: \"named\",\n patterns: [\"Pub. Cont.\", \"Public Contract\", \"Public Contracts\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PRC\",\n family: \"named\",\n patterns: [\"Pub. Res.\", \"Public Resources\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PUC\",\n family: \"named\",\n patterns: [\"Pub. Util.\", \"Public Utilities\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"SHC\",\n family: \"named\",\n patterns: [\"Sts. & High.\", \"Streets & Highways\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"UIC\",\n family: \"named\",\n patterns: [\"Unemp. Ins.\", \"Unemployment Insurance\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"WIC\",\n family: \"named\",\n patterns: [\"Welf. & Inst.\", \"Welfare & Institutions\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"CIV\",\n family: \"named\",\n patterns: [\"Civ.\", \"Civil\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"COM\",\n family: \"named\",\n patterns: [\"Com.\", \"Commercial\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"CORP\",\n family: \"named\",\n patterns: [\"Corp.\", \"Corporations\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"EDC\",\n family: \"named\",\n patterns: [\"Educ.\", \"Education\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"ELEC\",\n family: \"named\",\n patterns: [\"Elec.\", \"Elections\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"EVID\",\n family: \"named\",\n patterns: [\"Evid.\", \"Evidence\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"FAM\",\n family: \"named\",\n patterns: [\"Fam.\", \"Family\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"FIN\",\n family: \"named\",\n patterns: [\"Fin.\", \"Financial\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"GOV\",\n family: \"named\",\n patterns: [\"Gov.\", \"Government\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"INS\",\n family: \"named\",\n patterns: [\"Ins.\", \"Insurance\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"LAB\",\n family: \"named\",\n patterns: [\"Lab.\", \"Labor\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PEN\",\n family: \"named\",\n patterns: [\"Penal\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PROB\",\n family: \"named\",\n patterns: [\"Prob.\", \"Probate\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"VEH\",\n family: \"named\",\n patterns: [\"Veh.\", \"Vehicle\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"WAT\",\n family: \"named\",\n patterns: [\"Wat.\", \"Water\"],\n },\n\n // ── Texas (30 entries) ────────────────────────────────────────────────────\n {\n jurisdiction: \"TX\",\n abbreviation: \"CP\",\n family: \"named\",\n patterns: [\"Civ. Prac. & Rem.\", \"Civil Practice & Remedies\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"CR\",\n family: \"named\",\n patterns: [\"Crim. Proc.\", \"Code of Criminal Procedure\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"BC\",\n family: \"named\",\n patterns: [\"Bus. & Com.\", \"Business & Commerce\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"BO\",\n family: \"named\",\n patterns: [\"Bus. Org.\", \"Business Organizations\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"HS\",\n family: \"named\",\n patterns: [\"Health & Saf.\", \"Health & Safety\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"HR\",\n family: \"named\",\n patterns: [\"Human Res.\", \"Human Resources\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"LG\",\n family: \"named\",\n patterns: [\"Local Gov.\", \"Local Government\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"NR\",\n family: \"named\",\n patterns: [\"Nat. Res.\", \"Natural Resources\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"PW\",\n family: \"named\",\n patterns: [\"Parks & Wild.\", \"Parks & Wildlife\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"SD\",\n family: \"named\",\n patterns: [\"Spec. Dist.\", \"Special District\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"AL\",\n family: \"named\",\n patterns: [\"Alco. Bev.\", \"Alcoholic Beverage\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"WL\",\n family: \"named\",\n patterns: [\"Water\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"CV\",\n family: \"named\",\n patterns: [\"Vernon's Civ. Stat.\", \"Vernon's Civil Statutes\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"GV\",\n family: \"named\",\n patterns: [\"Gov't\", \"Government\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"AG\",\n family: \"named\",\n patterns: [\"Agric.\", \"Agriculture\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"ED\",\n family: \"named\",\n patterns: [\"Educ.\", \"Education\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"EL\",\n family: \"named\",\n patterns: [\"Elec.\", \"Election\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"ES\",\n family: \"named\",\n patterns: [\"Est.\", \"Estates\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"FA\",\n family: \"named\",\n patterns: [\"Fam.\", \"Family\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"FI\",\n family: \"named\",\n patterns: [\"Fin.\", \"Finance\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"IN\",\n family: \"named\",\n patterns: [\"Ins.\", \"Insurance\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"LA\",\n family: \"named\",\n patterns: [\"Lab.\", \"Labor\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"OC\",\n family: \"named\",\n patterns: [\"Occup.\", \"Occupations\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"PE\",\n family: \"named\",\n patterns: [\"Penal\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"PB\",\n family: \"named\",\n patterns: [\"Prob.\", \"Probate\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"PR\",\n family: \"named\",\n patterns: [\"Prop.\", \"Property\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"TX\",\n family: \"named\",\n patterns: [\"Tax\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"TN\",\n family: \"named\",\n patterns: [\"Transp.\", \"Transportation\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"UT\",\n family: \"named\",\n patterns: [\"Util.\", \"Utilities\"],\n },\n\n // ── Maryland (36 entries) ─────────────────────────────────────────────────\n {\n jurisdiction: \"MD\",\n abbreviation: \"gag\",\n family: \"named\",\n patterns: [\"Agric.\", \"Agriculture\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gab\",\n family: \"named\",\n patterns: [\"Alc. Bev.\", \"Alcoholic Beverages and Cannabis\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gbo\",\n family: \"named\",\n patterns: [\"Bus. Occ. & Prof.\", \"Business Occupations and Professions\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gbr\",\n family: \"named\",\n patterns: [\"Bus. Reg.\", \"Business Regulation\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcl\",\n family: \"named\",\n patterns: [\"Com. Law\", \"Commercial Law\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gca\",\n family: \"named\",\n patterns: [\"Corps. & Ass'ns\", \"Corporations and Associations\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcs\",\n family: \"named\",\n patterns: [\"Corr. Servs.\", \"Correctional Services\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcj\",\n family: \"named\",\n patterns: [\"Cts. & Jud. Proc.\", \"Courts and Judicial Proceedings\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcr\",\n family: \"named\",\n patterns: [\"Crim. Law\", \"Criminal Law\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcp\",\n family: \"named\",\n patterns: [\"Crim. Proc.\", \"Criminal Procedure\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gec\",\n family: \"named\",\n patterns: [\"Econ. Dev.\", \"Economic Development\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ged\",\n family: \"named\",\n patterns: [\"Educ.\", \"Education\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gel\",\n family: \"named\",\n patterns: [\"Elec. Law\", \"Election Law\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gen\",\n family: \"named\",\n patterns: [\"Envir.\", \"Environment\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"get\",\n family: \"named\",\n patterns: [\"Est. & Trusts\", \"Estates and Trusts\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gfl\",\n family: \"named\",\n patterns: [\"Fam. Law\", \"Family Law\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gfi\",\n family: \"named\",\n patterns: [\"Fin. Inst.\", \"Financial Institutions\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ggp\",\n family: \"named\",\n patterns: [\"Gen. Prov.\", \"General Provisions\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ghg\",\n family: \"named\",\n patterns: [\"Health-Gen.\", \"Health - General\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gho\",\n family: \"named\",\n patterns: [\"Health Occ.\", \"Health Occupations\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ghs\",\n family: \"named\",\n patterns: [\"Hous. & Cmty. Dev.\", \"Housing and Community Development\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ghu\",\n family: \"named\",\n patterns: [\"Hum. Servs.\", \"Human Services\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gin\",\n family: \"named\",\n patterns: [\"Ins.\", \"Insurance\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gle\",\n family: \"named\",\n patterns: [\"Lab. & Empl.\", \"Labor and Employment\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"glu\",\n family: \"named\",\n patterns: [\"Land Use\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"glg\",\n family: \"named\",\n patterns: [\"Local Gov't\", \"Local Government\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gnr\",\n family: \"named\",\n patterns: [\"Nat. Res.\", \"Natural Resources\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gps\",\n family: \"named\",\n patterns: [\"Pub. Safety\", \"Public Safety\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gpu\",\n family: \"named\",\n patterns: [\"PUC\", \"Public Utilities\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"grp\",\n family: \"named\",\n patterns: [\"Real Prop.\", \"Real Property\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gsf\",\n family: \"named\",\n patterns: [\"State Fin. & Proc.\", \"State Finance and Procurement\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gsg\",\n family: \"named\",\n patterns: [\"State Gov't\", \"State Government\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gsp\",\n family: \"named\",\n patterns: [\"State Pers. & Pens.\", \"State Personnel and Pensions\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gtg\",\n family: \"named\",\n patterns: [\"Tax-Gen.\", \"Tax - General\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gtp\",\n family: \"named\",\n patterns: [\"Tax-Prop.\", \"Tax - Property\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gtr\",\n family: \"named\",\n patterns: [\"Transp.\", \"Transportation\"],\n },\n\n // ── Virginia (1 entry) ────────────────────────────────────────────────────\n {\n jurisdiction: \"VA\",\n abbreviation: \"CODE\",\n family: \"named\",\n patterns: [\"Code\", \"Code Ann.\"],\n },\n\n // ── Alabama (1 entry) ─────────────────────────────────────────────────────\n {\n jurisdiction: \"AL\",\n abbreviation: \"CODE\",\n family: \"named\",\n patterns: [\"Code\", \"Code Ann.\"],\n },\n\n // ── Massachusetts (1 entry) ───────────────────────────────────────────────\n {\n jurisdiction: \"MA\",\n abbreviation: \"GL\",\n family: \"named\",\n patterns: [\"Gen. Laws\", \"General Laws\"],\n },\n]\n\n/**\n * Find a CodeEntry by jurisdiction and code name token.\n *\n * Lookup strategy: for each candidate entry in the given jurisdiction,\n * check whether the normalized codeName matches or starts with any of the\n * entry's patterns (case-insensitive). Returns the entry with the longest\n * matching pattern to prefer more specific codes over general ones\n * (e.g., \"Civ. Proc.\" over \"Civ.\").\n *\n * @param jurisdiction - Two-letter state abbreviation (e.g., \"CA\", \"NY\")\n * @param codeName - The code name token to look up (e.g., \"Penal\", \"Civ. Proc.\")\n * @returns Matching CodeEntry, or undefined if not found\n *\n * @example\n * findNamedCode('NY', 'Penal') // → NY PEN entry\n * findNamedCode('CA', 'Civ. Proc.') // → CA CCP entry (not CA CIV)\n * findNamedCode('MD', 'Crim. Law') // → MD gcr entry\n * findNamedCode('NY', 'Unknown') // → undefined\n */\nexport function findNamedCode(jurisdiction: string, codeName: string): CodeEntry | undefined {\n const normalized = codeName.replace(/\\s+/g, \" \").trim().toLowerCase()\n const candidates = _byJurisdiction.get(jurisdiction)\n if (!candidates) return undefined\n\n let bestMatch: CodeEntry | undefined\n let bestLen = 0\n\n for (const { entry, lower } of candidates) {\n if (normalized === lower || normalized.startsWith(lower)) {\n if (lower.length > bestLen) {\n bestMatch = entry\n bestLen = lower.length\n }\n }\n }\n return bestMatch\n}\n\n/**\n * Pre-built index: jurisdiction → array of { entry, lower } for O(1) jurisdiction lookup.\n * Patterns are pre-lowercased to avoid per-call allocations.\n */\nconst _byJurisdiction = new Map<string, Array<{ entry: CodeEntry; lower: string }>>()\nfor (const entry of namedCodes) {\n let arr = _byJurisdiction.get(entry.jurisdiction)\n if (!arr) {\n arr = []\n _byJurisdiction.set(entry.jurisdiction, arr)\n }\n for (const pattern of entry.patterns) {\n arr.push({ entry, lower: pattern.toLowerCase() })\n }\n}\n\n/**\n * Build a case-insensitive lookup index from pattern → CodeEntry.\n * Exact match first; prefix fallback is handled in findAbbreviatedCode.\n */\nconst _byPattern = new Map<string, CodeEntry>()\nfor (const entry of abbreviatedCodes) {\n for (const pattern of entry.patterns) {\n _byPattern.set(pattern.toLowerCase(), entry)\n }\n}\n\n/**\n * Find a CodeEntry by an abbreviated text token.\n *\n * Lookup order:\n * 1. Exact case-insensitive match against all patterns\n * 2. Prefix match — returns the entry whose pattern is the longest\n * prefix of `abbrevText` (handles tokens like \"RCW\" inside longer text)\n *\n * @param abbrevText - The abbreviation token to look up\n * @returns Matching CodeEntry, or undefined if not found\n *\n * @example\n * findAbbreviatedCode('R.C.') // → OH entry\n * findAbbreviatedCode('MCL') // → MI entry\n * findAbbreviatedCode('UNKNOWN') // → undefined\n */\nexport function findAbbreviatedCode(abbrevText: string): CodeEntry | undefined {\n const lower = abbrevText.toLowerCase()\n\n // 1. Exact match\n const exact = _byPattern.get(lower)\n if (exact) return exact\n\n // 2. Prefix fallback — find the longest pattern that is a prefix of abbrevText\n let bestMatch: CodeEntry | undefined\n let bestLen = 0\n for (const [pattern, entry] of _byPattern) {\n if (lower.startsWith(pattern) && pattern.length > bestLen) {\n bestMatch = entry\n bestLen = pattern.length\n }\n }\n return bestMatch\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"knownCodes-MkDSiR1j.mjs","names":[],"sources":["../src/data/knownCodes.ts"],"sourcesContent":["/**\n * Known statutory code registry for abbreviated-code jurisdictions\n *\n * Provides a registry of state statutory codes that use abbreviated\n * citation forms (e.g., \"R.C. § 1.01\", \"MCL 750.83\"). Used by the\n * citation extractor to identify and normalize state statute citations.\n */\n\n/**\n * A single entry in the known codes registry.\n *\n * PA has two entries (Pa.C.S. and P.S.) because it has two distinct\n * code families with separate abbreviation sets.\n */\nexport interface CodeEntry {\n /** Two-letter state abbreviation (e.g., \"OH\", \"MI\") */\n jurisdiction: string\n /** Short canonical abbreviation used internally (e.g., \"RC\", \"MCL\") */\n abbreviation: string\n /** All recognized text patterns that identify this code */\n patterns: string[]\n /** Citation family — determines which citation pattern family this belongs to */\n family: 'federal' | 'named' | 'abbreviated' | 'chapterAct' | 'prose'\n}\n\n/**\n * Registry of state statutory codes that use abbreviated citation forms.\n *\n * Covers 12 jurisdictions. Pennsylvania has two entries because it\n * maintains two distinct code families (Pa.C.S. and P.S.).\n *\n * Note: Short 2-letter patterns (GS, IC, PS, RC, FS) may produce false positives\n * in non-legal text (e.g., \"GS 5\" for government service grade). The extraction\n * layer mitigates this via confidence scoring — citations without a § symbol receive\n * lower confidence (0.85 vs 0.95). Consumers should filter by confidence threshold.\n */\nexport const abbreviatedCodes: CodeEntry[] = [\n {\n jurisdiction: 'FL',\n abbreviation: 'STAT',\n family: 'abbreviated',\n patterns: [\n 'Fla. Stat.', 'Fla Stat', 'Fla. Stat. Ann.', 'F.S.', 'FS',\n ],\n },\n {\n jurisdiction: 'OH',\n abbreviation: 'RC',\n family: 'abbreviated',\n patterns: [\n 'R.C.', 'RC', 'O.R.C.', 'ORC', 'Ohio Rev. Code', 'Ohio Rev. Code Ann.',\n ],\n },\n {\n jurisdiction: 'MI',\n abbreviation: 'MCL',\n family: 'abbreviated',\n patterns: [\n 'MCL', 'M.C.L.', 'Mich. Comp. Laws', 'Mich. Comp. Laws Ann.', 'Mich. Comp. Laws Serv.', 'MCLA', 'MCLS',\n ],\n },\n {\n jurisdiction: 'UT',\n abbreviation: 'UC',\n family: 'abbreviated',\n patterns: [\n 'Utah Code', 'Utah Code Ann.', 'U.C.A.', 'UCA',\n ],\n },\n {\n jurisdiction: 'CO',\n abbreviation: 'CRS',\n family: 'abbreviated',\n patterns: [\n 'C.R.S.', 'CRS', 'Colo. Rev. Stat.', 'Colo. Rev. Stat. Ann.',\n ],\n },\n {\n jurisdiction: 'WA',\n abbreviation: 'RCW',\n family: 'abbreviated',\n patterns: [\n 'RCW', 'Wash. Rev. Code', 'Wash. Rev. Code Ann.',\n ],\n },\n {\n jurisdiction: 'NC',\n abbreviation: 'GS',\n family: 'abbreviated',\n patterns: [\n 'G.S.', 'GS', 'N.C. Gen. Stat.', 'N.C. Gen. Stat. Ann.', 'N.C.G.S.', 'NCGS',\n ],\n },\n {\n jurisdiction: 'GA',\n abbreviation: 'OCGA',\n family: 'abbreviated',\n patterns: [\n 'O.C.G.A.', 'OCGA', 'Ga. Code', 'Ga. Code Ann.',\n ],\n },\n {\n jurisdiction: 'PA',\n abbreviation: 'PaCS',\n family: 'abbreviated',\n patterns: [\n 'Pa.C.S.', 'Pa.C.S.A.', 'Pa. C.S.', 'Pa. C.S.A.', 'Pa. Cons. Stat.',\n ],\n },\n {\n jurisdiction: 'PA',\n abbreviation: 'PS',\n family: 'abbreviated',\n patterns: [\n 'P.S.', 'PS',\n ],\n },\n {\n jurisdiction: 'IN',\n abbreviation: 'IC',\n family: 'abbreviated',\n patterns: [\n 'Ind. Code', 'Ind. Code Ann.', 'Indiana Code', 'Indiana Code Ann.', 'I.C.', 'IC', 'Burns Ind. Code', 'Burns Ind. Code Ann.',\n ],\n },\n {\n jurisdiction: 'NJ',\n abbreviation: 'NJSA',\n family: 'abbreviated',\n patterns: [\n 'N.J.S.A.', 'NJSA', 'N.J.S.', 'NJS',\n ],\n },\n {\n jurisdiction: 'DE',\n abbreviation: 'DelC',\n family: 'abbreviated',\n patterns: [\n 'Del. C.', 'Del C', 'Del. Code', 'Del. Code Ann.',\n ],\n },\n]\n\n/**\n * Registry of state statutory codes that use named-code citation forms.\n *\n * Named-code jurisdictions identify their code by name in citations (e.g.,\n * \"N.Y. Penal Law § 120.05\", \"Cal. Civ. Proc. Code § 437c\"), rather than by\n * a standalone abbreviation. The jurisdiction prefix is handled by the\n * extraction layer; these patterns cover only the code name portion.\n *\n * Ordering note: within each jurisdiction, more specific patterns must come\n * before more general ones (e.g., \"Civ. Proc.\" before \"Civ.\") so that\n * findNamedCode's longest-match wins correctly.\n *\n * Covers 7 jurisdictions: NY (21 entries), CA (29 entries), TX (29 entries),\n * MD (36 entries), VA (1 entry), AL (1 entry), MA (1 entry).\n */\nexport const namedCodes: CodeEntry[] = [\n // ── New York (21 entries) ──────────────────────────────────────────────────\n {\n jurisdiction: 'NY',\n abbreviation: 'CPLR',\n family: 'named',\n patterns: ['C.P.L.R.', 'CPLR', 'Civ. Prac. L. & R.', 'Civil Practice Law & Rules'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'CPL',\n family: 'named',\n patterns: ['Crim. Proc.', 'Criminal Procedure'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'GBS',\n family: 'named',\n patterns: ['Gen. Bus.', 'General Business'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'GOB',\n family: 'named',\n patterns: ['Gen. Oblig.', 'General Obligations'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'PEN',\n family: 'named',\n patterns: ['Penal'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'ISC',\n family: 'named',\n patterns: ['Ins.', 'Insurance'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'LAB',\n family: 'named',\n patterns: ['Lab.', 'Labor'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'RPL',\n family: 'named',\n patterns: ['Real Prop.', 'Real Property'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'EXC',\n family: 'named',\n patterns: ['Exec.', 'Executive'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'JUD',\n family: 'named',\n patterns: ['Jud.', 'Judiciary'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'SCP',\n family: 'named',\n patterns: [\"Surr. Ct. Proc.\", \"Surrogate's Court Procedure\"],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'CVR',\n family: 'named',\n patterns: ['Civ. Rights', 'Civil Rights'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'CVP',\n family: 'named',\n patterns: ['Civ. Prac.', 'Civil Practice'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'EDN',\n family: 'named',\n patterns: ['Educ.', 'Education'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'TAX',\n family: 'named',\n patterns: ['Tax'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'PBH',\n family: 'named',\n patterns: ['Pub. Health', 'Public Health'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'SOS',\n family: 'named',\n patterns: ['Soc. Serv.', 'Social Services'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'ELN',\n family: 'named',\n patterns: ['Elec.', 'Election'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'ENV',\n family: 'named',\n patterns: ['Env. Conserv.', 'Environmental Conservation'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'BNK',\n family: 'named',\n patterns: ['Bank.', 'Banking'],\n },\n {\n jurisdiction: 'NY',\n abbreviation: 'DRL',\n family: 'named',\n patterns: ['Dom. Rel.', 'Domestic Relations'],\n },\n\n // ── California (29 entries) ────────────────────────────────────────────────\n // CRITICAL: more specific patterns must come before general ones\n // (e.g., CCP \"Civ. Proc.\" before CIV \"Civ.\")\n {\n jurisdiction: 'CA',\n abbreviation: 'CCP',\n family: 'named',\n patterns: ['Civ. Proc.', 'Civil Procedure'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'BPC',\n family: 'named',\n patterns: ['Bus. & Prof.', 'Business & Professions'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'HSC',\n family: 'named',\n patterns: ['Health & Saf.', 'Health & Safety'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'RTC',\n family: 'named',\n patterns: ['Rev. & Tax.', 'Revenue & Taxation'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'FGC',\n family: 'named',\n patterns: ['Fish & Game'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'FAC',\n family: 'named',\n patterns: ['Food & Agric.', 'Food & Agricultural'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'HNC',\n family: 'named',\n patterns: ['Harb. & Nav.', 'Harbors & Navigation'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'MVC',\n family: 'named',\n patterns: ['Mil. & Vet.', 'Military & Veterans'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PCC',\n family: 'named',\n patterns: ['Pub. Cont.', 'Public Contract', 'Public Contracts'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PRC',\n family: 'named',\n patterns: ['Pub. Res.', 'Public Resources'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PUC',\n family: 'named',\n patterns: ['Pub. Util.', 'Public Utilities'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'SHC',\n family: 'named',\n patterns: ['Sts. & High.', 'Streets & Highways'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'UIC',\n family: 'named',\n patterns: ['Unemp. Ins.', 'Unemployment Insurance'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'WIC',\n family: 'named',\n patterns: ['Welf. & Inst.', 'Welfare & Institutions'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'CIV',\n family: 'named',\n patterns: ['Civ.', 'Civil'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'COM',\n family: 'named',\n patterns: ['Com.', 'Commercial'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'CORP',\n family: 'named',\n patterns: ['Corp.', 'Corporations'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'EDC',\n family: 'named',\n patterns: ['Educ.', 'Education'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'ELEC',\n family: 'named',\n patterns: ['Elec.', 'Elections'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'EVID',\n family: 'named',\n patterns: ['Evid.', 'Evidence'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'FAM',\n family: 'named',\n patterns: ['Fam.', 'Family'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'FIN',\n family: 'named',\n patterns: ['Fin.', 'Financial'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'GOV',\n family: 'named',\n patterns: ['Gov.', 'Government'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'INS',\n family: 'named',\n patterns: ['Ins.', 'Insurance'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'LAB',\n family: 'named',\n patterns: ['Lab.', 'Labor'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PEN',\n family: 'named',\n patterns: ['Penal'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'PROB',\n family: 'named',\n patterns: ['Prob.', 'Probate'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'VEH',\n family: 'named',\n patterns: ['Veh.', 'Vehicle'],\n },\n {\n jurisdiction: 'CA',\n abbreviation: 'WAT',\n family: 'named',\n patterns: ['Wat.', 'Water'],\n },\n\n // ── Texas (30 entries) ────────────────────────────────────────────────────\n {\n jurisdiction: 'TX',\n abbreviation: 'CP',\n family: 'named',\n patterns: ['Civ. Prac. & Rem.', 'Civil Practice & Remedies'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'CR',\n family: 'named',\n patterns: ['Crim. Proc.', 'Code of Criminal Procedure'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'BC',\n family: 'named',\n patterns: ['Bus. & Com.', 'Business & Commerce'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'BO',\n family: 'named',\n patterns: ['Bus. Org.', 'Business Organizations'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'HS',\n family: 'named',\n patterns: ['Health & Saf.', 'Health & Safety'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'HR',\n family: 'named',\n patterns: ['Human Res.', 'Human Resources'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'LG',\n family: 'named',\n patterns: ['Local Gov.', 'Local Government'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'NR',\n family: 'named',\n patterns: ['Nat. Res.', 'Natural Resources'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'PW',\n family: 'named',\n patterns: ['Parks & Wild.', 'Parks & Wildlife'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'SD',\n family: 'named',\n patterns: ['Spec. Dist.', 'Special District'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'AL',\n family: 'named',\n patterns: ['Alco. Bev.', 'Alcoholic Beverage'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'WL',\n family: 'named',\n patterns: ['Water'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'CV',\n family: 'named',\n patterns: [\"Vernon's Civ. Stat.\", \"Vernon's Civil Statutes\"],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'GV',\n family: 'named',\n patterns: [\"Gov't\", 'Government'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'AG',\n family: 'named',\n patterns: ['Agric.', 'Agriculture'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'ED',\n family: 'named',\n patterns: ['Educ.', 'Education'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'EL',\n family: 'named',\n patterns: ['Elec.', 'Election'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'ES',\n family: 'named',\n patterns: ['Est.', 'Estates'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'FA',\n family: 'named',\n patterns: ['Fam.', 'Family'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'FI',\n family: 'named',\n patterns: ['Fin.', 'Finance'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'IN',\n family: 'named',\n patterns: ['Ins.', 'Insurance'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'LA',\n family: 'named',\n patterns: ['Lab.', 'Labor'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'OC',\n family: 'named',\n patterns: ['Occup.', 'Occupations'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'PE',\n family: 'named',\n patterns: ['Penal'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'PB',\n family: 'named',\n patterns: ['Prob.', 'Probate'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'PR',\n family: 'named',\n patterns: ['Prop.', 'Property'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'TX',\n family: 'named',\n patterns: ['Tax'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'TN',\n family: 'named',\n patterns: ['Transp.', 'Transportation'],\n },\n {\n jurisdiction: 'TX',\n abbreviation: 'UT',\n family: 'named',\n patterns: ['Util.', 'Utilities'],\n },\n\n // ── Maryland (36 entries) ─────────────────────────────────────────────────\n {\n jurisdiction: 'MD',\n abbreviation: 'gag',\n family: 'named',\n patterns: ['Agric.', 'Agriculture'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gab',\n family: 'named',\n patterns: ['Alc. Bev.', 'Alcoholic Beverages and Cannabis'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gbo',\n family: 'named',\n patterns: ['Bus. Occ. & Prof.', 'Business Occupations and Professions'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gbr',\n family: 'named',\n patterns: ['Bus. Reg.', 'Business Regulation'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcl',\n family: 'named',\n patterns: ['Com. Law', 'Commercial Law'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gca',\n family: 'named',\n patterns: [\"Corps. & Ass'ns\", 'Corporations and Associations'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcs',\n family: 'named',\n patterns: ['Corr. Servs.', 'Correctional Services'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcj',\n family: 'named',\n patterns: ['Cts. & Jud. Proc.', 'Courts and Judicial Proceedings'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcr',\n family: 'named',\n patterns: ['Crim. Law', 'Criminal Law'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gcp',\n family: 'named',\n patterns: ['Crim. Proc.', 'Criminal Procedure'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gec',\n family: 'named',\n patterns: ['Econ. Dev.', 'Economic Development'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ged',\n family: 'named',\n patterns: ['Educ.', 'Education'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gel',\n family: 'named',\n patterns: ['Elec. Law', 'Election Law'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gen',\n family: 'named',\n patterns: ['Envir.', 'Environment'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'get',\n family: 'named',\n patterns: ['Est. & Trusts', 'Estates and Trusts'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gfl',\n family: 'named',\n patterns: ['Fam. Law', 'Family Law'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gfi',\n family: 'named',\n patterns: ['Fin. Inst.', 'Financial Institutions'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ggp',\n family: 'named',\n patterns: ['Gen. Prov.', 'General Provisions'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ghg',\n family: 'named',\n patterns: ['Health-Gen.', 'Health - General'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gho',\n family: 'named',\n patterns: ['Health Occ.', 'Health Occupations'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ghs',\n family: 'named',\n patterns: ['Hous. & Cmty. Dev.', 'Housing and Community Development'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'ghu',\n family: 'named',\n patterns: ['Hum. Servs.', 'Human Services'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gin',\n family: 'named',\n patterns: ['Ins.', 'Insurance'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gle',\n family: 'named',\n patterns: ['Lab. & Empl.', 'Labor and Employment'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'glu',\n family: 'named',\n patterns: ['Land Use'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'glg',\n family: 'named',\n patterns: [\"Local Gov't\", 'Local Government'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gnr',\n family: 'named',\n patterns: ['Nat. Res.', 'Natural Resources'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gps',\n family: 'named',\n patterns: ['Pub. Safety', 'Public Safety'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gpu',\n family: 'named',\n patterns: ['PUC', 'Public Utilities'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'grp',\n family: 'named',\n patterns: ['Real Prop.', 'Real Property'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gsf',\n family: 'named',\n patterns: ['State Fin. & Proc.', 'State Finance and Procurement'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gsg',\n family: 'named',\n patterns: [\"State Gov't\", 'State Government'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gsp',\n family: 'named',\n patterns: ['State Pers. & Pens.', 'State Personnel and Pensions'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gtg',\n family: 'named',\n patterns: ['Tax-Gen.', 'Tax - General'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gtp',\n family: 'named',\n patterns: ['Tax-Prop.', 'Tax - Property'],\n },\n {\n jurisdiction: 'MD',\n abbreviation: 'gtr',\n family: 'named',\n patterns: ['Transp.', 'Transportation'],\n },\n\n // ── Virginia (1 entry) ────────────────────────────────────────────────────\n {\n jurisdiction: 'VA',\n abbreviation: 'CODE',\n family: 'named',\n patterns: ['Code', 'Code Ann.'],\n },\n\n // ── Alabama (1 entry) ─────────────────────────────────────────────────────\n {\n jurisdiction: 'AL',\n abbreviation: 'CODE',\n family: 'named',\n patterns: ['Code', 'Code Ann.'],\n },\n\n // ── Massachusetts (1 entry) ───────────────────────────────────────────────\n {\n jurisdiction: 'MA',\n abbreviation: 'GL',\n family: 'named',\n patterns: ['Gen. Laws', 'General Laws'],\n },\n]\n\n/**\n * Find a CodeEntry by jurisdiction and code name token.\n *\n * Lookup strategy: for each candidate entry in the given jurisdiction,\n * check whether the normalized codeName matches or starts with any of the\n * entry's patterns (case-insensitive). Returns the entry with the longest\n * matching pattern to prefer more specific codes over general ones\n * (e.g., \"Civ. Proc.\" over \"Civ.\").\n *\n * @param jurisdiction - Two-letter state abbreviation (e.g., \"CA\", \"NY\")\n * @param codeName - The code name token to look up (e.g., \"Penal\", \"Civ. Proc.\")\n * @returns Matching CodeEntry, or undefined if not found\n *\n * @example\n * findNamedCode('NY', 'Penal') // → NY PEN entry\n * findNamedCode('CA', 'Civ. Proc.') // → CA CCP entry (not CA CIV)\n * findNamedCode('MD', 'Crim. Law') // → MD gcr entry\n * findNamedCode('NY', 'Unknown') // → undefined\n */\nexport function findNamedCode(jurisdiction: string, codeName: string): CodeEntry | undefined {\n const normalized = codeName.replace(/\\s+/g, ' ').trim().toLowerCase()\n const candidates = _byJurisdiction.get(jurisdiction)\n if (!candidates) return undefined\n\n let bestMatch: CodeEntry | undefined\n let bestLen = 0\n\n for (const { entry, lower } of candidates) {\n if (normalized === lower || normalized.startsWith(lower)) {\n if (lower.length > bestLen) {\n bestMatch = entry\n bestLen = lower.length\n }\n }\n }\n return bestMatch\n}\n\n/**\n * Pre-built index: jurisdiction → array of { entry, lower } for O(1) jurisdiction lookup.\n * Patterns are pre-lowercased to avoid per-call allocations.\n */\nconst _byJurisdiction = new Map<string, Array<{ entry: CodeEntry; lower: string }>>()\nfor (const entry of namedCodes) {\n let arr = _byJurisdiction.get(entry.jurisdiction)\n if (!arr) {\n arr = []\n _byJurisdiction.set(entry.jurisdiction, arr)\n }\n for (const pattern of entry.patterns) {\n arr.push({ entry, lower: pattern.toLowerCase() })\n }\n}\n\n/**\n * Build a case-insensitive lookup index from pattern → CodeEntry.\n * Exact match first; prefix fallback is handled in findAbbreviatedCode.\n */\nconst _byPattern = new Map<string, CodeEntry>()\nfor (const entry of abbreviatedCodes) {\n for (const pattern of entry.patterns) {\n _byPattern.set(pattern.toLowerCase(), entry)\n }\n}\n\n/**\n * Find a CodeEntry by an abbreviated text token.\n *\n * Lookup order:\n * 1. Exact case-insensitive match against all patterns\n * 2. Prefix match — returns the entry whose pattern is the longest\n * prefix of `abbrevText` (handles tokens like \"RCW\" inside longer text)\n *\n * @param abbrevText - The abbreviation token to look up\n * @returns Matching CodeEntry, or undefined if not found\n *\n * @example\n * findAbbreviatedCode('R.C.') // → OH entry\n * findAbbreviatedCode('MCL') // → MI entry\n * findAbbreviatedCode('UNKNOWN') // → undefined\n */\nexport function findAbbreviatedCode(abbrevText: string): CodeEntry | undefined {\n const lower = abbrevText.toLowerCase()\n\n // 1. Exact match\n const exact = _byPattern.get(lower)\n if (exact) return exact\n\n // 2. Prefix fallback — find the longest pattern that is a prefix of abbrevText\n let bestMatch: CodeEntry | undefined\n let bestLen = 0\n for (const [pattern, entry] of _byPattern) {\n if (lower.startsWith(pattern) && pattern.length > bestLen) {\n bestMatch = entry\n bestLen = pattern.length\n }\n }\n return bestMatch\n}\n"],"mappings":"AAoCA,MAAa,EAAgC,CAC3C,CACE,aAAc,KACd,aAAc,OACd,OAAQ,cACR,SAAU,CACR,aAAc,WAAY,kBAAmB,OAAQ,KACtD,CACF,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,cACR,SAAU,CACR,OAAQ,KAAM,SAAU,MAAO,iBAAkB,sBAClD,CACF,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,cACR,SAAU,CACR,MAAO,SAAU,mBAAoB,wBAAyB,yBAA0B,OAAQ,OACjG,CACF,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,cACR,SAAU,CACR,YAAa,iBAAkB,SAAU,MAC1C,CACF,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,cACR,SAAU,CACR,SAAU,MAAO,mBAAoB,wBACtC,CACF,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,cACR,SAAU,CACR,MAAO,kBAAmB,uBAC3B,CACF,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,cACR,SAAU,CACR,OAAQ,KAAM,kBAAmB,uBAAwB,WAAY,OACtE,CACF,CACD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,cACR,SAAU,CACR,WAAY,OAAQ,WAAY,gBACjC,CACF,CACD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,cACR,SAAU,CACR,UAAW,YAAa,WAAY,aAAc,kBACnD,CACF,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,cACR,SAAU,CACR,OAAQ,KACT,CACF,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,cACR,SAAU,CACR,YAAa,iBAAkB,eAAgB,oBAAqB,OAAQ,KAAM,kBAAmB,uBACtG,CACF,CACD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,cACR,SAAU,CACR,WAAY,OAAQ,SAAU,MAC/B,CACF,CACD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,cACR,SAAU,CACR,UAAW,QAAS,YAAa,iBAClC,CACF,CACF,CAiBY,EAA0B,CAErC,CACE,aAAc,KACd,aAAc,OACd,OAAQ,QACR,SAAU,CAAC,WAAY,OAAQ,qBAAsB,6BAA6B,CACnF,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,qBAAqB,CAChD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,YAAa,mBAAmB,CAC5C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,sBAAsB,CACjD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,QAAQ,CACpB,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,YAAY,CAChC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,QAAQ,CAC5B,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,gBAAgB,CAC1C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,QAAS,YAAY,CACjC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,YAAY,CAChC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,kBAAmB,8BAA8B,CAC7D,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,eAAe,CAC1C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,iBAAiB,CAC3C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,QAAS,YAAY,CACjC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,MAAM,CAClB,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,gBAAgB,CAC3C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,kBAAkB,CAC5C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,QAAS,WAAW,CAChC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,gBAAiB,6BAA6B,CAC1D,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,QAAS,UAAU,CAC/B,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,YAAa,qBAAqB,CAC9C,CAKD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,kBAAkB,CAC5C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,eAAgB,yBAAyB,CACrD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,gBAAiB,kBAAkB,CAC/C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,qBAAqB,CAChD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAc,CAC1B,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,gBAAiB,sBAAsB,CACnD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,eAAgB,uBAAuB,CACnD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,sBAAsB,CACjD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,kBAAmB,mBAAmB,CAChE,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,YAAa,mBAAmB,CAC5C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,mBAAmB,CAC7C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,eAAgB,qBAAqB,CACjD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,yBAAyB,CACpD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,gBAAiB,yBAAyB,CACtD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,QAAQ,CAC5B,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,aAAa,CACjC,CACD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,QACR,SAAU,CAAC,QAAS,eAAe,CACpC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,QAAS,YAAY,CACjC,CACD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,QACR,SAAU,CAAC,QAAS,YAAY,CACjC,CACD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,QACR,SAAU,CAAC,QAAS,WAAW,CAChC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,SAAS,CAC7B,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,YAAY,CAChC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,aAAa,CACjC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,YAAY,CAChC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,QAAQ,CAC5B,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,QAAQ,CACpB,CACD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,QACR,SAAU,CAAC,QAAS,UAAU,CAC/B,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,UAAU,CAC9B,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,QAAQ,CAC5B,CAGD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,oBAAqB,4BAA4B,CAC7D,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,cAAe,6BAA6B,CACxD,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,cAAe,sBAAsB,CACjD,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,YAAa,yBAAyB,CAClD,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,gBAAiB,kBAAkB,CAC/C,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,aAAc,kBAAkB,CAC5C,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,aAAc,mBAAmB,CAC7C,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,YAAa,oBAAoB,CAC7C,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,gBAAiB,mBAAmB,CAChD,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,cAAe,mBAAmB,CAC9C,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,aAAc,qBAAqB,CAC/C,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,QAAQ,CACpB,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,sBAAuB,0BAA0B,CAC7D,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,QAAS,aAAa,CAClC,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,SAAU,cAAc,CACpC,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,QAAS,YAAY,CACjC,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,QAAS,WAAW,CAChC,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,OAAQ,UAAU,CAC9B,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,OAAQ,SAAS,CAC7B,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,OAAQ,UAAU,CAC9B,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,OAAQ,YAAY,CAChC,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,OAAQ,QAAQ,CAC5B,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,SAAU,cAAc,CACpC,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,QAAQ,CACpB,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,QAAS,UAAU,CAC/B,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,QAAS,WAAW,CAChC,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,MAAM,CAClB,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,UAAW,iBAAiB,CACxC,CACD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,QAAS,YAAY,CACjC,CAGD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,SAAU,cAAc,CACpC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,YAAa,mCAAmC,CAC5D,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,oBAAqB,uCAAuC,CACxE,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,YAAa,sBAAsB,CAC/C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,WAAY,iBAAiB,CACzC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,kBAAmB,gCAAgC,CAC/D,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,eAAgB,wBAAwB,CACpD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,oBAAqB,kCAAkC,CACnE,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,YAAa,eAAe,CACxC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,qBAAqB,CAChD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,uBAAuB,CACjD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,QAAS,YAAY,CACjC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,YAAa,eAAe,CACxC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,SAAU,cAAc,CACpC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,gBAAiB,qBAAqB,CAClD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,WAAY,aAAa,CACrC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,yBAAyB,CACnD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,qBAAqB,CAC/C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,mBAAmB,CAC9C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,qBAAqB,CAChD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,qBAAsB,oCAAoC,CACtE,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,iBAAiB,CAC5C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,OAAQ,YAAY,CAChC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,eAAgB,uBAAuB,CACnD,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,WAAW,CACvB,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,mBAAmB,CAC9C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,YAAa,oBAAoB,CAC7C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,gBAAgB,CAC3C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,MAAO,mBAAmB,CACtC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,aAAc,gBAAgB,CAC1C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,qBAAsB,gCAAgC,CAClE,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,cAAe,mBAAmB,CAC9C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,sBAAuB,+BAA+B,CAClE,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,WAAY,gBAAgB,CACxC,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,YAAa,iBAAiB,CAC1C,CACD,CACE,aAAc,KACd,aAAc,MACd,OAAQ,QACR,SAAU,CAAC,UAAW,iBAAiB,CACxC,CAGD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,QACR,SAAU,CAAC,OAAQ,YAAY,CAChC,CAGD,CACE,aAAc,KACd,aAAc,OACd,OAAQ,QACR,SAAU,CAAC,OAAQ,YAAY,CAChC,CAGD,CACE,aAAc,KACd,aAAc,KACd,OAAQ,QACR,SAAU,CAAC,YAAa,eAAe,CACxC,CACF,CAqBD,SAAgB,EAAc,EAAsB,EAAyC,CAC3F,IAAM,EAAa,EAAS,QAAQ,OAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAC/D,EAAa,EAAgB,IAAI,EAAa,CACpD,GAAI,CAAC,EAAY,OAEjB,IAAI,EACA,EAAU,EAEd,IAAK,GAAM,CAAE,QAAO,WAAW,GACzB,IAAe,GAAS,EAAW,WAAW,EAAM,GAClD,EAAM,OAAS,IACjB,EAAY,EACZ,EAAU,EAAM,QAItB,OAAO,EAOT,MAAM,EAAkB,IAAI,IAC5B,IAAK,IAAM,KAAS,EAAY,CAC9B,IAAI,EAAM,EAAgB,IAAI,EAAM,aAAa,CAC5C,IACH,EAAM,EAAE,CACR,EAAgB,IAAI,EAAM,aAAc,EAAI,EAE9C,IAAK,IAAM,KAAW,EAAM,SAC1B,EAAI,KAAK,CAAE,QAAO,MAAO,EAAQ,aAAa,CAAE,CAAC,CAQrD,MAAM,EAAa,IAAI,IACvB,IAAK,IAAM,KAAS,EAClB,IAAK,IAAM,KAAW,EAAM,SAC1B,EAAW,IAAI,EAAQ,aAAa,CAAE,EAAM,CAoBhD,SAAgB,EAAoB,EAA2C,CAC7E,IAAM,EAAQ,EAAW,aAAa,CAGhC,EAAQ,EAAW,IAAI,EAAM,CACnC,GAAI,EAAO,OAAO,EAGlB,IAAI,EACA,EAAU,EACd,IAAK,GAAM,CAAC,EAAS,KAAU,EACzB,EAAM,WAAW,EAAQ,EAAI,EAAQ,OAAS,IAChD,EAAY,EACZ,EAAU,EAAQ,QAGtB,OAAO"}
1
+ {"version":3,"file":"knownCodes-MkDSiR1j.mjs","names":[],"sources":["../src/data/knownCodes.ts"],"sourcesContent":["/**\n * Known statutory code registry for abbreviated-code jurisdictions\n *\n * Provides a registry of state statutory codes that use abbreviated\n * citation forms (e.g., \"R.C. § 1.01\", \"MCL 750.83\"). Used by the\n * citation extractor to identify and normalize state statute citations.\n */\n\n/**\n * A single entry in the known codes registry.\n *\n * PA has two entries (Pa.C.S. and P.S.) because it has two distinct\n * code families with separate abbreviation sets.\n */\nexport interface CodeEntry {\n /** Two-letter state abbreviation (e.g., \"OH\", \"MI\") */\n jurisdiction: string\n /** Short canonical abbreviation used internally (e.g., \"RC\", \"MCL\") */\n abbreviation: string\n /** All recognized text patterns that identify this code */\n patterns: string[]\n /** Citation family — determines which citation pattern family this belongs to */\n family: \"federal\" | \"named\" | \"abbreviated\" | \"chapterAct\" | \"prose\"\n}\n\n/**\n * Registry of state statutory codes that use abbreviated citation forms.\n *\n * Covers 12 jurisdictions. Pennsylvania has two entries because it\n * maintains two distinct code families (Pa.C.S. and P.S.).\n *\n * Note: Short 2-letter patterns (GS, IC, PS, RC, FS) may produce false positives\n * in non-legal text (e.g., \"GS 5\" for government service grade). The extraction\n * layer mitigates this via confidence scoring — citations without a § symbol receive\n * lower confidence (0.85 vs 0.95). Consumers should filter by confidence threshold.\n */\nexport const abbreviatedCodes: CodeEntry[] = [\n {\n jurisdiction: \"FL\",\n abbreviation: \"STAT\",\n family: \"abbreviated\",\n patterns: [\"Fla. Stat.\", \"Fla Stat\", \"Fla. Stat. Ann.\", \"F.S.\", \"FS\"],\n },\n {\n jurisdiction: \"OH\",\n abbreviation: \"RC\",\n family: \"abbreviated\",\n patterns: [\"R.C.\", \"RC\", \"O.R.C.\", \"ORC\", \"Ohio Rev. Code\", \"Ohio Rev. Code Ann.\"],\n },\n {\n jurisdiction: \"MI\",\n abbreviation: \"MCL\",\n family: \"abbreviated\",\n patterns: [\n \"MCL\",\n \"M.C.L.\",\n \"Mich. Comp. Laws\",\n \"Mich. Comp. Laws Ann.\",\n \"Mich. Comp. Laws Serv.\",\n \"MCLA\",\n \"MCLS\",\n ],\n },\n {\n jurisdiction: \"UT\",\n abbreviation: \"UC\",\n family: \"abbreviated\",\n patterns: [\"Utah Code\", \"Utah Code Ann.\", \"U.C.A.\", \"UCA\"],\n },\n {\n jurisdiction: \"CO\",\n abbreviation: \"CRS\",\n family: \"abbreviated\",\n patterns: [\"C.R.S.\", \"CRS\", \"Colo. Rev. Stat.\", \"Colo. Rev. Stat. Ann.\"],\n },\n {\n jurisdiction: \"WA\",\n abbreviation: \"RCW\",\n family: \"abbreviated\",\n patterns: [\"RCW\", \"Wash. Rev. Code\", \"Wash. Rev. Code Ann.\"],\n },\n {\n jurisdiction: \"NC\",\n abbreviation: \"GS\",\n family: \"abbreviated\",\n patterns: [\"G.S.\", \"GS\", \"N.C. Gen. Stat.\", \"N.C. Gen. Stat. Ann.\", \"N.C.G.S.\", \"NCGS\"],\n },\n {\n jurisdiction: \"GA\",\n abbreviation: \"OCGA\",\n family: \"abbreviated\",\n patterns: [\"O.C.G.A.\", \"OCGA\", \"Ga. Code\", \"Ga. Code Ann.\"],\n },\n {\n jurisdiction: \"PA\",\n abbreviation: \"PaCS\",\n family: \"abbreviated\",\n patterns: [\"Pa.C.S.\", \"Pa.C.S.A.\", \"Pa. C.S.\", \"Pa. C.S.A.\", \"Pa. Cons. Stat.\"],\n },\n {\n jurisdiction: \"PA\",\n abbreviation: \"PS\",\n family: \"abbreviated\",\n patterns: [\"P.S.\", \"PS\"],\n },\n {\n jurisdiction: \"IN\",\n abbreviation: \"IC\",\n family: \"abbreviated\",\n patterns: [\n \"Ind. Code\",\n \"Ind. Code Ann.\",\n \"Indiana Code\",\n \"Indiana Code Ann.\",\n \"I.C.\",\n \"IC\",\n \"Burns Ind. Code\",\n \"Burns Ind. Code Ann.\",\n ],\n },\n {\n jurisdiction: \"NJ\",\n abbreviation: \"NJSA\",\n family: \"abbreviated\",\n patterns: [\"N.J.S.A.\", \"NJSA\", \"N.J.S.\", \"NJS\"],\n },\n {\n jurisdiction: \"DE\",\n abbreviation: \"DelC\",\n family: \"abbreviated\",\n patterns: [\"Del. C.\", \"Del C\", \"Del. Code\", \"Del. Code Ann.\"],\n },\n]\n\n/**\n * Registry of state statutory codes that use named-code citation forms.\n *\n * Named-code jurisdictions identify their code by name in citations (e.g.,\n * \"N.Y. Penal Law § 120.05\", \"Cal. Civ. Proc. Code § 437c\"), rather than by\n * a standalone abbreviation. The jurisdiction prefix is handled by the\n * extraction layer; these patterns cover only the code name portion.\n *\n * Ordering note: within each jurisdiction, more specific patterns must come\n * before more general ones (e.g., \"Civ. Proc.\" before \"Civ.\") so that\n * findNamedCode's longest-match wins correctly.\n *\n * Covers 7 jurisdictions: NY (21 entries), CA (29 entries), TX (29 entries),\n * MD (36 entries), VA (1 entry), AL (1 entry), MA (1 entry).\n */\nexport const namedCodes: CodeEntry[] = [\n // ── New York (21 entries) ──────────────────────────────────────────────────\n {\n jurisdiction: \"NY\",\n abbreviation: \"CPLR\",\n family: \"named\",\n patterns: [\"C.P.L.R.\", \"CPLR\", \"Civ. Prac. L. & R.\", \"Civil Practice Law & Rules\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"CPL\",\n family: \"named\",\n patterns: [\"Crim. Proc.\", \"Criminal Procedure\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"GBS\",\n family: \"named\",\n patterns: [\"Gen. Bus.\", \"General Business\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"GOB\",\n family: \"named\",\n patterns: [\"Gen. Oblig.\", \"General Obligations\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"PEN\",\n family: \"named\",\n patterns: [\"Penal\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"ISC\",\n family: \"named\",\n patterns: [\"Ins.\", \"Insurance\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"LAB\",\n family: \"named\",\n patterns: [\"Lab.\", \"Labor\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"RPL\",\n family: \"named\",\n patterns: [\"Real Prop.\", \"Real Property\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"EXC\",\n family: \"named\",\n patterns: [\"Exec.\", \"Executive\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"JUD\",\n family: \"named\",\n patterns: [\"Jud.\", \"Judiciary\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"SCP\",\n family: \"named\",\n patterns: [\"Surr. Ct. Proc.\", \"Surrogate's Court Procedure\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"CVR\",\n family: \"named\",\n patterns: [\"Civ. Rights\", \"Civil Rights\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"CVP\",\n family: \"named\",\n patterns: [\"Civ. Prac.\", \"Civil Practice\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"EDN\",\n family: \"named\",\n patterns: [\"Educ.\", \"Education\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"TAX\",\n family: \"named\",\n patterns: [\"Tax\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"PBH\",\n family: \"named\",\n patterns: [\"Pub. Health\", \"Public Health\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"SOS\",\n family: \"named\",\n patterns: [\"Soc. Serv.\", \"Social Services\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"ELN\",\n family: \"named\",\n patterns: [\"Elec.\", \"Election\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"ENV\",\n family: \"named\",\n patterns: [\"Env. Conserv.\", \"Environmental Conservation\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"BNK\",\n family: \"named\",\n patterns: [\"Bank.\", \"Banking\"],\n },\n {\n jurisdiction: \"NY\",\n abbreviation: \"DRL\",\n family: \"named\",\n patterns: [\"Dom. Rel.\", \"Domestic Relations\"],\n },\n\n // ── California (29 entries) ────────────────────────────────────────────────\n // CRITICAL: more specific patterns must come before general ones\n // (e.g., CCP \"Civ. Proc.\" before CIV \"Civ.\")\n {\n jurisdiction: \"CA\",\n abbreviation: \"CCP\",\n family: \"named\",\n patterns: [\"Civ. Proc.\", \"Civil Procedure\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"BPC\",\n family: \"named\",\n patterns: [\"Bus. & Prof.\", \"Business & Professions\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"HSC\",\n family: \"named\",\n patterns: [\"Health & Saf.\", \"Health & Safety\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"RTC\",\n family: \"named\",\n patterns: [\"Rev. & Tax.\", \"Revenue & Taxation\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"FGC\",\n family: \"named\",\n patterns: [\"Fish & Game\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"FAC\",\n family: \"named\",\n patterns: [\"Food & Agric.\", \"Food & Agricultural\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"HNC\",\n family: \"named\",\n patterns: [\"Harb. & Nav.\", \"Harbors & Navigation\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"MVC\",\n family: \"named\",\n patterns: [\"Mil. & Vet.\", \"Military & Veterans\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PCC\",\n family: \"named\",\n patterns: [\"Pub. Cont.\", \"Public Contract\", \"Public Contracts\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PRC\",\n family: \"named\",\n patterns: [\"Pub. Res.\", \"Public Resources\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PUC\",\n family: \"named\",\n patterns: [\"Pub. Util.\", \"Public Utilities\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"SHC\",\n family: \"named\",\n patterns: [\"Sts. & High.\", \"Streets & Highways\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"UIC\",\n family: \"named\",\n patterns: [\"Unemp. Ins.\", \"Unemployment Insurance\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"WIC\",\n family: \"named\",\n patterns: [\"Welf. & Inst.\", \"Welfare & Institutions\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"CIV\",\n family: \"named\",\n patterns: [\"Civ.\", \"Civil\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"COM\",\n family: \"named\",\n patterns: [\"Com.\", \"Commercial\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"CORP\",\n family: \"named\",\n patterns: [\"Corp.\", \"Corporations\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"EDC\",\n family: \"named\",\n patterns: [\"Educ.\", \"Education\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"ELEC\",\n family: \"named\",\n patterns: [\"Elec.\", \"Elections\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"EVID\",\n family: \"named\",\n patterns: [\"Evid.\", \"Evidence\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"FAM\",\n family: \"named\",\n patterns: [\"Fam.\", \"Family\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"FIN\",\n family: \"named\",\n patterns: [\"Fin.\", \"Financial\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"GOV\",\n family: \"named\",\n patterns: [\"Gov.\", \"Government\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"INS\",\n family: \"named\",\n patterns: [\"Ins.\", \"Insurance\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"LAB\",\n family: \"named\",\n patterns: [\"Lab.\", \"Labor\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PEN\",\n family: \"named\",\n patterns: [\"Penal\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"PROB\",\n family: \"named\",\n patterns: [\"Prob.\", \"Probate\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"VEH\",\n family: \"named\",\n patterns: [\"Veh.\", \"Vehicle\"],\n },\n {\n jurisdiction: \"CA\",\n abbreviation: \"WAT\",\n family: \"named\",\n patterns: [\"Wat.\", \"Water\"],\n },\n\n // ── Texas (30 entries) ────────────────────────────────────────────────────\n {\n jurisdiction: \"TX\",\n abbreviation: \"CP\",\n family: \"named\",\n patterns: [\"Civ. Prac. & Rem.\", \"Civil Practice & Remedies\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"CR\",\n family: \"named\",\n patterns: [\"Crim. Proc.\", \"Code of Criminal Procedure\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"BC\",\n family: \"named\",\n patterns: [\"Bus. & Com.\", \"Business & Commerce\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"BO\",\n family: \"named\",\n patterns: [\"Bus. Org.\", \"Business Organizations\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"HS\",\n family: \"named\",\n patterns: [\"Health & Saf.\", \"Health & Safety\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"HR\",\n family: \"named\",\n patterns: [\"Human Res.\", \"Human Resources\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"LG\",\n family: \"named\",\n patterns: [\"Local Gov.\", \"Local Government\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"NR\",\n family: \"named\",\n patterns: [\"Nat. Res.\", \"Natural Resources\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"PW\",\n family: \"named\",\n patterns: [\"Parks & Wild.\", \"Parks & Wildlife\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"SD\",\n family: \"named\",\n patterns: [\"Spec. Dist.\", \"Special District\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"AL\",\n family: \"named\",\n patterns: [\"Alco. Bev.\", \"Alcoholic Beverage\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"WL\",\n family: \"named\",\n patterns: [\"Water\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"CV\",\n family: \"named\",\n patterns: [\"Vernon's Civ. Stat.\", \"Vernon's Civil Statutes\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"GV\",\n family: \"named\",\n patterns: [\"Gov't\", \"Government\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"AG\",\n family: \"named\",\n patterns: [\"Agric.\", \"Agriculture\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"ED\",\n family: \"named\",\n patterns: [\"Educ.\", \"Education\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"EL\",\n family: \"named\",\n patterns: [\"Elec.\", \"Election\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"ES\",\n family: \"named\",\n patterns: [\"Est.\", \"Estates\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"FA\",\n family: \"named\",\n patterns: [\"Fam.\", \"Family\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"FI\",\n family: \"named\",\n patterns: [\"Fin.\", \"Finance\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"IN\",\n family: \"named\",\n patterns: [\"Ins.\", \"Insurance\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"LA\",\n family: \"named\",\n patterns: [\"Lab.\", \"Labor\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"OC\",\n family: \"named\",\n patterns: [\"Occup.\", \"Occupations\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"PE\",\n family: \"named\",\n patterns: [\"Penal\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"PB\",\n family: \"named\",\n patterns: [\"Prob.\", \"Probate\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"PR\",\n family: \"named\",\n patterns: [\"Prop.\", \"Property\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"TX\",\n family: \"named\",\n patterns: [\"Tax\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"TN\",\n family: \"named\",\n patterns: [\"Transp.\", \"Transportation\"],\n },\n {\n jurisdiction: \"TX\",\n abbreviation: \"UT\",\n family: \"named\",\n patterns: [\"Util.\", \"Utilities\"],\n },\n\n // ── Maryland (36 entries) ─────────────────────────────────────────────────\n {\n jurisdiction: \"MD\",\n abbreviation: \"gag\",\n family: \"named\",\n patterns: [\"Agric.\", \"Agriculture\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gab\",\n family: \"named\",\n patterns: [\"Alc. Bev.\", \"Alcoholic Beverages and Cannabis\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gbo\",\n family: \"named\",\n patterns: [\"Bus. Occ. & Prof.\", \"Business Occupations and Professions\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gbr\",\n family: \"named\",\n patterns: [\"Bus. Reg.\", \"Business Regulation\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcl\",\n family: \"named\",\n patterns: [\"Com. Law\", \"Commercial Law\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gca\",\n family: \"named\",\n patterns: [\"Corps. & Ass'ns\", \"Corporations and Associations\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcs\",\n family: \"named\",\n patterns: [\"Corr. Servs.\", \"Correctional Services\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcj\",\n family: \"named\",\n patterns: [\"Cts. & Jud. Proc.\", \"Courts and Judicial Proceedings\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcr\",\n family: \"named\",\n patterns: [\"Crim. Law\", \"Criminal Law\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gcp\",\n family: \"named\",\n patterns: [\"Crim. Proc.\", \"Criminal Procedure\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gec\",\n family: \"named\",\n patterns: [\"Econ. Dev.\", \"Economic Development\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ged\",\n family: \"named\",\n patterns: [\"Educ.\", \"Education\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gel\",\n family: \"named\",\n patterns: [\"Elec. Law\", \"Election Law\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gen\",\n family: \"named\",\n patterns: [\"Envir.\", \"Environment\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"get\",\n family: \"named\",\n patterns: [\"Est. & Trusts\", \"Estates and Trusts\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gfl\",\n family: \"named\",\n patterns: [\"Fam. Law\", \"Family Law\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gfi\",\n family: \"named\",\n patterns: [\"Fin. Inst.\", \"Financial Institutions\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ggp\",\n family: \"named\",\n patterns: [\"Gen. Prov.\", \"General Provisions\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ghg\",\n family: \"named\",\n patterns: [\"Health-Gen.\", \"Health - General\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gho\",\n family: \"named\",\n patterns: [\"Health Occ.\", \"Health Occupations\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ghs\",\n family: \"named\",\n patterns: [\"Hous. & Cmty. Dev.\", \"Housing and Community Development\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"ghu\",\n family: \"named\",\n patterns: [\"Hum. Servs.\", \"Human Services\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gin\",\n family: \"named\",\n patterns: [\"Ins.\", \"Insurance\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gle\",\n family: \"named\",\n patterns: [\"Lab. & Empl.\", \"Labor and Employment\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"glu\",\n family: \"named\",\n patterns: [\"Land Use\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"glg\",\n family: \"named\",\n patterns: [\"Local Gov't\", \"Local Government\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gnr\",\n family: \"named\",\n patterns: [\"Nat. Res.\", \"Natural Resources\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gps\",\n family: \"named\",\n patterns: [\"Pub. Safety\", \"Public Safety\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gpu\",\n family: \"named\",\n patterns: [\"PUC\", \"Public Utilities\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"grp\",\n family: \"named\",\n patterns: [\"Real Prop.\", \"Real Property\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gsf\",\n family: \"named\",\n patterns: [\"State Fin. & Proc.\", \"State Finance and Procurement\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gsg\",\n family: \"named\",\n patterns: [\"State Gov't\", \"State Government\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gsp\",\n family: \"named\",\n patterns: [\"State Pers. & Pens.\", \"State Personnel and Pensions\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gtg\",\n family: \"named\",\n patterns: [\"Tax-Gen.\", \"Tax - General\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gtp\",\n family: \"named\",\n patterns: [\"Tax-Prop.\", \"Tax - Property\"],\n },\n {\n jurisdiction: \"MD\",\n abbreviation: \"gtr\",\n family: \"named\",\n patterns: [\"Transp.\", \"Transportation\"],\n },\n\n // ── Virginia (1 entry) ────────────────────────────────────────────────────\n {\n jurisdiction: \"VA\",\n abbreviation: \"CODE\",\n family: \"named\",\n patterns: [\"Code\", \"Code Ann.\"],\n },\n\n // ── Alabama (1 entry) ─────────────────────────────────────────────────────\n {\n jurisdiction: \"AL\",\n abbreviation: \"CODE\",\n family: \"named\",\n patterns: [\"Code\", \"Code Ann.\"],\n },\n\n // ── Massachusetts (1 entry) ───────────────────────────────────────────────\n {\n jurisdiction: \"MA\",\n abbreviation: \"GL\",\n family: \"named\",\n patterns: [\"Gen. Laws\", \"General Laws\"],\n },\n]\n\n/**\n * Find a CodeEntry by jurisdiction and code name token.\n *\n * Lookup strategy: for each candidate entry in the given jurisdiction,\n * check whether the normalized codeName matches or starts with any of the\n * entry's patterns (case-insensitive). Returns the entry with the longest\n * matching pattern to prefer more specific codes over general ones\n * (e.g., \"Civ. Proc.\" over \"Civ.\").\n *\n * @param jurisdiction - Two-letter state abbreviation (e.g., \"CA\", \"NY\")\n * @param codeName - The code name token to look up (e.g., \"Penal\", \"Civ. Proc.\")\n * @returns Matching CodeEntry, or undefined if not found\n *\n * @example\n * findNamedCode('NY', 'Penal') // → NY PEN entry\n * findNamedCode('CA', 'Civ. Proc.') // → CA CCP entry (not CA CIV)\n * findNamedCode('MD', 'Crim. Law') // → MD gcr entry\n * findNamedCode('NY', 'Unknown') // → undefined\n */\nexport function findNamedCode(jurisdiction: string, codeName: string): CodeEntry | undefined {\n const normalized = codeName.replace(/\\s+/g, \" \").trim().toLowerCase()\n const candidates = _byJurisdiction.get(jurisdiction)\n if (!candidates) return undefined\n\n let bestMatch: CodeEntry | undefined\n let bestLen = 0\n\n for (const { entry, lower } of candidates) {\n if (normalized === lower || normalized.startsWith(lower)) {\n if (lower.length > bestLen) {\n bestMatch = entry\n bestLen = lower.length\n }\n }\n }\n return bestMatch\n}\n\n/**\n * Pre-built index: jurisdiction → array of { entry, lower } for O(1) jurisdiction lookup.\n * Patterns are pre-lowercased to avoid per-call allocations.\n */\nconst _byJurisdiction = new Map<string, Array<{ entry: CodeEntry; lower: string }>>()\nfor (const entry of namedCodes) {\n let arr = _byJurisdiction.get(entry.jurisdiction)\n if (!arr) {\n arr = []\n _byJurisdiction.set(entry.jurisdiction, arr)\n }\n for (const pattern of entry.patterns) {\n arr.push({ entry, lower: pattern.toLowerCase() })\n }\n}\n\n/**\n * Build a case-insensitive lookup index from pattern → CodeEntry.\n * Exact match first; prefix fallback is handled in findAbbreviatedCode.\n */\nconst _byPattern = new Map<string, CodeEntry>()\nfor (const entry of abbreviatedCodes) {\n for (const pattern of entry.patterns) {\n _byPattern.set(pattern.toLowerCase(), entry)\n }\n}\n\n/**\n * Find a CodeEntry by an abbreviated text token.\n *\n * Lookup order:\n * 1. Exact case-insensitive match against all patterns\n * 2. Prefix match — returns the entry whose pattern is the longest\n * prefix of `abbrevText` (handles tokens like \"RCW\" inside longer text)\n *\n * @param abbrevText - The abbreviation token to look up\n * @returns Matching CodeEntry, or undefined if not found\n *\n * @example\n * findAbbreviatedCode('R.C.') // → OH entry\n * findAbbreviatedCode('MCL') // → MI entry\n * findAbbreviatedCode('UNKNOWN') // → undefined\n */\nexport function findAbbreviatedCode(abbrevText: string): CodeEntry | undefined {\n const lower = abbrevText.toLowerCase()\n\n // 1. Exact match\n const exact = _byPattern.get(lower)\n if (exact) return exact\n\n // 2. Prefix fallback — find the longest pattern that is a prefix of abbrevText\n let bestMatch: CodeEntry | undefined\n let bestLen = 0\n for (const [pattern, entry] of _byPattern) {\n if (lower.startsWith(pattern) && pattern.length > bestLen) {\n bestMatch = entry\n bestLen = pattern.length\n }\n }\n return bestMatch\n}\n"],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { t as Citation, x as ShortFormCitation } from "./citation-BwXdJTA9.mjs";
2
+
3
+ //#region src/footnotes/types.d.ts
4
+ /**
5
+ * A detected footnote zone in the text.
6
+ * Positions are in input-text (raw) coordinates.
7
+ */
8
+ interface FootnoteZone {
9
+ /** Start position in input-text coordinates */
10
+ start: number;
11
+ /** End position in input-text coordinates */
12
+ end: number;
13
+ /** Footnote number (1, 2, 3...) */
14
+ footnoteNumber: number;
15
+ }
16
+ /**
17
+ * Result of footnote detection — sorted by start position.
18
+ */
19
+ type FootnoteMap = FootnoteZone[];
20
+ //#endregion
21
+ //#region src/resolve/types.d.ts
22
+ /**
23
+ * Scope boundary strategy for resolution.
24
+ * Determines how far back to search for antecedent citations.
25
+ */
26
+ type ScopeStrategy = "paragraph" | "section" | "footnote" | "none";
27
+ /**
28
+ * Options for citation resolution.
29
+ */
30
+ interface ResolutionOptions {
31
+ /**
32
+ * Scope boundary strategy (default: 'paragraph')
33
+ * - paragraph: Only resolve within same paragraph
34
+ * - section: Only resolve within same section
35
+ * - footnote: Only resolve within same footnote
36
+ * - none: Resolve across entire document
37
+ */
38
+ scopeStrategy?: ScopeStrategy;
39
+ /**
40
+ * Auto-detect paragraph boundaries from text (default: true)
41
+ * Uses paragraphBoundaryPattern to split text
42
+ */
43
+ autoDetectParagraphs?: boolean;
44
+ /**
45
+ * Regex pattern to detect paragraph boundaries (default: /\n\n+/)
46
+ * Only used if autoDetectParagraphs is true
47
+ */
48
+ paragraphBoundaryPattern?: RegExp;
49
+ /**
50
+ * Enable fuzzy party name matching for supra resolution (default: true)
51
+ * Uses Levenshtein distance to handle typos and variations
52
+ */
53
+ fuzzyPartyMatching?: boolean;
54
+ /**
55
+ * Similarity threshold for fuzzy party matching (default: 0.8)
56
+ * Range: 0-1 where 1.0 is exact match
57
+ * Only used if fuzzyPartyMatching is true
58
+ */
59
+ partyMatchThreshold?: number;
60
+ /**
61
+ * Allow Id. citations to resolve to other short-form citations (default: false)
62
+ * If true: "Smith v. Jones, 500 F.2d 100" -> "Id." -> "Id. at 105"
63
+ * If false: Second Id. fails to resolve (no full citation between them)
64
+ */
65
+ allowNestedResolution?: boolean;
66
+ /**
67
+ * Report unresolved citations with failure reasons (default: true)
68
+ * If false: resolution field will be undefined for unresolved citations
69
+ */
70
+ reportUnresolved?: boolean;
71
+ /**
72
+ * Footnote zone map for footnote-aware scoping.
73
+ * When scopeStrategy is "footnote" and this is provided, citations are
74
+ * scoped by footnote zones instead of paragraphs.
75
+ */
76
+ footnoteMap?: FootnoteMap | undefined;
77
+ }
78
+ /**
79
+ * Result of resolving a short-form citation.
80
+ */
81
+ interface ResolutionResult {
82
+ /**
83
+ * Index of the citation this resolves to.
84
+ * undefined if resolution failed
85
+ */
86
+ resolvedTo?: number;
87
+ /**
88
+ * Reason for resolution failure (if any)
89
+ */
90
+ failureReason?: string;
91
+ /**
92
+ * Warnings about ambiguous or uncertain resolutions
93
+ */
94
+ warnings?: string[];
95
+ /**
96
+ * Confidence in the resolution (0-1)
97
+ * Factors: party name similarity, scope boundary, citation type match
98
+ */
99
+ confidence: number;
100
+ }
101
+ /**
102
+ * Citation with resolution metadata.
103
+ *
104
+ * Uses a distributive conditional type so that `resolution` is only
105
+ * meaningfully present on short-form citations (Id., supra, short-form case).
106
+ * On full citations, `resolution` is typed as `undefined`.
107
+ */
108
+ type ResolvedCitation<C extends Citation = Citation> = C extends ShortFormCitation ? C & {
109
+ resolution: ResolutionResult | undefined;
110
+ } : C & {
111
+ resolution?: undefined;
112
+ };
113
+ //#endregion
114
+ export { FootnoteMap as a, ScopeStrategy as i, ResolutionResult as n, FootnoteZone as o, ResolvedCitation as r, ResolutionOptions as t };
115
+ //# sourceMappingURL=types-BfYnmSHC.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-BfYnmSHC.d.mts","names":[],"sources":["../src/footnotes/types.ts","../src/resolve/types.ts"],"mappings":";;;;;;AAIA;UAAiB,YAAA;;EAEf,KAAA;;EAEA,GAAA;;EAEA,cAAA;AAAA;AAMF;;;AAAA,KAAY,WAAA,GAAc,YAAA;;;;;;;KCFd,aAAA;;;;UAKK,iBAAA;;;;AALjB;;;;EAaE,aAAA,GAAgB,aAAA;EARlB;;;;EAcE,oBAAA;;;;;EAMA,wBAAA,GAA2B,MAAA;;;;;EAM3B,kBAAA;;;;;;EAOA,mBAAA;EA0BF;;;;;EAnBE,qBAAA;;;;;EAMA,gBAAA;EA4CU;;;;;EArCV,WAAA,GAAc,WAAA;AAAA;;;;UAMC,gBAAA;;;;;EAKf,UAAA;;;;EAKA,aAAA;;;;EAKA,QAAA;;;;;EAMA,UAAA;AAAA;;;;;;;;KAUU,gBAAA,WAA2B,QAAA,GAAW,QAAA,IAAY,CAAA,SAAU,iBAAA,GACpE,CAAA;EAAM,UAAA,EAAY,gBAAA;AAAA,IAClB,CAAA;EAAM,UAAA;AAAA"}