postext 1.11.2 → 1.12.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 (151) hide show
  1. package/dist/__tests__/exports.test.js +24 -0
  2. package/dist/__tests__/exports.test.js.map +1 -1
  3. package/dist/__tests__/parse/anchors.test.d.ts +2 -0
  4. package/dist/__tests__/parse/anchors.test.d.ts.map +1 -0
  5. package/dist/__tests__/parse/anchors.test.js +71 -0
  6. package/dist/__tests__/parse/anchors.test.js.map +1 -0
  7. package/dist/__tests__/parse/citations.test.d.ts +2 -0
  8. package/dist/__tests__/parse/citations.test.d.ts.map +1 -0
  9. package/dist/__tests__/parse/citations.test.js +98 -0
  10. package/dist/__tests__/parse/citations.test.js.map +1 -0
  11. package/dist/__tests__/parse/containers.test.js +1 -1
  12. package/dist/__tests__/parse/containers.test.js.map +1 -1
  13. package/dist/__tests__/pipeline/crossRefs.test.d.ts +2 -0
  14. package/dist/__tests__/pipeline/crossRefs.test.d.ts.map +1 -0
  15. package/dist/__tests__/pipeline/crossRefs.test.js +170 -0
  16. package/dist/__tests__/pipeline/crossRefs.test.js.map +1 -0
  17. package/dist/bundle/book.d.ts.map +1 -1
  18. package/dist/bundle/book.js +22 -4
  19. package/dist/bundle/book.js.map +1 -1
  20. package/dist/citations/bibtex.d.ts +19 -0
  21. package/dist/citations/bibtex.d.ts.map +1 -0
  22. package/dist/citations/bibtex.js +375 -0
  23. package/dist/citations/bibtex.js.map +1 -0
  24. package/dist/citations/context.d.ts +64 -0
  25. package/dist/citations/context.d.ts.map +1 -0
  26. package/dist/citations/context.js +115 -0
  27. package/dist/citations/context.js.map +1 -0
  28. package/dist/citations/data.d.ts +35 -0
  29. package/dist/citations/data.d.ts.map +1 -0
  30. package/dist/citations/data.js +158 -0
  31. package/dist/citations/data.js.map +1 -0
  32. package/dist/citations/html.d.ts +16 -0
  33. package/dist/citations/html.d.ts.map +1 -0
  34. package/dist/citations/html.js +99 -0
  35. package/dist/citations/html.js.map +1 -0
  36. package/dist/citations/registry.d.ts +30 -0
  37. package/dist/citations/registry.d.ts.map +1 -0
  38. package/dist/citations/registry.js +51 -0
  39. package/dist/citations/registry.js.map +1 -0
  40. package/dist/citations/types.d.ts +132 -0
  41. package/dist/citations/types.d.ts.map +1 -0
  42. package/dist/citations/types.js +9 -0
  43. package/dist/citations/types.js.map +1 -0
  44. package/dist/defaults/citations.d.ts +5 -0
  45. package/dist/defaults/citations.d.ts.map +1 -0
  46. package/dist/defaults/citations.js +99 -0
  47. package/dist/defaults/citations.js.map +1 -0
  48. package/dist/defaults/crossRefs.d.ts +7 -0
  49. package/dist/defaults/crossRefs.d.ts.map +1 -0
  50. package/dist/defaults/crossRefs.js +35 -0
  51. package/dist/defaults/crossRefs.js.map +1 -0
  52. package/dist/defaults/index.d.ts +2 -0
  53. package/dist/defaults/index.d.ts.map +1 -1
  54. package/dist/defaults/index.js +18 -0
  55. package/dist/defaults/index.js.map +1 -1
  56. package/dist/html-backend.d.ts.map +1 -1
  57. package/dist/html-backend.js +79 -19
  58. package/dist/html-backend.js.map +1 -1
  59. package/dist/index.d.ts +10 -4
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +9 -2
  62. package/dist/index.js.map +1 -1
  63. package/dist/knuthPlass/richAdapter.d.ts +2 -0
  64. package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
  65. package/dist/knuthPlass/richAdapter.js +1 -1
  66. package/dist/knuthPlass/richAdapter.js.map +1 -1
  67. package/dist/measure/cache.js +1 -1
  68. package/dist/measure/cache.js.map +1 -1
  69. package/dist/measure/rich.d.ts +4 -0
  70. package/dist/measure/rich.d.ts.map +1 -1
  71. package/dist/measure/rich.js +2 -2
  72. package/dist/measure/rich.js.map +1 -1
  73. package/dist/parse/attrs.d.ts.map +1 -1
  74. package/dist/parse/attrs.js +31 -4
  75. package/dist/parse/attrs.js.map +1 -1
  76. package/dist/parse/blockParser.d.ts.map +1 -1
  77. package/dist/parse/blockParser.js +68 -8
  78. package/dist/parse/blockParser.js.map +1 -1
  79. package/dist/parse/citations.d.ts +41 -0
  80. package/dist/parse/citations.d.ts.map +1 -0
  81. package/dist/parse/citations.js +206 -0
  82. package/dist/parse/citations.js.map +1 -0
  83. package/dist/parse/index.d.ts +1 -1
  84. package/dist/parse/index.d.ts.map +1 -1
  85. package/dist/parse/index.js.map +1 -1
  86. package/dist/parse/indexMarks.d.ts +2 -7
  87. package/dist/parse/indexMarks.d.ts.map +1 -1
  88. package/dist/parse/indexMarks.js +65 -20
  89. package/dist/parse/indexMarks.js.map +1 -1
  90. package/dist/parse/inlineFormatting.d.ts +2 -2
  91. package/dist/parse/inlineFormatting.d.ts.map +1 -1
  92. package/dist/parse/inlineFormatting.js +41 -14
  93. package/dist/parse/inlineFormatting.js.map +1 -1
  94. package/dist/parse/types.d.ts +50 -4
  95. package/dist/parse/types.d.ts.map +1 -1
  96. package/dist/pipeline/anchors.d.ts +28 -0
  97. package/dist/pipeline/anchors.d.ts.map +1 -0
  98. package/dist/pipeline/anchors.js +123 -0
  99. package/dist/pipeline/anchors.js.map +1 -0
  100. package/dist/pipeline/build.d.ts.map +1 -1
  101. package/dist/pipeline/build.js +51 -11
  102. package/dist/pipeline/build.js.map +1 -1
  103. package/dist/pipeline/citations.d.ts +80 -0
  104. package/dist/pipeline/citations.d.ts.map +1 -0
  105. package/dist/pipeline/citations.js +418 -0
  106. package/dist/pipeline/citations.js.map +1 -0
  107. package/dist/pipeline/config.d.ts.map +1 -1
  108. package/dist/pipeline/config.js +3 -1
  109. package/dist/pipeline/config.js.map +1 -1
  110. package/dist/pipeline/contentWarnings.d.ts +7 -1
  111. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  112. package/dist/pipeline/contentWarnings.js +57 -3
  113. package/dist/pipeline/contentWarnings.js.map +1 -1
  114. package/dist/pipeline/continuation.d.ts +2 -1
  115. package/dist/pipeline/continuation.d.ts.map +1 -1
  116. package/dist/pipeline/continuation.js +3 -0
  117. package/dist/pipeline/continuation.js.map +1 -1
  118. package/dist/pipeline/crossRefs.d.ts +79 -0
  119. package/dist/pipeline/crossRefs.d.ts.map +1 -0
  120. package/dist/pipeline/crossRefs.js +207 -0
  121. package/dist/pipeline/crossRefs.js.map +1 -0
  122. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  123. package/dist/pipeline/floatPlacement.js +2 -1
  124. package/dist/pipeline/floatPlacement.js.map +1 -1
  125. package/dist/pipeline/index.d.ts +2 -1
  126. package/dist/pipeline/index.d.ts.map +1 -1
  127. package/dist/pipeline/index.js +2 -1
  128. package/dist/pipeline/index.js.map +1 -1
  129. package/dist/pipeline/measureContentBlock.d.ts +4 -0
  130. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  131. package/dist/pipeline/measureContentBlock.js +1 -0
  132. package/dist/pipeline/measureContentBlock.js.map +1 -1
  133. package/dist/pipeline/outline.d.ts +3 -0
  134. package/dist/pipeline/outline.d.ts.map +1 -1
  135. package/dist/pipeline/outline.js +38 -1
  136. package/dist/pipeline/outline.js.map +1 -1
  137. package/dist/pipeline/resourceLayout.d.ts +13 -1
  138. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  139. package/dist/pipeline/resourceLayout.js +22 -2
  140. package/dist/pipeline/resourceLayout.js.map +1 -1
  141. package/dist/pipeline/resourceNumbering.d.ts.map +1 -1
  142. package/dist/pipeline/resourceNumbering.js +2 -1
  143. package/dist/pipeline/resourceNumbering.js.map +1 -1
  144. package/dist/types.d.ts +133 -2
  145. package/dist/types.d.ts.map +1 -1
  146. package/dist/vdt.d.ts +59 -1
  147. package/dist/vdt.d.ts.map +1 -1
  148. package/dist/vdt.js.map +1 -1
  149. package/dist/worker/layout.worker.js +6 -0
  150. package/dist/worker/layout.worker.js.map +1 -1
  151. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/citations/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The references of a document (#268): CSL items written in its front
3
+ * matter (`references:`, as Pandoc reads them) and in `:::references`
4
+ * blocks (BibTeX, CSL-JSON or CSL-YAML), and the works it lists without
5
+ * citing them (`nocite`).
6
+ */
7
+ import type { ContentBlock } from '../parse';
8
+ import type { CslItem } from './types';
9
+ /** Something wrong with the reference data, where it is written. */
10
+ export interface ReferenceIssue {
11
+ message: string;
12
+ sourceStart: number;
13
+ sourceEnd: number;
14
+ }
15
+ /** The references and `nocite` keys of a document. */
16
+ export interface ReferenceData {
17
+ items: CslItem[];
18
+ /** Keys listed without a citation; `'*'` lists every reference. */
19
+ nocite: string[];
20
+ issues: ReferenceIssue[];
21
+ }
22
+ /** A reference as YAML or JSON wrote it, as a CSL item; undefined without
23
+ * an id. Types default to `book`; dates and names are normalised; numbers
24
+ * become strings. */
25
+ export declare function normalizeCslItem(raw: unknown): CslItem | undefined;
26
+ /** The `nocite` field of a front matter: `'@*'`, `'@a, @b'`, `['@a']`. */
27
+ export declare function nociteKeys(value: unknown): string[];
28
+ /** The items of a `:::references` block, in its `format` (`bibtex`,
29
+ * `csl-json`, `csl-yaml`; guessed from the body when unset). */
30
+ export declare function referencesOfBlock(block: ContentBlock, issues: ReferenceIssue[]): CslItem[];
31
+ /** The references of a document: its front matter's `references` and
32
+ * `nocite`, and every `:::references` block, in order. A key written twice
33
+ * keeps its first entry. */
34
+ export declare function documentReferences(metadata: Record<string, unknown> | undefined, blocks: readonly ContentBlock[]): ReferenceData;
35
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/citations/data.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAW,OAAO,EAAW,MAAM,SAAS,CAAC;AAGzD,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,mEAAmE;IACnE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AA6CD;;sBAEsB;AACtB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAqBlE;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAKnD;AAED;iEACiE;AACjE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE,CA4B1F;AAED;;6BAE6B;AAC7B,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,aAAa,CAiBhI"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * The references of a document (#268): CSL items written in its front
3
+ * matter (`references:`, as Pandoc reads them) and in `:::references`
4
+ * blocks (BibTeX, CSL-JSON or CSL-YAML), and the works it lists without
5
+ * citing them (`nocite`).
6
+ */
7
+ import matter from 'gray-matter';
8
+ import { parseBibtex } from './bibtex';
9
+ const DATE_FIELDS = ['issued', 'accessed', 'event-date', 'original-date', 'submitted', 'available-date'];
10
+ const NAME_FIELDS = ['author', 'editor', 'translator', 'container-author', 'collection-editor', 'composer', 'director', 'interviewer', 'recipient', 'reviewed-author', 'editorial-director', 'illustrator', 'chair', 'compiler', 'contributor', 'curator', 'executive-producer', 'guest', 'host', 'narrator', 'organizer', 'performer', 'producer', 'script-writer', 'series-creator'];
11
+ /** A date as YAML or JSON wrote it — `2020`, `2020-05-03`, a `Date`,
12
+ * `{date-parts: …}`, `{year: 2020}` — as a CSL date. */
13
+ function normalizeDate(value) {
14
+ if (value instanceof Date) {
15
+ if (Number.isNaN(value.getTime()))
16
+ return undefined;
17
+ return { 'date-parts': [[value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate()]] };
18
+ }
19
+ if (typeof value === 'number')
20
+ return { 'date-parts': [[value]] };
21
+ if (typeof value === 'string') {
22
+ const m = /^(-?\d{1,4})(?:-(\d{1,2}))?(?:-(\d{1,2}))?$/.exec(value.trim());
23
+ if (m)
24
+ return { 'date-parts': [[Number(m[1]), ...(m[2] ? [Number(m[2])] : []), ...(m[3] ? [Number(m[3])] : [])]] };
25
+ return { literal: value };
26
+ }
27
+ if (Array.isArray(value)) {
28
+ const first = normalizeDate(value[0]);
29
+ const second = value.length > 1 ? normalizeDate(value[1]) : undefined;
30
+ if (first?.['date-parts'] && second?.['date-parts'])
31
+ return { 'date-parts': [first['date-parts'][0], second['date-parts'][0]] };
32
+ return first;
33
+ }
34
+ if (value && typeof value === 'object') {
35
+ const o = value;
36
+ if (o['date-parts'] || o.literal || o.raw)
37
+ return o;
38
+ if (o.year !== undefined)
39
+ return { 'date-parts': [[Number(o.year), ...(o.month !== undefined ? [Number(o.month)] : []), ...(o.day !== undefined ? [Number(o.day)] : [])]] };
40
+ }
41
+ return undefined;
42
+ }
43
+ /** A name as YAML wrote it: `{family, given}`, or a string — `"García,
44
+ * Ana"`, `"Ana García"`, a Chinese name written whole — as a CSL name. */
45
+ function normalizeName(value) {
46
+ if (value && typeof value === 'object')
47
+ return value;
48
+ if (typeof value !== 'string' || value.trim().length === 0)
49
+ return undefined;
50
+ const text = value.trim();
51
+ const comma = text.indexOf(',');
52
+ if (comma > 0)
53
+ return { family: text.slice(0, comma).trim(), given: text.slice(comma + 1).trim() };
54
+ if (!/\s/.test(text))
55
+ return { family: text };
56
+ const words = text.split(/\s+/);
57
+ return { family: words[words.length - 1], given: words.slice(0, -1).join(' ') };
58
+ }
59
+ /** A reference as YAML or JSON wrote it, as a CSL item; undefined without
60
+ * an id. Types default to `book`; dates and names are normalised; numbers
61
+ * become strings. */
62
+ export function normalizeCslItem(raw) {
63
+ if (!raw || typeof raw !== 'object')
64
+ return undefined;
65
+ const src = raw;
66
+ const id = src.id ?? src['citation-key'];
67
+ if (id === undefined || id === null || String(id).trim().length === 0)
68
+ return undefined;
69
+ const item = { id: String(id).trim(), type: typeof src.type === 'string' ? src.type : 'book' };
70
+ for (const [key, value] of Object.entries(src)) {
71
+ if (key === 'id' || key === 'type')
72
+ continue;
73
+ if (DATE_FIELDS.includes(key)) {
74
+ const date = normalizeDate(value);
75
+ if (date)
76
+ item[key] = date;
77
+ }
78
+ else if (NAME_FIELDS.includes(key)) {
79
+ const list = (Array.isArray(value) ? value : [value]).map(normalizeName).filter((n) => n !== undefined);
80
+ if (list.length > 0)
81
+ item[key] = list;
82
+ }
83
+ else if (typeof value === 'number') {
84
+ item[key] = String(value);
85
+ }
86
+ else if (value !== null && value !== undefined) {
87
+ item[key] = value;
88
+ }
89
+ }
90
+ return item;
91
+ }
92
+ /** The `nocite` field of a front matter: `'@*'`, `'@a, @b'`, `['@a']`. */
93
+ export function nociteKeys(value) {
94
+ const text = Array.isArray(value) ? value.map(String).join(' ') : typeof value === 'string' ? value : '';
95
+ const out = [];
96
+ for (const m of text.matchAll(/@(\*|[\p{L}\p{N}_][\p{L}\p{N}_:.#$%&\-+?<>~/]*[\p{L}\p{N}_]?)/gu))
97
+ out.push(m[1]);
98
+ return out;
99
+ }
100
+ /** The items of a `:::references` block, in its `format` (`bibtex`,
101
+ * `csl-json`, `csl-yaml`; guessed from the body when unset). */
102
+ export function referencesOfBlock(block, issues) {
103
+ const body = block.rawBody ?? '';
104
+ const at = { sourceStart: block.sourceStart, sourceEnd: block.sourceEnd };
105
+ const declared = block.directiveAttrs?.format?.toLowerCase();
106
+ const trimmed = body.trim();
107
+ if (trimmed.length === 0)
108
+ return [];
109
+ const format = declared ?? (trimmed.startsWith('@') ? 'bibtex' : trimmed.startsWith('[') || trimmed.startsWith('{') ? 'csl-json' : 'csl-yaml');
110
+ try {
111
+ if (format === 'bibtex' || format === 'biblatex' || format === 'bib') {
112
+ const read = [];
113
+ const items = parseBibtex(body, read);
114
+ for (const issue of read)
115
+ issues.push({ message: issue.message, ...at });
116
+ return items;
117
+ }
118
+ if (format === 'csl-json' || format === 'json') {
119
+ const parsed = JSON.parse(trimmed);
120
+ const list = Array.isArray(parsed) ? parsed : parsed.references ?? [parsed];
121
+ return list.map(normalizeCslItem).filter((i) => i !== undefined);
122
+ }
123
+ // CSL-YAML: a `references:` list, or the list itself.
124
+ const yaml = /^references\s*:/m.test(trimmed) ? trimmed : `references:\n${body.replace(/^/gm, ' ')}`;
125
+ const data = matter(`---\n${yaml}\n---\n`).data;
126
+ const list = Array.isArray(data.references) ? data.references : [];
127
+ return list.map(normalizeCslItem).filter((i) => i !== undefined);
128
+ }
129
+ catch (e) {
130
+ issues.push({ message: `unreadable ${format} references: ${e.message.split('\n')[0]}`, ...at });
131
+ return [];
132
+ }
133
+ }
134
+ /** The references of a document: its front matter's `references` and
135
+ * `nocite`, and every `:::references` block, in order. A key written twice
136
+ * keeps its first entry. */
137
+ export function documentReferences(metadata, blocks) {
138
+ const issues = [];
139
+ const items = [];
140
+ const seen = new Set();
141
+ const add = (list) => {
142
+ for (const item of list) {
143
+ if (seen.has(item.id))
144
+ continue;
145
+ seen.add(item.id);
146
+ items.push(item);
147
+ }
148
+ };
149
+ const fm = metadata?.references;
150
+ if (Array.isArray(fm))
151
+ add(fm.map(normalizeCslItem).filter((i) => i !== undefined));
152
+ for (const b of blocks) {
153
+ if (b.type === 'directive' && b.directiveName === 'references')
154
+ add(referencesOfBlock(b, issues));
155
+ }
156
+ return { items, nocite: nociteKeys(metadata?.nocite), issues };
157
+ }
158
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/citations/data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The small HTML a citation processor writes (citeproc-js's `html` output)
3
+ * as inline spans: `<i>`, `<b>`, `<sup>`, `<sub>`, the `font-style` /
4
+ * `font-weight` / `font-variant` spans CSL flip-flops use, `<a href>`
5
+ * links, and character entities. Any other tag is dropped, its text kept.
6
+ */
7
+ import type { InlineSpan } from '../parse';
8
+ /** Character entities of `text` decoded. */
9
+ export declare function decodeEntities(text: string): string;
10
+ /** The spans of a formatted citation or bibliography entry. `base` is
11
+ * the emphasis of the text around it (a citation in an italic sentence). */
12
+ export declare function htmlToSpans(html: string, base?: {
13
+ bold: boolean;
14
+ italic: boolean;
15
+ }): InlineSpan[];
16
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/citations/html.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAY3C,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED;6EAC6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAmC,GAAG,UAAU,EAAE,CA+DjI"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * The small HTML a citation processor writes (citeproc-js's `html` output)
3
+ * as inline spans: `<i>`, `<b>`, `<sup>`, `<sub>`, the `font-style` /
4
+ * `font-weight` / `font-variant` spans CSL flip-flops use, `<a href>`
5
+ * links, and character entities. Any other tag is dropped, its text kept.
6
+ */
7
+ const NAMED = { amp: '&', lt: '<', gt: '>', quot: '"', apos: "'", nbsp: ' ' };
8
+ /** Character entities of `text` decoded. */
9
+ export function decodeEntities(text) {
10
+ return text.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi, (whole, ref) => {
11
+ if (ref[0] === '#') {
12
+ const code = ref[1] === 'x' || ref[1] === 'X' ? parseInt(ref.slice(2), 16) : parseInt(ref.slice(1), 10);
13
+ return Number.isFinite(code) ? String.fromCodePoint(code) : whole;
14
+ }
15
+ return NAMED[ref.toLowerCase()] ?? whole;
16
+ });
17
+ }
18
+ /** The spans of a formatted citation or bibliography entry. `base` is
19
+ * the emphasis of the text around it (a citation in an italic sentence). */
20
+ export function htmlToSpans(html, base = { bold: false, italic: false }) {
21
+ const out = [];
22
+ const stack = [{ italic: base.italic, bold: base.bold, smallCaps: false }];
23
+ const top = () => stack[stack.length - 1];
24
+ const tagStack = [];
25
+ const push = (text) => {
26
+ if (text.length === 0)
27
+ return;
28
+ const s = top();
29
+ const last = out[out.length - 1];
30
+ const linkOf = (span) => span.links?.[0]?.href;
31
+ if (last && last.italic === s.italic && last.bold === s.bold && (last.smallCaps ?? false) === s.smallCaps && last.script === s.script && linkOf(last) === s.href) {
32
+ last.text += text;
33
+ if (s.href)
34
+ last.links = [{ start: 0, end: last.text.length, href: s.href }];
35
+ return;
36
+ }
37
+ out.push({
38
+ text,
39
+ bold: s.bold,
40
+ italic: s.italic,
41
+ ...(s.smallCaps ? { smallCaps: true } : {}),
42
+ ...(s.script ? { script: s.script } : {}),
43
+ ...(s.href ? { links: [{ start: 0, end: text.length, href: s.href }] } : {}),
44
+ });
45
+ };
46
+ const TAG = /<(\/?)([a-z]+)([^>]*)>/gi;
47
+ let last = 0;
48
+ for (let m = TAG.exec(html); m; m = TAG.exec(html)) {
49
+ push(decodeEntities(html.slice(last, m.index)));
50
+ last = m.index + m[0].length;
51
+ const closing = m[1] === '/';
52
+ const name = m[2].toLowerCase();
53
+ const attrs = m[3] ?? '';
54
+ if (name === 'br')
55
+ continue;
56
+ if (closing) {
57
+ const at = tagStack.lastIndexOf(name);
58
+ if (at >= 0) {
59
+ stack.length = at + 1;
60
+ tagStack.length = at;
61
+ }
62
+ continue;
63
+ }
64
+ const s = { ...top() };
65
+ if (name === 'i' || name === 'em')
66
+ s.italic = true;
67
+ else if (name === 'b' || name === 'strong')
68
+ s.bold = true;
69
+ else if (name === 'sup')
70
+ s.script = 'sup';
71
+ else if (name === 'sub')
72
+ s.script = 'sub';
73
+ else if (name === 'a') {
74
+ const href = /href="([^"]*)"/i.exec(attrs)?.[1];
75
+ if (href)
76
+ s.href = decodeEntities(href);
77
+ }
78
+ else if (name === 'span') {
79
+ const style = /style="([^"]*)"/i.exec(attrs)?.[1] ?? '';
80
+ if (/font-style:\s*italic/i.test(style))
81
+ s.italic = true;
82
+ if (/font-style:\s*normal/i.test(style))
83
+ s.italic = false;
84
+ if (/font-weight:\s*bold/i.test(style))
85
+ s.bold = true;
86
+ if (/font-weight:\s*normal/i.test(style))
87
+ s.bold = false;
88
+ if (/font-variant:\s*small-caps/i.test(style))
89
+ s.smallCaps = true;
90
+ if (/font-variant:\s*normal/i.test(style))
91
+ s.smallCaps = false;
92
+ }
93
+ stack.push(s);
94
+ tagStack.push(name);
95
+ }
96
+ push(decodeEntities(html.slice(last)));
97
+ return out;
98
+ }
99
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/citations/html.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { CitationEngine } from './types';
2
+ /**
3
+ * Register the citation engine the builds format citations with (the
4
+ * `postext-citeproc` package registers itself: `import 'postext-citeproc/register'`).
5
+ * Without one, citations print as written and the build warns
6
+ * (`citationsUnavailable`).
7
+ */
8
+ export declare function registerCitationEngine(next: CitationEngine | undefined): void;
9
+ /** The registered citation engine, if any. */
10
+ export declare function citationEngine(): CitationEngine | undefined;
11
+ /**
12
+ * How to load the citation engine when a document first needs it — a
13
+ * dynamic import, so a host pays for it only on documents that cite:
14
+ *
15
+ * ```ts
16
+ * setCitationEngineLoader(() => import('postext-citeproc/register'));
17
+ * ```
18
+ *
19
+ * The layout worker calls it before building a document that cites works
20
+ * (see {@link ensureCitationEngine}).
21
+ */
22
+ export declare function setCitationEngineLoader(next: (() => Promise<unknown>) | undefined): void;
23
+ /** Load the citation engine with the registered loader, once; true when an
24
+ * engine is registered afterwards. */
25
+ export declare function ensureCitationEngine(): Promise<boolean>;
26
+ /** Whether a document's markdown may cite works or define references: an
27
+ * `@`, a `:::references` block or a `references:` front matter field. A
28
+ * cheap test, before parsing, of whether the engine is worth loading. */
29
+ export declare function mayNeedCitations(markdown: string): boolean;
30
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/citations/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,CAE7E;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,IAAI,cAAc,GAAG,SAAS,CAE3D;AAKD;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAGxF;AAED;uCACuC;AACvC,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQvD;AAED;;0EAE0E;AAC1E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D"}
@@ -0,0 +1,51 @@
1
+ let engine;
2
+ /**
3
+ * Register the citation engine the builds format citations with (the
4
+ * `postext-citeproc` package registers itself: `import 'postext-citeproc/register'`).
5
+ * Without one, citations print as written and the build warns
6
+ * (`citationsUnavailable`).
7
+ */
8
+ export function registerCitationEngine(next) {
9
+ engine = next;
10
+ }
11
+ /** The registered citation engine, if any. */
12
+ export function citationEngine() {
13
+ return engine;
14
+ }
15
+ let loader;
16
+ let loading;
17
+ /**
18
+ * How to load the citation engine when a document first needs it — a
19
+ * dynamic import, so a host pays for it only on documents that cite:
20
+ *
21
+ * ```ts
22
+ * setCitationEngineLoader(() => import('postext-citeproc/register'));
23
+ * ```
24
+ *
25
+ * The layout worker calls it before building a document that cites works
26
+ * (see {@link ensureCitationEngine}).
27
+ */
28
+ export function setCitationEngineLoader(next) {
29
+ loader = next;
30
+ loading = undefined;
31
+ }
32
+ /** Load the citation engine with the registered loader, once; true when an
33
+ * engine is registered afterwards. */
34
+ export function ensureCitationEngine() {
35
+ if (engine)
36
+ return Promise.resolve(true);
37
+ if (!loader)
38
+ return Promise.resolve(false);
39
+ loading ??= loader().then(() => engine !== undefined, () => {
40
+ loading = undefined;
41
+ return false;
42
+ });
43
+ return loading;
44
+ }
45
+ /** Whether a document's markdown may cite works or define references: an
46
+ * `@`, a `:::references` block or a `references:` front matter field. A
47
+ * cheap test, before parsing, of whether the engine is worth loading. */
48
+ export function mayNeedCitations(markdown) {
49
+ return markdown.includes('@') || markdown.includes(':::references') || /^references\s*:/m.test(markdown);
50
+ }
51
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/citations/registry.ts"],"names":[],"mappings":"AAEA,IAAI,MAAkC,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAgC;IACrE,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,MAA4C,CAAC;AACjD,IAAI,OAAqC,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAA0C;IAChF,MAAM,GAAG,IAAI,CAAC;IACd,OAAO,GAAG,SAAS,CAAC;AACtB,CAAC;AAED;uCACuC;AACvC,MAAM,UAAU,oBAAoB;IAClC,IAAI,MAAM;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,SAAS,EAAE,GAAG,EAAE;QACzD,OAAO,GAAG,SAAS,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;0EAE0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3G,CAAC"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Citations (#267–#272): the data model the engine shares with a citation
3
+ * processor. The processor itself — CSL formatting, through citeproc-js —
4
+ * lives in the optional `postext-citeproc` package and is registered with
5
+ * {@link registerCitationEngine}; the core parses the citations, collects the
6
+ * references, places the bibliography and lays everything out.
7
+ */
8
+ /** A name in a reference (CSL-JSON). */
9
+ export interface CslName {
10
+ family?: string;
11
+ given?: string;
12
+ literal?: string;
13
+ 'non-dropping-particle'?: string;
14
+ 'dropping-particle'?: string;
15
+ suffix?: string;
16
+ }
17
+ /** A date in a reference (CSL-JSON). */
18
+ export interface CslDate {
19
+ 'date-parts'?: (number | string)[][];
20
+ literal?: string;
21
+ raw?: string;
22
+ circa?: boolean | string | number;
23
+ }
24
+ /** One reference: a CSL-JSON item (Pandoc's `references:` entries, Zotero's
25
+ * CSL-JSON export, or a BibTeX entry converted). `id` is the key a
26
+ * citation names (`[@id]`). */
27
+ export interface CslItem {
28
+ id: string;
29
+ type: string;
30
+ title?: string;
31
+ author?: CslName[];
32
+ editor?: CslName[];
33
+ translator?: CslName[];
34
+ issued?: CslDate;
35
+ accessed?: CslDate;
36
+ language?: string;
37
+ DOI?: string;
38
+ URL?: string;
39
+ [field: string]: unknown;
40
+ }
41
+ /** One work cited inside a citation (`[see @garcia2020, p. 33]`). */
42
+ export interface CitationItemInput {
43
+ /** The reference key. */
44
+ id: string;
45
+ /** Text before the work ("see"). */
46
+ prefix?: string;
47
+ /** Text after the work, locator excluded ("emphasis added"). */
48
+ suffix?: string;
49
+ /** The locator's value ("33", "2–4"). */
50
+ locator?: string;
51
+ /** The locator's CSL label: `page`, `chapter`, `section`, `figure`,
52
+ * `volume`, `line`, `note`, `paragraph`… */
53
+ label?: string;
54
+ /** `[-@id]`: the author is left out (named in the sentence already). */
55
+ suppressAuthor?: boolean;
56
+ }
57
+ /** A citation: one or more works cited together. */
58
+ export interface CitationClusterInput {
59
+ items: CitationItemInput[];
60
+ /** `'narrative'`: `@id` in the sentence ("García (2020) says"); else
61
+ * parenthetical (`[@id]`). */
62
+ mode: 'parenthetical' | 'narrative';
63
+ /** The note the citation sits in, for a note style (1-based; 0 in the
64
+ * text). Set by the engine. */
65
+ noteIndex?: number;
66
+ }
67
+ /** A citation formatted by the processor, as HTML of the small set
68
+ * citeproc-js writes (`<i>`, `<b>`, `<sup>`, `<sub>`, small capitals,
69
+ * `<a href>`, entities). */
70
+ export type FormattedCitation = string;
71
+ /** One entry of a formatted bibliography. */
72
+ export interface BibliographyEntryOutput {
73
+ id: string;
74
+ /** The entry as HTML (see {@link FormattedCitation}), without its label. */
75
+ html: string;
76
+ /** The label of a numbered entry ("[1]", "1."), set apart from the text. */
77
+ label?: string;
78
+ }
79
+ /** A formatted bibliography and the layout the style asks for. */
80
+ export interface BibliographyOutput {
81
+ entries: BibliographyEntryOutput[];
82
+ /** The style hangs the entries (author-date lists). */
83
+ hangingIndent: boolean;
84
+ /** The style sets each label in a column of its own (numeric lists). */
85
+ labelColumn: boolean;
86
+ /** Blank lines between entries the style asks for. */
87
+ entrySpacing: number;
88
+ }
89
+ /** What a style is, as a picker lists it. */
90
+ export interface CitationStyleInfo {
91
+ id: string;
92
+ /** The style's name ("American Psychological Association 7th edition"). */
93
+ title: string;
94
+ /** Short name for menus ("APA 7"). */
95
+ short: string;
96
+ format: 'author-date' | 'numeric' | 'note' | 'author';
97
+ /** Fields that use it ("psychology, education"). */
98
+ fields?: string;
99
+ }
100
+ /** A processor for one book: its references, its style and language. */
101
+ export interface CitationProcessor {
102
+ /** `'note'`: citations go in footnotes (Chicago notes, OSCOLA). */
103
+ readonly kind: 'in-text' | 'note';
104
+ /** `true` for a numbered style (IEEE, Vancouver, GB/T 7714 numeric). */
105
+ readonly numeric: boolean;
106
+ /** Format every citation of the book, in reading order: disambiguation,
107
+ * numbering and *ibid.* see all of them. */
108
+ cite(clusters: readonly CitationClusterInput[]): FormattedCitation[];
109
+ /** The bibliography of `ids` (all cited and `nocite`d works when
110
+ * omitted), in the style's order, after {@link cite}. */
111
+ bibliography(ids?: readonly string[]): BibliographyOutput;
112
+ /** The number a numbered style gives each cited work, after
113
+ * {@link cite}. */
114
+ citationNumbers(): ReadonlyMap<string, number>;
115
+ }
116
+ /** Options a processor is created with. */
117
+ export interface CitationProcessorOptions {
118
+ /** A bundled style id (`apa`, `ieee`…) or a whole CSL style (XML). */
119
+ style: string;
120
+ /** CSL locale (`en-US`, `es-ES`, `zh-CN`…). */
121
+ locale: string;
122
+ items: readonly CslItem[];
123
+ }
124
+ /** A citation engine: CSL styles, locales and a BibTeX reader. */
125
+ export interface CitationEngine {
126
+ createProcessor(options: CitationProcessorOptions): CitationProcessor;
127
+ /** The bundled styles. */
128
+ styles(): readonly CitationStyleInfo[];
129
+ /** References from BibTeX / BibLaTeX source. */
130
+ parseBibtex?(source: string): CslItem[];
131
+ }
132
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/citations/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Citations (#267–#272): the data model the engine shares with a citation
3
+ * processor. The processor itself — CSL formatting, through citeproc-js —
4
+ * lives in the optional `postext-citeproc` package and is registered with
5
+ * {@link registerCitationEngine}; the core parses the citations, collects the
6
+ * references, places the bibliography and lays everything out.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/citations/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,5 @@
1
+ import type { CitationsConfig, ResolvedCitationsConfig } from '../types';
2
+ export declare const DEFAULT_CITATIONS_CONFIG: ResolvedCitationsConfig;
3
+ export declare function resolveCitationsConfig(partial?: CitationsConfig): ResolvedCitationsConfig;
4
+ export declare function stripCitationsDefaults(c?: CitationsConfig): CitationsConfig | undefined;
5
+ //# sourceMappingURL=citations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citations.d.ts","sourceRoot":"","sources":["../../src/defaults/citations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGzE,eAAO,MAAM,wBAAwB,EAAE,uBAgBtC,CAAC;AAKF,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,uBAAuB,CA2BzF;AAED,wBAAgB,sBAAsB,CAAC,CAAC,CAAC,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS,CA6BvF"}