emdash-emit 0.1.9 → 0.1.11
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 +101 -0
- package/README.md +102 -13
- package/dist/bin/emit.d.ts.map +1 -1
- package/dist/bin/emit.js +6 -0
- package/dist/bin/emit.js.map +1 -1
- package/dist/cli/commands/conflicts.d.ts +4 -0
- package/dist/cli/commands/conflicts.d.ts.map +1 -0
- package/dist/cli/commands/conflicts.js +153 -0
- package/dist/cli/commands/conflicts.js.map +1 -0
- package/dist/cli/commands/delete.d.ts +4 -0
- package/dist/cli/commands/delete.d.ts.map +1 -0
- package/dist/cli/commands/delete.js +89 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +4 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +82 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +52 -22
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/commands/pull.js +23 -0
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +36 -1
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +27 -7
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/context.d.ts +3 -1
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +17 -6
- package/dist/cli/context.js.map +1 -1
- package/dist/db/cache.d.ts +3 -0
- package/dist/db/cache.d.ts.map +1 -1
- package/dist/db/cache.js +39 -0
- package/dist/db/cache.js.map +1 -1
- package/dist/mcp/context.d.ts +7 -0
- package/dist/mcp/context.d.ts.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +39 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-errors.d.ts +7 -2
- package/dist/mcp/tool-errors.d.ts.map +1 -1
- package/dist/mcp/tool-errors.js +80 -5
- package/dist/mcp/tool-errors.js.map +1 -1
- package/dist/mcp/tools/profile.d.ts.map +1 -1
- package/dist/mcp/tools/profile.js +4 -0
- package/dist/mcp/tools/profile.js.map +1 -1
- package/dist/mcp/tools/sync-conflicts.d.ts +4 -0
- package/dist/mcp/tools/sync-conflicts.d.ts.map +1 -0
- package/dist/mcp/tools/sync-conflicts.js +100 -0
- package/dist/mcp/tools/sync-conflicts.js.map +1 -0
- package/dist/mcp/tools/sync-delete.d.ts +4 -0
- package/dist/mcp/tools/sync-delete.d.ts.map +1 -0
- package/dist/mcp/tools/sync-delete.js +77 -0
- package/dist/mcp/tools/sync-delete.js.map +1 -0
- package/dist/mcp/tools/sync-diff.d.ts.map +1 -1
- package/dist/mcp/tools/sync-diff.js +3 -2
- package/dist/mcp/tools/sync-diff.js.map +1 -1
- package/dist/mcp/tools/sync-doctor.d.ts +4 -0
- package/dist/mcp/tools/sync-doctor.d.ts.map +1 -0
- package/dist/mcp/tools/sync-doctor.js +57 -0
- package/dist/mcp/tools/sync-doctor.js.map +1 -0
- package/dist/mcp/tools/sync-new.d.ts.map +1 -1
- package/dist/mcp/tools/sync-new.js +16 -3
- package/dist/mcp/tools/sync-new.js.map +1 -1
- package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
- package/dist/mcp/tools/sync-pull.js +41 -11
- package/dist/mcp/tools/sync-pull.js.map +1 -1
- package/dist/mcp/tools/sync-push.d.ts.map +1 -1
- package/dist/mcp/tools/sync-push.js +16 -2
- package/dist/mcp/tools/sync-push.js.map +1 -1
- package/dist/mcp/tools/sync-status.d.ts.map +1 -1
- package/dist/mcp/tools/sync-status.js +63 -22
- package/dist/mcp/tools/sync-status.js.map +1 -1
- package/dist/sync/conflicts.d.ts +89 -0
- package/dist/sync/conflicts.d.ts.map +1 -0
- package/dist/sync/conflicts.js +374 -0
- package/dist/sync/conflicts.js.map +1 -0
- package/dist/sync/delete.d.ts +58 -0
- package/dist/sync/delete.d.ts.map +1 -0
- package/dist/sync/delete.js +221 -0
- package/dist/sync/delete.js.map +1 -0
- package/dist/sync/diff.d.ts.map +1 -1
- package/dist/sync/diff.js +6 -3
- package/dist/sync/diff.js.map +1 -1
- package/dist/sync/doctor.d.ts +31 -0
- package/dist/sync/doctor.d.ts.map +1 -0
- package/dist/sync/doctor.js +273 -0
- package/dist/sync/doctor.js.map +1 -0
- package/dist/sync/media.d.ts +22 -0
- package/dist/sync/media.d.ts.map +1 -1
- package/dist/sync/media.js +342 -94
- package/dist/sync/media.js.map +1 -1
- package/dist/sync/merge.d.ts +17 -1
- package/dist/sync/merge.d.ts.map +1 -1
- package/dist/sync/merge.js +110 -3
- package/dist/sync/merge.js.map +1 -1
- package/dist/sync/new.d.ts +31 -0
- package/dist/sync/new.d.ts.map +1 -1
- package/dist/sync/new.js +139 -2
- package/dist/sync/new.js.map +1 -1
- package/dist/sync/orchestrator.d.ts.map +1 -1
- package/dist/sync/orchestrator.js +2 -0
- package/dist/sync/orchestrator.js.map +1 -1
- package/dist/sync/preflight.d.ts.map +1 -1
- package/dist/sync/preflight.js +29 -3
- package/dist/sync/preflight.js.map +1 -1
- package/dist/sync/pull.d.ts +4 -0
- package/dist/sync/pull.d.ts.map +1 -1
- package/dist/sync/pull.js +159 -80
- package/dist/sync/pull.js.map +1 -1
- package/dist/sync/push.d.ts +10 -0
- package/dist/sync/push.d.ts.map +1 -1
- package/dist/sync/push.js +84 -31
- package/dist/sync/push.js.map +1 -1
- package/dist/sync/status.d.ts +10 -0
- package/dist/sync/status.d.ts.map +1 -1
- package/dist/sync/status.js +26 -0
- package/dist/sync/status.js.map +1 -1
- package/dist/sync/taxonomies.d.ts +14 -5
- package/dist/sync/taxonomies.d.ts.map +1 -1
- package/dist/sync/taxonomies.js +104 -6
- package/dist/sync/taxonomies.js.map +1 -1
- package/dist/sync/terms.d.ts +32 -0
- package/dist/sync/terms.d.ts.map +1 -0
- package/dist/sync/terms.js +62 -0
- package/dist/sync/terms.js.map +1 -0
- package/dist/utils/config.d.ts +12 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +27 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +40 -3
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +188 -5
- package/dist/utils/frontmatter.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 SPORT-SERVICE RS★R
|
|
3
|
+
*
|
|
4
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
* in the Software without restriction, including without limitation the rights
|
|
7
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
* furnished to do so, subject to the following conditions:
|
|
10
|
+
*
|
|
11
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
* copies or substantial portions of the Software.
|
|
13
|
+
*
|
|
14
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
* SOFTWARE.
|
|
21
|
+
*/
|
|
22
|
+
import fs from 'node:fs';
|
|
23
|
+
import path from 'node:path';
|
|
24
|
+
import yaml from 'js-yaml';
|
|
25
|
+
import { getPackageVersion } from '../utils/version.js';
|
|
26
|
+
import { parseMarkdown, lenientRepairMarkdownFrontmatter } from '../utils/frontmatter.js';
|
|
27
|
+
import { listConflicts } from './conflicts.js';
|
|
28
|
+
import { getWorkspaceStatus } from './status.js';
|
|
29
|
+
import { scanArticleMediaReferences } from './delete.js';
|
|
30
|
+
/**
|
|
31
|
+
* Runs a comprehensive health diagnostic across the workspace.
|
|
32
|
+
*/
|
|
33
|
+
export async function runWorkspaceDoctor(options) {
|
|
34
|
+
const collection = options.collection || options.config.defaultCollection || 'posts';
|
|
35
|
+
const checks = [];
|
|
36
|
+
const currentVersion = getPackageVersion();
|
|
37
|
+
// 1. Version Compatibility Check
|
|
38
|
+
const createdWith = options.config.createdWithVersion;
|
|
39
|
+
const lastSynced = options.config.lastSyncedVersion;
|
|
40
|
+
checks.push({
|
|
41
|
+
id: 'version_compatibility',
|
|
42
|
+
name: 'Version Compatibility',
|
|
43
|
+
status: 'ok',
|
|
44
|
+
message: createdWith
|
|
45
|
+
? `Workspace running v${currentVersion} (created with v${createdWith}, last synced with v${lastSynced || createdWith})`
|
|
46
|
+
: `Workspace running v${currentVersion} (compatible)`,
|
|
47
|
+
details: {
|
|
48
|
+
currentVersion,
|
|
49
|
+
createdWithVersion: createdWith,
|
|
50
|
+
lastSyncedVersion: lastSynced,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
// 2. Origin & Profile Consistency Check
|
|
54
|
+
const configOrigin = options.config.origin;
|
|
55
|
+
const profileOrigin = options.profileOrigin;
|
|
56
|
+
if (profileOrigin && configOrigin && configOrigin !== profileOrigin) {
|
|
57
|
+
checks.push({
|
|
58
|
+
id: 'origin_consistency',
|
|
59
|
+
name: 'Origin Consistency',
|
|
60
|
+
status: 'warning',
|
|
61
|
+
message: `Config origin (${configOrigin}) differs from resolved profile origin (${profileOrigin}). Profile origin will be preferred for sync.`,
|
|
62
|
+
details: { configOrigin, profileOrigin, profileName: options.profileName },
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
checks.push({
|
|
67
|
+
id: 'origin_consistency',
|
|
68
|
+
name: 'Origin Consistency',
|
|
69
|
+
status: 'ok',
|
|
70
|
+
message: `Origins are consistent (${profileOrigin || configOrigin || 'default'}).`,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// 3. Frontmatter Syntax & Schema Integrity Check
|
|
74
|
+
const invalidFiles = [];
|
|
75
|
+
let totalArticles = 0;
|
|
76
|
+
for (const status of ['draft', 'published']) {
|
|
77
|
+
const dir = path.join(options.workspaceRoot, collection, status);
|
|
78
|
+
if (!fs.existsSync(dir))
|
|
79
|
+
continue;
|
|
80
|
+
const files = fs.readdirSync(dir).filter((f) => f.endsWith('.md'));
|
|
81
|
+
for (const file of files) {
|
|
82
|
+
totalArticles++;
|
|
83
|
+
const fullPath = path.join(dir, file);
|
|
84
|
+
try {
|
|
85
|
+
const content = fs.readFileSync(fullPath, 'utf8');
|
|
86
|
+
try {
|
|
87
|
+
parseMarkdown(content);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Attempt lenient parse
|
|
91
|
+
const healed = lenientRepairMarkdownFrontmatter(content);
|
|
92
|
+
if (healed) {
|
|
93
|
+
parseMarkdown(healed);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
throw new Error('Unrecoverable parse error');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
invalidFiles.push(path.join(collection, status, file));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (invalidFiles.length > 0) {
|
|
106
|
+
checks.push({
|
|
107
|
+
id: 'frontmatter_integrity',
|
|
108
|
+
name: 'Frontmatter Integrity',
|
|
109
|
+
status: 'error',
|
|
110
|
+
message: `${invalidFiles.length} article(s) have unrecoverable frontmatter syntax errors.`,
|
|
111
|
+
details: invalidFiles,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
checks.push({
|
|
116
|
+
id: 'frontmatter_integrity',
|
|
117
|
+
name: 'Frontmatter Integrity',
|
|
118
|
+
status: 'ok',
|
|
119
|
+
message: `All ${totalArticles} article(s) have valid frontmatter syntax.`,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// 4. Conflicts & Quarantine Check
|
|
123
|
+
const conflictItems = listConflicts(options.workspaceRoot, collection);
|
|
124
|
+
if (conflictItems.length > 0) {
|
|
125
|
+
const conflictCount = conflictItems.filter((i) => i.type === 'conflict').length;
|
|
126
|
+
const deletedCount = conflictItems.filter((i) => i.type === 'deleted').length;
|
|
127
|
+
checks.push({
|
|
128
|
+
id: 'conflicts_quarantine',
|
|
129
|
+
name: 'Conflicts & Quarantine',
|
|
130
|
+
status: 'warning',
|
|
131
|
+
message: `${conflictItems.length} quarantined file(s) found in ${collection}/conflicts/ (${conflictCount} sync conflicts, ${deletedCount} deletion rescue copies). Run "emit conflicts list" to inspect.`,
|
|
132
|
+
details: conflictItems.map((c) => ({
|
|
133
|
+
filePath: c.filePath,
|
|
134
|
+
type: c.type,
|
|
135
|
+
slug: c.slug,
|
|
136
|
+
})),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
checks.push({
|
|
141
|
+
id: 'conflicts_quarantine',
|
|
142
|
+
name: 'Conflicts & Quarantine',
|
|
143
|
+
status: 'ok',
|
|
144
|
+
message: `No unresolved conflicts or rescue backups in ${collection}/conflicts/.`,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
// 5. Sync Status & Pending Modifications Check
|
|
148
|
+
const wsStatus = getWorkspaceStatus(options.workspaceRoot, options.cache, collection);
|
|
149
|
+
if (wsStatus.summary.modified > 0 || wsStatus.summary.untracked > 0) {
|
|
150
|
+
checks.push({
|
|
151
|
+
id: 'sync_status',
|
|
152
|
+
name: 'Sync Status',
|
|
153
|
+
status: 'warning',
|
|
154
|
+
message: `${wsStatus.summary.modified} modified and ${wsStatus.summary.untracked} untracked article(s) pending push.`,
|
|
155
|
+
details: {
|
|
156
|
+
total: wsStatus.summary.total,
|
|
157
|
+
synced: wsStatus.summary.synced,
|
|
158
|
+
modified: wsStatus.summary.modified,
|
|
159
|
+
untracked: wsStatus.summary.untracked,
|
|
160
|
+
invalid: wsStatus.summary.invalid,
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
checks.push({
|
|
166
|
+
id: 'sync_status',
|
|
167
|
+
name: 'Sync Status',
|
|
168
|
+
status: 'ok',
|
|
169
|
+
message: `All ${wsStatus.summary.synced} tracked article(s) in sync with base snapshots.`,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
// 6. Media References Integrity Check
|
|
173
|
+
// Index all local media companion YAMLs and files to resolve both local paths and storageKey URLs (D1)
|
|
174
|
+
const mediaDir = path.join(options.workspaceRoot, 'media');
|
|
175
|
+
const knownStorageKeys = new Set();
|
|
176
|
+
const knownMediaIds = new Set();
|
|
177
|
+
const knownLocalFiles = new Set();
|
|
178
|
+
if (fs.existsSync(mediaDir)) {
|
|
179
|
+
const mediaFiles = fs.readdirSync(mediaDir);
|
|
180
|
+
for (const f of mediaFiles) {
|
|
181
|
+
knownLocalFiles.add(f);
|
|
182
|
+
knownLocalFiles.add(path.posix.join('media', f));
|
|
183
|
+
if (f.endsWith('.yaml')) {
|
|
184
|
+
try {
|
|
185
|
+
const doc = yaml.load(fs.readFileSync(path.join(mediaDir, f), 'utf8'));
|
|
186
|
+
if (doc) {
|
|
187
|
+
if (typeof doc.storageKey === 'string' && doc.storageKey) {
|
|
188
|
+
knownStorageKeys.add(doc.storageKey);
|
|
189
|
+
}
|
|
190
|
+
if (typeof doc.id === 'string' && doc.id) {
|
|
191
|
+
knownMediaIds.add(doc.id);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// ignore corrupted individual yaml
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
const draftsDir = path.join(mediaDir, 'drafts');
|
|
201
|
+
if (fs.existsSync(draftsDir)) {
|
|
202
|
+
for (const df of fs.readdirSync(draftsDir)) {
|
|
203
|
+
knownLocalFiles.add(path.posix.join('media', 'drafts', df));
|
|
204
|
+
knownLocalFiles.add(path.posix.join('../../media', 'drafts', df));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const missingMedia = [];
|
|
209
|
+
for (const status of ['draft', 'published']) {
|
|
210
|
+
const dir = path.join(options.workspaceRoot, collection, status);
|
|
211
|
+
if (!fs.existsSync(dir))
|
|
212
|
+
continue;
|
|
213
|
+
const files = fs.readdirSync(dir).filter((f) => f.endsWith('.md'));
|
|
214
|
+
for (const file of files) {
|
|
215
|
+
try {
|
|
216
|
+
const content = fs.readFileSync(path.join(dir, file), 'utf8');
|
|
217
|
+
const refs = scanArticleMediaReferences(content);
|
|
218
|
+
for (const ref of refs) {
|
|
219
|
+
// Check 1: EmDash public storageKey route: /_emdash/api/media/file/<storageKey>
|
|
220
|
+
const storageKeyMatch = ref.match(/(?:^|\/)media\/file\/([^?#]+)/);
|
|
221
|
+
if (storageKeyMatch) {
|
|
222
|
+
const key = storageKeyMatch[1];
|
|
223
|
+
if (!knownStorageKeys.has(key)) {
|
|
224
|
+
missingMedia.push(`${ref} (storageKey '${key}' not found in media/*.yaml, referenced by ${path.join(collection, status, file)})`);
|
|
225
|
+
}
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
// Check 2: Direct relative or local filesystem path
|
|
229
|
+
const cleanRef = ref.replace(/^[./]+/, '');
|
|
230
|
+
const directFull = path.isAbsolute(ref) ? ref : path.join(options.workspaceRoot, ref);
|
|
231
|
+
if (!fs.existsSync(directFull) &&
|
|
232
|
+
!knownLocalFiles.has(ref) &&
|
|
233
|
+
!knownLocalFiles.has(cleanRef)) {
|
|
234
|
+
missingMedia.push(`${ref} (referenced by ${path.join(collection, status, file)})`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// Skip unreadable files
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (missingMedia.length > 0) {
|
|
244
|
+
checks.push({
|
|
245
|
+
id: 'media_references',
|
|
246
|
+
name: 'Media References',
|
|
247
|
+
status: 'warning',
|
|
248
|
+
message: `${missingMedia.length} referenced media file(s) are missing from disk.`,
|
|
249
|
+
details: missingMedia,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
checks.push({
|
|
254
|
+
id: 'media_references',
|
|
255
|
+
name: 'Media References',
|
|
256
|
+
status: 'ok',
|
|
257
|
+
message: 'All referenced local media files exist on disk.',
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
// Determine overall status
|
|
261
|
+
const hasErrors = checks.some((c) => c.status === 'error');
|
|
262
|
+
const hasWarnings = checks.some((c) => c.status === 'warning');
|
|
263
|
+
const overallStatus = hasErrors ? 'errors' : hasWarnings ? 'warnings' : 'healthy';
|
|
264
|
+
return {
|
|
265
|
+
workspace: options.workspaceRoot,
|
|
266
|
+
emitVersion: currentVersion,
|
|
267
|
+
createdWithVersion: createdWith,
|
|
268
|
+
lastSyncedVersion: lastSynced,
|
|
269
|
+
overallStatus,
|
|
270
|
+
checks,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/sync/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/media.d.ts
CHANGED
|
@@ -27,11 +27,17 @@ export interface PromoteDraftMediaOptions {
|
|
|
27
27
|
* Returns the workspace-relative path of the promoted binary file.
|
|
28
28
|
*/
|
|
29
29
|
export declare function promoteDraftMediaFile(options: PromoteDraftMediaOptions): string;
|
|
30
|
+
/**
|
|
31
|
+
* Collects all media ULIDs referenced by an article content (frontmatter featuredImage + body images).
|
|
32
|
+
*/
|
|
33
|
+
export declare function collectArticleReferencedMediaIds(content: string): string[];
|
|
30
34
|
export interface PullMediaOptions {
|
|
31
35
|
workspaceRoot: string;
|
|
32
36
|
origin: string;
|
|
33
37
|
token: string;
|
|
34
38
|
refreshToken?: string;
|
|
39
|
+
article?: string;
|
|
40
|
+
collection?: string;
|
|
35
41
|
limit?: number;
|
|
36
42
|
all?: boolean;
|
|
37
43
|
downloadFiles?: boolean;
|
|
@@ -43,7 +49,23 @@ export interface PullMediaResult {
|
|
|
43
49
|
downloaded: number;
|
|
44
50
|
skipped: number;
|
|
45
51
|
deleted?: number;
|
|
52
|
+
failed?: number;
|
|
53
|
+
articleId?: string;
|
|
54
|
+
mediaIds?: string[];
|
|
46
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Pulls media referenced by a specific article (by ULID or file path).
|
|
58
|
+
*/
|
|
59
|
+
export declare function pullArticleMedia(options: {
|
|
60
|
+
workspaceRoot: string;
|
|
61
|
+
origin: string;
|
|
62
|
+
token: string;
|
|
63
|
+
refreshToken?: string;
|
|
64
|
+
article: string;
|
|
65
|
+
collection?: string;
|
|
66
|
+
downloadFiles?: boolean;
|
|
67
|
+
fetchFn?: typeof fetch;
|
|
68
|
+
}): Promise<PullMediaResult>;
|
|
47
69
|
/**
|
|
48
70
|
* Pulls media metadata and files from EmDash API into media/ directory with cursor pagination.
|
|
49
71
|
* media/<id>-<filename>.yaml
|
package/dist/sync/media.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/sync/media.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/sync/media.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC5C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoDzB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA4CD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CA0C/E;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAwE1E;AAoID,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB,GAAG,OAAO,CAAC,eAAe,CAAC,CA2I3B;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAkInF"}
|