eyecite-ts 0.18.1 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +214 -43
- package/dist/annotate/index.d.cts +1 -1
- package/dist/annotate/index.d.mts +1 -1
- package/dist/{citation-BuqlLfxK.d.mts → citation-ChBABKNb.d.cts} +46 -1
- package/dist/{citation-BuqlLfxK.d.mts.map → citation-ChBABKNb.d.cts.map} +1 -1
- package/dist/{citation-CYqkPRyu.d.cts → citation-gpnnRN23.d.mts} +46 -1
- package/dist/{citation-CYqkPRyu.d.cts.map → citation-gpnnRN23.d.mts.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +23 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +23 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/{types-DhaEp2Tg.d.cts → types-COJWzCfa.d.cts} +2 -2
- package/dist/{types-DhaEp2Tg.d.cts.map → types-COJWzCfa.d.cts.map} +1 -1
- package/dist/{types-kaciVAIk.d.mts → types-DJxf7ixo.d.mts} +2 -2
- package/dist/{types-kaciVAIk.d.mts.map → types-DJxf7ixo.d.mts.map} +1 -1
- package/dist/utils/index.d.cts +2 -2
- package/dist/utils/index.d.mts +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
TypeScript legal citation extraction — a port of Python [eyecite](https://github.com/freelawproject/eyecite) with extended capabilities.
|
|
13
13
|
|
|
14
|
-
Extract structured data from legal citations in court opinions, briefs, and legal documents. A citation like `500 F.2d 123 (9th Cir. 2020)` encodes a volume (500), reporter (Federal Reporter, 2nd Series), page (123), court (Ninth Circuit), and year. This library parses all of that into typed objects, resolves short-form references like "Id." back to their antecedents, and can annotate the original text with HTML markup. Zero runtime dependencies, browser-compatible, ~
|
|
14
|
+
Extract structured data from legal citations in court opinions, briefs, and legal documents. A citation like `500 F.2d 123 (9th Cir. 2020)` encodes a volume (500), reporter (Federal Reporter, 2nd Series), page (123), court (Ninth Circuit), and year. This library parses all of that into typed objects, resolves short-form references like "Id." back to their antecedents, and can annotate the original text with HTML markup. Zero runtime dependencies, browser-compatible, ~37 KB brotli.
|
|
15
15
|
|
|
16
16
|
## Installation
|
|
17
17
|
|
|
@@ -45,8 +45,8 @@ for (const cite of citations) {
|
|
|
45
45
|
// 42 "U.S.C." "1983"
|
|
46
46
|
break
|
|
47
47
|
case "id":
|
|
48
|
-
console.log("Id. resolves to
|
|
49
|
-
// Id. resolves to
|
|
48
|
+
console.log("Id. resolves to:", cite.resolution?.resolvedTo)
|
|
49
|
+
// Id. resolves to: 0
|
|
50
50
|
break
|
|
51
51
|
case "journal":
|
|
52
52
|
console.log(cite.journal, cite.volume, cite.page)
|
|
@@ -64,21 +64,37 @@ console.log(result.text)
|
|
|
64
64
|
|
|
65
65
|
## What It Extracts
|
|
66
66
|
|
|
67
|
+
12 citation types, each with its own TypeScript interface:
|
|
68
|
+
|
|
67
69
|
| Type | Example | Key Fields |
|
|
68
70
|
|------|---------|------------|
|
|
69
71
|
| `case` | `500 F.2d 123 (9th Cir. 2020)` | volume, reporter, page, court, year, caseName |
|
|
72
|
+
| `docket` | `No. 12-3456 (S.D.N.Y. 2024)` | docketNumber, court, year, caseName |
|
|
70
73
|
| `statute` | `42 U.S.C. § 1983(a)(1)` | title, code, section, subsection, jurisdiction |
|
|
71
74
|
| `constitutional` | `U.S. Const. amend. XIV, § 1` | jurisdiction, amendment, section, clause |
|
|
72
75
|
| `journal` | `123 Harv. L. Rev. 456` | volume, journal, page, year |
|
|
73
|
-
| `neutral` | `2020 WL 123456` | year,
|
|
76
|
+
| `neutral` | `2020 WL 123456` | year, database, documentNumber |
|
|
74
77
|
| `publicLaw` | `Pub. L. No. 117-263` | congress, lawNumber |
|
|
75
78
|
| `federalRegister` | `87 Fed. Reg. 1234` | volume, page, year |
|
|
76
79
|
| `statutesAtLarge` | `136 Stat. 4459` | volume, page, year |
|
|
77
|
-
| `id` | `Id. at 125` | pincite |
|
|
80
|
+
| `id` | `Id. at 125` | pincite, caseName (inherited) |
|
|
78
81
|
| `supra` | `Smith, supra, at 130` | partyName, pincite |
|
|
79
|
-
| `shortFormCase` | `500 F.2d at 140` | volume, reporter, pincite |
|
|
82
|
+
| `shortFormCase` | `500 F.2d at 140` | volume, reporter, pincite, partyName |
|
|
83
|
+
|
|
84
|
+
## Statute & Administrative Code Coverage
|
|
85
|
+
|
|
86
|
+
Statutes are extracted across 52 jurisdictions (50 states + DC + federal) using four pattern families:
|
|
80
87
|
|
|
81
|
-
|
|
88
|
+
| Family | Jurisdictions | Example |
|
|
89
|
+
|--------|--------------|---------|
|
|
90
|
+
| Federal | USC, CFR, USCA, prose ("section X of title Y") | `42 U.S.C. § 1983(a)(1) et seq.` |
|
|
91
|
+
| Named-code | NY (21 laws), CA (29 codes), TX (29 codes), MD (36 articles), VA, AL, MA | `N.Y. Penal Law § 125.25(1)(a)` |
|
|
92
|
+
| Abbreviated-code | FL, OH, MI, UT, CO, WA, NC, GA, PA, IN, NJ, DE + 20 more states | `Fla. Stat. § 775.082` |
|
|
93
|
+
| Chapter-act | IL (ILCS), IL (Ill. Rev. Stat.) | `735 ILCS 5/2-1001` |
|
|
94
|
+
|
|
95
|
+
State-specific forms include: Alabama Code of 1940, California bare-code (`Penal Code § 187`), Georgia pre-1983 Code Ann., Hawaii Revised Laws (pre-1955), Idaho postfix (`I.C. § N`), Kansas year-edition (`K.S.A. 2019 Supp.`), Nebraska R.R.S. 1943, Oregon chapter-only (`ORS chapter 174`), Rhode Island General Laws 1956, Washington RCW chapter-postfix, West Virginia Code 1931, Wisconsin Stats. postfix, and more.
|
|
96
|
+
|
|
97
|
+
Administrative codes: NMAC (New Mexico), OAR (Oregon), COMAR (Maryland), IDAPA (Idaho), ARM (Montana).
|
|
82
98
|
|
|
83
99
|
## Key Features
|
|
84
100
|
|
|
@@ -91,20 +107,37 @@ const text = "In Smith v. Jones, 500 F.2d 123 (9th Cir. 2020) (en banc), the cou
|
|
|
91
107
|
const [cite] = extractCitations(text)
|
|
92
108
|
|
|
93
109
|
if (cite.type === "case") {
|
|
94
|
-
cite.caseName
|
|
95
|
-
cite.plaintiff
|
|
96
|
-
cite.defendant
|
|
110
|
+
cite.caseName // "Smith v. Jones"
|
|
111
|
+
cite.plaintiff // "Smith"
|
|
112
|
+
cite.defendant // "Jones"
|
|
97
113
|
cite.disposition // "en banc"
|
|
98
|
-
cite.span
|
|
99
|
-
cite.fullSpan
|
|
114
|
+
cite.span // covers "500 F.2d 123" (citation core)
|
|
115
|
+
cite.fullSpan // covers "Smith v. Jones, 500 F.2d 123 (9th Cir. 2020) (en banc)"
|
|
100
116
|
}
|
|
101
117
|
```
|
|
102
118
|
|
|
103
|
-
Procedural prefixes
|
|
119
|
+
Procedural prefixes recognized: `In re`, `Ex parte`, `Matter of`, `Estate of`, `In the Matter of`, and bankruptcy adversary captions (`Spence v. Hintze (In re Hintze)`). Case name search also runs on neutral/vendor citations (`2020 WL 123456`).
|
|
120
|
+
|
|
121
|
+
### Docket Citations
|
|
122
|
+
|
|
123
|
+
Slip opinions and unreported decisions identified by docket number:
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
const text = "IKB Int'l, S.A. v. Wells Fargo Bank, N.A., No. 51 (N.Y. 2023)"
|
|
127
|
+
const [cite] = extractCitations(text)
|
|
128
|
+
|
|
129
|
+
if (cite.type === "docket") {
|
|
130
|
+
cite.docketNumber // "51"
|
|
131
|
+
cite.court // "N.Y."
|
|
132
|
+
cite.caseName // "IKB Int'l, S.A. v. Wells Fargo Bank, N.A."
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Accepts PACER colon prefixes (`2:17-cv-00413`), space-separated parts (`18 C 7039`), and prefix variants (`C.A.`, `Civ.`, `Civil Action`, `Adv.`).
|
|
104
137
|
|
|
105
138
|
### Parallel Citations
|
|
106
139
|
|
|
107
|
-
When multiple reporters cite the same case
|
|
140
|
+
When multiple reporters cite the same case, the library groups them automatically:
|
|
108
141
|
|
|
109
142
|
```typescript
|
|
110
143
|
const text = "See 410 U.S. 113, 93 S. Ct. 705, 35 L. Ed. 2d 147 (1973)."
|
|
@@ -114,7 +147,6 @@ citations[0].groupId // "410-U.S.-113"
|
|
|
114
147
|
citations[1].groupId // "410-U.S.-113" (same group)
|
|
115
148
|
citations[2].groupId // "410-U.S.-113" (same group)
|
|
116
149
|
|
|
117
|
-
// Primary citation carries the linked array
|
|
118
150
|
if (citations[0].type === "case") {
|
|
119
151
|
citations[0].parallelCitations
|
|
120
152
|
// [{ volume: 93, reporter: 'S. Ct.', page: 705 },
|
|
@@ -127,14 +159,54 @@ if (citations[0].type === "case") {
|
|
|
127
159
|
Pass `{ resolve: true }` to link Id., supra, and short-form case citations to their full antecedents:
|
|
128
160
|
|
|
129
161
|
```typescript
|
|
130
|
-
const text = `Smith v. Jones, 500 F.2d 123 (2020). Id. at 125.`
|
|
162
|
+
const text = `Smith v. Jones, 500 F.2d 123 (2020). Id. at 125. Smith, supra, at 130.`
|
|
131
163
|
const citations = extractCitations(text, { resolve: true })
|
|
132
164
|
|
|
133
|
-
|
|
134
|
-
// { resolvedTo: 0
|
|
165
|
+
// Id. resolves to most recent antecedent
|
|
166
|
+
citations[1].resolution // { resolvedTo: 0 }
|
|
167
|
+
|
|
168
|
+
// Id. inherits case name from antecedent
|
|
169
|
+
if (citations[1].type === "id") {
|
|
170
|
+
citations[1].caseName // "Smith v. Jones" (inherited)
|
|
171
|
+
citations[1].plaintiff // "Smith" (inherited)
|
|
172
|
+
}
|
|
135
173
|
```
|
|
136
174
|
|
|
137
|
-
The resolver supports paragraph/section/footnote scope boundaries, fuzzy party name matching, and
|
|
175
|
+
The resolver supports paragraph/section/footnote scope boundaries, fuzzy party name matching via Levenshtein distance, bare-party shortform (`Smith, at 12`), and bracketed `[supra]` (Connecticut style). See the [Resolution Guide](docs/guides/resolution.md) for the power-user API.
|
|
176
|
+
|
|
177
|
+
### Subsequent History & Dispositions
|
|
178
|
+
|
|
179
|
+
Case citations automatically extract subsequent history chains and disposition parentheticals:
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
const text = "Smith v. Jones, 500 F.2d 123 (9th Cir. 2020), aff'd, 600 U.S. 456 (2021)"
|
|
183
|
+
const [cite] = extractCitations(text)
|
|
184
|
+
|
|
185
|
+
if (cite.type === "case") {
|
|
186
|
+
cite.subsequentHistoryEntries
|
|
187
|
+
// [{ signal: 'affirmed', rawSignal: "aff'd", signalSpan: { ... }, order: 0 }]
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Recognized history signals include federal (`aff'd`, `rev'd`, `vacated`, `remanded`, `cert. denied`, `rehearing denied`), Texas writ/petition history (`writ refused`, `pet. denied`), and California review history (`review denied`, `review granted`, `not published`, `superseded by grant of review`).
|
|
192
|
+
|
|
193
|
+
Dispositions extracted: `en banc`, `per curiam`, `dissent`, `concurrence`, `plurality opinion`, `mem.`, with justice attribution (`(Brennan, J., dissenting)` → `justices: ["Brennan"]`).
|
|
194
|
+
|
|
195
|
+
### Explanatory Parentheticals
|
|
196
|
+
|
|
197
|
+
Explanatory parentheticals following case citations are parsed and classified:
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
const text = '500 F.2d 123 (9th Cir. 2020) (holding that X requires Y)'
|
|
201
|
+
const [cite] = extractCitations(text)
|
|
202
|
+
|
|
203
|
+
if (cite.type === "case") {
|
|
204
|
+
cite.parentheticals
|
|
205
|
+
// [{ text: "holding that X requires Y", type: "holding" }]
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Classification types: `holding`, `finding`, `stating`, `noting`, `explaining`, `quoting`, `citing`, `discussing`, `describing`, `recognizing`, `applying`, `rejecting`, `adopting`, `requiring`, `other`.
|
|
138
210
|
|
|
139
211
|
### Citation Annotation
|
|
140
212
|
|
|
@@ -143,24 +215,73 @@ Mark up citations with HTML using template or callback modes:
|
|
|
143
215
|
```typescript
|
|
144
216
|
import { annotate } from "eyecite-ts/annotate"
|
|
145
217
|
|
|
218
|
+
// Template mode
|
|
146
219
|
const result = annotate(text, citations, {
|
|
147
220
|
template: { before: '<cite>', after: '</cite>' },
|
|
148
221
|
})
|
|
149
|
-
|
|
222
|
+
|
|
223
|
+
// Callback mode for custom markup
|
|
224
|
+
const linked = annotate(text, citations, {
|
|
225
|
+
callback: (citation, surrounding) => {
|
|
226
|
+
if (citation.type === "case") {
|
|
227
|
+
return `<a href="/cases/${citation.volume}-${citation.page}">${citation.matchedText}</a>`
|
|
228
|
+
}
|
|
229
|
+
return `<span>${citation.matchedText}</span>`
|
|
230
|
+
},
|
|
231
|
+
})
|
|
150
232
|
```
|
|
151
233
|
|
|
152
|
-
XSS auto-escape is enabled by default. Use `useFullSpan: true` to annotate from case name through closing parenthetical.
|
|
234
|
+
XSS auto-escape is enabled by default. Use `useFullSpan: true` to annotate from case name through closing parenthetical.
|
|
153
235
|
|
|
154
|
-
### Confidence
|
|
236
|
+
### Confidence Scoring
|
|
155
237
|
|
|
156
|
-
Each citation carries a `confidence` score (0
|
|
238
|
+
Each citation carries a `confidence` score (0–1) based on pattern match quality, reporter validation, and metadata completeness:
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
const [cite] = extractCitations(text)
|
|
242
|
+
cite.confidence // 0.85
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Scores are adjusted by reporter validation (+0.2 for known reporters, -0.3 for unknown), year plausibility, case name presence, and court identification. False positives from international reporters or implausible years get reduced to 0.1.
|
|
246
|
+
|
|
247
|
+
### Citation Signals
|
|
248
|
+
|
|
249
|
+
Citations preceded by Bluebook signals are tagged:
|
|
157
250
|
|
|
158
251
|
```typescript
|
|
159
252
|
const text = "See also Smith v. Jones, 500 F.2d 123 (2020)."
|
|
160
253
|
const [cite] = extractCitations(text)
|
|
254
|
+
cite.signal // "see also"
|
|
255
|
+
```
|
|
161
256
|
|
|
162
|
-
|
|
163
|
-
|
|
257
|
+
Recognized signals: `see`, `see also`, `see generally`, `cf`, `but see`, `but cf`, `compare`, `accord`, `contra`, `e.g.`, and combined forms (`see, e.g.`, `see also, e.g.`, `but see, e.g.`, `cf., e.g.`, `but cf., e.g.`).
|
|
258
|
+
|
|
259
|
+
### Court Inference
|
|
260
|
+
|
|
261
|
+
Case citations carry a `inferredCourt` field derived from the reporter series:
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
const [cite] = extractCitations(text)
|
|
265
|
+
if (cite.type === "case") {
|
|
266
|
+
cite.inferredCourt
|
|
267
|
+
// { level: "appellate", jurisdiction: "federal", confidence: 1.0 }
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Component Spans
|
|
272
|
+
|
|
273
|
+
Every citation carries per-field position data for precise source mapping:
|
|
274
|
+
|
|
275
|
+
```typescript
|
|
276
|
+
const [cite] = extractCitations(text)
|
|
277
|
+
if (cite.type === "case") {
|
|
278
|
+
cite.spans?.volume // { cleanStart, cleanEnd, originalStart, originalEnd }
|
|
279
|
+
cite.spans?.reporter // ...
|
|
280
|
+
cite.spans?.page // ...
|
|
281
|
+
cite.spans?.court // ...
|
|
282
|
+
cite.spans?.year // ...
|
|
283
|
+
cite.spans?.caseName // ...
|
|
284
|
+
}
|
|
164
285
|
```
|
|
165
286
|
|
|
166
287
|
### Footnote Detection
|
|
@@ -177,7 +298,39 @@ for (const cite of citations) {
|
|
|
177
298
|
}
|
|
178
299
|
```
|
|
179
300
|
|
|
180
|
-
|
|
301
|
+
Two strategies: HTML tag scanner (`<footnote>`, `<fn>`, footnote class/id attributes) and plaintext separator detection (5+ dashes/underscores followed by numbered markers). The `"footnote"` scope strategy enforces zone-based isolation: Id. is strict (same zone only), supra and short-form case can cross from footnotes to body.
|
|
302
|
+
|
|
303
|
+
### Structured Dates
|
|
304
|
+
|
|
305
|
+
Parentheticals with full dates return structured date objects:
|
|
306
|
+
|
|
307
|
+
```typescript
|
|
308
|
+
const text = "500 F.3d 100 (2d Cir. Jan. 15, 2020)"
|
|
309
|
+
const [cite] = extractCitations(text)
|
|
310
|
+
if (cite.type === "case") {
|
|
311
|
+
cite.date // { iso: '2020-01-15', parsed: { year: 2020, month: 1, day: 15 } }
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Post-Extraction Utilities
|
|
316
|
+
|
|
317
|
+
The `eyecite-ts/utils` entry point provides composable post-processing:
|
|
318
|
+
|
|
319
|
+
```typescript
|
|
320
|
+
import { groupByCase, toBluebook, toReporterKey, getSurroundingContext } from "eyecite-ts/utils"
|
|
321
|
+
|
|
322
|
+
// Group citations by case (parallel + short-form → full)
|
|
323
|
+
const groups = groupByCase(citations)
|
|
324
|
+
|
|
325
|
+
// Format as Bluebook citation string
|
|
326
|
+
const formatted = toBluebook(citation)
|
|
327
|
+
|
|
328
|
+
// Get canonical reporter key for deduplication
|
|
329
|
+
const key = toReporterKey(citation) // "500-F.2d-123"
|
|
330
|
+
|
|
331
|
+
// Extract surrounding sentence context
|
|
332
|
+
const ctx = getSurroundingContext(text, citation, { chars: 100 })
|
|
333
|
+
```
|
|
181
334
|
|
|
182
335
|
## Type System
|
|
183
336
|
|
|
@@ -195,8 +348,17 @@ if (isCaseCitation(citation)) {
|
|
|
195
348
|
// Exhaustive switch
|
|
196
349
|
switch (citation.type) {
|
|
197
350
|
case "case": /* ... */ break
|
|
351
|
+
case "docket": /* ... */ break
|
|
198
352
|
case "statute": /* ... */ break
|
|
199
|
-
|
|
353
|
+
case "constitutional": /* ... */ break
|
|
354
|
+
case "journal": /* ... */ break
|
|
355
|
+
case "neutral": /* ... */ break
|
|
356
|
+
case "publicLaw": /* ... */ break
|
|
357
|
+
case "federalRegister": /* ... */ break
|
|
358
|
+
case "statutesAtLarge": /* ... */ break
|
|
359
|
+
case "id": /* ... */ break
|
|
360
|
+
case "supra": /* ... */ break
|
|
361
|
+
case "shortFormCase": /* ... */ break
|
|
200
362
|
default: assertUnreachable(citation.type)
|
|
201
363
|
}
|
|
202
364
|
```
|
|
@@ -205,39 +367,48 @@ switch (citation.type) {
|
|
|
205
367
|
|
|
206
368
|
## Bundle Size
|
|
207
369
|
|
|
208
|
-
|
|
370
|
+
Four entry points for tree-shaking:
|
|
209
371
|
|
|
210
372
|
| Entry Point | Import | Size (brotli) |
|
|
211
373
|
|-------------|--------|---------------|
|
|
212
|
-
| Core extraction | `eyecite-ts` | ~
|
|
213
|
-
| Annotation | `eyecite-ts/annotate` | ~1
|
|
374
|
+
| Core extraction | `eyecite-ts` | ~37 KB |
|
|
375
|
+
| Annotation | `eyecite-ts/annotate` | ~1 KB |
|
|
376
|
+
| Post-extraction utils | `eyecite-ts/utils` | ~1.8 KB |
|
|
214
377
|
| Reporter data | `eyecite-ts/data` | lazy-loaded |
|
|
215
378
|
|
|
216
379
|
Import only what you need — the reporter database is loaded on first use, not at import time.
|
|
217
380
|
|
|
218
381
|
## Comparison with Python eyecite
|
|
219
382
|
|
|
220
|
-
Every claim verified against [Python eyecite](https://github.com/freelawproject/eyecite) source code (
|
|
383
|
+
Every claim verified against [Python eyecite](https://github.com/freelawproject/eyecite) source code (May 2026).
|
|
221
384
|
|
|
222
385
|
| Capability | Python eyecite | eyecite-ts | Notes |
|
|
223
386
|
|---|---|---|---|
|
|
224
387
|
| Case citations | Yes | Yes | Both extract volume/reporter/page/court/year |
|
|
225
|
-
|
|
|
388
|
+
| Docket citations | No | Yes | Slip opinions, PACER docket numbers |
|
|
389
|
+
| Statute citations | Yes (50 states + DC + territories) | Yes (50 states + DC + federal) | Python uses `reporters-db`; TS uses built-in patterns |
|
|
226
390
|
| Constitutional citations | No | Yes (U.S. + 50 states) | Dedicated type with article/amendment/section/clause |
|
|
391
|
+
| State admin codes | No | Yes (NM, OR, MD, ID, MT) | NMAC, OAR, COMAR, IDAPA, ARM |
|
|
227
392
|
| Journal / law review | Yes | Yes | |
|
|
228
|
-
| Neutral (WL/LEXIS) | Yes (as case
|
|
393
|
+
| Neutral (WL/LEXIS) | Yes (as case) | Yes (dedicated type) | Separate NeutralCitation with database/court split |
|
|
229
394
|
| Short-form resolution | Yes | Yes | |
|
|
230
|
-
| Case name extraction | Yes | Yes | Both use backward scanning |
|
|
231
|
-
| Parallel citation linking | Partial
|
|
395
|
+
| Case name extraction | Yes | Yes | Both use backward scanning; TS runs on neutral cites too |
|
|
396
|
+
| Parallel citation linking | Partial | Yes | `groupId` + `parallelCitations` array |
|
|
397
|
+
| Subsequent history | No | Yes | Federal, Texas writ/petition, California review signals |
|
|
398
|
+
| Explanatory parentheticals | No | Yes | Classified by gerund (holding, finding, stating, ...) |
|
|
399
|
+
| Justice attribution | No | Yes | `(Brennan, J., dissenting)` → justices + scope |
|
|
400
|
+
| Court inference | No | Yes | Level/jurisdiction from reporter series |
|
|
232
401
|
| Full span tracking | Yes | Yes | TS carries dual clean/original positions |
|
|
233
|
-
| Component spans | Minimal
|
|
402
|
+
| Component spans | Minimal | Yes (all fields) | Per-component position data |
|
|
234
403
|
| Footnote detection | No | Yes | HTML + plaintext strategies |
|
|
235
|
-
| Citation signals | No (stop words
|
|
236
|
-
|
|
|
237
|
-
|
|
|
238
|
-
|
|
|
404
|
+
| Citation signals | No (stop words) | Yes (metadata) | Bluebook signals including combined forms |
|
|
405
|
+
| Confidence scoring | No | Yes | Pattern quality + reporter validation |
|
|
406
|
+
| Annotation | Yes (HTML modes) | Yes (template/callback) | XSS auto-escape on by default |
|
|
407
|
+
| Position mapping | Yes (diff-based) | Yes (incremental) | TransformationMap during cleaning |
|
|
408
|
+
| Type system | Class inheritance | Discriminated union | Exhaustive switch, conditional types |
|
|
409
|
+
| Post-extraction utils | No | Yes | groupByCase, toBluebook, toReporterKey |
|
|
239
410
|
|
|
240
|
-
eyecite-ts started as a port and has diverged. Both are capable citation extractors — eyecite-ts adds constitutional citations, footnote detection, citation signals, rich component spans, and a TypeScript-native type system, while Python eyecite has broader statute coverage via `reporters-db` and a mature ecosystem.
|
|
411
|
+
eyecite-ts started as a port and has diverged. Both are capable citation extractors — eyecite-ts adds docket citations, constitutional citations, subsequent history, explanatory parentheticals, footnote detection, citation signals, structured confidence scoring, court inference, rich component spans, and a TypeScript-native type system, while Python eyecite has broader statute coverage via `reporters-db` and a mature ecosystem.
|
|
241
412
|
|
|
242
413
|
Coming from Python eyecite? See the [Migration Guide](docs/guides/migration-from-python.md).
|
|
243
414
|
|
|
@@ -252,7 +423,7 @@ See [ARCHITECTURE.md](ARCHITECTURE.md) for details.
|
|
|
252
423
|
```bash
|
|
253
424
|
pnpm install # Install dependencies (corepack, pnpm 10)
|
|
254
425
|
pnpm test # Run tests (vitest, watch mode)
|
|
255
|
-
pnpm exec vitest run # Run tests once (
|
|
426
|
+
pnpm exec vitest run # Run tests once (2,966 tests, 96 files)
|
|
256
427
|
pnpm typecheck # Type-check with tsc
|
|
257
428
|
pnpm build # Build (ESM + CJS + DTS)
|
|
258
429
|
pnpm lint # Lint with Biome
|
|
@@ -268,4 +439,4 @@ MIT
|
|
|
268
439
|
|
|
269
440
|
## Credits
|
|
270
441
|
|
|
271
|
-
Inspired by and ported from [eyecite](https://github.com/freelawproject/eyecite) (Python) by [Free Law Project](https://free.law/). This TypeScript implementation extends the original with constitutional citations, footnote detection, citation signals, parallel citation grouping, component spans, and a discriminated-union type system.
|
|
442
|
+
Inspired by and ported from [eyecite](https://github.com/freelawproject/eyecite) (Python) by [Free Law Project](https://free.law/). This TypeScript implementation extends the original with docket citations, constitutional citations, subsequent history, explanatory parentheticals, footnote detection, citation signals, structured confidence scoring, court inference, parallel citation grouping, component spans, post-extraction utilities, and a discriminated-union type system.
|
|
@@ -889,6 +889,21 @@ interface IdCitation extends CitationBase {
|
|
|
889
889
|
/** Structured pincite information (page, range, footnote, star-pagination). */
|
|
890
890
|
pinciteInfo?: PinciteInfo;
|
|
891
891
|
/**
|
|
892
|
+
* True if `pincite` was inherited from a preceding same-authority citation
|
|
893
|
+
* per Bluebook Rule 4.1 / Indigo Book R6.2.2. Undefined when `pincite` was
|
|
894
|
+
* extracted directly from this citation's text or when no pincite was set.
|
|
895
|
+
*/
|
|
896
|
+
pinciteInherited?: boolean;
|
|
897
|
+
/**
|
|
898
|
+
* Array index of the citation from which `pincite` was inherited.
|
|
899
|
+
* Indexes into the same array this citation appears in — i.e., the
|
|
900
|
+
* output of `extractCitations(...).citations` (or
|
|
901
|
+
* `DocumentResolver.resolve()`'s output, which preserves input order).
|
|
902
|
+
* Set only when `pinciteInherited` is true. Records the immediate
|
|
903
|
+
* predecessor; follow transitively for the chain's originator.
|
|
904
|
+
*/
|
|
905
|
+
pinciteInheritedFrom?: number;
|
|
906
|
+
/**
|
|
892
907
|
* Trailing parenthetical content (text between the parens, excluding the
|
|
893
908
|
* parens themselves) captured from `Id. at N (...)` forms. Common values
|
|
894
909
|
* include drop-citation markers (`citation omitted`, `internal quotation
|
|
@@ -933,6 +948,21 @@ interface SupraCitation extends CitationBase {
|
|
|
933
948
|
/** Structured pincite information (page, range, footnote, star-pagination). */
|
|
934
949
|
pinciteInfo?: PinciteInfo;
|
|
935
950
|
/**
|
|
951
|
+
* True if `pincite` was inherited from a preceding same-authority citation
|
|
952
|
+
* per Bluebook Rule 4.1 / Indigo Book R6.2.2. Undefined when `pincite` was
|
|
953
|
+
* extracted directly from this citation's text or when no pincite was set.
|
|
954
|
+
*/
|
|
955
|
+
pinciteInherited?: boolean;
|
|
956
|
+
/**
|
|
957
|
+
* Array index of the citation from which `pincite` was inherited.
|
|
958
|
+
* Indexes into the same array this citation appears in — i.e., the
|
|
959
|
+
* output of `extractCitations(...).citations` (or
|
|
960
|
+
* `DocumentResolver.resolve()`'s output, which preserves input order).
|
|
961
|
+
* Set only when `pinciteInherited` is true. Records the immediate
|
|
962
|
+
* predecessor; follow transitively for the chain's originator.
|
|
963
|
+
*/
|
|
964
|
+
pinciteInheritedFrom?: number;
|
|
965
|
+
/**
|
|
936
966
|
* Trailing parenthetical content (text between the parens, excluding the
|
|
937
967
|
* parens themselves). See `IdCitation.parenthetical` for common shapes
|
|
938
968
|
* and rationale. #303
|
|
@@ -955,6 +985,21 @@ interface ShortFormCaseCitation extends CitationBase {
|
|
|
955
985
|
pincite?: number;
|
|
956
986
|
/** Structured pincite information (page, range, footnote, star-pagination). */
|
|
957
987
|
pinciteInfo?: PinciteInfo;
|
|
988
|
+
/**
|
|
989
|
+
* True if `pincite` was inherited from a preceding same-authority citation
|
|
990
|
+
* per Bluebook Rule 4.1 / Indigo Book R6.2.2. Undefined when `pincite` was
|
|
991
|
+
* extracted directly from this citation's text or when no pincite was set.
|
|
992
|
+
*/
|
|
993
|
+
pinciteInherited?: boolean;
|
|
994
|
+
/**
|
|
995
|
+
* Array index of the citation from which `pincite` was inherited.
|
|
996
|
+
* Indexes into the same array this citation appears in — i.e., the
|
|
997
|
+
* output of `extractCitations(...).citations` (or
|
|
998
|
+
* `DocumentResolver.resolve()`'s output, which preserves input order).
|
|
999
|
+
* Set only when `pinciteInherited` is true. Records the immediate
|
|
1000
|
+
* predecessor; follow transitively for the chain's originator.
|
|
1001
|
+
*/
|
|
1002
|
+
pinciteInheritedFrom?: number;
|
|
958
1003
|
/** Component-level spans (currently just `pincite`; extend when needed). */
|
|
959
1004
|
spans?: ShortFormCaseComponentSpans;
|
|
960
1005
|
/** Back-reference party name when the short-form includes one (Bluebook
|
|
@@ -1025,4 +1070,4 @@ type CitationOfType<T extends CitationType> = Extract<Citation, {
|
|
|
1025
1070
|
type ExtractorMap = { [K in FullCitationType]: CitationOfType<K> };
|
|
1026
1071
|
//#endregion
|
|
1027
1072
|
export { ConstitutionalComponentSpans as A, PinciteInfo as B, ShortFormCitationType as C, SupraCitation as D, SubsequentHistoryEntry as E, StatuteComponentSpans as F, StatutesAtLargeComponentSpans as I, Span as L, JournalComponentSpans as M, NeutralComponentSpans as N, Warning as O, PublicLawComponentSpans as P, TransformationMap as R, ShortFormCitation as S, StatutesAtLargeCitation as T, parsePincite as V, NeutralCitation as _, CitationType as a, PublicLawCitation as b, DocketCitation as c, FullCaseCitation as d, FullCitation as f, JournalCitation as g, IdCitation as h, CitationSignal as i, FederalRegisterComponentSpans as j, CaseComponentSpans as k, ExtractorMap as l, HistorySignal as m, CitationBase as n, ConstitutionalCitation as o, FullCitationType as p, CitationOfType as r, CourtInference as s, Citation as t, FederalRegisterCitation as u, Parenthetical as v, StatuteCitation as w, ShortFormCaseCitation as x, ParentheticalType as y, spanFromGroupIndex as z };
|
|
1028
|
-
//# sourceMappingURL=citation-
|
|
1073
|
+
//# sourceMappingURL=citation-ChBABKNb.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"citation-
|
|
1
|
+
{"version":3,"file":"citation-ChBABKNb.d.cts","names":[],"sources":["../src/extract/pincite.ts","../src/extract/dates.ts","../src/clean/segmentMap.ts","../src/types/span.ts","../src/types/componentSpans.ts","../src/types/citation.ts"],"mappings":"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"}
|
|
@@ -889,6 +889,21 @@ interface IdCitation extends CitationBase {
|
|
|
889
889
|
/** Structured pincite information (page, range, footnote, star-pagination). */
|
|
890
890
|
pinciteInfo?: PinciteInfo;
|
|
891
891
|
/**
|
|
892
|
+
* True if `pincite` was inherited from a preceding same-authority citation
|
|
893
|
+
* per Bluebook Rule 4.1 / Indigo Book R6.2.2. Undefined when `pincite` was
|
|
894
|
+
* extracted directly from this citation's text or when no pincite was set.
|
|
895
|
+
*/
|
|
896
|
+
pinciteInherited?: boolean;
|
|
897
|
+
/**
|
|
898
|
+
* Array index of the citation from which `pincite` was inherited.
|
|
899
|
+
* Indexes into the same array this citation appears in — i.e., the
|
|
900
|
+
* output of `extractCitations(...).citations` (or
|
|
901
|
+
* `DocumentResolver.resolve()`'s output, which preserves input order).
|
|
902
|
+
* Set only when `pinciteInherited` is true. Records the immediate
|
|
903
|
+
* predecessor; follow transitively for the chain's originator.
|
|
904
|
+
*/
|
|
905
|
+
pinciteInheritedFrom?: number;
|
|
906
|
+
/**
|
|
892
907
|
* Trailing parenthetical content (text between the parens, excluding the
|
|
893
908
|
* parens themselves) captured from `Id. at N (...)` forms. Common values
|
|
894
909
|
* include drop-citation markers (`citation omitted`, `internal quotation
|
|
@@ -933,6 +948,21 @@ interface SupraCitation extends CitationBase {
|
|
|
933
948
|
/** Structured pincite information (page, range, footnote, star-pagination). */
|
|
934
949
|
pinciteInfo?: PinciteInfo;
|
|
935
950
|
/**
|
|
951
|
+
* True if `pincite` was inherited from a preceding same-authority citation
|
|
952
|
+
* per Bluebook Rule 4.1 / Indigo Book R6.2.2. Undefined when `pincite` was
|
|
953
|
+
* extracted directly from this citation's text or when no pincite was set.
|
|
954
|
+
*/
|
|
955
|
+
pinciteInherited?: boolean;
|
|
956
|
+
/**
|
|
957
|
+
* Array index of the citation from which `pincite` was inherited.
|
|
958
|
+
* Indexes into the same array this citation appears in — i.e., the
|
|
959
|
+
* output of `extractCitations(...).citations` (or
|
|
960
|
+
* `DocumentResolver.resolve()`'s output, which preserves input order).
|
|
961
|
+
* Set only when `pinciteInherited` is true. Records the immediate
|
|
962
|
+
* predecessor; follow transitively for the chain's originator.
|
|
963
|
+
*/
|
|
964
|
+
pinciteInheritedFrom?: number;
|
|
965
|
+
/**
|
|
936
966
|
* Trailing parenthetical content (text between the parens, excluding the
|
|
937
967
|
* parens themselves). See `IdCitation.parenthetical` for common shapes
|
|
938
968
|
* and rationale. #303
|
|
@@ -955,6 +985,21 @@ interface ShortFormCaseCitation extends CitationBase {
|
|
|
955
985
|
pincite?: number;
|
|
956
986
|
/** Structured pincite information (page, range, footnote, star-pagination). */
|
|
957
987
|
pinciteInfo?: PinciteInfo;
|
|
988
|
+
/**
|
|
989
|
+
* True if `pincite` was inherited from a preceding same-authority citation
|
|
990
|
+
* per Bluebook Rule 4.1 / Indigo Book R6.2.2. Undefined when `pincite` was
|
|
991
|
+
* extracted directly from this citation's text or when no pincite was set.
|
|
992
|
+
*/
|
|
993
|
+
pinciteInherited?: boolean;
|
|
994
|
+
/**
|
|
995
|
+
* Array index of the citation from which `pincite` was inherited.
|
|
996
|
+
* Indexes into the same array this citation appears in — i.e., the
|
|
997
|
+
* output of `extractCitations(...).citations` (or
|
|
998
|
+
* `DocumentResolver.resolve()`'s output, which preserves input order).
|
|
999
|
+
* Set only when `pinciteInherited` is true. Records the immediate
|
|
1000
|
+
* predecessor; follow transitively for the chain's originator.
|
|
1001
|
+
*/
|
|
1002
|
+
pinciteInheritedFrom?: number;
|
|
958
1003
|
/** Component-level spans (currently just `pincite`; extend when needed). */
|
|
959
1004
|
spans?: ShortFormCaseComponentSpans;
|
|
960
1005
|
/** Back-reference party name when the short-form includes one (Bluebook
|
|
@@ -1025,4 +1070,4 @@ type CitationOfType<T extends CitationType> = Extract<Citation, {
|
|
|
1025
1070
|
type ExtractorMap = { [K in FullCitationType]: CitationOfType<K> };
|
|
1026
1071
|
//#endregion
|
|
1027
1072
|
export { ConstitutionalComponentSpans as A, PinciteInfo as B, ShortFormCitationType as C, SupraCitation as D, SubsequentHistoryEntry as E, StatuteComponentSpans as F, StatutesAtLargeComponentSpans as I, Span as L, JournalComponentSpans as M, NeutralComponentSpans as N, Warning as O, PublicLawComponentSpans as P, TransformationMap as R, ShortFormCitation as S, StatutesAtLargeCitation as T, parsePincite as V, NeutralCitation as _, CitationType as a, PublicLawCitation as b, DocketCitation as c, FullCaseCitation as d, FullCitation as f, JournalCitation as g, IdCitation as h, CitationSignal as i, FederalRegisterComponentSpans as j, CaseComponentSpans as k, ExtractorMap as l, HistorySignal as m, CitationBase as n, ConstitutionalCitation as o, FullCitationType as p, CitationOfType as r, CourtInference as s, Citation as t, FederalRegisterCitation as u, Parenthetical as v, StatuteCitation as w, ShortFormCaseCitation as x, ParentheticalType as y, spanFromGroupIndex as z };
|
|
1028
|
-
//# sourceMappingURL=citation-
|
|
1073
|
+
//# sourceMappingURL=citation-gpnnRN23.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"citation-
|
|
1
|
+
{"version":3,"file":"citation-gpnnRN23.d.mts","names":[],"sources":["../src/extract/pincite.ts","../src/extract/dates.ts","../src/clean/segmentMap.ts","../src/types/span.ts","../src/types/componentSpans.ts","../src/types/citation.ts"],"mappings":"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"}
|