docrev 0.11.3 → 0.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.
- package/CHANGELOG.md +22 -0
- package/LICENSE +21 -0
- package/dist/bin/rev.js +29 -21
- package/dist/bin/rev.js.map +1 -1
- package/dist/lib/build.d.ts +43 -0
- package/dist/lib/build.d.ts.map +1 -1
- package/dist/lib/build.js +175 -5
- package/dist/lib/build.js.map +1 -1
- package/dist/lib/commands/build.d.ts.map +1 -1
- package/dist/lib/commands/build.js +39 -125
- package/dist/lib/commands/build.js.map +1 -1
- package/dist/lib/commands/comments.js +3 -3
- package/dist/lib/commands/comments.js.map +1 -1
- package/dist/lib/commands/context.d.ts +12 -1
- package/dist/lib/commands/context.d.ts.map +1 -1
- package/dist/lib/commands/context.js +34 -1
- package/dist/lib/commands/context.js.map +1 -1
- package/dist/lib/commands/merge-resolve.js +1 -1
- package/dist/lib/commands/merge-resolve.js.map +1 -1
- package/dist/lib/commands/quality.js +2 -2
- package/dist/lib/commands/quality.js.map +1 -1
- package/dist/lib/commands/sections.js +1 -1
- package/dist/lib/commands/sections.js.map +1 -1
- package/dist/lib/commands/text-ops.js +1 -1
- package/dist/lib/commands/text-ops.js.map +1 -1
- package/dist/lib/commands/utilities.d.ts.map +1 -1
- package/dist/lib/commands/utilities.js +5 -2
- package/dist/lib/commands/utilities.js.map +1 -1
- package/dist/lib/commands/word-tools.js +2 -2
- package/dist/lib/commands/word-tools.js.map +1 -1
- package/dist/lib/crossref.d.ts.map +1 -1
- package/dist/lib/crossref.js +12 -41
- package/dist/lib/crossref.js.map +1 -1
- package/dist/lib/csl.d.ts.map +1 -1
- package/dist/lib/csl.js +14 -22
- package/dist/lib/csl.js.map +1 -1
- package/dist/lib/diff-engine.js +1 -1
- package/dist/lib/diff-engine.js.map +1 -1
- package/dist/lib/equations.d.ts.map +1 -1
- package/dist/lib/equations.js +12 -3
- package/dist/lib/equations.js.map +1 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +1 -30
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/image-registry.d.ts.map +1 -1
- package/dist/lib/image-registry.js +4 -0
- package/dist/lib/image-registry.js.map +1 -1
- package/dist/lib/import.d.ts +1 -1
- package/dist/lib/import.d.ts.map +1 -1
- package/dist/lib/import.js +1 -1
- package/dist/lib/import.js.map +1 -1
- package/dist/lib/input.d.ts +0 -11
- package/dist/lib/input.d.ts.map +1 -1
- package/dist/lib/input.js +0 -35
- package/dist/lib/input.js.map +1 -1
- package/dist/lib/merge.d.ts.map +1 -1
- package/dist/lib/merge.js +9 -1
- package/dist/lib/merge.js.map +1 -1
- package/dist/lib/ooxml.d.ts +22 -0
- package/dist/lib/ooxml.d.ts.map +1 -1
- package/dist/lib/ooxml.js +130 -0
- package/dist/lib/ooxml.js.map +1 -1
- package/dist/lib/orcid.d.ts.map +1 -1
- package/dist/lib/orcid.js +16 -7
- package/dist/lib/orcid.js.map +1 -1
- package/dist/lib/plugins.d.ts.map +1 -1
- package/dist/lib/plugins.js +8 -4
- package/dist/lib/plugins.js.map +1 -1
- package/dist/lib/protect-restore.d.ts.map +1 -1
- package/dist/lib/protect-restore.js +7 -5
- package/dist/lib/protect-restore.js.map +1 -1
- package/dist/lib/restore-references.d.ts.map +1 -1
- package/dist/lib/restore-references.js +25 -3
- package/dist/lib/restore-references.js.map +1 -1
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/schema.js +1 -19
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/slides.js +1 -1
- package/dist/lib/slides.js.map +1 -1
- package/dist/lib/spelling.js +1 -1
- package/dist/lib/spelling.js.map +1 -1
- package/dist/lib/tui.js +0 -1
- package/dist/lib/tui.js.map +1 -1
- package/dist/lib/utils.d.ts +14 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +41 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/word-extraction.d.ts +5 -5
- package/dist/lib/word-extraction.d.ts.map +1 -1
- package/dist/lib/word-extraction.js +25 -106
- package/dist/lib/word-extraction.js.map +1 -1
- package/dist/lib/word.d.ts +14 -38
- package/dist/lib/word.d.ts.map +1 -1
- package/dist/lib/word.js +24 -179
- package/dist/lib/word.js.map +1 -1
- package/dist/lib/wordcomments.d.ts.map +1 -1
- package/dist/lib/wordcomments.js +9 -7
- package/dist/lib/wordcomments.js.map +1 -1
- package/package.json +17 -6
- package/.gitattributes +0 -1
- package/PLAN-tables-and-postprocess.md +0 -850
- package/bin/rev.ts +0 -145
- package/docs-src/build.py +0 -113
- package/docs-src/extra.css +0 -208
- package/docs-src/md-to-html.lua +0 -6
- package/docs-src/template.html +0 -116
- package/eslint.config.js +0 -27
- package/lib/anchor-match.ts +0 -307
- package/lib/annotations.ts +0 -695
- package/lib/build.ts +0 -2047
- package/lib/citations.ts +0 -160
- package/lib/commands/build.ts +0 -885
- package/lib/commands/citations.ts +0 -515
- package/lib/commands/comments.ts +0 -1077
- package/lib/commands/context.ts +0 -185
- package/lib/commands/core.ts +0 -328
- package/lib/commands/doi.ts +0 -451
- package/lib/commands/file-ops.ts +0 -372
- package/lib/commands/history.ts +0 -320
- package/lib/commands/index.ts +0 -87
- package/lib/commands/init.ts +0 -259
- package/lib/commands/merge-resolve.ts +0 -378
- package/lib/commands/preview.ts +0 -178
- package/lib/commands/project-info.ts +0 -244
- package/lib/commands/quality.ts +0 -517
- package/lib/commands/response.ts +0 -454
- package/lib/commands/section-boundaries.ts +0 -82
- package/lib/commands/sections.ts +0 -451
- package/lib/commands/sync.ts +0 -689
- package/lib/commands/text-ops.ts +0 -449
- package/lib/commands/utilities.ts +0 -448
- package/lib/commands/verify-anchors.ts +0 -272
- package/lib/commands/word-tools.ts +0 -340
- package/lib/comment-realign.ts +0 -99
- package/lib/config.ts +0 -84
- package/lib/crossref.ts +0 -781
- package/lib/csl.ts +0 -191
- package/lib/dependencies.ts +0 -132
- package/lib/diff-engine.ts +0 -465
- package/lib/doi-cache.ts +0 -115
- package/lib/doi.ts +0 -879
- package/lib/equations.ts +0 -506
- package/lib/errors.ts +0 -350
- package/lib/format.ts +0 -541
- package/lib/git.ts +0 -326
- package/lib/grammar.ts +0 -303
- package/lib/image-registry.ts +0 -180
- package/lib/import.ts +0 -932
- package/lib/input.ts +0 -174
- package/lib/journals.ts +0 -543
- package/lib/macro-filter.lua +0 -201
- package/lib/macros.ts +0 -273
- package/lib/merge.ts +0 -633
- package/lib/ooxml.ts +0 -768
- package/lib/orcid.ts +0 -144
- package/lib/pdf-comments.ts +0 -263
- package/lib/pdf-import.ts +0 -524
- package/lib/plugins.ts +0 -362
- package/lib/postprocess.ts +0 -188
- package/lib/pptx-color-filter.lua +0 -37
- package/lib/pptx-template.ts +0 -469
- package/lib/pptx-themes/academic.pptx +0 -0
- package/lib/pptx-themes/corporate.pptx +0 -0
- package/lib/pptx-themes/dark.pptx +0 -0
- package/lib/pptx-themes/default.pptx +0 -0
- package/lib/pptx-themes/minimal.pptx +0 -0
- package/lib/pptx-themes/plant.pptx +0 -0
- package/lib/pptx-themes.ts +0 -483
- package/lib/protect-restore.ts +0 -520
- package/lib/rate-limiter.ts +0 -127
- package/lib/response.ts +0 -200
- package/lib/restore-references.ts +0 -240
- package/lib/review.ts +0 -327
- package/lib/schema.ts +0 -494
- package/lib/scientific-words.ts +0 -73
- package/lib/sections.ts +0 -428
- package/lib/slides.ts +0 -756
- package/lib/spelling.ts +0 -334
- package/lib/templates.ts +0 -526
- package/lib/themes.ts +0 -742
- package/lib/trackchanges.ts +0 -166
- package/lib/tui.ts +0 -450
- package/lib/types.ts +0 -546
- package/lib/undo.ts +0 -250
- package/lib/utils.ts +0 -69
- package/lib/variables.ts +0 -179
- package/lib/word-extraction.ts +0 -525
- package/lib/word.ts +0 -526
- package/lib/wordcomments.ts +0 -789
- package/mkdocs.yml +0 -64
- package/scripts/postbuild.js +0 -47
- package/tsconfig.json +0 -26
- package/types/index.d.ts +0 -531
package/lib/comment-realign.ts
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Realign comments from a reference DOCX onto markdown.
|
|
3
|
-
*
|
|
4
|
-
* This is the same job as `rev sync`: read the comments and their anchors from
|
|
5
|
-
* a docx, then place them into the current markdown. It therefore reuses the
|
|
6
|
-
* one extraction + placement engine rather than carrying a second docx parser
|
|
7
|
-
* and a proportional position-mapper.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import * as fs from 'fs';
|
|
11
|
-
import { extractWordComments, extractCommentAnchors } from './word-extraction.js';
|
|
12
|
-
import { insertCommentsIntoMarkdown } from './import.js';
|
|
13
|
-
|
|
14
|
-
interface RealignOptions {
|
|
15
|
-
dryRun?: boolean;
|
|
16
|
-
/** When set, realign only comments by these authors; otherwise all. */
|
|
17
|
-
author?: string;
|
|
18
|
-
replyAuthor?: string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
interface RealignResult {
|
|
22
|
-
success: boolean;
|
|
23
|
-
dryRun?: boolean;
|
|
24
|
-
insertions: number;
|
|
25
|
-
error?: string;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface RealignMarkdownOptions {
|
|
29
|
-
author?: string;
|
|
30
|
-
replyAuthor?: string;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
interface RealignMarkdownResult {
|
|
34
|
-
success: boolean;
|
|
35
|
-
markdown: string;
|
|
36
|
-
insertions: number;
|
|
37
|
-
error?: string;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** Existing CriticMarkup comments, removed before the reference set is placed. */
|
|
41
|
-
function stripExistingComments(markdown: string): string {
|
|
42
|
-
return markdown.replace(/\s*\{>>[\s\S]+?<<\}/g, '');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Realign the reference docx's comments onto an in-memory markdown string.
|
|
47
|
-
* Existing comments are cleared first so re-running is idempotent.
|
|
48
|
-
*/
|
|
49
|
-
export async function realignMarkdown(
|
|
50
|
-
docxPath: string,
|
|
51
|
-
markdown: string,
|
|
52
|
-
options: RealignMarkdownOptions = {},
|
|
53
|
-
): Promise<RealignMarkdownResult> {
|
|
54
|
-
try {
|
|
55
|
-
let comments = await extractWordComments(docxPath);
|
|
56
|
-
const { anchors } = await extractCommentAnchors(docxPath);
|
|
57
|
-
|
|
58
|
-
if (options.author) {
|
|
59
|
-
const keep = new Set([options.author, options.replyAuthor].filter(Boolean) as string[]);
|
|
60
|
-
comments = comments.filter((c) => keep.has(c.author));
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const stripped = stripExistingComments(markdown);
|
|
64
|
-
const stats = { placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0 };
|
|
65
|
-
const result = insertCommentsIntoMarkdown(stripped, comments, anchors, {
|
|
66
|
-
quiet: true,
|
|
67
|
-
wrapAnchor: false,
|
|
68
|
-
outStats: stats,
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
return { success: true, markdown: result, insertions: stats.placed + stats.lowConfidence };
|
|
72
|
-
} catch (err: any) {
|
|
73
|
-
return { success: false, markdown, insertions: 0, error: err.message };
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Realign the reference docx's comments onto a markdown file in place.
|
|
79
|
-
*/
|
|
80
|
-
export async function realignComments(
|
|
81
|
-
docxPath: string,
|
|
82
|
-
markdownPath: string,
|
|
83
|
-
options: RealignOptions = {},
|
|
84
|
-
): Promise<RealignResult> {
|
|
85
|
-
const { dryRun = false, author, replyAuthor } = options;
|
|
86
|
-
|
|
87
|
-
const original = fs.readFileSync(markdownPath, 'utf-8');
|
|
88
|
-
const realigned = await realignMarkdown(docxPath, original, { author, replyAuthor });
|
|
89
|
-
if (!realigned.success) {
|
|
90
|
-
return { success: false, insertions: 0, error: realigned.error };
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (dryRun) {
|
|
94
|
-
return { success: true, dryRun: true, insertions: realigned.insertions };
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
fs.writeFileSync(markdownPath, realigned.markdown);
|
|
98
|
-
return { success: true, insertions: realigned.insertions };
|
|
99
|
-
}
|
package/lib/config.ts
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* User configuration management
|
|
3
|
-
* Stores user preferences in ~/.revrc
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { UserConfig } from './types.js';
|
|
7
|
-
import * as fs from 'fs';
|
|
8
|
-
import * as path from 'path';
|
|
9
|
-
import * as os from 'os';
|
|
10
|
-
|
|
11
|
-
const CONFIG_PATH = path.join(os.homedir(), '.revrc');
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Load user config
|
|
15
|
-
* @returns User configuration object
|
|
16
|
-
*/
|
|
17
|
-
export function loadUserConfig(): UserConfig {
|
|
18
|
-
try {
|
|
19
|
-
if (fs.existsSync(CONFIG_PATH)) {
|
|
20
|
-
const content = fs.readFileSync(CONFIG_PATH, 'utf-8');
|
|
21
|
-
return JSON.parse(content) as UserConfig;
|
|
22
|
-
}
|
|
23
|
-
} catch (e) {
|
|
24
|
-
if (process.env.DEBUG) {
|
|
25
|
-
const error = e as Error;
|
|
26
|
-
console.warn('config: Failed to parse ~/.revrc:', error.message);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return {};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Save user config
|
|
34
|
-
* @param config - User configuration to save
|
|
35
|
-
*/
|
|
36
|
-
export function saveUserConfig(config: UserConfig): void {
|
|
37
|
-
fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2), 'utf-8');
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Get user name
|
|
42
|
-
* @returns User name or null if not set
|
|
43
|
-
*/
|
|
44
|
-
export function getUserName(): string | null {
|
|
45
|
-
const config = loadUserConfig();
|
|
46
|
-
return config.userName || null;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Set user name
|
|
51
|
-
* @param name - User name to set
|
|
52
|
-
*/
|
|
53
|
-
export function setUserName(name: string): void {
|
|
54
|
-
const config = loadUserConfig();
|
|
55
|
-
config.userName = name;
|
|
56
|
-
saveUserConfig(config);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Get config file path
|
|
61
|
-
* @returns Absolute path to config file
|
|
62
|
-
*/
|
|
63
|
-
export function getConfigPath(): string {
|
|
64
|
-
return CONFIG_PATH;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Get default sections for new projects
|
|
69
|
-
* @returns Array of section names or null if not set
|
|
70
|
-
*/
|
|
71
|
-
export function getDefaultSections(): string[] | null {
|
|
72
|
-
const config = loadUserConfig();
|
|
73
|
-
return config.defaultSections || null;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Set default sections for new projects
|
|
78
|
-
* @param sections - Array of section names (without .md extension)
|
|
79
|
-
*/
|
|
80
|
-
export function setDefaultSections(sections: string[]): void {
|
|
81
|
-
const config = loadUserConfig();
|
|
82
|
-
config.defaultSections = sections;
|
|
83
|
-
saveUserConfig(config);
|
|
84
|
-
}
|