eyecite-ts 0.22.1 → 0.24.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 +47 -6
- package/dist/annotate/index.d.cts +1 -1
- package/dist/annotate/index.d.mts +1 -1
- package/dist/{citation-CNiQ8mMR.d.cts → citation-B8IB2eC6.d.mts} +253 -6
- package/dist/citation-B8IB2eC6.d.mts.map +1 -0
- package/dist/{citation-Debi97If.d.mts → citation-_lNG83rc.d.cts} +253 -6
- package/dist/citation-_lNG83rc.d.cts.map +1 -0
- package/dist/data/index.cjs +1 -1
- package/dist/data/index.d.cts.map +1 -1
- package/dist/data/index.d.mts.map +1 -1
- package/dist/data/index.mjs +1 -1
- package/dist/index.cjs +5 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -6
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +41 -6
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.map +1 -1
- package/dist/knownCodes-BO5bT4lZ.cjs +2 -0
- package/dist/knownCodes-BO5bT4lZ.cjs.map +1 -0
- package/dist/knownCodes-Ch2Jfq-m.mjs +2 -0
- package/dist/knownCodes-Ch2Jfq-m.mjs.map +1 -0
- package/dist/reporters-CtCZyH5W.mjs +2 -0
- package/dist/reporters-CtCZyH5W.mjs.map +1 -0
- package/dist/{types-CpP9Oyfs.d.mts → types-DPhytyc8.d.cts} +2 -2
- package/dist/{types-CpP9Oyfs.d.mts.map → types-DPhytyc8.d.cts.map} +1 -1
- package/dist/{types-ZmchRmBH.d.cts → types-J9-lnmev.d.mts} +2 -2
- package/dist/{types-ZmchRmBH.d.cts.map → types-J9-lnmev.d.mts.map} +1 -1
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +2 -2
- package/dist/utils/index.d.mts +2 -2
- package/dist/utils/index.mjs +1 -1
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +8 -2
- package/dist/citation-CNiQ8mMR.d.cts.map +0 -1
- package/dist/citation-Debi97If.d.mts.map +0 -1
- package/dist/knownCodes-Cw5MI48f.cjs +0 -2
- package/dist/knownCodes-Cw5MI48f.cjs.map +0 -1
- package/dist/knownCodes-DcsEnbF3.mjs +0 -2
- package/dist/knownCodes-DcsEnbF3.mjs.map +0 -1
- package/dist/reporters-CZoC98-L.mjs +0 -2
- package/dist/reporters-CZoC98-L.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -317,19 +317,31 @@ if (cite.type === "case") {
|
|
|
317
317
|
The `eyecite-ts/utils` entry point provides composable post-processing:
|
|
318
318
|
|
|
319
319
|
```typescript
|
|
320
|
+
import { extractCitations, isCaseCitation } from "eyecite-ts"
|
|
320
321
|
import { groupByCase, toBluebook, toReporterKey, getSurroundingContext } from "eyecite-ts/utils"
|
|
321
322
|
|
|
323
|
+
const citations = extractCitations(text, { resolve: true })
|
|
324
|
+
|
|
322
325
|
// Group citations by case (parallel + short-form → full)
|
|
326
|
+
// Requires resolved citations — pass `{ resolve: true }` to extractCitations.
|
|
323
327
|
const groups = groupByCase(citations)
|
|
324
328
|
|
|
325
|
-
// Format as Bluebook citation string
|
|
326
|
-
const formatted = toBluebook(
|
|
329
|
+
// Format as Bluebook citation string (any Citation)
|
|
330
|
+
const formatted = toBluebook(citations[0])
|
|
327
331
|
|
|
328
|
-
// Get canonical reporter key for deduplication
|
|
329
|
-
const
|
|
332
|
+
// Get canonical reporter key for deduplication (full case citations only)
|
|
333
|
+
const first = citations[0]
|
|
334
|
+
if (isCaseCitation(first)) {
|
|
335
|
+
const key = toReporterKey(first) // "500 F.2d 123"
|
|
336
|
+
}
|
|
330
337
|
|
|
331
|
-
// Extract surrounding sentence context
|
|
332
|
-
const
|
|
338
|
+
// Extract surrounding sentence context (pass a {start, end} span, not the citation)
|
|
339
|
+
const cite = citations[0]
|
|
340
|
+
const ctx = getSurroundingContext(
|
|
341
|
+
text,
|
|
342
|
+
{ start: cite.span.originalStart, end: cite.span.originalEnd },
|
|
343
|
+
{ maxLength: 100 },
|
|
344
|
+
)
|
|
333
345
|
```
|
|
334
346
|
|
|
335
347
|
## Type System
|
|
@@ -433,6 +445,35 @@ pnpm size # Check bundle size limits
|
|
|
433
445
|
|
|
434
446
|
Requires Node.js >= 18.0.0. See [ARCHITECTURE.md](ARCHITECTURE.md) for contributor orientation.
|
|
435
447
|
|
|
448
|
+
### Internal Bughunt CLI
|
|
449
|
+
|
|
450
|
+
`pnpm bughunt` is a repo-local development tool for reproducible citation-parser bug
|
|
451
|
+
hunting. It is intentionally private to this repository: it is not exported as a
|
|
452
|
+
package entry point and is not installed as a public binary.
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
pnpm bughunt run --lane all --seed 1234 --sample 5
|
|
456
|
+
pnpm bughunt inspect .bughunt/latest.json --id <finding-id>
|
|
457
|
+
pnpm bughunt promote .bughunt/latest.json --id <finding-id>
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
The `run` command writes local artifacts under `.bughunt/runs/<run-id>/` plus a
|
|
461
|
+
`.bughunt/latest.json` pointer. Runs include `manifest.json`, `findings.jsonl`,
|
|
462
|
+
`cases.jsonl`, `events.jsonl`, `report.json`, and `summary.md`; `.bughunt/` is
|
|
463
|
+
gitignored and should not be committed.
|
|
464
|
+
|
|
465
|
+
Available v1 lanes:
|
|
466
|
+
|
|
467
|
+
- `corpus`: runs extraction and resolution over inline smoke cases and reports
|
|
468
|
+
crashes or performance outliers.
|
|
469
|
+
- `invariants`: checks citation/span invariants and records violations.
|
|
470
|
+
- `mutate`: uses `fast-check` with deterministic seeds and replay paths for
|
|
471
|
+
generated-input failures.
|
|
472
|
+
|
|
473
|
+
`promote` is preview-only in v1. It prints a Vitest repro skeleton with the
|
|
474
|
+
finding ID, original command, source context, and minimized/input text when
|
|
475
|
+
available; it does not write files.
|
|
476
|
+
|
|
436
477
|
## License
|
|
437
478
|
|
|
438
479
|
MIT
|
|
@@ -310,12 +310,51 @@ interface StatutesAtLargeComponentSpans {
|
|
|
310
310
|
year?: Span;
|
|
311
311
|
signal?: Span;
|
|
312
312
|
}
|
|
313
|
+
/**
|
|
314
|
+
* Component spans for federal rule citations (type: "federalRule"). #576
|
|
315
|
+
*/
|
|
316
|
+
interface FederalRuleComponentSpans {
|
|
317
|
+
ruleSet?: Span;
|
|
318
|
+
rule?: Span;
|
|
319
|
+
subsection?: Span;
|
|
320
|
+
signal?: Span;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Component spans for Restatement citations (type: "restatement"). #578
|
|
324
|
+
*/
|
|
325
|
+
interface RestatementComponentSpans {
|
|
326
|
+
edition?: Span;
|
|
327
|
+
subject?: Span;
|
|
328
|
+
section?: Span;
|
|
329
|
+
subsection?: Span;
|
|
330
|
+
signal?: Span;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Component spans for treatise citations (type: "treatise"). #579
|
|
334
|
+
*/
|
|
335
|
+
interface TreatiseComponentSpans {
|
|
336
|
+
volume?: Span;
|
|
337
|
+
title?: Span;
|
|
338
|
+
section?: Span;
|
|
339
|
+
year?: Span;
|
|
340
|
+
signal?: Span;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Component spans for A.L.R. annotation citations (type: "annotation"). #581
|
|
344
|
+
*/
|
|
345
|
+
interface AnnotationComponentSpans {
|
|
346
|
+
volume?: Span;
|
|
347
|
+
series?: Span;
|
|
348
|
+
page?: Span;
|
|
349
|
+
year?: Span;
|
|
350
|
+
signal?: Span;
|
|
351
|
+
}
|
|
313
352
|
//#endregion
|
|
314
353
|
//#region src/types/citation.d.ts
|
|
315
354
|
/**
|
|
316
355
|
* Citation type discriminator for type-safe pattern matching.
|
|
317
356
|
*/
|
|
318
|
-
type CitationType = "case" | "docket" | "statute" | "journal" | "neutral" | "publicLaw" | "federalRegister" | "statutesAtLarge" | "constitutional" | "id" | "supra" | "shortFormCase";
|
|
357
|
+
type CitationType = "case" | "docket" | "statute" | "regulation" | "stateRule" | "journal" | "neutral" | "publicLaw" | "federalRegister" | "statutesAtLarge" | "constitutional" | "federalRule" | "restatement" | "treatise" | "annotation" | "id" | "supra" | "shortFormCase";
|
|
319
358
|
/**
|
|
320
359
|
* Warning generated during citation parsing.
|
|
321
360
|
*/
|
|
@@ -670,6 +709,18 @@ interface StatuteCitation extends CitationBase {
|
|
|
670
709
|
chapter?: string;
|
|
671
710
|
/** Subsection/pincite chain, e.g. "(a)(1)(A)" */
|
|
672
711
|
subsection?: string;
|
|
712
|
+
/**
|
|
713
|
+
* Structured representation of a subsection range like `(a)-(b)` /
|
|
714
|
+
* `(9)—(16)`. Populated only when the cited subsection chain ends with
|
|
715
|
+
* a hyphen/en-dash/em-dash followed by another paren group. `start` is
|
|
716
|
+
* mirrored on the `subsection` field for backward compatibility, so
|
|
717
|
+
* existing consumers reading `subsection` still see the first endpoint.
|
|
718
|
+
* (#591)
|
|
719
|
+
*/
|
|
720
|
+
subsectionRange?: {
|
|
721
|
+
start: string;
|
|
722
|
+
end: string;
|
|
723
|
+
};
|
|
673
724
|
/** 2-letter state code or "US" when unambiguously identified */
|
|
674
725
|
jurisdiction?: string;
|
|
675
726
|
/**
|
|
@@ -710,6 +761,60 @@ interface StatuteCitation extends CitationBase {
|
|
|
710
761
|
spans?: StatuteComponentSpans;
|
|
711
762
|
}
|
|
712
763
|
/**
|
|
764
|
+
* Regulation citation (Code of Federal Regulations and state regulatory
|
|
765
|
+
* codes that share the same shape: title + code + section + subsection).
|
|
766
|
+
*
|
|
767
|
+
* Distinct from `StatuteCitation` because regulations are issued by
|
|
768
|
+
* executive agencies under delegated authority, not enacted by a
|
|
769
|
+
* legislature. Downstream consumers filtering by citation kind (e.g.
|
|
770
|
+
* "show me only statutes" vs "show me only regs") need this type
|
|
771
|
+
* discriminator to avoid post-hoc string matching on `code`. #637
|
|
772
|
+
*
|
|
773
|
+
* Shape is otherwise identical to `StatuteCitation`.
|
|
774
|
+
*
|
|
775
|
+
* @example "42 C.F.R. § 100.3"
|
|
776
|
+
* @example "19 C.F.R. § 351.412(e)"
|
|
777
|
+
*/
|
|
778
|
+
interface RegulationCitation extends CitationBase {
|
|
779
|
+
type: "regulation";
|
|
780
|
+
/** Title number (e.g. 42 for `42 C.F.R.`). */
|
|
781
|
+
title?: number;
|
|
782
|
+
/** Code identifier (`C.F.R.`, etc.). */
|
|
783
|
+
code?: string;
|
|
784
|
+
/** Section identifier. */
|
|
785
|
+
section?: string;
|
|
786
|
+
/** Structured `§§ N-M` section range (mirrors StatuteCitation). */
|
|
787
|
+
sectionRange?: {
|
|
788
|
+
start: string;
|
|
789
|
+
end: string;
|
|
790
|
+
};
|
|
791
|
+
/** Chapter for chapter+section regulatory codes (rare). */
|
|
792
|
+
chapter?: string;
|
|
793
|
+
/** Subsection/pincite chain, e.g. "(c)(2)" */
|
|
794
|
+
subsection?: string;
|
|
795
|
+
/** Structured subsection range (`(a)-(b)`, `(9)—(16)`). */
|
|
796
|
+
subsectionRange?: {
|
|
797
|
+
start: string;
|
|
798
|
+
end: string;
|
|
799
|
+
};
|
|
800
|
+
/** 2-letter state code or "US" when unambiguously identified */
|
|
801
|
+
jurisdiction?: string;
|
|
802
|
+
/** Alias for subsection. */
|
|
803
|
+
pincite?: string;
|
|
804
|
+
/** True when "et seq." follows the citation */
|
|
805
|
+
hasEtSeq?: boolean;
|
|
806
|
+
/** Year of the regulatory edition cited from trailing parenthetical. */
|
|
807
|
+
year?: number;
|
|
808
|
+
/** Publisher of an annotated edition. */
|
|
809
|
+
publisher?: string;
|
|
810
|
+
/** Recompilation year for codes that were re-issued. */
|
|
811
|
+
recompiledYear?: number;
|
|
812
|
+
/** Edition-volume label (`Repl.`, `Supp.`, `Cum. Supp.`). */
|
|
813
|
+
editionLabel?: string;
|
|
814
|
+
/** Precise text positions for each parsed component. */
|
|
815
|
+
spans?: StatuteComponentSpans;
|
|
816
|
+
}
|
|
817
|
+
/**
|
|
713
818
|
* Journal citation (law review, legal periodical).
|
|
714
819
|
*
|
|
715
820
|
* Format: [Author,] [Title,] Volume Journal Page [, Pincite] [(Year)]
|
|
@@ -831,12 +936,154 @@ interface StatutesAtLargeCitation extends CitationBase {
|
|
|
831
936
|
volume: number | string;
|
|
832
937
|
/** Page number */
|
|
833
938
|
page: number;
|
|
939
|
+
/**
|
|
940
|
+
* Specific pincite page, captured from a trailing `, NNN` suffix
|
|
941
|
+
* (e.g. `100 Stat. 3743, 3755` → page=3743, pincite=3755). The first
|
|
942
|
+
* page is the section's starting page; the pincite is the cited point
|
|
943
|
+
* within the section. Range pincites (`3755-58`) populate `pinciteEndPage`
|
|
944
|
+
* and `pinciteIsRange`. (#639)
|
|
945
|
+
*/
|
|
946
|
+
pincite?: number;
|
|
947
|
+
/** End page for range pincites (`3755-58` → 3758). (#639) */
|
|
948
|
+
pinciteEndPage?: number;
|
|
949
|
+
/** True when the pincite is a range (`3755-58`). (#639) */
|
|
950
|
+
pinciteIsRange?: boolean;
|
|
834
951
|
/** Publication year (if extracted) */
|
|
835
952
|
year?: number;
|
|
836
953
|
/** Precise text positions for each parsed component of this citation. */
|
|
837
954
|
spans?: StatutesAtLargeComponentSpans;
|
|
838
955
|
}
|
|
839
956
|
/**
|
|
957
|
+
* Federal Rules of Procedure citation (#576).
|
|
958
|
+
*
|
|
959
|
+
* Covers the four primary federal rule sets (civil, criminal, evidence,
|
|
960
|
+
* appellate) plus bankruptcy. Both the abbreviated Bluebook form
|
|
961
|
+
* (`Fed. R. Civ. P. 56`) and the spelled-out form
|
|
962
|
+
* (`Federal Rule of Civil Procedure 56`) parse to the same shape.
|
|
963
|
+
*
|
|
964
|
+
* @example "Fed. R. Civ. P. 56" → { ruleSet: "civil", rule: "56" }
|
|
965
|
+
* @example "Fed. R. Crim. P. 12(b)" → { ruleSet: "criminal", rule: "12", subsection: "(b)" }
|
|
966
|
+
* @example "Fed. R. Evid. 401" → { ruleSet: "evidence", rule: "401" }
|
|
967
|
+
* @example "Fed. R. App. P. 4(a)" → { ruleSet: "appellate", rule: "4", subsection: "(a)" }
|
|
968
|
+
* @example "Fed. R. Bankr. P. 7001" → { ruleSet: "bankruptcy", rule: "7001" }
|
|
969
|
+
*/
|
|
970
|
+
interface FederalRuleCitation extends CitationBase {
|
|
971
|
+
type: "federalRule";
|
|
972
|
+
/** Which rule set the citation refers to */
|
|
973
|
+
ruleSet: "civil" | "criminal" | "evidence" | "appellate" | "bankruptcy";
|
|
974
|
+
/** Rule number (string to preserve leading zeros / non-numeric suffixes) */
|
|
975
|
+
rule: string;
|
|
976
|
+
/** Subsection chain (e.g., "(b)(6)") — undefined when not cited */
|
|
977
|
+
subsection?: string;
|
|
978
|
+
/** Precise text positions for each parsed component of this citation. */
|
|
979
|
+
spans?: FederalRuleComponentSpans;
|
|
980
|
+
}
|
|
981
|
+
/**
|
|
982
|
+
* State court rule citation (#636).
|
|
983
|
+
*
|
|
984
|
+
* Mirrors `FederalRuleCitation` for state-court rules of procedure. Each
|
|
985
|
+
* supported state has a closed set of distinctive abbreviations (Idaho
|
|
986
|
+
* `I.R.C.P.`, North Carolina `N.C. R. App. P.`, South Carolina `SCACR`,
|
|
987
|
+
* Court of Federal Claims `RCFC`, etc.) — bare `Rule N` without a
|
|
988
|
+
* jurisdiction anchor is intentionally not matched.
|
|
989
|
+
*
|
|
990
|
+
* `jurisdiction` is a 2-letter state code (`ID`, `NC`, `SC`) or `CFC`
|
|
991
|
+
* for the Court of Federal Claims.
|
|
992
|
+
*
|
|
993
|
+
* @example "I.R.C.P. 60(b)(6)" → { jurisdiction: "ID", ruleSet: "civil", rule: "60", subsection: "(b)(6)" }
|
|
994
|
+
* @example "N.C. R. App. P. 10(b)(1)" → { jurisdiction: "NC", ruleSet: "appellate", rule: "10", subsection: "(b)(1)" }
|
|
995
|
+
* @example "Rule 268(d)(2), SCACR" → { jurisdiction: "SC", ruleSet: "appellate", rule: "268", subsection: "(d)(2)" }
|
|
996
|
+
* @example "RCFC 56(c)" → { jurisdiction: "CFC", ruleSet: "civil", rule: "56", subsection: "(c)" }
|
|
997
|
+
*/
|
|
998
|
+
interface StateRuleCitation extends CitationBase {
|
|
999
|
+
type: "stateRule";
|
|
1000
|
+
/** 2-letter state code or `CFC` for Court of Federal Claims. */
|
|
1001
|
+
jurisdiction: string;
|
|
1002
|
+
/** Rule set classification. */
|
|
1003
|
+
ruleSet: "civil" | "criminal" | "evidence" | "appellate" | "bankruptcy" | "other";
|
|
1004
|
+
/** Rule number. */
|
|
1005
|
+
rule: string;
|
|
1006
|
+
/** Subsection chain (e.g., "(b)(6)"). */
|
|
1007
|
+
subsection?: string;
|
|
1008
|
+
/** Precise text positions for each parsed component. */
|
|
1009
|
+
spans?: FederalRuleComponentSpans;
|
|
1010
|
+
}
|
|
1011
|
+
/**
|
|
1012
|
+
* Restatement citation (#578).
|
|
1013
|
+
*
|
|
1014
|
+
* Restatements of the Law are secondary legal authority published by the
|
|
1015
|
+
* American Law Institute. Citations follow the Bluebook form `Restatement
|
|
1016
|
+
* (Edition) of Subject § Section`.
|
|
1017
|
+
*
|
|
1018
|
+
* @example "Restatement (Second) of Torts § 402A"
|
|
1019
|
+
* → { edition: "Second", subject: "Torts", section: "402A" }
|
|
1020
|
+
* @example "Restatement (Third) of the Law Governing Lawyers § 1"
|
|
1021
|
+
* → { edition: "Third", subject: "the Law Governing Lawyers", section: "1" }
|
|
1022
|
+
*/
|
|
1023
|
+
interface RestatementCitation extends CitationBase {
|
|
1024
|
+
type: "restatement";
|
|
1025
|
+
/** Restatement edition (First, Second, Third, Fourth) */
|
|
1026
|
+
edition: "First" | "Second" | "Third" | "Fourth";
|
|
1027
|
+
/** Subject matter (e.g., "Torts", "Contracts", "the Law Governing Lawyers") */
|
|
1028
|
+
subject: string;
|
|
1029
|
+
/** Section number (string to preserve letter suffixes like "402A") */
|
|
1030
|
+
section: string;
|
|
1031
|
+
/** Subsection chain (e.g., "(1)(b)") — undefined when not cited */
|
|
1032
|
+
subsection?: string;
|
|
1033
|
+
/** Precise text positions for each parsed component of this citation. */
|
|
1034
|
+
spans?: RestatementComponentSpans;
|
|
1035
|
+
}
|
|
1036
|
+
/**
|
|
1037
|
+
* Legal treatise citation (#579).
|
|
1038
|
+
*
|
|
1039
|
+
* Treatises are multi-volume secondary authorities (Wright & Miller,
|
|
1040
|
+
* Williston, Moore's, Nimmer, Corbin, Witkin, etc.). Citations are
|
|
1041
|
+
* heterogeneous, but the common pattern is `Volume Author/Title § Section`.
|
|
1042
|
+
*
|
|
1043
|
+
* @example "5 Wright & Miller, Federal Practice and Procedure § 1290"
|
|
1044
|
+
* → { volume: 5, title: "Wright & Miller, Federal Practice and Procedure", section: "1290" }
|
|
1045
|
+
* @example "1 Nimmer on Copyright § 5.05[A]"
|
|
1046
|
+
* → { volume: 1, title: "Nimmer on Copyright", section: "5.05[A]" }
|
|
1047
|
+
*/
|
|
1048
|
+
interface TreatiseCitation extends CitationBase {
|
|
1049
|
+
type: "treatise";
|
|
1050
|
+
/** Volume number (string for hyphenated volumes) */
|
|
1051
|
+
volume: number | string;
|
|
1052
|
+
/** Title/author body as it appears in the citation */
|
|
1053
|
+
title: string;
|
|
1054
|
+
/** Section number / locator (string to preserve dots and bracketed suffixes) */
|
|
1055
|
+
section: string;
|
|
1056
|
+
/** Edition + year, when present in trailing parenthetical (e.g., "5th ed. 2008") */
|
|
1057
|
+
edition?: string;
|
|
1058
|
+
/** Publication year (if extracted from parenthetical) */
|
|
1059
|
+
year?: number;
|
|
1060
|
+
/** Precise text positions for each parsed component of this citation. */
|
|
1061
|
+
spans?: TreatiseComponentSpans;
|
|
1062
|
+
}
|
|
1063
|
+
/**
|
|
1064
|
+
* Annotation citation (#581).
|
|
1065
|
+
*
|
|
1066
|
+
* The American Law Reports (A.L.R.) series publishes annotations on
|
|
1067
|
+
* narrow legal issues — these look like case citations
|
|
1068
|
+
* (`100 A.L.R.2d 1234`) but are secondary authority, not case law.
|
|
1069
|
+
*
|
|
1070
|
+
* @example "100 A.L.R.2d 1234" → { series: "A.L.R.2d", volume: 100, page: 1234 }
|
|
1071
|
+
* @example "23 A.L.R. Fed. 3d 456" → { series: "A.L.R. Fed. 3d", volume: 23, page: 456 }
|
|
1072
|
+
*/
|
|
1073
|
+
interface AnnotationCitation extends CitationBase {
|
|
1074
|
+
type: "annotation";
|
|
1075
|
+
/** A.L.R. series identifier (`A.L.R.`, `A.L.R.2d`, `A.L.R. Fed.`, etc.) */
|
|
1076
|
+
series: string;
|
|
1077
|
+
/** Volume number */
|
|
1078
|
+
volume: number;
|
|
1079
|
+
/** Page number where the annotation begins */
|
|
1080
|
+
page: number;
|
|
1081
|
+
/** Publication year (if extracted from parenthetical) */
|
|
1082
|
+
year?: number;
|
|
1083
|
+
/** Precise text positions for each parsed component of this citation. */
|
|
1084
|
+
spans?: AnnotationComponentSpans;
|
|
1085
|
+
}
|
|
1086
|
+
/**
|
|
840
1087
|
* Docket-number-only case citation (no traditional reporter assignment).
|
|
841
1088
|
*
|
|
842
1089
|
* Used for very recent decisions identified by docket/slip number, common for:
|
|
@@ -1082,16 +1329,16 @@ interface ShortFormCaseCitation extends CitationBase {
|
|
|
1082
1329
|
* // ...
|
|
1083
1330
|
* }
|
|
1084
1331
|
*/
|
|
1085
|
-
type Citation = FullCaseCitation | DocketCitation | StatuteCitation | JournalCitation | NeutralCitation | PublicLawCitation | FederalRegisterCitation | StatutesAtLargeCitation | ConstitutionalCitation | IdCitation | SupraCitation | ShortFormCaseCitation;
|
|
1332
|
+
type Citation = FullCaseCitation | DocketCitation | StatuteCitation | RegulationCitation | JournalCitation | NeutralCitation | PublicLawCitation | FederalRegisterCitation | StatutesAtLargeCitation | ConstitutionalCitation | FederalRuleCitation | StateRuleCitation | RestatementCitation | TreatiseCitation | AnnotationCitation | IdCitation | SupraCitation | ShortFormCaseCitation;
|
|
1086
1333
|
/**
|
|
1087
1334
|
* Citation type discriminators grouped by category.
|
|
1088
1335
|
*/
|
|
1089
|
-
type FullCitationType = "case" | "docket" | "statute" | "journal" | "neutral" | "publicLaw" | "federalRegister" | "statutesAtLarge" | "constitutional";
|
|
1336
|
+
type FullCitationType = "case" | "docket" | "statute" | "journal" | "neutral" | "publicLaw" | "federalRegister" | "statutesAtLarge" | "constitutional" | "federalRule" | "stateRule" | "restatement" | "treatise" | "annotation";
|
|
1090
1337
|
type ShortFormCitationType = "id" | "supra" | "shortFormCase";
|
|
1091
1338
|
/**
|
|
1092
1339
|
* Union of all full citation types (not short-form references).
|
|
1093
1340
|
*/
|
|
1094
|
-
type FullCitation = FullCaseCitation | DocketCitation | StatuteCitation | JournalCitation | NeutralCitation | PublicLawCitation | FederalRegisterCitation | StatutesAtLargeCitation | ConstitutionalCitation;
|
|
1341
|
+
type FullCitation = FullCaseCitation | DocketCitation | StatuteCitation | JournalCitation | NeutralCitation | PublicLawCitation | FederalRegisterCitation | StatutesAtLargeCitation | ConstitutionalCitation | FederalRuleCitation | StateRuleCitation | RestatementCitation | TreatiseCitation | AnnotationCitation;
|
|
1095
1342
|
/**
|
|
1096
1343
|
* Union of all short-form citation types (Id., supra, short-form case).
|
|
1097
1344
|
*/
|
|
@@ -1114,5 +1361,5 @@ type CitationOfType<T extends CitationType> = Extract<Citation, {
|
|
|
1114
1361
|
*/
|
|
1115
1362
|
type ExtractorMap = { [K in FullCitationType]: CitationOfType<K> };
|
|
1116
1363
|
//#endregion
|
|
1117
|
-
export {
|
|
1118
|
-
//# sourceMappingURL=citation-
|
|
1364
|
+
export { SubsequentHistoryEntry as A, NeutralComponentSpans as B, RegulationCitation as C, ShortFormCitationType as D, ShortFormCitation as E, CaseComponentSpans as F, TreatiseComponentSpans as G, RestatementComponentSpans as H, ConstitutionalComponentSpans as I, spanFromGroupIndex as J, Span as K, FederalRegisterComponentSpans as L, TreatiseCitation as M, Warning as N, StatuteCitation as O, AnnotationComponentSpans as P, FederalRuleComponentSpans as R, PublicLawCitation as S, ShortFormCaseCitation as T, StatuteComponentSpans as U, PublicLawComponentSpans as V, StatutesAtLargeComponentSpans as W, parsePincite as X, PinciteInfo as Y, IdCitation as _, CitationSignal as a, Parenthetical as b, CourtInference as c, FederalRegisterCitation as d, FederalRuleCitation as f, HistorySignal as g, FullCitationType as h, CitationOfType as i, SupraCitation as j, StatutesAtLargeCitation as k, DocketCitation as l, FullCitation as m, Citation as n, CitationType as o, FullCaseCitation as p, TransformationMap as q, CitationBase as r, ConstitutionalCitation as s, AnnotationCitation as t, ExtractorMap as u, JournalCitation as v, RestatementCitation as w, ParentheticalType as x, NeutralCitation as y, JournalComponentSpans as z };
|
|
1365
|
+
//# sourceMappingURL=citation-B8IB2eC6.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citation-B8IB2eC6.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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"}
|