@elytracms/studio 0.0.101 → 0.0.103
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/convex/asset-meta-patch.test.ts +7 -27
- package/convex/assets.ts +6 -41
- package/convex/cms.ts +2 -29
- package/convex/delivery.ts +2 -2
- package/convex/ingest.test.ts +54 -21
- package/convex/ingest.ts +52 -15
- package/convex/record-functions.ts +15 -82
- package/convex/redirects.ts +11 -116
- package/convex/schema.ts +4 -23
- package/convex/triggers.ts +7 -14
- package/dist/components/ai/ai-chat-panel.js +8 -5
- package/dist/components/ai/ai-chat-panel.js.map +1 -1
- package/dist/components/ai/translate-document-dialog.d.ts +43 -0
- package/dist/components/ai/translate-document-dialog.js +104 -36
- package/dist/components/ai/translate-document-dialog.js.map +1 -1
- package/dist/components/ai/translate-skipped.d.ts +19 -3
- package/dist/components/ai/translate-skipped.js +34 -7
- package/dist/components/ai/translate-skipped.js.map +1 -1
- package/dist/components/assets/asset-detail.js +1 -2
- package/dist/components/assets/asset-detail.js.map +1 -1
- package/dist/components/assets/asset-metadata.d.ts +2 -9
- package/dist/components/assets/asset-metadata.js +3 -10
- package/dist/components/assets/asset-metadata.js.map +1 -1
- package/dist/components/assets/asset-search.js +1 -1
- package/dist/components/assets/asset-search.js.map +1 -1
- package/dist/components/assets/asset-selection.js +2 -2
- package/dist/components/assets/asset-selection.js.map +1 -1
- package/dist/components/assets/assets-collection-view-source.d.ts +2 -3
- package/dist/components/assets/assets-collection-view-source.js +2 -3
- package/dist/components/assets/assets-collection-view-source.js.map +1 -1
- package/dist/components/builder/__fixtures__/reuse-race.d.ts +30 -0
- package/dist/components/builder/__fixtures__/reuse-race.js +77 -0
- package/dist/components/builder/__fixtures__/reuse-race.js.map +1 -0
- package/dist/components/builder/composition-field-editor.js +3 -3
- package/dist/components/builder/composition-field-editor.js.map +1 -1
- package/dist/components/builder/reuse-context.d.ts +2 -1
- package/dist/components/builder/reuse-context.js +5 -20
- package/dist/components/builder/reuse-context.js.map +1 -1
- package/dist/components/builder/reuse.d.ts +18 -11
- package/dist/components/builder/reuse.js +12 -14
- package/dist/components/builder/reuse.js.map +1 -1
- package/dist/components/cms/asset-field.js +1 -3
- package/dist/components/cms/asset-field.js.map +1 -1
- package/dist/components/cms/cell.d.ts +2 -2
- package/dist/components/cms/cell.js +8 -18
- package/dist/components/cms/cell.js.map +1 -1
- package/dist/components/cms/detail-editor.js +2 -1
- package/dist/components/cms/detail-editor.js.map +1 -1
- package/dist/components/cms/field-control.js +13 -1
- package/dist/components/cms/field-control.js.map +1 -1
- package/dist/lib/ai/chat-context.d.ts +6 -2
- package/dist/lib/ai/chat-context.js +11 -5
- package/dist/lib/ai/chat-context.js.map +1 -1
- package/dist/lib/ai/knowledge.d.ts +9 -9
- package/dist/lib/ai/knowledge.js +22 -0
- package/dist/lib/ai/knowledge.js.map +1 -1
- package/dist/lib/ai/tools.d.ts +8 -1
- package/dist/lib/ai/tools.js +33 -15
- package/dist/lib/ai/tools.js.map +1 -1
- package/dist/lib/ai/translate-apply.d.ts +69 -0
- package/dist/lib/ai/translate-apply.js +36 -0
- package/dist/lib/ai/translate-apply.js.map +1 -0
- package/dist/lib/ai/translate-document.d.ts +101 -7
- package/dist/lib/ai/translate-document.js +189 -54
- package/dist/lib/ai/translate-document.js.map +1 -1
- package/dist/lib/ai/update-fields.js +5 -12
- package/dist/lib/ai/update-fields.js.map +1 -1
- package/dist/lib/ai/writer-form.d.ts +93 -1
- package/dist/lib/ai/writer-form.js +389 -37
- package/dist/lib/ai/writer-form.js.map +1 -1
- package/dist/lib/assets/upload.d.ts +1 -2
- package/dist/lib/assets/upload.js +1 -2
- package/dist/lib/assets/upload.js.map +1 -1
- package/dist/lib/engine-version.d.ts +1 -1
- package/dist/lib/engine-version.js +1 -1
- package/dist/lib/engine-version.js.map +1 -1
- package/dist/lib/i18n/messages.de.js +54 -4
- package/dist/lib/i18n/messages.de.js.map +1 -1
- package/dist/lib/i18n/messages.en.d.ts +44 -1
- package/dist/lib/i18n/messages.en.js +58 -4
- package/dist/lib/i18n/messages.en.js.map +1 -1
- package/dist/lib/operations/cms-persistence.d.ts +20 -10
- package/dist/lib/operations/cms-persistence.js +11 -3
- package/dist/lib/operations/cms-persistence.js.map +1 -1
- package/dist/lib/persistence/convex-adapter.js +7 -2
- package/dist/lib/persistence/convex-adapter.js.map +1 -1
- package/package.json +3 -3
- package/convex/asset-alt-migration.test.ts +0 -127
- package/convex/redirect-migration.test.ts +0 -205
- package/convex/version-kind-stamping.test.ts +0 -118
|
@@ -131,11 +131,18 @@ export type CommitOutcome = {
|
|
|
131
131
|
};
|
|
132
132
|
/**
|
|
133
133
|
* EC-728 — what {@link CmsPersister.deleteCreated} did: `deleted`; `gone` (already deleted);
|
|
134
|
-
* `changed` (written since the create — edited or published); `referenced` (a
|
|
135
|
-
* references it
|
|
134
|
+
* `changed` (written since the create — edited or published); `referenced` (a document
|
|
135
|
+
* references it — any relation, weak or strict, draft or published, EC-739); `not-created`
|
|
136
|
+
* (this session holds no create receipt for it); `failed`.
|
|
136
137
|
*/
|
|
137
138
|
export type DeleteCreatedOutcome = 'deleted' | 'gone' | 'changed' | 'referenced' | 'not-created' | 'failed';
|
|
138
|
-
/**
|
|
139
|
+
/**
|
|
140
|
+
* EC-728 — the refusal of a conditional delete, read off the operation's error (pure). EC-739:
|
|
141
|
+
* `referenced` when the conflict names referrers (the unreferenced guard's refusal, before the
|
|
142
|
+
* store or re-judged after it refused); `changed` only for a REVISION conflict — one carrying
|
|
143
|
+
* the current row; `gone` when that row is absent. A conflict carrying neither (a referrer that
|
|
144
|
+
* refused the store's step and was gone again by the re-judge) is `failed`: it was never an edit.
|
|
145
|
+
*/
|
|
139
146
|
export declare function deleteCreatedRefusal(error: OperationError): Exclude<DeleteCreatedOutcome, 'deleted' | 'not-created'>;
|
|
140
147
|
export interface CmsPersister {
|
|
141
148
|
/** Adopt a server row as this session's base for its document (hydration, a create result). */
|
|
@@ -202,13 +209,16 @@ export interface CmsPersister {
|
|
|
202
209
|
replace(document: CmsDocument, revision: number | undefined, authoredOn?: CmsDocument): void;
|
|
203
210
|
deleteDocument(ref: DocumentRef): void;
|
|
204
211
|
/**
|
|
205
|
-
* EC-728 — delete a document THIS session created, only while it is exactly as created
|
|
206
|
-
* `documents.delete` with the precondition `{ revision }
|
|
207
|
-
* create landed at (its receipt — never a later
|
|
208
|
-
*
|
|
209
|
-
* refuses it
|
|
210
|
-
* it
|
|
211
|
-
* the
|
|
212
|
+
* EC-728 — delete a document THIS session created, only while it is exactly as created and
|
|
213
|
+
* nobody else has it: `documents.delete` with the precondition `{ revision, unreferenced }`.
|
|
214
|
+
* `revision` = the revision this session's own create landed at (its receipt — never a later
|
|
215
|
+
* read), so a write by anyone since (an edit, a publish — "never published" needs nothing
|
|
216
|
+
* more) refuses it in the store's own step; `unreferenced` (EC-739) refuses it while ANY
|
|
217
|
+
* document references it — weak or strict, draft or published — judged by the operation and
|
|
218
|
+
* re-checked by the store in that same step, so a reference saved since the guard's read
|
|
219
|
+
* refuses it too. One write, every condition. Sent after every write queued before it.
|
|
220
|
+
* Nothing is reported on the session's error surface — a refusal is an expected answer the
|
|
221
|
+
* caller words; the session drops the document only once the store has deleted it.
|
|
212
222
|
*/
|
|
213
223
|
deleteCreated(ref: DocumentRef): Promise<DeleteCreatedOutcome>;
|
|
214
224
|
unpublishDocument(ref: DocumentRef): void;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { applyDocumentPatches, documentKey, expandValuePath, fieldPositionPatches, formatValuePath, isValuePathPrefix, readValueAt, selfTypeDocument, semanticValueEqual, touchedPaths, touchedPathsOfEntry, valuePathsOverlap, } from '@elytracms/core/cms-core';
|
|
2
2
|
import { createPersistQueue } from './persist-queue.js';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* EC-728 — the refusal of a conditional delete, read off the operation's error (pure). EC-739:
|
|
5
|
+
* `referenced` when the conflict names referrers (the unreferenced guard's refusal, before the
|
|
6
|
+
* store or re-judged after it refused); `changed` only for a REVISION conflict — one carrying
|
|
7
|
+
* the current row; `gone` when that row is absent. A conflict carrying neither (a referrer that
|
|
8
|
+
* refused the store's step and was gone again by the re-judge) is `failed`: it was never an edit.
|
|
9
|
+
*/
|
|
4
10
|
export function deleteCreatedRefusal(error) {
|
|
5
11
|
if (error.code === 'not-found')
|
|
6
12
|
return 'gone';
|
|
@@ -8,7 +14,9 @@ export function deleteCreatedRefusal(error) {
|
|
|
8
14
|
return 'failed';
|
|
9
15
|
if ((error.referrers?.length ?? 0) > 0)
|
|
10
16
|
return 'referenced';
|
|
11
|
-
|
|
17
|
+
if (error.current === null)
|
|
18
|
+
return 'gone';
|
|
19
|
+
return error.current ? 'changed' : 'failed';
|
|
12
20
|
}
|
|
13
21
|
/** EC-686 — a decomposed alias is re-sent at most this often (each time a colleague wrote the document in between). */
|
|
14
22
|
const ALIAS_ATTEMPTS = 3;
|
|
@@ -1210,7 +1218,7 @@ export function createCmsPersister(options) {
|
|
|
1210
1218
|
const result = await operations.documents.delete({
|
|
1211
1219
|
projectId: options.projectId,
|
|
1212
1220
|
ref: entry.ref,
|
|
1213
|
-
precondition: { revision: entry.created },
|
|
1221
|
+
precondition: { revision: entry.created, unreferenced: true },
|
|
1214
1222
|
});
|
|
1215
1223
|
if (result.ok) {
|
|
1216
1224
|
markGone(entry);
|