@manuscripts/transform 2.0.1 → 2.0.3-LEAN-3074-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/dist/cjs/jats/importer/jats-body-transformations.js +0 -8
- package/dist/cjs/jats/importer/parse-jats-article.js +1 -2
- package/dist/cjs/jats/jats-exporter.js +44 -11
- package/dist/cjs/schema/nodes/table_element.js +1 -1
- package/dist/cjs/transformer/decode.js +1 -1
- package/dist/es/jats/importer/jats-body-transformations.js +0 -8
- package/dist/es/jats/importer/parse-jats-article.js +1 -2
- package/dist/es/jats/jats-exporter.js +43 -11
- package/dist/es/schema/nodes/table_element.js +1 -1
- package/dist/es/transformer/decode.js +1 -1
- package/dist/types/jats/importer/jats-body-transformations.d.ts +0 -1
- package/dist/types/jats/jats-exporter.d.ts +29 -2
- package/package.json +4 -3
|
@@ -265,14 +265,6 @@ exports.jatsBodyTransformations = {
|
|
|
265
265
|
}
|
|
266
266
|
});
|
|
267
267
|
},
|
|
268
|
-
moveTableFooterToEnd(body) {
|
|
269
|
-
const footers = body.querySelectorAll('table-wrap-foot');
|
|
270
|
-
for (const footer of footers) {
|
|
271
|
-
if (footer.parentNode) {
|
|
272
|
-
footer.parentNode.appendChild(footer);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
},
|
|
276
268
|
moveFloatsGroupToBody(doc, body, createElement) {
|
|
277
269
|
const group = doc.querySelector('floats-group');
|
|
278
270
|
if (group) {
|
|
@@ -66,7 +66,6 @@ const parseJATSBody = (doc, body, references) => {
|
|
|
66
66
|
jats_body_transformations_1.jatsBodyTransformations.ensureSection(body, createElement);
|
|
67
67
|
jats_body_transformations_1.jatsBodyTransformations.moveCaptionsToEnd(body);
|
|
68
68
|
jats_body_transformations_1.jatsBodyTransformations.fixTables(body, createElement);
|
|
69
|
-
jats_body_transformations_1.jatsBodyTransformations.moveTableFooterToEnd(body);
|
|
70
69
|
jats_body_transformations_1.jatsBodyTransformations.createBody(doc, body, createElement);
|
|
71
70
|
jats_body_transformations_1.jatsBodyTransformations.createAbstracts(doc, body, createElement);
|
|
72
71
|
jats_body_transformations_1.jatsBodyTransformations.createBackmatter(doc, body, createElement);
|
|
@@ -122,7 +121,7 @@ const parseJATSArticle = (doc) => {
|
|
|
122
121
|
const type = article.getAttribute('article-type');
|
|
123
122
|
manuscript.articleType = type || 'other';
|
|
124
123
|
}
|
|
125
|
-
if (references) {
|
|
124
|
+
if (references && references.items.size) {
|
|
126
125
|
models.push(...createBibliographyModels(references));
|
|
127
126
|
}
|
|
128
127
|
if (marks.length) {
|
|
@@ -18,8 +18,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
18
18
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
19
|
};
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.JATSExporter = exports.createCounter = void 0;
|
|
21
|
+
exports.JATSExporter = exports.buildCitations = exports.createCounter = void 0;
|
|
22
22
|
const json_schema_1 = require("@manuscripts/json-schema");
|
|
23
|
+
const library_1 = require("@manuscripts/library");
|
|
23
24
|
const debug_1 = __importDefault(require("debug"));
|
|
24
25
|
const prosemirror_model_1 = require("prosemirror-model");
|
|
25
26
|
const w3c_xmlserializer_1 = __importDefault(require("w3c-xmlserializer"));
|
|
@@ -115,12 +116,23 @@ const chooseRefType = (objectType) => {
|
|
|
115
116
|
}
|
|
116
117
|
};
|
|
117
118
|
const sortContributors = (a, b) => Number(a.priority) - Number(b.priority);
|
|
119
|
+
const buildCitations = (citations) => citations.map((citation) => ({
|
|
120
|
+
citationID: citation.attrs.id,
|
|
121
|
+
citationItems: citation.attrs.rids.map((rid) => ({
|
|
122
|
+
id: rid,
|
|
123
|
+
})),
|
|
124
|
+
properties: {
|
|
125
|
+
noteIndex: 0,
|
|
126
|
+
},
|
|
127
|
+
}));
|
|
128
|
+
exports.buildCitations = buildCitations;
|
|
118
129
|
class JATSExporter {
|
|
119
130
|
constructor() {
|
|
120
|
-
this.serializeToJATS = async (fragment, modelMap, manuscriptID, options
|
|
121
|
-
const { version = '1.2', doi, id, frontMatterOnly = false, links, idGenerator, mediaPathGenerator, } = options;
|
|
131
|
+
this.serializeToJATS = async (fragment, modelMap, manuscriptID, options) => {
|
|
132
|
+
const { version = '1.2', doi, id, frontMatterOnly = false, links, idGenerator, mediaPathGenerator, csl, } = options;
|
|
122
133
|
this.modelMap = modelMap;
|
|
123
134
|
this.models = Array.from(this.modelMap.values());
|
|
135
|
+
this.generateCitationTexts(fragment, csl);
|
|
124
136
|
this.createSerializer();
|
|
125
137
|
const versionIds = (0, jats_versions_1.selectVersionIds)(version);
|
|
126
138
|
this.document = document.implementation.createDocument(null, 'article', document.implementation.createDocumentType('article', versionIds.publicId, versionIds.systemId));
|
|
@@ -462,10 +474,11 @@ class JATSExporter {
|
|
|
462
474
|
refList = this.document.createElement('ref-list');
|
|
463
475
|
}
|
|
464
476
|
back.appendChild(refList);
|
|
465
|
-
const
|
|
466
|
-
for (const
|
|
477
|
+
const [meta] = this.citationProvider.makeBibliography();
|
|
478
|
+
for (const id of meta.entry_ids) {
|
|
479
|
+
const bibliographyItem = this.modelMap.get(id[0]);
|
|
467
480
|
const ref = this.document.createElement('ref');
|
|
468
|
-
ref.setAttribute('id', normalizeID(
|
|
481
|
+
ref.setAttribute('id', normalizeID(id[0]));
|
|
469
482
|
const updateCitationPubType = (citationEl, pubType) => {
|
|
470
483
|
if (pubType) {
|
|
471
484
|
switch (pubType) {
|
|
@@ -638,12 +651,11 @@ class JATSExporter {
|
|
|
638
651
|
const xref = this.document.createElement('xref');
|
|
639
652
|
xref.setAttribute('ref-type', 'bibr');
|
|
640
653
|
xref.setAttribute('rid', normalizeID(rids.join(' ')));
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
xref.textContent = text;
|
|
645
|
-
}
|
|
654
|
+
const citationTextContent = this.citationTexts.get(node.attrs.id);
|
|
655
|
+
if (!citationTextContent) {
|
|
656
|
+
throw new Error(`No citation text found for ${node.attrs.id}`);
|
|
646
657
|
}
|
|
658
|
+
xref.textContent = (0, html_1.textFromHTML)(citationTextContent);
|
|
647
659
|
return xref;
|
|
648
660
|
},
|
|
649
661
|
cross_reference: (node) => {
|
|
@@ -1554,6 +1566,27 @@ class JATSExporter {
|
|
|
1554
1566
|
return name;
|
|
1555
1567
|
};
|
|
1556
1568
|
}
|
|
1569
|
+
generateCitations(fragment) {
|
|
1570
|
+
const nodes = [];
|
|
1571
|
+
fragment.descendants((node) => {
|
|
1572
|
+
if ((0, schema_1.isCitationNode)(node)) {
|
|
1573
|
+
nodes.push(node);
|
|
1574
|
+
}
|
|
1575
|
+
});
|
|
1576
|
+
return (0, exports.buildCitations)(nodes);
|
|
1577
|
+
}
|
|
1578
|
+
generateCitationTexts(fragment, csl) {
|
|
1579
|
+
this.citationTexts = new Map();
|
|
1580
|
+
this.citationProvider = new library_1.CitationProvider({
|
|
1581
|
+
getLibraryItem: (id) => this.modelMap.get(id),
|
|
1582
|
+
locale: csl.locale,
|
|
1583
|
+
citationStyle: csl.style,
|
|
1584
|
+
});
|
|
1585
|
+
const citations = this.generateCitations(fragment);
|
|
1586
|
+
this.citationProvider.rebuildState(citations).forEach(([id, , output]) => {
|
|
1587
|
+
this.citationTexts.set(id, output);
|
|
1588
|
+
});
|
|
1589
|
+
}
|
|
1557
1590
|
buildKeywords(articleMeta) {
|
|
1558
1591
|
const keywords = [...this.modelMap.values()].filter((model) => model.objectType === json_schema_1.ObjectTypes.Keyword);
|
|
1559
1592
|
const keywordGroups = new Map();
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.tableElement = void 0;
|
|
19
19
|
exports.tableElement = {
|
|
20
|
-
content: '(table | placeholder)
|
|
20
|
+
content: '(table | placeholder) table_element_footer? figcaption? (listing | placeholder)',
|
|
21
21
|
attrs: {
|
|
22
22
|
id: { default: '' },
|
|
23
23
|
paragraphStyle: { default: '' },
|
|
@@ -564,7 +564,7 @@ class Decoder {
|
|
|
564
564
|
const comments = this.createCommentNodes(model);
|
|
565
565
|
comments.forEach((c) => this.comments.set(c.attrs.id, c));
|
|
566
566
|
const content = tableElementFooter
|
|
567
|
-
? [table,
|
|
567
|
+
? [table, tableElementFooter, figcaption]
|
|
568
568
|
: [table, figcaption];
|
|
569
569
|
if (model.listingID) {
|
|
570
570
|
const listing = this.createListing(model.listingID);
|
|
@@ -262,14 +262,6 @@ export const jatsBodyTransformations = {
|
|
|
262
262
|
}
|
|
263
263
|
});
|
|
264
264
|
},
|
|
265
|
-
moveTableFooterToEnd(body) {
|
|
266
|
-
const footers = body.querySelectorAll('table-wrap-foot');
|
|
267
|
-
for (const footer of footers) {
|
|
268
|
-
if (footer.parentNode) {
|
|
269
|
-
footer.parentNode.appendChild(footer);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
},
|
|
273
265
|
moveFloatsGroupToBody(doc, body, createElement) {
|
|
274
266
|
const group = doc.querySelector('floats-group');
|
|
275
267
|
if (group) {
|
|
@@ -62,7 +62,6 @@ export const parseJATSBody = (doc, body, references) => {
|
|
|
62
62
|
jatsBodyTransformations.ensureSection(body, createElement);
|
|
63
63
|
jatsBodyTransformations.moveCaptionsToEnd(body);
|
|
64
64
|
jatsBodyTransformations.fixTables(body, createElement);
|
|
65
|
-
jatsBodyTransformations.moveTableFooterToEnd(body);
|
|
66
65
|
jatsBodyTransformations.createBody(doc, body, createElement);
|
|
67
66
|
jatsBodyTransformations.createAbstracts(doc, body, createElement);
|
|
68
67
|
jatsBodyTransformations.createBackmatter(doc, body, createElement);
|
|
@@ -117,7 +116,7 @@ export const parseJATSArticle = (doc) => {
|
|
|
117
116
|
const type = article.getAttribute('article-type');
|
|
118
117
|
manuscript.articleType = type || 'other';
|
|
119
118
|
}
|
|
120
|
-
if (references) {
|
|
119
|
+
if (references && references.items.size) {
|
|
121
120
|
models.push(...createBibliographyModels(references));
|
|
122
121
|
}
|
|
123
122
|
if (marks.length) {
|
|
@@ -14,13 +14,14 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { ObjectTypes, } from '@manuscripts/json-schema';
|
|
17
|
+
import { CitationProvider } from '@manuscripts/library';
|
|
17
18
|
import debug from 'debug';
|
|
18
19
|
import { DOMParser, DOMSerializer } from 'prosemirror-model';
|
|
19
20
|
import serializeToXML from 'w3c-xmlserializer';
|
|
20
21
|
import { nodeFromHTML, textFromHTML } from '../lib/html';
|
|
21
22
|
import { normalizeStyleName } from '../lib/styled-content';
|
|
22
23
|
import { iterateChildren } from '../lib/utils';
|
|
23
|
-
import { schema, } from '../schema';
|
|
24
|
+
import { isCitationNode, schema, } from '../schema';
|
|
24
25
|
import { generateAttachmentFilename } from '../transformer/filename';
|
|
25
26
|
import { buildTargets } from '../transformer/labels';
|
|
26
27
|
import { isExecutableNodeType, isNodeType } from '../transformer/node-types';
|
|
@@ -108,12 +109,22 @@ const chooseRefType = (objectType) => {
|
|
|
108
109
|
}
|
|
109
110
|
};
|
|
110
111
|
const sortContributors = (a, b) => Number(a.priority) - Number(b.priority);
|
|
112
|
+
export const buildCitations = (citations) => citations.map((citation) => ({
|
|
113
|
+
citationID: citation.attrs.id,
|
|
114
|
+
citationItems: citation.attrs.rids.map((rid) => ({
|
|
115
|
+
id: rid,
|
|
116
|
+
})),
|
|
117
|
+
properties: {
|
|
118
|
+
noteIndex: 0,
|
|
119
|
+
},
|
|
120
|
+
}));
|
|
111
121
|
export class JATSExporter {
|
|
112
122
|
constructor() {
|
|
113
|
-
this.serializeToJATS = async (fragment, modelMap, manuscriptID, options
|
|
114
|
-
const { version = '1.2', doi, id, frontMatterOnly = false, links, idGenerator, mediaPathGenerator, } = options;
|
|
123
|
+
this.serializeToJATS = async (fragment, modelMap, manuscriptID, options) => {
|
|
124
|
+
const { version = '1.2', doi, id, frontMatterOnly = false, links, idGenerator, mediaPathGenerator, csl, } = options;
|
|
115
125
|
this.modelMap = modelMap;
|
|
116
126
|
this.models = Array.from(this.modelMap.values());
|
|
127
|
+
this.generateCitationTexts(fragment, csl);
|
|
117
128
|
this.createSerializer();
|
|
118
129
|
const versionIds = selectVersionIds(version);
|
|
119
130
|
this.document = document.implementation.createDocument(null, 'article', document.implementation.createDocumentType('article', versionIds.publicId, versionIds.systemId));
|
|
@@ -455,10 +466,11 @@ export class JATSExporter {
|
|
|
455
466
|
refList = this.document.createElement('ref-list');
|
|
456
467
|
}
|
|
457
468
|
back.appendChild(refList);
|
|
458
|
-
const
|
|
459
|
-
for (const
|
|
469
|
+
const [meta] = this.citationProvider.makeBibliography();
|
|
470
|
+
for (const id of meta.entry_ids) {
|
|
471
|
+
const bibliographyItem = this.modelMap.get(id[0]);
|
|
460
472
|
const ref = this.document.createElement('ref');
|
|
461
|
-
ref.setAttribute('id', normalizeID(
|
|
473
|
+
ref.setAttribute('id', normalizeID(id[0]));
|
|
462
474
|
const updateCitationPubType = (citationEl, pubType) => {
|
|
463
475
|
if (pubType) {
|
|
464
476
|
switch (pubType) {
|
|
@@ -631,12 +643,11 @@ export class JATSExporter {
|
|
|
631
643
|
const xref = this.document.createElement('xref');
|
|
632
644
|
xref.setAttribute('ref-type', 'bibr');
|
|
633
645
|
xref.setAttribute('rid', normalizeID(rids.join(' ')));
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
xref.textContent = text;
|
|
638
|
-
}
|
|
646
|
+
const citationTextContent = this.citationTexts.get(node.attrs.id);
|
|
647
|
+
if (!citationTextContent) {
|
|
648
|
+
throw new Error(`No citation text found for ${node.attrs.id}`);
|
|
639
649
|
}
|
|
650
|
+
xref.textContent = textFromHTML(citationTextContent);
|
|
640
651
|
return xref;
|
|
641
652
|
},
|
|
642
653
|
cross_reference: (node) => {
|
|
@@ -1547,6 +1558,27 @@ export class JATSExporter {
|
|
|
1547
1558
|
return name;
|
|
1548
1559
|
};
|
|
1549
1560
|
}
|
|
1561
|
+
generateCitations(fragment) {
|
|
1562
|
+
const nodes = [];
|
|
1563
|
+
fragment.descendants((node) => {
|
|
1564
|
+
if (isCitationNode(node)) {
|
|
1565
|
+
nodes.push(node);
|
|
1566
|
+
}
|
|
1567
|
+
});
|
|
1568
|
+
return buildCitations(nodes);
|
|
1569
|
+
}
|
|
1570
|
+
generateCitationTexts(fragment, csl) {
|
|
1571
|
+
this.citationTexts = new Map();
|
|
1572
|
+
this.citationProvider = new CitationProvider({
|
|
1573
|
+
getLibraryItem: (id) => this.modelMap.get(id),
|
|
1574
|
+
locale: csl.locale,
|
|
1575
|
+
citationStyle: csl.style,
|
|
1576
|
+
});
|
|
1577
|
+
const citations = this.generateCitations(fragment);
|
|
1578
|
+
this.citationProvider.rebuildState(citations).forEach(([id, , output]) => {
|
|
1579
|
+
this.citationTexts.set(id, output);
|
|
1580
|
+
});
|
|
1581
|
+
}
|
|
1550
1582
|
buildKeywords(articleMeta) {
|
|
1551
1583
|
const keywords = [...this.modelMap.values()].filter((model) => model.objectType === ObjectTypes.Keyword);
|
|
1552
1584
|
const keywordGroups = new Map();
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
export const tableElement = {
|
|
17
|
-
content: '(table | placeholder)
|
|
17
|
+
content: '(table | placeholder) table_element_footer? figcaption? (listing | placeholder)',
|
|
18
18
|
attrs: {
|
|
19
19
|
id: { default: '' },
|
|
20
20
|
paragraphStyle: { default: '' },
|
|
@@ -555,7 +555,7 @@ export class Decoder {
|
|
|
555
555
|
const comments = this.createCommentNodes(model);
|
|
556
556
|
comments.forEach((c) => this.comments.set(c.attrs.id, c));
|
|
557
557
|
const content = tableElementFooter
|
|
558
|
-
? [table,
|
|
558
|
+
? [table, tableElementFooter, figcaption]
|
|
559
559
|
: [table, figcaption];
|
|
560
560
|
if (model.listingID) {
|
|
561
561
|
const listing = this.createListing(model.listingID);
|
|
@@ -32,7 +32,6 @@ export declare const jatsBodyTransformations: {
|
|
|
32
32
|
moveFootnotes(doc: Document, group: Element, createElement: (tagName: string) => HTMLElement): void;
|
|
33
33
|
moveCaptionsToEnd(body: Element): void;
|
|
34
34
|
fixTables(body: Element, createElement: (tagName: string) => HTMLElement): void;
|
|
35
|
-
moveTableFooterToEnd(body: Element): void;
|
|
36
35
|
moveFloatsGroupToBody(doc: Document, body: Element, createElement: (tagName: string) => HTMLElement): void;
|
|
37
36
|
createKeywords(document: Document, body: Element, createElement: (tagName: string) => HTMLElement): void;
|
|
38
37
|
};
|
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Model } from '@manuscripts/json-schema';
|
|
17
|
+
import { CitationProvider } from '@manuscripts/library';
|
|
17
18
|
import { DOMSerializer } from 'prosemirror-model';
|
|
18
|
-
import { ManuscriptFragment, ManuscriptNode } from '../schema';
|
|
19
|
+
import { CitationNode, ManuscriptFragment, ManuscriptNode } from '../schema';
|
|
19
20
|
import { Target } from '../transformer/labels';
|
|
20
21
|
import { IDGenerator, MediaPathGenerator } from '../types';
|
|
21
22
|
import { Version } from './jats-versions';
|
|
@@ -27,7 +28,12 @@ interface Links {
|
|
|
27
28
|
export declare const createCounter: () => {
|
|
28
29
|
increment: (field: string) => number;
|
|
29
30
|
};
|
|
31
|
+
export type CSLOptions = {
|
|
32
|
+
style: string;
|
|
33
|
+
locale: string;
|
|
34
|
+
};
|
|
30
35
|
export interface JATSExporterOptions {
|
|
36
|
+
csl: CSLOptions;
|
|
31
37
|
version?: Version;
|
|
32
38
|
doi?: string;
|
|
33
39
|
id?: string;
|
|
@@ -37,13 +43,34 @@ export interface JATSExporterOptions {
|
|
|
37
43
|
idGenerator?: IDGenerator;
|
|
38
44
|
mediaPathGenerator?: MediaPathGenerator;
|
|
39
45
|
}
|
|
46
|
+
export declare const buildCitations: (citations: CitationNode[]) => {
|
|
47
|
+
citationID: string;
|
|
48
|
+
citationItems: {
|
|
49
|
+
id: string;
|
|
50
|
+
}[];
|
|
51
|
+
properties: {
|
|
52
|
+
noteIndex: number;
|
|
53
|
+
};
|
|
54
|
+
}[];
|
|
40
55
|
export declare class JATSExporter {
|
|
41
56
|
protected document: Document;
|
|
42
57
|
protected modelMap: Map<string, Model>;
|
|
43
58
|
protected models: Model[];
|
|
44
59
|
protected serializer: DOMSerializer;
|
|
45
60
|
protected labelTargets?: Map<string, Target>;
|
|
46
|
-
|
|
61
|
+
protected citationTexts: Map<string, string>;
|
|
62
|
+
protected citationProvider: CitationProvider;
|
|
63
|
+
protected generateCitations(fragment: ManuscriptFragment): {
|
|
64
|
+
citationID: string;
|
|
65
|
+
citationItems: {
|
|
66
|
+
id: string;
|
|
67
|
+
}[];
|
|
68
|
+
properties: {
|
|
69
|
+
noteIndex: number;
|
|
70
|
+
};
|
|
71
|
+
}[];
|
|
72
|
+
protected generateCitationTexts(fragment: ManuscriptFragment, csl: CSLOptions): void;
|
|
73
|
+
serializeToJATS: (fragment: ManuscriptFragment, modelMap: Map<string, Model>, manuscriptID: string, options: JATSExporterOptions) => Promise<string>;
|
|
47
74
|
private nodeFromJATS;
|
|
48
75
|
protected rewriteCrossReferenceTypes: () => void;
|
|
49
76
|
protected rewriteMediaPaths: (mediaPathGenerator: MediaPathGenerator) => Promise<void>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manuscripts/transform",
|
|
3
3
|
"description": "ProseMirror transformer for Manuscripts applications",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.3-LEAN-3074-0",
|
|
5
5
|
"repository": "github:Atypon-OpenSource/manuscripts-transform",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "dist/cjs",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"version": "yarn build"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@manuscripts/json-schema": "2.2.
|
|
32
|
+
"@manuscripts/json-schema": "^2.2.2",
|
|
33
|
+
"@manuscripts/library": "1.3.1-LEAN-3074-0",
|
|
33
34
|
"debug": "^4.3.4",
|
|
34
35
|
"jszip": "^3.10.1",
|
|
35
36
|
"mathjax-full": "^3.2.2",
|
|
@@ -77,4 +78,4 @@
|
|
|
77
78
|
"rimraf": "^3.0.2",
|
|
78
79
|
"typescript": "^4.0.5"
|
|
79
80
|
}
|
|
80
|
-
}
|
|
81
|
+
}
|