@manuscripts/transform 2.3.20 → 2.3.21-JSR
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/index.js +3 -1
- package/dist/cjs/jats/jats-exporter.js +1 -1
- package/dist/cjs/schema/migration/migrate.js +50 -0
- package/dist/cjs/schema/migration/migration-script.js +17 -0
- package/dist/cjs/schema/migration/migration-scripts/1.2.5.js +30 -0
- package/dist/cjs/schema/migration/migration-scripts/index.js +23 -0
- package/dist/cjs/schema/nodes/manuscript.js +3 -0
- package/dist/cjs/transformer/decode.js +7 -3
- package/dist/cjs/transformer/html.js +1 -2
- package/dist/cjs/transformer/labels.js +3 -16
- package/dist/cjs/version.js +1 -1
- package/dist/es/index.js +1 -0
- package/dist/es/jats/jats-exporter.js +1 -1
- package/dist/es/schema/migration/migrate.js +42 -0
- package/dist/es/schema/migration/migration-script.js +16 -0
- package/dist/es/schema/migration/migration-scripts/1.2.5.js +28 -0
- package/dist/es/schema/migration/migration-scripts/index.js +18 -0
- package/dist/es/schema/nodes/manuscript.js +3 -0
- package/dist/es/transformer/decode.js +7 -3
- package/dist/es/transformer/html.js +1 -2
- package/dist/es/transformer/labels.js +3 -16
- package/dist/es/version.js +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/schema/migration/migrate.d.ts +15 -0
- package/dist/types/schema/migration/migration-script.d.ts +21 -0
- package/dist/types/schema/migration/migration-scripts/1.2.5.d.ts +23 -0
- package/dist/types/schema/migration/migration-scripts/index.d.ts +18 -0
- package/dist/types/schema/nodes/manuscript.d.ts +3 -0
- package/dist/types/transformer/decode.d.ts +1 -1
- package/dist/types/transformer/labels.d.ts +1 -2
- package/dist/types/version.d.ts +1 -1
- package/package.json +5 -2
package/dist/cjs/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.isSectionLabelNode = exports.getVersion = void 0;
|
|
17
|
+
exports.isSectionLabelNode = exports.migrateFor = exports.getVersion = void 0;
|
|
18
18
|
__exportStar(require("./lib/section-group-type"), exports);
|
|
19
19
|
__exportStar(require("./lib/table-cell-styles"), exports);
|
|
20
20
|
__exportStar(require("./lib/utils"), exports);
|
|
@@ -25,5 +25,7 @@ __exportStar(require("./types"), exports);
|
|
|
25
25
|
__exportStar(require("./errors"), exports);
|
|
26
26
|
var getVersion_1 = require("./getVersion");
|
|
27
27
|
Object.defineProperty(exports, "getVersion", { enumerable: true, get: function () { return getVersion_1.getVersion; } });
|
|
28
|
+
var migrate_1 = require("./schema/migration/migrate");
|
|
29
|
+
Object.defineProperty(exports, "migrateFor", { enumerable: true, get: function () { return migrate_1.migrateFor; } });
|
|
28
30
|
var section_label_1 = require("./schema/nodes/section_label");
|
|
29
31
|
Object.defineProperty(exports, "isSectionLabelNode", { enumerable: true, get: function () { return section_label_1.isSectionLabelNode; } });
|
|
@@ -143,7 +143,7 @@ class JATSExporter {
|
|
|
143
143
|
const manuscript = (0, project_bundle_1.findManuscriptById)(this.modelMap, manuscriptID);
|
|
144
144
|
article.setAttribute('article-type', manuscript.articleType || 'other');
|
|
145
145
|
if (!frontMatterOnly) {
|
|
146
|
-
this.labelTargets = (0, labels_1.buildTargets)(fragment
|
|
146
|
+
this.labelTargets = (0, labels_1.buildTargets)(fragment);
|
|
147
147
|
const body = this.buildBody(fragment);
|
|
148
148
|
article.appendChild(body);
|
|
149
149
|
const back = this.buildBack(body);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.migrateFor = void 0;
|
|
7
|
+
const lodash_1 = require("lodash");
|
|
8
|
+
const semver_1 = __importDefault(require("semver"));
|
|
9
|
+
const __1 = require("..");
|
|
10
|
+
const migration_scripts_1 = __importDefault(require("./migration-scripts"));
|
|
11
|
+
function migrate(oldDoc, migrationScript) {
|
|
12
|
+
function migrateNode(node) {
|
|
13
|
+
const migrated = migrationScript(node, oldDoc);
|
|
14
|
+
if (migrated.content) {
|
|
15
|
+
migrated.content = migrated.content.map((m) => migrateNode(m));
|
|
16
|
+
}
|
|
17
|
+
return migrated;
|
|
18
|
+
}
|
|
19
|
+
return migrateNode(oldDoc);
|
|
20
|
+
}
|
|
21
|
+
exports.default = migrate;
|
|
22
|
+
function migrateFor(oldDoc, baseVersion) {
|
|
23
|
+
const migrationScripts = ensureVersionAscOrder();
|
|
24
|
+
let migratedDoc = (0, lodash_1.cloneDeep)(oldDoc);
|
|
25
|
+
for (let i = 0; i < migrationScripts.length; i++) {
|
|
26
|
+
const script = migrationScripts[i];
|
|
27
|
+
if (semver_1.default.lt(script.fromVersion, baseVersion)) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
console.log('Migrating doc with script to version ' + script.toVersion);
|
|
31
|
+
migratedDoc = migrate(migratedDoc, script.migrateNode);
|
|
32
|
+
}
|
|
33
|
+
return testDoc(migratedDoc, baseVersion);
|
|
34
|
+
}
|
|
35
|
+
exports.migrateFor = migrateFor;
|
|
36
|
+
const ensureVersionAscOrder = () => migration_scripts_1.default.sort((a, b) => semver_1.default.compare(a.toVersion, b.toVersion));
|
|
37
|
+
function testDoc(doc, fromVersion) {
|
|
38
|
+
try {
|
|
39
|
+
const resultDoc = __1.schema.nodeFromJSON(doc);
|
|
40
|
+
resultDoc.check();
|
|
41
|
+
return resultDoc;
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
const error = 'Migration application from version ' +
|
|
45
|
+
fromVersion +
|
|
46
|
+
' did not produce a valid document with ' +
|
|
47
|
+
e;
|
|
48
|
+
throw new Error(error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*!
|
|
3
|
+
* © 2024 Atypon Systems LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*!
|
|
3
|
+
* © 2024 Atypon Systems LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
class Migration125 {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.fromVersion = '1.2.3';
|
|
21
|
+
this.toVersion = '1.2.5';
|
|
22
|
+
}
|
|
23
|
+
migrateNode(node, doc) {
|
|
24
|
+
if (node.type === 'paragraph') {
|
|
25
|
+
return Object.assign(Object.assign({}, node), { attrs: Object.assign(Object.assign({}, node.attrs), { someNewFanctAttribute: 'example-value' }) });
|
|
26
|
+
}
|
|
27
|
+
return node;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.default = Migration125;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*!
|
|
3
|
+
* © 2024 Atypon Systems LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
const _1_2_5_1 = __importDefault(require("./1.2.5"));
|
|
22
|
+
const migrations = [new _1_2_5_1.default()];
|
|
23
|
+
exports.default = migrations;
|
|
@@ -727,9 +727,13 @@ class Decoder {
|
|
|
727
727
|
this.createCommentsNode(),
|
|
728
728
|
];
|
|
729
729
|
const contents = nodes.filter((node) => node !== false);
|
|
730
|
+
const props = this.getManuscript();
|
|
730
731
|
return schema_1.schema.nodes.manuscript.create({
|
|
731
732
|
id: manuscriptID || this.getManuscriptID(),
|
|
732
|
-
doi:
|
|
733
|
+
doi: (props === null || props === void 0 ? void 0 : props.DOI) || '',
|
|
734
|
+
articleType: props === null || props === void 0 ? void 0 : props.articleType,
|
|
735
|
+
prototype: props === null || props === void 0 ? void 0 : props.prototype,
|
|
736
|
+
primaryLanguageCode: props === null || props === void 0 ? void 0 : props.primaryLanguageCode,
|
|
733
737
|
}, contents);
|
|
734
738
|
};
|
|
735
739
|
this.addGeneratedLabels = (sections) => {
|
|
@@ -775,10 +779,10 @@ class Decoder {
|
|
|
775
779
|
}
|
|
776
780
|
}
|
|
777
781
|
};
|
|
778
|
-
this.
|
|
782
|
+
this.getManuscript = () => {
|
|
779
783
|
for (const item of this.modelMap.values()) {
|
|
780
784
|
if ((0, object_types_1.isManuscript)(item)) {
|
|
781
|
-
return item
|
|
785
|
+
return item;
|
|
782
786
|
}
|
|
783
787
|
}
|
|
784
788
|
};
|
|
@@ -75,8 +75,7 @@ class HTMLTransformer {
|
|
|
75
75
|
this.serializeToHTML = async (fragment, modelMap, options = {}) => {
|
|
76
76
|
const { idGenerator, mediaPathGenerator } = options;
|
|
77
77
|
this.modelMap = modelMap;
|
|
78
|
-
|
|
79
|
-
this.labelTargets = (0, labels_1.buildTargets)(fragment, manuscript);
|
|
78
|
+
this.labelTargets = (0, labels_1.buildTargets)(fragment);
|
|
80
79
|
this.document = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', document.implementation.createDocumentType('html', '', ''));
|
|
81
80
|
const article = this.document.createElement('article');
|
|
82
81
|
this.document.documentElement.appendChild(article);
|
|
@@ -24,28 +24,15 @@ const labelledNodeTypes = [
|
|
|
24
24
|
schema_1.schema.nodes.equation_element,
|
|
25
25
|
schema_1.schema.nodes.listing_element,
|
|
26
26
|
];
|
|
27
|
-
const labelProperties = new Map([
|
|
28
|
-
[schema_1.schema.nodes.figure_element, 'figureElementLabel'],
|
|
29
|
-
[schema_1.schema.nodes.table_element, 'tableElementLabel'],
|
|
30
|
-
[schema_1.schema.nodes.equation_element, 'equationElementLabel'],
|
|
31
|
-
[schema_1.schema.nodes.listing_element, 'listingElementLabel'],
|
|
32
|
-
]);
|
|
33
27
|
const excludedTypes = [schema_1.schema.nodes.graphical_abstract_section];
|
|
34
|
-
const chooseLabel = (nodeType
|
|
35
|
-
const labelProperty = labelProperties.get(nodeType);
|
|
36
|
-
if (labelProperty) {
|
|
37
|
-
const label = manuscript[labelProperty];
|
|
38
|
-
if (label) {
|
|
39
|
-
return label;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
28
|
+
const chooseLabel = (nodeType) => {
|
|
42
29
|
return node_names_1.nodeNames.get(nodeType);
|
|
43
30
|
};
|
|
44
|
-
const buildTargets = (fragment
|
|
31
|
+
const buildTargets = (fragment) => {
|
|
45
32
|
const counters = {};
|
|
46
33
|
for (const nodeType of labelledNodeTypes) {
|
|
47
34
|
counters[nodeType.name] = {
|
|
48
|
-
label: chooseLabel(nodeType
|
|
35
|
+
label: chooseLabel(nodeType),
|
|
49
36
|
index: 0,
|
|
50
37
|
};
|
|
51
38
|
}
|
package/dist/cjs/version.js
CHANGED
package/dist/es/index.js
CHANGED
|
@@ -135,7 +135,7 @@ export class JATSExporter {
|
|
|
135
135
|
const manuscript = findManuscriptById(this.modelMap, manuscriptID);
|
|
136
136
|
article.setAttribute('article-type', manuscript.articleType || 'other');
|
|
137
137
|
if (!frontMatterOnly) {
|
|
138
|
-
this.labelTargets = buildTargets(fragment
|
|
138
|
+
this.labelTargets = buildTargets(fragment);
|
|
139
139
|
const body = this.buildBody(fragment);
|
|
140
140
|
article.appendChild(body);
|
|
141
141
|
const back = this.buildBack(body);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { cloneDeep } from 'lodash';
|
|
2
|
+
import semver from 'semver';
|
|
3
|
+
import { schema } from '..';
|
|
4
|
+
import migrationScripts from './migration-scripts';
|
|
5
|
+
export default function migrate(oldDoc, migrationScript) {
|
|
6
|
+
function migrateNode(node) {
|
|
7
|
+
const migrated = migrationScript(node, oldDoc);
|
|
8
|
+
if (migrated.content) {
|
|
9
|
+
migrated.content = migrated.content.map((m) => migrateNode(m));
|
|
10
|
+
}
|
|
11
|
+
return migrated;
|
|
12
|
+
}
|
|
13
|
+
return migrateNode(oldDoc);
|
|
14
|
+
}
|
|
15
|
+
export function migrateFor(oldDoc, baseVersion) {
|
|
16
|
+
const migrationScripts = ensureVersionAscOrder();
|
|
17
|
+
let migratedDoc = cloneDeep(oldDoc);
|
|
18
|
+
for (let i = 0; i < migrationScripts.length; i++) {
|
|
19
|
+
const script = migrationScripts[i];
|
|
20
|
+
if (semver.lt(script.fromVersion, baseVersion)) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
console.log('Migrating doc with script to version ' + script.toVersion);
|
|
24
|
+
migratedDoc = migrate(migratedDoc, script.migrateNode);
|
|
25
|
+
}
|
|
26
|
+
return testDoc(migratedDoc, baseVersion);
|
|
27
|
+
}
|
|
28
|
+
const ensureVersionAscOrder = () => migrationScripts.sort((a, b) => semver.compare(a.toVersion, b.toVersion));
|
|
29
|
+
function testDoc(doc, fromVersion) {
|
|
30
|
+
try {
|
|
31
|
+
const resultDoc = schema.nodeFromJSON(doc);
|
|
32
|
+
resultDoc.check();
|
|
33
|
+
return resultDoc;
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
const error = 'Migration application from version ' +
|
|
37
|
+
fromVersion +
|
|
38
|
+
' did not produce a valid document with ' +
|
|
39
|
+
e;
|
|
40
|
+
throw new Error(error);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* © 2024 Atypon Systems LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* © 2024 Atypon Systems LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
class Migration125 {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.fromVersion = '1.2.3';
|
|
19
|
+
this.toVersion = '1.2.5';
|
|
20
|
+
}
|
|
21
|
+
migrateNode(node, doc) {
|
|
22
|
+
if (node.type === 'paragraph') {
|
|
23
|
+
return Object.assign(Object.assign({}, node), { attrs: Object.assign(Object.assign({}, node.attrs), { someNewFanctAttribute: 'example-value' }) });
|
|
24
|
+
}
|
|
25
|
+
return node;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export default Migration125;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* © 2024 Atypon Systems LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import Migration125 from './1.2.5';
|
|
17
|
+
const migrations = [new Migration125()];
|
|
18
|
+
export default migrations;
|
|
@@ -718,9 +718,13 @@ export class Decoder {
|
|
|
718
718
|
this.createCommentsNode(),
|
|
719
719
|
];
|
|
720
720
|
const contents = nodes.filter((node) => node !== false);
|
|
721
|
+
const props = this.getManuscript();
|
|
721
722
|
return schema.nodes.manuscript.create({
|
|
722
723
|
id: manuscriptID || this.getManuscriptID(),
|
|
723
|
-
doi:
|
|
724
|
+
doi: (props === null || props === void 0 ? void 0 : props.DOI) || '',
|
|
725
|
+
articleType: props === null || props === void 0 ? void 0 : props.articleType,
|
|
726
|
+
prototype: props === null || props === void 0 ? void 0 : props.prototype,
|
|
727
|
+
primaryLanguageCode: props === null || props === void 0 ? void 0 : props.primaryLanguageCode,
|
|
724
728
|
}, contents);
|
|
725
729
|
};
|
|
726
730
|
this.addGeneratedLabels = (sections) => {
|
|
@@ -766,10 +770,10 @@ export class Decoder {
|
|
|
766
770
|
}
|
|
767
771
|
}
|
|
768
772
|
};
|
|
769
|
-
this.
|
|
773
|
+
this.getManuscript = () => {
|
|
770
774
|
for (const item of this.modelMap.values()) {
|
|
771
775
|
if (isManuscript(item)) {
|
|
772
|
-
return item
|
|
776
|
+
return item;
|
|
773
777
|
}
|
|
774
778
|
}
|
|
775
779
|
};
|
|
@@ -69,8 +69,7 @@ export class HTMLTransformer {
|
|
|
69
69
|
this.serializeToHTML = async (fragment, modelMap, options = {}) => {
|
|
70
70
|
const { idGenerator, mediaPathGenerator } = options;
|
|
71
71
|
this.modelMap = modelMap;
|
|
72
|
-
|
|
73
|
-
this.labelTargets = buildTargets(fragment, manuscript);
|
|
72
|
+
this.labelTargets = buildTargets(fragment);
|
|
74
73
|
this.document = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', document.implementation.createDocumentType('html', '', ''));
|
|
75
74
|
const article = this.document.createElement('article');
|
|
76
75
|
this.document.documentElement.appendChild(article);
|
|
@@ -21,28 +21,15 @@ const labelledNodeTypes = [
|
|
|
21
21
|
schema.nodes.equation_element,
|
|
22
22
|
schema.nodes.listing_element,
|
|
23
23
|
];
|
|
24
|
-
const labelProperties = new Map([
|
|
25
|
-
[schema.nodes.figure_element, 'figureElementLabel'],
|
|
26
|
-
[schema.nodes.table_element, 'tableElementLabel'],
|
|
27
|
-
[schema.nodes.equation_element, 'equationElementLabel'],
|
|
28
|
-
[schema.nodes.listing_element, 'listingElementLabel'],
|
|
29
|
-
]);
|
|
30
24
|
const excludedTypes = [schema.nodes.graphical_abstract_section];
|
|
31
|
-
const chooseLabel = (nodeType
|
|
32
|
-
const labelProperty = labelProperties.get(nodeType);
|
|
33
|
-
if (labelProperty) {
|
|
34
|
-
const label = manuscript[labelProperty];
|
|
35
|
-
if (label) {
|
|
36
|
-
return label;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
25
|
+
const chooseLabel = (nodeType) => {
|
|
39
26
|
return nodeNames.get(nodeType);
|
|
40
27
|
};
|
|
41
|
-
export const buildTargets = (fragment
|
|
28
|
+
export const buildTargets = (fragment) => {
|
|
42
29
|
const counters = {};
|
|
43
30
|
for (const nodeType of labelledNodeTypes) {
|
|
44
31
|
counters[nodeType.name] = {
|
|
45
|
-
label: chooseLabel(nodeType
|
|
32
|
+
label: chooseLabel(nodeType),
|
|
46
33
|
index: 0,
|
|
47
34
|
};
|
|
48
35
|
}
|
package/dist/es/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "2.3.
|
|
1
|
+
export const VERSION = "2.3.21-JSR";
|
package/dist/types/index.d.ts
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MigrationScript } from './migration-script';
|
|
2
|
+
export type JSONNode = {
|
|
3
|
+
type: string;
|
|
4
|
+
attrs: {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
};
|
|
7
|
+
content?: JSONNode[];
|
|
8
|
+
text?: string;
|
|
9
|
+
marks?: Array<{
|
|
10
|
+
type: string;
|
|
11
|
+
attrs?: Record<string, any>;
|
|
12
|
+
}>;
|
|
13
|
+
};
|
|
14
|
+
export default function migrate(oldDoc: JSONNode, migrationScript: MigrationScript['migrateNode']): JSONNode;
|
|
15
|
+
export declare function migrateFor(oldDoc: JSONNode, baseVersion: string): import("prosemirror-model").Node;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* © 2024 Atypon Systems LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { JSONNode } from './migrate';
|
|
17
|
+
export interface MigrationScript {
|
|
18
|
+
fromVersion: string;
|
|
19
|
+
toVersion: string;
|
|
20
|
+
migrateNode: (node: JSONNode, doc: JSONNode) => JSONNode;
|
|
21
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* © 2024 Atypon Systems LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { JSONNode } from '../migrate';
|
|
17
|
+
import { MigrationScript } from '../migration-script';
|
|
18
|
+
declare class Migration125 implements MigrationScript {
|
|
19
|
+
fromVersion: string;
|
|
20
|
+
toVersion: string;
|
|
21
|
+
migrateNode(node: JSONNode, doc: JSONNode): JSONNode;
|
|
22
|
+
}
|
|
23
|
+
export default Migration125;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* © 2024 Atypon Systems LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import Migration125 from './1.2.5';
|
|
17
|
+
declare const migrations: Migration125[];
|
|
18
|
+
export default migrations;
|
|
@@ -42,7 +42,7 @@ export declare class Decoder {
|
|
|
42
42
|
addGeneratedLabels: (sections: Section[]) => Section[];
|
|
43
43
|
parseContents: (contents: string, wrapper?: string, commentAnnotations?: CommentAnnotation[], options?: ParseOptions) => ManuscriptNode;
|
|
44
44
|
private getManuscriptID;
|
|
45
|
-
private
|
|
45
|
+
private getManuscript;
|
|
46
46
|
private getFigcaption;
|
|
47
47
|
private createTable;
|
|
48
48
|
private createTableColGroup;
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Manuscript } from '@manuscripts/json-schema';
|
|
17
16
|
import { ManuscriptFragment } from '../schema';
|
|
18
17
|
export interface Target {
|
|
19
18
|
type: string;
|
|
@@ -21,4 +20,4 @@ export interface Target {
|
|
|
21
20
|
label: string;
|
|
22
21
|
caption: string;
|
|
23
22
|
}
|
|
24
|
-
export declare const buildTargets: (fragment: ManuscriptFragment
|
|
23
|
+
export declare const buildTargets: (fragment: ManuscriptFragment) => Map<string, Target>;
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "2.3.
|
|
1
|
+
export declare const VERSION = "2.3.21-JSR";
|
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.3.
|
|
4
|
+
"version": "2.3.21-JSR",
|
|
5
5
|
"repository": "github:Atypon-OpenSource/manuscripts-transform",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "dist/cjs",
|
|
@@ -34,9 +34,11 @@
|
|
|
34
34
|
"@manuscripts/library": "1.3.10",
|
|
35
35
|
"debug": "^4.3.4",
|
|
36
36
|
"jszip": "^3.10.1",
|
|
37
|
+
"lodash": "^4.17.21",
|
|
37
38
|
"mime": "^3.0.0",
|
|
38
39
|
"prosemirror-model": "^1.18.3",
|
|
39
40
|
"prosemirror-tables": "^1.3.5",
|
|
41
|
+
"semver": "^7.6.2",
|
|
40
42
|
"uuid": "^9.0.0",
|
|
41
43
|
"w3c-xmlserializer": "^4.0.0"
|
|
42
44
|
},
|
|
@@ -47,7 +49,7 @@
|
|
|
47
49
|
"@jats4r/dtds": "^0.0.8",
|
|
48
50
|
"@manuscripts/eslint-config": "^0.5.1",
|
|
49
51
|
"@types/debug": "^4.1.7",
|
|
50
|
-
"@types/jest": "^29.
|
|
52
|
+
"@types/jest": "^29.5.12",
|
|
51
53
|
"@types/lodash.pickby": "^4.6.7",
|
|
52
54
|
"@types/mime": "^3.0.1",
|
|
53
55
|
"@types/node": "^18.11.18",
|
|
@@ -72,6 +74,7 @@
|
|
|
72
74
|
"jest": "^29.3.1",
|
|
73
75
|
"jest-environment-jsdom": "^29.3.1",
|
|
74
76
|
"libxmljs2": "^0.33.0",
|
|
77
|
+
"migration-base": "npm:@manuscripts/transform@2.3.20",
|
|
75
78
|
"npm-run-all": "^4.1.5",
|
|
76
79
|
"prettier": "^2.8.1",
|
|
77
80
|
"prosemirror-state": "^1.4.2",
|