canopycms 0.0.61 → 0.0.62
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/ai/json-to-markdown.js +1 -2
- package/dist/ai/json-to-markdown.js.map +1 -1
- package/dist/api/__test__/mock-client.d.ts +5 -1
- package/dist/api/__test__/mock-client.d.ts.map +1 -1
- package/dist/api/__test__/mock-client.js +9 -2
- package/dist/api/__test__/mock-client.js.map +1 -1
- package/dist/api/admin-branch-health.d.ts +36 -1
- package/dist/api/admin-branch-health.d.ts.map +1 -1
- package/dist/api/admin-branch-health.js +176 -2
- package/dist/api/admin-branch-health.js.map +1 -1
- package/dist/api/admin.d.ts +8 -1
- package/dist/api/admin.d.ts.map +1 -1
- package/dist/api/admin.js.map +1 -1
- package/dist/api/branch.d.ts.map +1 -1
- package/dist/api/branch.js +16 -2
- package/dist/api/branch.js.map +1 -1
- package/dist/api/client.d.ts +5 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +6 -0
- package/dist/api/client.js.map +1 -1
- package/dist/api/comments.d.ts +2 -2
- package/dist/api/content.d.ts +11 -5
- package/dist/api/content.d.ts.map +1 -1
- package/dist/api/content.js +79 -6
- package/dist/api/content.js.map +1 -1
- package/dist/api/entries.d.ts +10 -0
- package/dist/api/entries.d.ts.map +1 -1
- package/dist/api/entries.js +40 -15
- package/dist/api/entries.js.map +1 -1
- package/dist/api/schema.d.ts +4 -4
- package/dist/api/schema.d.ts.map +1 -1
- package/dist/api/schema.js +13 -13
- package/dist/api/schema.js.map +1 -1
- package/dist/assets/transform.d.ts.map +1 -1
- package/dist/assets/transform.js +19 -6
- package/dist/assets/transform.js.map +1 -1
- package/dist/branch-health.d.ts +13 -0
- package/dist/branch-health.d.ts.map +1 -1
- package/dist/branch-health.js +23 -0
- package/dist/branch-health.js.map +1 -1
- package/dist/cli/cli.js +858 -537
- package/dist/cli/generate-ai-content.js +760 -455
- package/dist/cli/init.js +25 -7
- package/dist/cli/template-files/Dockerfile.cms.template +19 -1
- package/dist/cli/template-files/canopycms.config.ts.template +7 -0
- package/dist/cli/template-files/cms-stack.ts.template +7 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/config/schemas/field.d.ts +15 -15
- package/dist/config/types.d.ts +2 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validation.d.ts +9 -0
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +14 -0
- package/dist/config/validation.js.map +1 -1
- package/dist/content-id-index.d.ts +97 -5
- package/dist/content-id-index.d.ts.map +1 -1
- package/dist/content-id-index.js +170 -18
- package/dist/content-id-index.js.map +1 -1
- package/dist/content-store.d.ts +81 -7
- package/dist/content-store.d.ts.map +1 -1
- package/dist/content-store.js +443 -258
- package/dist/content-store.js.map +1 -1
- package/dist/editor/BranchManager.d.ts.map +1 -1
- package/dist/editor/BranchManager.js +18 -6
- package/dist/editor/BranchManager.js.map +1 -1
- package/dist/editor/CanopyEditor.d.ts.map +1 -1
- package/dist/editor/CanopyEditor.js +2 -2
- package/dist/editor/CanopyEditor.js.map +1 -1
- package/dist/editor/CanopyEditorPage.d.ts +9 -1
- package/dist/editor/CanopyEditorPage.d.ts.map +1 -1
- package/dist/editor/CanopyEditorPage.js +9 -2
- package/dist/editor/CanopyEditorPage.js.map +1 -1
- package/dist/editor/Editor.d.ts +9 -1
- package/dist/editor/Editor.d.ts.map +1 -1
- package/dist/editor/Editor.js +58 -24
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/FormRenderer.d.ts.map +1 -1
- package/dist/editor/FormRenderer.js +12 -0
- package/dist/editor/FormRenderer.js.map +1 -1
- package/dist/editor/admin/SystemHealthPanel.js +6 -2
- package/dist/editor/admin/SystemHealthPanel.js.map +1 -1
- package/dist/editor/components/EntryCreateModal.d.ts +9 -1
- package/dist/editor/components/EntryCreateModal.d.ts.map +1 -1
- package/dist/editor/components/EntryCreateModal.js +4 -1
- package/dist/editor/components/EntryCreateModal.js.map +1 -1
- package/dist/editor/fields/DateTimeField.d.ts +46 -0
- package/dist/editor/fields/DateTimeField.d.ts.map +1 -0
- package/dist/editor/fields/DateTimeField.js +66 -0
- package/dist/editor/fields/DateTimeField.js.map +1 -0
- package/dist/editor/fields/NumberField.d.ts +34 -0
- package/dist/editor/fields/NumberField.d.ts.map +1 -0
- package/dist/editor/fields/NumberField.js +53 -0
- package/dist/editor/fields/NumberField.js.map +1 -0
- package/dist/editor/fields/NumberListField.d.ts +25 -0
- package/dist/editor/fields/NumberListField.d.ts.map +1 -0
- package/dist/editor/fields/NumberListField.js +53 -0
- package/dist/editor/fields/NumberListField.js.map +1 -0
- package/dist/editor/hooks/useBranchManager.d.ts.map +1 -1
- package/dist/editor/hooks/useBranchManager.js +115 -26
- package/dist/editor/hooks/useBranchManager.js.map +1 -1
- package/dist/editor/hooks/useDraftManager.d.ts +8 -0
- package/dist/editor/hooks/useDraftManager.d.ts.map +1 -1
- package/dist/editor/hooks/useDraftManager.js +261 -21
- package/dist/editor/hooks/useDraftManager.js.map +1 -1
- package/dist/editor/hooks/useEntryManager.d.ts +21 -0
- package/dist/editor/hooks/useEntryManager.d.ts.map +1 -1
- package/dist/editor/hooks/useEntryManager.js +25 -2
- package/dist/editor/hooks/useEntryManager.js.map +1 -1
- package/dist/editor/theme.d.ts +8 -8
- package/dist/git-manager.d.ts +51 -7
- package/dist/git-manager.d.ts.map +1 -1
- package/dist/git-manager.js +105 -14
- package/dist/git-manager.js.map +1 -1
- package/dist/http/handler.d.ts.map +1 -1
- package/dist/http/handler.js +70 -27
- package/dist/http/handler.js.map +1 -1
- package/dist/http/router.d.ts.map +1 -1
- package/dist/http/router.js +40 -3
- package/dist/http/router.js.map +1 -1
- package/dist/operating-mode/deployment-name-fixtures.d.ts +29 -0
- package/dist/operating-mode/deployment-name-fixtures.d.ts.map +1 -0
- package/dist/operating-mode/deployment-name-fixtures.js +55 -0
- package/dist/operating-mode/deployment-name-fixtures.js.map +1 -0
- package/dist/operating-mode/deployment-name.d.ts +9 -0
- package/dist/operating-mode/deployment-name.d.ts.map +1 -1
- package/dist/operating-mode/deployment-name.js +9 -1
- package/dist/operating-mode/deployment-name.js.map +1 -1
- package/dist/operating-mode/index.d.ts +2 -1
- package/dist/operating-mode/index.d.ts.map +1 -1
- package/dist/operating-mode/index.js +4 -1
- package/dist/operating-mode/index.js.map +1 -1
- package/dist/operating-mode/mode-env.d.ts +58 -0
- package/dist/operating-mode/mode-env.d.ts.map +1 -0
- package/dist/operating-mode/mode-env.js +97 -0
- package/dist/operating-mode/mode-env.js.map +1 -0
- package/dist/resolve-canopy-user.d.ts +34 -0
- package/dist/resolve-canopy-user.d.ts.map +1 -0
- package/dist/resolve-canopy-user.js +55 -0
- package/dist/resolve-canopy-user.js.map +1 -0
- package/dist/schema/schema-store.d.ts +53 -2
- package/dist/schema/schema-store.d.ts.map +1 -1
- package/dist/schema/schema-store.js +92 -21
- package/dist/schema/schema-store.js.map +1 -1
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -0
- package/dist/server.js.map +1 -1
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +40 -6
- package/dist/services.js.map +1 -1
- package/dist/settings-workspace.d.ts +40 -0
- package/dist/settings-workspace.d.ts.map +1 -1
- package/dist/settings-workspace.js +139 -151
- package/dist/settings-workspace.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/content-write-lock.d.ts +127 -0
- package/dist/utils/content-write-lock.d.ts.map +1 -0
- package/dist/utils/content-write-lock.js +170 -0
- package/dist/utils/content-write-lock.js.map +1 -0
- package/dist/utils/error.d.ts +1 -1
- package/dist/utils/error.js +1 -1
- package/dist/utils/git.d.ts +16 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +22 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/sanitize-href.d.ts +28 -3
- package/dist/utils/sanitize-href.d.ts.map +1 -1
- package/dist/utils/sanitize-href.js +64 -6
- package/dist/utils/sanitize-href.js.map +1 -1
- package/dist/validation/entry-link-validator.d.ts +1 -1
- package/dist/validation/entry-link-validator.js +3 -3
- package/dist/validation/entry-link-validator.js.map +1 -1
- package/dist/validation/entry-validator.js +1 -1
- package/dist/validation/entry-validator.js.map +1 -1
- package/dist/worker/cms-worker.d.ts +13 -0
- package/dist/worker/cms-worker.d.ts.map +1 -1
- package/dist/worker/cms-worker.js +326 -264
- package/dist/worker/cms-worker.js.map +1 -1
- package/package.json +2 -2
package/dist/content-id-index.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from 'node:fs/promises';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { isValidId } from './id.js';
|
|
4
4
|
import { isNotFoundError } from './utils/error.js';
|
|
5
|
+
import { canopyLogWarn } from './utils/logger.js';
|
|
5
6
|
/** Logical path representing entries stored at the branch root (no parent collection). Rare in practice. */
|
|
6
7
|
const EMPTY_LOGICAL_PATH = '';
|
|
7
8
|
/**
|
|
@@ -51,26 +52,116 @@ function toLogicalCollectionPath(physicalPath) {
|
|
|
51
52
|
* (ID miss or index hit whose file is gone).
|
|
52
53
|
*
|
|
53
54
|
* **Race condition handling:**
|
|
54
|
-
* - Multiple processes creating entries simultaneously:
|
|
55
|
-
*
|
|
55
|
+
* - Multiple processes creating entries simultaneously: each generates a unique ID,
|
|
56
|
+
* so this cannot itself manufacture a duplicate-ID pair.
|
|
56
57
|
* - ContentStore.write() refuses to recreate an entry file whose ID the
|
|
57
58
|
* directory listing places at a different slug (existence guard), so stale
|
|
58
|
-
* indexes cannot manufacture duplicate-ID files.
|
|
59
|
+
* indexes cannot manufacture duplicate-ID files either. Together these two
|
|
60
|
+
* guarantees mean buildFromFilenames() can only ever encounter a duplicate
|
|
61
|
+
* ID that ALREADY existed on disk before the scan started (see below).
|
|
62
|
+
*
|
|
63
|
+
* ## Duplicate-ID quarantine (not fail-fast)
|
|
64
|
+
*
|
|
65
|
+
* A duplicate embedded ID can still land on disk from an external crash --
|
|
66
|
+
* e.g. ContentStore.renameEntry()'s `fs.link()` then `fs.unlink()` is not
|
|
67
|
+
* atomic, and a crash between the two steps leaves two filenames sharing one
|
|
68
|
+
* ID. Earlier versions of this class threw on the first such collision,
|
|
69
|
+
* which propagated out of every caller and (since ContentStore's rebuild has
|
|
70
|
+
* no catch around it) permanently bricked read-by-id, reference resolution,
|
|
71
|
+
* collection listing, and every write on the branch -- one bad pair took the
|
|
72
|
+
* whole branch down.
|
|
73
|
+
*
|
|
74
|
+
* `buildFromFilenames()` now quarantines a collision instead of throwing:
|
|
75
|
+
* the two (or more) candidates sharing an ID are resolved to a single
|
|
76
|
+
* deterministic winner -- the lexicographically-**smallest** relativePath,
|
|
77
|
+
* chosen purely by comparing the candidate strings, never by which one the
|
|
78
|
+
* scan happened to visit first. This is what makes the choice agree across
|
|
79
|
+
* hosts: two Lambdas (or a Lambda and the EC2 worker) scanning the same
|
|
80
|
+
* directory can observe entries in different `readdir()` orders, but the
|
|
81
|
+
* MIN of a fixed set of strings does not depend on visitation order, so
|
|
82
|
+
* every host converges on the same winner. The loser(s) are excluded from
|
|
83
|
+
* `idToLocation`/`pathToId`/`byCollection` entirely (as if not indexed) and
|
|
84
|
+
* recorded in {@link getDuplicateIds} for admin-facing health reporting
|
|
85
|
+
* (branch-health.ts) and repair (api/admin-branch-health.ts). A branch with a
|
|
86
|
+
* quarantined duplicate is degraded (that one ID pair is invisible to
|
|
87
|
+
* ID-based lookups) but not dead.
|
|
88
|
+
*
|
|
89
|
+
* ### What quarantine does NOT promise
|
|
90
|
+
*
|
|
91
|
+
* Quarantining is an INDEX decision: this scan never touches the filesystem,
|
|
92
|
+
* so nothing here moves or deletes the dropped file. It does not follow that
|
|
93
|
+
* the dropped file is inert until an admin repairs it, and an earlier version
|
|
94
|
+
* of this comment wrongly claimed exactly that ("left untouched on disk until
|
|
95
|
+
* a human or the repair action moves them"). Slugs are resolved by directory
|
|
96
|
+
* scan (`ContentStore.buildPaths()`), which knows nothing about this
|
|
97
|
+
* quarantine, so the dropped file stays fully addressable by
|
|
98
|
+
* collection+slug: a stale editor tab can still save, delete or rename it.
|
|
99
|
+
*
|
|
100
|
+
* The dangerous case was the save. `ContentStore.write()`'s index-repair step
|
|
101
|
+
* reads "the index says this ID lives somewhere else" as "the slug changed"
|
|
102
|
+
* and unlinks that other file -- which, with a duplicate, is a DIFFERENT
|
|
103
|
+
* document (the kept one). It silently deleted the winner while reporting
|
|
104
|
+
* success. `write()` now refuses such a save with `DuplicateContentIdError`
|
|
105
|
+
* instead (see its "[F1] duplicate-ID guard"). `delete()`/`renameEntry()`
|
|
106
|
+
* were never affected: they only ever touch the file the caller addressed,
|
|
107
|
+
* and are deliberately still allowed, so removing or moving the dropped file
|
|
108
|
+
* by hand remains possible without an admin.
|
|
59
109
|
*/
|
|
60
110
|
export class ContentIdIndex {
|
|
61
111
|
constructor(root) {
|
|
62
112
|
this.idToLocation = new Map();
|
|
63
113
|
this.pathToId = new Map();
|
|
64
114
|
this.byCollection = new Map();
|
|
115
|
+
/**
|
|
116
|
+
* IDs discovered on more than one file during buildFromFilenames, keyed by
|
|
117
|
+
* id, mapping to every quarantined (losing) path seen for that id. Never
|
|
118
|
+
* populated by add()/remove()/updatePath(), which still throw on collision
|
|
119
|
+
* -- see those methods' doc comments.
|
|
120
|
+
*/
|
|
121
|
+
this.duplicateIds = new Map();
|
|
65
122
|
this.root = path.resolve(root);
|
|
66
123
|
}
|
|
67
124
|
/**
|
|
68
|
-
* Build index by scanning filenames recursively.
|
|
69
|
-
*
|
|
125
|
+
* Build index by scanning filenames recursively. Duplicate embedded IDs
|
|
126
|
+
* are quarantined, not thrown on -- see the class doc comment's
|
|
127
|
+
* "Duplicate-ID quarantine" section and {@link getDuplicateIds}.
|
|
70
128
|
*/
|
|
71
129
|
async buildFromFilenames(startPath = '') {
|
|
72
130
|
await this.scanDirectory(startPath);
|
|
73
131
|
}
|
|
132
|
+
/** Insert a location into all three indexes. Caller must ensure no existing entry for this id. */
|
|
133
|
+
insertLocation(id, location) {
|
|
134
|
+
this.idToLocation.set(id, location);
|
|
135
|
+
this.pathToId.set(location.relativePath, id);
|
|
136
|
+
if (location.type === 'entry' && location.collection) {
|
|
137
|
+
if (!this.byCollection.has(location.collection)) {
|
|
138
|
+
this.byCollection.set(location.collection, new Set());
|
|
139
|
+
}
|
|
140
|
+
this.byCollection.get(location.collection).add(id);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/** Remove a location from all three indexes -- used when a lexicographically-earlier duplicate displaces it. */
|
|
144
|
+
evictLocation(location) {
|
|
145
|
+
this.idToLocation.delete(location.id);
|
|
146
|
+
this.pathToId.delete(location.relativePath);
|
|
147
|
+
if (location.type === 'entry' && location.collection) {
|
|
148
|
+
const idSet = this.byCollection.get(location.collection);
|
|
149
|
+
if (idSet) {
|
|
150
|
+
idSet.delete(location.id);
|
|
151
|
+
if (idSet.size === 0)
|
|
152
|
+
this.byCollection.delete(location.collection);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/** Record a quarantined duplicate path for admin-facing health reporting (see getDuplicateIds). */
|
|
157
|
+
recordDuplicate(id, droppedPath) {
|
|
158
|
+
let dropped = this.duplicateIds.get(id);
|
|
159
|
+
if (!dropped) {
|
|
160
|
+
dropped = new Set();
|
|
161
|
+
this.duplicateIds.set(id, dropped);
|
|
162
|
+
}
|
|
163
|
+
dropped.add(droppedPath);
|
|
164
|
+
}
|
|
74
165
|
async scanDirectory(relativePath) {
|
|
75
166
|
const absoluteDir = path.join(this.root, relativePath);
|
|
76
167
|
try {
|
|
@@ -83,13 +174,6 @@ export class ContentIdIndex {
|
|
|
83
174
|
const fullRelativePath = path.join(relativePath, entry.name);
|
|
84
175
|
const id = extractIdFromFilename(entry.name);
|
|
85
176
|
if (id) {
|
|
86
|
-
// Collision detection
|
|
87
|
-
if (this.idToLocation.has(id)) {
|
|
88
|
-
const existing = this.idToLocation.get(id);
|
|
89
|
-
throw new Error(`ID collision detected: ${id}\n` +
|
|
90
|
-
` File 1: ${existing.relativePath}\n` +
|
|
91
|
-
` File 2: ${fullRelativePath}`);
|
|
92
|
-
}
|
|
93
177
|
const location = {
|
|
94
178
|
id, // already ContentId from extractIdFromFilename
|
|
95
179
|
type: entry.isDirectory() ? 'collection' : 'entry',
|
|
@@ -104,14 +188,41 @@ export class ContentIdIndex {
|
|
|
104
188
|
const collectionPath = toLogicalCollectionPath(physicalCollection);
|
|
105
189
|
location.slug = slug;
|
|
106
190
|
location.collection = collectionPath;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
191
|
+
}
|
|
192
|
+
const existing = this.idToLocation.get(id);
|
|
193
|
+
if (existing) {
|
|
194
|
+
// Duplicate embedded ID -- quarantine instead of throwing (see
|
|
195
|
+
// class doc comment). Deterministic winner: the
|
|
196
|
+
// lexicographically-smaller relativePath, decided purely by
|
|
197
|
+
// comparing the two strings so every host scanning the same
|
|
198
|
+
// directory picks the same winner regardless of readdir order.
|
|
199
|
+
const newWins = fullRelativePath < existing.relativePath;
|
|
200
|
+
const kept = newWins ? fullRelativePath : existing.relativePath;
|
|
201
|
+
const dropped = newWins ? existing.relativePath : fullRelativePath;
|
|
202
|
+
if (newWins) {
|
|
203
|
+
this.evictLocation(existing);
|
|
204
|
+
this.recordDuplicate(id, existing.relativePath);
|
|
205
|
+
this.insertLocation(id, location);
|
|
110
206
|
}
|
|
111
|
-
|
|
207
|
+
else {
|
|
208
|
+
this.recordDuplicate(id, fullRelativePath);
|
|
209
|
+
}
|
|
210
|
+
// Written for an operator who has never seen this code: name
|
|
211
|
+
// both files, say explicitly that the dropped one still exists
|
|
212
|
+
// (quarantine, not deletion), and point at the concrete recovery
|
|
213
|
+
// action rather than an internal method name.
|
|
214
|
+
canopyLogWarn(`[ContentIdIndex] Duplicate content ID ${id}: "${kept}" and "${dropped}" both ` +
|
|
215
|
+
`embed this ID. Keeping "${kept}" for ID-based lookups (reads, references, ` +
|
|
216
|
+
`listings); "${dropped}" is excluded from those lookups for now but has NOT ` +
|
|
217
|
+
`been deleted -- it is still on disk at that path, and saves addressed to it are ` +
|
|
218
|
+
`refused until this is resolved. An admin can resolve this via ` +
|
|
219
|
+
`the repair-content-duplicates admin action for this branch, which archives ` +
|
|
220
|
+
`"${dropped}" with a dot-prefixed name so future scans stop flagging it. ` +
|
|
221
|
+
`Root: ${this.root}`);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
this.insertLocation(id, location);
|
|
112
225
|
}
|
|
113
|
-
this.idToLocation.set(id, location);
|
|
114
|
-
this.pathToId.set(fullRelativePath, id);
|
|
115
226
|
}
|
|
116
227
|
// Recurse into directories
|
|
117
228
|
if (entry.isDirectory()) {
|
|
@@ -126,6 +237,47 @@ export class ContentIdIndex {
|
|
|
126
237
|
}
|
|
127
238
|
}
|
|
128
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* IDs discovered on more than one file during the last buildFromFilenames
|
|
242
|
+
* scan. Empty unless the content tree currently has a duplicate-ID pair
|
|
243
|
+
* (see the class doc comment). Consumed by branch-health.ts's admin scan
|
|
244
|
+
* and by the repair-content-duplicates admin action
|
|
245
|
+
* (api/admin-branch-health.ts).
|
|
246
|
+
*/
|
|
247
|
+
getDuplicateIds() {
|
|
248
|
+
const result = [];
|
|
249
|
+
for (const id of this.duplicateIds.keys()) {
|
|
250
|
+
const duplicate = this.getDuplicateFor(id);
|
|
251
|
+
if (duplicate)
|
|
252
|
+
result.push(duplicate);
|
|
253
|
+
}
|
|
254
|
+
return result;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* The quarantine record for ONE id, or null when that id is not
|
|
258
|
+
* duplicated. The O(1) counterpart to {@link getDuplicateIds} for the
|
|
259
|
+
* write path, which has to ask this question on every save whose resolved
|
|
260
|
+
* path disagrees with the index (ContentStore.write()'s duplicate-ID
|
|
261
|
+
* guard) and must not pay for materializing the whole list.
|
|
262
|
+
*/
|
|
263
|
+
getDuplicateFor(id) {
|
|
264
|
+
const dropped = this.duplicateIds.get(id);
|
|
265
|
+
if (!dropped)
|
|
266
|
+
return null;
|
|
267
|
+
const kept = this.idToLocation.get(id);
|
|
268
|
+
// Defensive: unreachable in practice -- recordDuplicate() only ever
|
|
269
|
+
// runs alongside an insertLocation() for the same id (either just
|
|
270
|
+
// before, on the winner-displaced branch, or already present, on the
|
|
271
|
+
// loser branch), so a winner always exists once a duplicate is
|
|
272
|
+
// recorded.
|
|
273
|
+
if (!kept)
|
|
274
|
+
return null;
|
|
275
|
+
return {
|
|
276
|
+
id: id,
|
|
277
|
+
keptPath: kept.relativePath,
|
|
278
|
+
droppedPaths: Array.from(dropped).sort(),
|
|
279
|
+
};
|
|
280
|
+
}
|
|
129
281
|
/**
|
|
130
282
|
* Forward lookup: ID → location (O(1))
|
|
131
283
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-id-index.js","sourceRoot":"","sources":["../src/content-id-index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content-id-index.js","sourceRoot":"","sources":["../src/content-id-index.ts"],"names":[],"mappings":"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"}
|
package/dist/content-store.d.ts
CHANGED
|
@@ -28,15 +28,15 @@ export type WriteInput = {
|
|
|
28
28
|
format: 'md' | 'mdx';
|
|
29
29
|
data?: Record<string, unknown>;
|
|
30
30
|
body: string;
|
|
31
|
-
expectedVersion?: number;
|
|
31
|
+
expectedVersion?: number | null;
|
|
32
32
|
} | {
|
|
33
33
|
format: 'json';
|
|
34
34
|
data: Record<string, unknown>;
|
|
35
|
-
expectedVersion?: number;
|
|
35
|
+
expectedVersion?: number | null;
|
|
36
36
|
} | {
|
|
37
37
|
format: 'yaml';
|
|
38
38
|
data: Record<string, unknown>;
|
|
39
|
-
expectedVersion?: number;
|
|
39
|
+
expectedVersion?: number | null;
|
|
40
40
|
};
|
|
41
41
|
export type ContentStoreErrorCode = 'NOT_FOUND' | 'NO_SCHEMA_ITEM' | 'FORBIDDEN' | 'VALIDATION';
|
|
42
42
|
export declare class ContentStoreError extends Error {
|
|
@@ -48,7 +48,49 @@ export declare class ContentStoreError extends Error {
|
|
|
48
48
|
* Indicates a cross-process concurrent write — the caller should reload and retry.
|
|
49
49
|
*/
|
|
50
50
|
export declare class ContentConflictError extends Error {
|
|
51
|
-
constructor();
|
|
51
|
+
constructor(message?: string);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* [SYNC-C1] Thrown when a mutation could not take the branch's cross-host
|
|
55
|
+
* content-write lock within its bounded wait -- in practice, the worker is
|
|
56
|
+
* mid-rebase on this branch's working tree (utils/content-write-lock.ts).
|
|
57
|
+
*
|
|
58
|
+
* A `ContentConflictError` subclass so every existing 409 mapping keeps
|
|
59
|
+
* working unchanged; the distinct type exists so the API can surface THIS
|
|
60
|
+
* message ("the branch is busy, retry") instead of the generic "modified by
|
|
61
|
+
* another editor", which would be actively misleading. The default wording
|
|
62
|
+
* covers writer-vs-writer contention too, which this lock also produces --
|
|
63
|
+
* see ContentWriteLockBusyError.
|
|
64
|
+
*/
|
|
65
|
+
export declare class BranchSyncingError extends ContentConflictError {
|
|
66
|
+
constructor(message: string);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* [F1] Thrown when a save's content ID is carried by MORE THAN ONE file in
|
|
70
|
+
* the branch's content tree -- the duplicate-ID state `ContentIdIndex`
|
|
71
|
+
* quarantines (see its "Duplicate-ID quarantine" section).
|
|
72
|
+
*
|
|
73
|
+
* Why refuse rather than write: with two files sharing one ID, "this entry"
|
|
74
|
+
* is ambiguous, and every way of proceeding is worse than stopping.
|
|
75
|
+
* Following the index would mutate (and, via the slug-change cleanup, DELETE)
|
|
76
|
+
* a file the caller never addressed -- the data-loss bug this class exists to
|
|
77
|
+
* prevent. Writing only the addressed file would succeed silently into a file
|
|
78
|
+
* that is invisible to every ID-based lookup (reads-by-id, references,
|
|
79
|
+
* listings all resolve to the OTHER copy) and that the repair action later
|
|
80
|
+
* archives away, so the editor's work would appear to evaporate with no error
|
|
81
|
+
* anywhere. Refusing mutates nothing under any interleaving, and says what is
|
|
82
|
+
* wrong and who can fix it.
|
|
83
|
+
*
|
|
84
|
+
* A `ContentConflictError` subclass so every existing 409 mapping keeps
|
|
85
|
+
* working; the distinct type exists so the API can surface THIS message
|
|
86
|
+
* rather than the generic "modified by another editor", which would send the
|
|
87
|
+
* editor into a reload-and-retry loop that cannot succeed.
|
|
88
|
+
*/
|
|
89
|
+
export declare class DuplicateContentIdError extends ContentConflictError {
|
|
90
|
+
readonly contentId: string;
|
|
91
|
+
/** Every path known to carry `contentId`, repo-relative, sorted. */
|
|
92
|
+
readonly paths: readonly string[];
|
|
93
|
+
constructor(contentId: string, paths: readonly string[]);
|
|
52
94
|
}
|
|
53
95
|
/**
|
|
54
96
|
* Get the default entry type from a collection's entries array.
|
|
@@ -72,6 +114,13 @@ export interface ContentStoreOptions {
|
|
|
72
114
|
* path-based reads keep working. Defaults to 'content'.
|
|
73
115
|
*/
|
|
74
116
|
contentRootName?: string;
|
|
117
|
+
/**
|
|
118
|
+
* [SYNC-C1] Bounded wait (ms) for the branch's cross-host content-write lock
|
|
119
|
+
* before a mutation gives up with {@link BranchSyncingError}. See
|
|
120
|
+
* `utils/content-write-lock.ts` for why the default is short. Tests pass a
|
|
121
|
+
* small value to keep contention cases fast.
|
|
122
|
+
*/
|
|
123
|
+
contentWriteLockWaitMs?: number;
|
|
75
124
|
}
|
|
76
125
|
export declare class ContentStore {
|
|
77
126
|
private readonly root;
|
|
@@ -93,9 +142,29 @@ export declare class ContentStore {
|
|
|
93
142
|
private lastDiskProbeMs;
|
|
94
143
|
private lastForcedRefreshMs;
|
|
95
144
|
private readonly indexFreshnessIntervalMs;
|
|
145
|
+
/** See ContentStoreOptions.contentWriteLockWaitMs. */
|
|
146
|
+
private readonly contentWriteLockWaitMs;
|
|
96
147
|
/** In-flight index build, shared by concurrent idIndex() callers so scans never interleave. */
|
|
97
148
|
private indexBuild;
|
|
98
149
|
constructor(root: string, flatSchema: FlatSchemaItem[], options?: ContentStoreOptions);
|
|
150
|
+
/**
|
|
151
|
+
* [SYNC-C1] Run a working-tree mutation under the branch's cross-host
|
|
152
|
+
* content-write lock (utils/content-write-lock.ts), on top of the
|
|
153
|
+
* in-process locks the callee takes for itself.
|
|
154
|
+
*
|
|
155
|
+
* The in-process mutex serializes writers inside ONE process; it says
|
|
156
|
+
* nothing about the EC2 worker rebasing this same tree on shared EFS, which
|
|
157
|
+
* destroys an in-flight save (`checkout --theirs` overwrites it and the
|
|
158
|
+
* rebase then reports success; `rebase --abort` hard-resets it). This is the
|
|
159
|
+
* layer that actually excludes the two.
|
|
160
|
+
*
|
|
161
|
+
* Reads deliberately do NOT take it -- an extra EFS round-trip per read is
|
|
162
|
+
* not an acceptable cost, and reads cannot be destroyed by a rebase.
|
|
163
|
+
*
|
|
164
|
+
* Acquisition order is always content lock -> `withLock`, never the reverse,
|
|
165
|
+
* so the two cannot deadlock.
|
|
166
|
+
*/
|
|
167
|
+
private withContentWriteExclusion;
|
|
99
168
|
/**
|
|
100
169
|
* Mark the ID index stale so the next idIndex() access rebuilds it from disk.
|
|
101
170
|
*
|
|
@@ -146,10 +215,15 @@ export declare class ContentStore {
|
|
|
146
215
|
*/
|
|
147
216
|
private refreshIndexForSuspiciousLookup;
|
|
148
217
|
/**
|
|
149
|
-
*
|
|
150
|
-
*
|
|
218
|
+
* Every file in `dir` whose filename embeds `id`, as root-relative paths
|
|
219
|
+
* (empty when there is no such file, or no such dir).
|
|
220
|
+
*
|
|
221
|
+
* [F1] Returns ALL matches, not the first: more than one match is a
|
|
222
|
+
* duplicate-ID pair, and callers must be able to tell that apart from a
|
|
223
|
+
* clean single hit rather than silently picking whichever one `readdir()`
|
|
224
|
+
* happened to yield first.
|
|
151
225
|
*/
|
|
152
|
-
private
|
|
226
|
+
private findEntryPathsById;
|
|
153
227
|
/**
|
|
154
228
|
* Get all schema items for iteration.
|
|
155
229
|
* Used internally by ReferenceResolver for path matching.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-store.d.ts","sourceRoot":"","sources":["../src/content-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-store.d.ts","sourceRoot":"","sources":["../src/content-store.ts"],"names":[],"mappings":"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"}
|