@thebes/cadmus 0.3.0 → 0.4.1
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/cms/index.cjs +231 -0
- package/dist/cms/index.cjs.map +1 -1
- package/dist/cms/index.d.cts +2 -2
- package/dist/cms/index.d.ts +2 -2
- package/dist/cms/index.js +221 -1
- package/dist/cms/index.js.map +1 -1
- package/dist/hono/index.d.cts +1 -1
- package/dist/hono/index.d.ts +1 -1
- package/dist/{index-BRZrCTsN.d.cts → index-CWrSoiPh.d.cts} +234 -2
- package/dist/index-CWrSoiPh.d.cts.map +1 -0
- package/dist/{index-BRZrCTsN.d.ts → index-CWrSoiPh.d.ts} +234 -2
- package/dist/index-CWrSoiPh.d.ts.map +1 -0
- package/dist/index.cjs +11 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/storage/index.cjs.map +1 -1
- package/dist/storage/index.d.cts +31 -2
- package/dist/storage/index.d.cts.map +1 -1
- package/dist/storage/index.d.ts +31 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js.map +1 -1
- package/package.json +8 -8
- package/dist/index-BRZrCTsN.d.cts.map +0 -1
- package/dist/index-BRZrCTsN.d.ts.map +0 -1
package/dist/hono/index.d.cts
CHANGED
package/dist/hono/index.d.ts
CHANGED
|
@@ -180,6 +180,72 @@ declare class CadmusApiError extends CadmusError {
|
|
|
180
180
|
constructor(message: string, status: number, body: unknown);
|
|
181
181
|
}
|
|
182
182
|
//#endregion
|
|
183
|
+
//#region src/cms/patch.d.ts
|
|
184
|
+
/**
|
|
185
|
+
* Patch model + field-level diff (issue #14) — adopts Sanity's mutation/patch
|
|
186
|
+
* idea (pattern, not code): represent a content change as a small set of
|
|
187
|
+
* field operations, and compute a field-level diff between two document
|
|
188
|
+
* snapshots. Underpins version-history display (what changed between two
|
|
189
|
+
* versions) and the content-migration runner (#18), which expresses a
|
|
190
|
+
* transform's effect as a {@link Patch} and applies it.
|
|
191
|
+
*
|
|
192
|
+
* Scope: operations are keyed by **top-level field** (a document's own
|
|
193
|
+
* fields), matching "field-level diff" — a changed `blocks` array reads as
|
|
194
|
+
* one changed field, not a deep per-node diff. Deep/array-aware diffing is a
|
|
195
|
+
* deliberate later extension, not built here.
|
|
196
|
+
*/
|
|
197
|
+
/** A single field operation. `set` writes a value; `unset` removes the field. */
|
|
198
|
+
type PatchOp = {
|
|
199
|
+
op: "set";
|
|
200
|
+
path: string;
|
|
201
|
+
value: JsonValue;
|
|
202
|
+
} | {
|
|
203
|
+
op: "unset";
|
|
204
|
+
path: string;
|
|
205
|
+
};
|
|
206
|
+
/** An ordered set of field operations transforming one document into another. */
|
|
207
|
+
type Patch = PatchOp[];
|
|
208
|
+
type FieldChangeKind = "added" | "removed" | "changed";
|
|
209
|
+
/** One field's difference between two document snapshots. */
|
|
210
|
+
interface FieldChange {
|
|
211
|
+
/** Top-level field key. */
|
|
212
|
+
path: string;
|
|
213
|
+
kind: FieldChangeKind;
|
|
214
|
+
/** Value in the "before" snapshot (absent for `added`). */
|
|
215
|
+
before?: JsonValue;
|
|
216
|
+
/** Value in the "after" snapshot (absent for `removed`). */
|
|
217
|
+
after?: JsonValue;
|
|
218
|
+
}
|
|
219
|
+
type Doc$1 = Record<string, JsonValue>;
|
|
220
|
+
interface DiffOptions {
|
|
221
|
+
/**
|
|
222
|
+
* Restrict the diff to these field keys. Omit to diff the union of both
|
|
223
|
+
* documents' own keys. Useful for ignoring bookkeeping columns
|
|
224
|
+
* (`id`/`createdAt`/`publishedVersionId`) in a version-history view.
|
|
225
|
+
*/
|
|
226
|
+
fields?: readonly string[];
|
|
227
|
+
/** Field keys to skip (e.g. `["id", "createdAt"]`). */
|
|
228
|
+
ignore?: readonly string[];
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Field-level diff between two document snapshots — the per-field
|
|
232
|
+
* added/removed/changed list a version-history UI renders. Values are
|
|
233
|
+
* compared structurally (deep-equal), so a field only shows as `changed`
|
|
234
|
+
* when its content actually differs.
|
|
235
|
+
*/
|
|
236
|
+
declare function diffDocuments(before: Doc$1, after: Doc$1, options?: DiffOptions): FieldChange[];
|
|
237
|
+
/**
|
|
238
|
+
* The {@link Patch} that transforms `before` into `after`: `set` for each
|
|
239
|
+
* added/changed field, `unset` for each removed field. `applyPatch(before,
|
|
240
|
+
* computePatch(before, after))` deep-equals `after`.
|
|
241
|
+
*/
|
|
242
|
+
declare function computePatch(before: Doc$1, after: Doc$1): Patch;
|
|
243
|
+
/**
|
|
244
|
+
* Apply a {@link Patch} to a document, returning a new document (the input is
|
|
245
|
+
* never mutated). Unknown ops are ignored defensively.
|
|
246
|
+
*/
|
|
247
|
+
declare function applyPatch(doc: Doc$1, patch: Patch): Doc$1;
|
|
248
|
+
//#endregion
|
|
183
249
|
//#region src/cms/localApi.d.ts
|
|
184
250
|
type AnyTable$1 = SQLiteTableWithColumns<any>;
|
|
185
251
|
/**
|
|
@@ -322,6 +388,13 @@ interface VersionedLocalApi<TTable extends AnyTable$1, TVersionsTable extends An
|
|
|
322
388
|
publish(context: TContext, versionId: number): Promise<InferSelectModel<TTable>>;
|
|
323
389
|
/** Clears the main row's published pointer; the row's data is untouched. */
|
|
324
390
|
unpublish(context: TContext, id: number): Promise<InferSelectModel<TTable>>;
|
|
391
|
+
/**
|
|
392
|
+
* Field-level diff (issue #14) between two version snapshots' `versionData`
|
|
393
|
+
* — the per-field added/removed/changed list a version-history UI renders.
|
|
394
|
+
* Both versions must belong to the same parent. Bookkeeping keys
|
|
395
|
+
* (`id`/`createdAt`/`status`/`publishedVersionId`) are ignored.
|
|
396
|
+
*/
|
|
397
|
+
diffVersions(context: TContext, fromVersionId: number, toVersionId: number): Promise<FieldChange[]>;
|
|
325
398
|
}
|
|
326
399
|
declare function createVersionedLocalApi<TTable extends AnyTable$1, TVersionsTable extends AnyTable$1, TContext = unknown>(db: BaseSQLiteDatabase<"async", unknown>, table: TTable, versionsTable: TVersionsTable, config: CollectionConfig, registry?: CmsRegistry): VersionedLocalApi<TTable, TVersionsTable, TContext>;
|
|
327
400
|
//#endregion
|
|
@@ -495,12 +568,42 @@ declare function validateDocument(config: CollectionConfig, doc: Record<string,
|
|
|
495
568
|
declare function assertValid(config: CollectionConfig, doc: Record<string, unknown>, options: ValidateDocumentOptions): Promise<ValidationViolation[]>;
|
|
496
569
|
//#endregion
|
|
497
570
|
//#region src/cms/types.d.ts
|
|
571
|
+
/**
|
|
572
|
+
* Editor-only presentation hints for a single field (issue #16 follow-on) —
|
|
573
|
+
* the field-level counterpart to {@link CollectionAdminConfig}. Purely about
|
|
574
|
+
* how the studio renders the field; absent → sensible defaults (a humanized
|
|
575
|
+
* key for the label, no help text, full width, always shown, editable). None
|
|
576
|
+
* of this touches the DB schema or the Local API.
|
|
577
|
+
*/
|
|
578
|
+
interface FieldAdminConfig {
|
|
579
|
+
/** Human-friendly label; defaults to a humanized field key (`metaDescription` → "Meta description"). */
|
|
580
|
+
label?: string;
|
|
581
|
+
/** Help text rendered beneath the label. */
|
|
582
|
+
description?: string;
|
|
583
|
+
/** Placeholder for text-like inputs. */
|
|
584
|
+
placeholder?: string;
|
|
585
|
+
/** Groups the field into a titled fieldset in the editor, in first-seen order. */
|
|
586
|
+
group?: string;
|
|
587
|
+
/** Editor column width on >= md screens. Defaults to "full". */
|
|
588
|
+
width?: "full" | "half";
|
|
589
|
+
/**
|
|
590
|
+
* Show the field only when this predicate — given the whole in-progress
|
|
591
|
+
* form value — returns true (Payload's `admin.condition`). A function, so
|
|
592
|
+
* it's evaluated by the studio directly from the imported config, not from
|
|
593
|
+
* a serialized meta payload.
|
|
594
|
+
*/
|
|
595
|
+
condition?: (values: Record<string, unknown>) => boolean;
|
|
596
|
+
/** Render the field read-only in the editor. */
|
|
597
|
+
readOnly?: boolean;
|
|
598
|
+
}
|
|
498
599
|
interface BaseFieldConfig {
|
|
499
600
|
/** column name override; defaults to the config key */
|
|
500
601
|
name?: string;
|
|
501
602
|
required?: boolean;
|
|
502
603
|
unique?: boolean;
|
|
503
604
|
defaultValue?: unknown;
|
|
605
|
+
/** Editor-only presentation hints — see {@link FieldAdminConfig}. */
|
|
606
|
+
admin?: FieldAdminConfig;
|
|
504
607
|
/**
|
|
505
608
|
* Chainable validation rules (issue #16), Sanity's `defineField`
|
|
506
609
|
* `validation` analogue: `validation: (rule) => rule.required().min(2)`.
|
|
@@ -599,6 +702,16 @@ interface ArrayFieldConfig extends BaseFieldConfig {
|
|
|
599
702
|
discriminator?: {
|
|
600
703
|
key: string;
|
|
601
704
|
variants: Record<string, Record<string, FieldConfig>>;
|
|
705
|
+
/**
|
|
706
|
+
* Optional per-variant presentation for the studio's "Add block" picker
|
|
707
|
+
* (the visual block builder). `label` defaults to a humanized variant
|
|
708
|
+
* name; `icon` is an opaque CSS class the studio applies to an `<i>`
|
|
709
|
+
* (e.g. a Phosphor `"ph ph-image"`), keeping cadmea icon-library-agnostic.
|
|
710
|
+
*/
|
|
711
|
+
variantsAdmin?: Record<string, {
|
|
712
|
+
label?: string;
|
|
713
|
+
icon?: string;
|
|
714
|
+
}>;
|
|
602
715
|
};
|
|
603
716
|
}
|
|
604
717
|
interface UploadFieldConfig extends BaseFieldConfig {
|
|
@@ -987,6 +1100,62 @@ interface CollectionMeta {
|
|
|
987
1100
|
}
|
|
988
1101
|
declare function getCollectionsMeta(config: CmsConfig): CollectionMeta[];
|
|
989
1102
|
//#endregion
|
|
1103
|
+
//#region src/cms/migrate.d.ts
|
|
1104
|
+
/**
|
|
1105
|
+
* Content-migration runner (issue #18) — adopts Sanity's `sanity/migrate`
|
|
1106
|
+
* idea (pattern, not code): a versioned, repeatable transform over a
|
|
1107
|
+
* collection's stored documents, for reshaping content when a block/field
|
|
1108
|
+
* type changes (distinct from Drizzle *schema* migrations, which only touch
|
|
1109
|
+
* columns — this reshapes the JSON content inside them).
|
|
1110
|
+
*
|
|
1111
|
+
* A migration declares a per-document `document(doc)` transform; the runner
|
|
1112
|
+
* streams every document, computes the {@link Patch} from old→new (reusing
|
|
1113
|
+
* #14's patch model), and either reports it (`dryRun`) or applies it via the
|
|
1114
|
+
* collection's Local API. Idempotent by construction: a transform that's
|
|
1115
|
+
* already been applied produces an empty patch, so re-running changes
|
|
1116
|
+
* nothing.
|
|
1117
|
+
*/
|
|
1118
|
+
type Doc = Record<string, JsonValue>;
|
|
1119
|
+
interface Migration<TDoc extends Doc = Doc> {
|
|
1120
|
+
/** Stable identifier — name the checked-in migration file after this. */
|
|
1121
|
+
name: string;
|
|
1122
|
+
/**
|
|
1123
|
+
* Transform one document. Return the reshaped document, or `undefined`
|
|
1124
|
+
* (or the unchanged doc) to leave it as-is. Must be pure and idempotent —
|
|
1125
|
+
* applying it twice yields the same result as once.
|
|
1126
|
+
*/
|
|
1127
|
+
document: (doc: TDoc) => TDoc | undefined | Promise<TDoc | undefined>;
|
|
1128
|
+
}
|
|
1129
|
+
/** Identity helper — gives a migration definition its type + a greppable call site. */
|
|
1130
|
+
declare function defineMigration<TDoc extends Doc = Doc>(migration: Migration<TDoc>): Migration<TDoc>;
|
|
1131
|
+
interface MigrationChange {
|
|
1132
|
+
id: number;
|
|
1133
|
+
patch: Patch;
|
|
1134
|
+
}
|
|
1135
|
+
interface MigrationResult {
|
|
1136
|
+
migration: string;
|
|
1137
|
+
dryRun: boolean;
|
|
1138
|
+
scanned: number;
|
|
1139
|
+
changed: number;
|
|
1140
|
+
/** Per-document patches (always populated — the dry-run report). */
|
|
1141
|
+
changes: MigrationChange[];
|
|
1142
|
+
errors: string[];
|
|
1143
|
+
}
|
|
1144
|
+
interface RunMigrationOptions<TContext> {
|
|
1145
|
+
api: LocalApi<any, TContext>;
|
|
1146
|
+
/** Context passed to the Local API's read/update (access + hooks). */
|
|
1147
|
+
context: TContext;
|
|
1148
|
+
/** When true, compute + report patches but write nothing. Default false. */
|
|
1149
|
+
dryRun?: boolean;
|
|
1150
|
+
}
|
|
1151
|
+
/**
|
|
1152
|
+
* Run a migration over every document in a collection. Reads all documents
|
|
1153
|
+
* through `api.find`, applies `migration.document`, and (unless `dryRun`)
|
|
1154
|
+
* writes the resulting patch through `api.update`. Returns a report of what
|
|
1155
|
+
* changed — run it `dryRun` first, then apply.
|
|
1156
|
+
*/
|
|
1157
|
+
declare function runMigration<TContext>(migration: Migration, options: RunMigrationOptions<TContext>): Promise<MigrationResult>;
|
|
1158
|
+
//#endregion
|
|
990
1159
|
//#region src/cms/schema-gen.d.ts
|
|
991
1160
|
declare function generateSchemaSource(config: CmsConfig): string;
|
|
992
1161
|
//#endregion
|
|
@@ -1070,6 +1239,69 @@ interface BuildStudioStructureOptions {
|
|
|
1070
1239
|
*/
|
|
1071
1240
|
declare function buildStudioStructure(config: CmsConfig, options?: BuildStudioStructureOptions): StudioStructureGroup[];
|
|
1072
1241
|
//#endregion
|
|
1242
|
+
//#region src/cms/visual-editing.d.ts
|
|
1243
|
+
/**
|
|
1244
|
+
* Visual editing / click-to-edit (issue #15) — adopts Sanity's
|
|
1245
|
+
* Presentation/visual-editing idea (pattern, not code): the rendered page
|
|
1246
|
+
* (in a preview context) tags editable regions with the source field they
|
|
1247
|
+
* came from, and an overlay turns those regions into click targets that tell
|
|
1248
|
+
* the studio which field to focus.
|
|
1249
|
+
*
|
|
1250
|
+
* This module ships the two reusable, framework-agnostic primitives:
|
|
1251
|
+
* 1. **Encoding** — `editAttr({ collection, id, field })` produces a data
|
|
1252
|
+
* attribute the server renderer spreads onto an element; `decodeEditRef`
|
|
1253
|
+
* reads it back. Pure, testable.
|
|
1254
|
+
* 2. **Overlay** — `mountVisualEditing()` (browser-only; references `document`
|
|
1255
|
+
* lazily, so importing it server-side is harmless) highlights tagged
|
|
1256
|
+
* elements on hover and, on click, calls `onSelect` and `postMessage`s the
|
|
1257
|
+
* ref to the parent window (the studio shell hosting the preview iframe).
|
|
1258
|
+
*
|
|
1259
|
+
* The studio side listens for that message and navigates to
|
|
1260
|
+
* `/admin/<collection>/<id>` (and may focus `<field>`); that wiring is
|
|
1261
|
+
* consumer-side and not prescribed here.
|
|
1262
|
+
*/
|
|
1263
|
+
/** A reference from a rendered region back to the field that produced it. */
|
|
1264
|
+
interface EditRef {
|
|
1265
|
+
collection: string;
|
|
1266
|
+
id: number;
|
|
1267
|
+
field: string;
|
|
1268
|
+
}
|
|
1269
|
+
/** The data attribute editable regions are tagged with. */
|
|
1270
|
+
declare const EDIT_ATTR = "data-cadmus-edit";
|
|
1271
|
+
/** `postMessage` payload type for a click-to-edit selection. */
|
|
1272
|
+
declare const VISUAL_EDIT_MESSAGE = "cadmus:visual-edit";
|
|
1273
|
+
declare function encodeEditRef(ref: EditRef): string;
|
|
1274
|
+
/** Parse an {@link EditRef} string, or null if malformed. */
|
|
1275
|
+
declare function decodeEditRef(value: string): EditRef | null;
|
|
1276
|
+
/**
|
|
1277
|
+
* Attribute object to spread onto a rendered element so the overlay can map
|
|
1278
|
+
* it back to its source field, e.g. `<h1 {...editAttr({collection:'pages',
|
|
1279
|
+
* id, field:'title'})}>`.
|
|
1280
|
+
*/
|
|
1281
|
+
declare function editAttr(ref: EditRef): Record<string, string>;
|
|
1282
|
+
interface VisualEditingMessage {
|
|
1283
|
+
type: typeof VISUAL_EDIT_MESSAGE;
|
|
1284
|
+
ref: EditRef;
|
|
1285
|
+
}
|
|
1286
|
+
interface VisualEditingOptions {
|
|
1287
|
+
/** Called with the decoded ref when an editable region is clicked. */
|
|
1288
|
+
onSelect?: (ref: EditRef, element: Element) => void;
|
|
1289
|
+
/**
|
|
1290
|
+
* Origin to `postMessage` the selection to the parent window. Default
|
|
1291
|
+
* `"*"`. Set to the studio origin in production.
|
|
1292
|
+
*/
|
|
1293
|
+
targetOrigin?: string;
|
|
1294
|
+
/** Outline color for the hover highlight. Default a teal accent. */
|
|
1295
|
+
highlightColor?: string;
|
|
1296
|
+
}
|
|
1297
|
+
/**
|
|
1298
|
+
* Mount the click-to-edit overlay. Browser-only — call from a preview page's
|
|
1299
|
+
* client script. Highlights `[data-cadmus-edit]` elements on hover and, on
|
|
1300
|
+
* click, calls `onSelect` and posts a {@link VisualEditingMessage} to the
|
|
1301
|
+
* parent window. Returns a cleanup function that removes the listeners.
|
|
1302
|
+
*/
|
|
1303
|
+
declare function mountVisualEditing(options?: VisualEditingOptions): () => void;
|
|
1304
|
+
//#endregion
|
|
1073
1305
|
//#region src/cms/webhooks.d.ts
|
|
1074
1306
|
interface WebhookConfig {
|
|
1075
1307
|
/** Endpoint this webhook POSTs to on every matching event. */
|
|
@@ -1108,5 +1340,5 @@ declare function createWebhookHook(queue: Queue<WebhookMessage>, config: Webhook
|
|
|
1108
1340
|
*/
|
|
1109
1341
|
declare function deliverWebhookMessage(message: WebhookMessage): Promise<void>;
|
|
1110
1342
|
//#endregion
|
|
1111
|
-
export {
|
|
1112
|
-
//# sourceMappingURL=index-
|
|
1343
|
+
export { NumberFieldConfig as $, renderBlocksToString as $t, cmsConfigToSchema as A, Patch as At, CadmeaPlugin as B, CadmusDbError as Bt, RunMigrationOptions as C, can as Ct, getCollectionsMeta as D, DiffOptions as Dt, CollectionMeta as E, getRegisteredApi as Et, extractSearchText as F, CadmusAccessDeniedError as Ft, CollectionConfig as G, CadmusSessionError as Gt, CmsConfig as H, CadmusError as Ht, relationshipJoinTables as I, CadmusApiError as It, FieldAdminConfig as J, ValidationViolation as Jt, CollectionHooks as K, CadmusStorageError as Kt, AccessFn as L, CadmusAuthError as Lt, collectionSearchTableSQL as M, applyPatch as Mt, collectionToTable as N, computePatch as Nt, defineCmsConfig as O, FieldChange as Ot, collectionVersionsTable as P, diffDocuments as Pt, JsonValue as Q, createBlockRegistry as Qt, ArrayFieldConfig as R, CadmusCacheError as Rt, MigrationResult as S, VersionedLocalApi as St, runMigration as T, createVersionedLocalApi as Tt, CollectionAccess as U, CadmusQueueError as Ut, CheckboxFieldConfig as V, CadmusEmailError as Vt, CollectionAdminConfig as W, CadmusRateLimitError as Wt, GroupFieldConfig as X, PortableBlockLike as Xt, FieldConfig as Y, BlockRegistry as Yt, JsonFieldConfig as Z, StringBlockRenderer as Zt, StudioStructureItem as _, defineField as _t, EDIT_ATTR as a, UploadFieldConfig as at, Migration as b, CmsRegistry as bt, VisualEditingMessage as c, nestDoc as ct, editAttr as d, Rule as dt, RelationshipDepth as et, encodeEditRef as f, ValidateDocumentOptions as ft, StudioStructureGroup as g, assertValid as gt, DEFAULT_STUDIO_GROUP as h, ValidationSeverity as ht, deliverWebhookMessage as i, TextFieldConfig as it, collectionSearchTableName as j, PatchOp as jt, defineCollection as k, FieldChangeKind as kt, VisualEditingOptions as l, CustomValidator as lt, BuildStudioStructureOptions as m, ValidationFieldContext as mt, WebhookMessage as n, RichTextFieldConfig as nt, EditRef as o, flattenDoc as ot, mountVisualEditing as p, ValidationBuilder as pt, DateFieldConfig as q, CadmusValidationError as qt, createWebhookHook as r, SelectFieldConfig as rt, VISUAL_EDIT_MESSAGE as s, flattenFields as st, WebhookConfig as t, RelationshipFieldConfig as tt, decodeEditRef as u, CustomValidatorResult as ut, buildStudioStructure as v, rule as vt, defineMigration as w, createLocalApi as wt, MigrationChange as x, LocalApi as xt, generateSchemaSource as y, validateDocument as yt, BaseFieldConfig as z, CadmusCmsError as zt };
|
|
1344
|
+
//# sourceMappingURL=index-CWrSoiPh.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CWrSoiPh.d.cts","names":[],"sources":["../src/cms/blocks.ts","../src/errors.ts","../src/cms/patch.ts","../src/cms/localApi.ts","../src/cms/validation.ts","../src/cms/types.ts","../src/cms/codegen.ts","../src/cms/defineCollection.ts","../src/cms/meta.ts","../src/cms/migrate.ts","../src/cms/schema-gen.ts","../src/cms/structure.ts","../src/cms/visual-editing.ts","../src/cms/webhooks.ts"],"mappings":"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"}
|
|
@@ -180,6 +180,72 @@ declare class CadmusApiError extends CadmusError {
|
|
|
180
180
|
constructor(message: string, status: number, body: unknown);
|
|
181
181
|
}
|
|
182
182
|
//#endregion
|
|
183
|
+
//#region src/cms/patch.d.ts
|
|
184
|
+
/**
|
|
185
|
+
* Patch model + field-level diff (issue #14) — adopts Sanity's mutation/patch
|
|
186
|
+
* idea (pattern, not code): represent a content change as a small set of
|
|
187
|
+
* field operations, and compute a field-level diff between two document
|
|
188
|
+
* snapshots. Underpins version-history display (what changed between two
|
|
189
|
+
* versions) and the content-migration runner (#18), which expresses a
|
|
190
|
+
* transform's effect as a {@link Patch} and applies it.
|
|
191
|
+
*
|
|
192
|
+
* Scope: operations are keyed by **top-level field** (a document's own
|
|
193
|
+
* fields), matching "field-level diff" — a changed `blocks` array reads as
|
|
194
|
+
* one changed field, not a deep per-node diff. Deep/array-aware diffing is a
|
|
195
|
+
* deliberate later extension, not built here.
|
|
196
|
+
*/
|
|
197
|
+
/** A single field operation. `set` writes a value; `unset` removes the field. */
|
|
198
|
+
type PatchOp = {
|
|
199
|
+
op: "set";
|
|
200
|
+
path: string;
|
|
201
|
+
value: JsonValue;
|
|
202
|
+
} | {
|
|
203
|
+
op: "unset";
|
|
204
|
+
path: string;
|
|
205
|
+
};
|
|
206
|
+
/** An ordered set of field operations transforming one document into another. */
|
|
207
|
+
type Patch = PatchOp[];
|
|
208
|
+
type FieldChangeKind = "added" | "removed" | "changed";
|
|
209
|
+
/** One field's difference between two document snapshots. */
|
|
210
|
+
interface FieldChange {
|
|
211
|
+
/** Top-level field key. */
|
|
212
|
+
path: string;
|
|
213
|
+
kind: FieldChangeKind;
|
|
214
|
+
/** Value in the "before" snapshot (absent for `added`). */
|
|
215
|
+
before?: JsonValue;
|
|
216
|
+
/** Value in the "after" snapshot (absent for `removed`). */
|
|
217
|
+
after?: JsonValue;
|
|
218
|
+
}
|
|
219
|
+
type Doc$1 = Record<string, JsonValue>;
|
|
220
|
+
interface DiffOptions {
|
|
221
|
+
/**
|
|
222
|
+
* Restrict the diff to these field keys. Omit to diff the union of both
|
|
223
|
+
* documents' own keys. Useful for ignoring bookkeeping columns
|
|
224
|
+
* (`id`/`createdAt`/`publishedVersionId`) in a version-history view.
|
|
225
|
+
*/
|
|
226
|
+
fields?: readonly string[];
|
|
227
|
+
/** Field keys to skip (e.g. `["id", "createdAt"]`). */
|
|
228
|
+
ignore?: readonly string[];
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Field-level diff between two document snapshots — the per-field
|
|
232
|
+
* added/removed/changed list a version-history UI renders. Values are
|
|
233
|
+
* compared structurally (deep-equal), so a field only shows as `changed`
|
|
234
|
+
* when its content actually differs.
|
|
235
|
+
*/
|
|
236
|
+
declare function diffDocuments(before: Doc$1, after: Doc$1, options?: DiffOptions): FieldChange[];
|
|
237
|
+
/**
|
|
238
|
+
* The {@link Patch} that transforms `before` into `after`: `set` for each
|
|
239
|
+
* added/changed field, `unset` for each removed field. `applyPatch(before,
|
|
240
|
+
* computePatch(before, after))` deep-equals `after`.
|
|
241
|
+
*/
|
|
242
|
+
declare function computePatch(before: Doc$1, after: Doc$1): Patch;
|
|
243
|
+
/**
|
|
244
|
+
* Apply a {@link Patch} to a document, returning a new document (the input is
|
|
245
|
+
* never mutated). Unknown ops are ignored defensively.
|
|
246
|
+
*/
|
|
247
|
+
declare function applyPatch(doc: Doc$1, patch: Patch): Doc$1;
|
|
248
|
+
//#endregion
|
|
183
249
|
//#region src/cms/localApi.d.ts
|
|
184
250
|
type AnyTable$1 = SQLiteTableWithColumns<any>;
|
|
185
251
|
/**
|
|
@@ -322,6 +388,13 @@ interface VersionedLocalApi<TTable extends AnyTable$1, TVersionsTable extends An
|
|
|
322
388
|
publish(context: TContext, versionId: number): Promise<InferSelectModel<TTable>>;
|
|
323
389
|
/** Clears the main row's published pointer; the row's data is untouched. */
|
|
324
390
|
unpublish(context: TContext, id: number): Promise<InferSelectModel<TTable>>;
|
|
391
|
+
/**
|
|
392
|
+
* Field-level diff (issue #14) between two version snapshots' `versionData`
|
|
393
|
+
* — the per-field added/removed/changed list a version-history UI renders.
|
|
394
|
+
* Both versions must belong to the same parent. Bookkeeping keys
|
|
395
|
+
* (`id`/`createdAt`/`status`/`publishedVersionId`) are ignored.
|
|
396
|
+
*/
|
|
397
|
+
diffVersions(context: TContext, fromVersionId: number, toVersionId: number): Promise<FieldChange[]>;
|
|
325
398
|
}
|
|
326
399
|
declare function createVersionedLocalApi<TTable extends AnyTable$1, TVersionsTable extends AnyTable$1, TContext = unknown>(db: BaseSQLiteDatabase<"async", unknown>, table: TTable, versionsTable: TVersionsTable, config: CollectionConfig, registry?: CmsRegistry): VersionedLocalApi<TTable, TVersionsTable, TContext>;
|
|
327
400
|
//#endregion
|
|
@@ -495,12 +568,42 @@ declare function validateDocument(config: CollectionConfig, doc: Record<string,
|
|
|
495
568
|
declare function assertValid(config: CollectionConfig, doc: Record<string, unknown>, options: ValidateDocumentOptions): Promise<ValidationViolation[]>;
|
|
496
569
|
//#endregion
|
|
497
570
|
//#region src/cms/types.d.ts
|
|
571
|
+
/**
|
|
572
|
+
* Editor-only presentation hints for a single field (issue #16 follow-on) —
|
|
573
|
+
* the field-level counterpart to {@link CollectionAdminConfig}. Purely about
|
|
574
|
+
* how the studio renders the field; absent → sensible defaults (a humanized
|
|
575
|
+
* key for the label, no help text, full width, always shown, editable). None
|
|
576
|
+
* of this touches the DB schema or the Local API.
|
|
577
|
+
*/
|
|
578
|
+
interface FieldAdminConfig {
|
|
579
|
+
/** Human-friendly label; defaults to a humanized field key (`metaDescription` → "Meta description"). */
|
|
580
|
+
label?: string;
|
|
581
|
+
/** Help text rendered beneath the label. */
|
|
582
|
+
description?: string;
|
|
583
|
+
/** Placeholder for text-like inputs. */
|
|
584
|
+
placeholder?: string;
|
|
585
|
+
/** Groups the field into a titled fieldset in the editor, in first-seen order. */
|
|
586
|
+
group?: string;
|
|
587
|
+
/** Editor column width on >= md screens. Defaults to "full". */
|
|
588
|
+
width?: "full" | "half";
|
|
589
|
+
/**
|
|
590
|
+
* Show the field only when this predicate — given the whole in-progress
|
|
591
|
+
* form value — returns true (Payload's `admin.condition`). A function, so
|
|
592
|
+
* it's evaluated by the studio directly from the imported config, not from
|
|
593
|
+
* a serialized meta payload.
|
|
594
|
+
*/
|
|
595
|
+
condition?: (values: Record<string, unknown>) => boolean;
|
|
596
|
+
/** Render the field read-only in the editor. */
|
|
597
|
+
readOnly?: boolean;
|
|
598
|
+
}
|
|
498
599
|
interface BaseFieldConfig {
|
|
499
600
|
/** column name override; defaults to the config key */
|
|
500
601
|
name?: string;
|
|
501
602
|
required?: boolean;
|
|
502
603
|
unique?: boolean;
|
|
503
604
|
defaultValue?: unknown;
|
|
605
|
+
/** Editor-only presentation hints — see {@link FieldAdminConfig}. */
|
|
606
|
+
admin?: FieldAdminConfig;
|
|
504
607
|
/**
|
|
505
608
|
* Chainable validation rules (issue #16), Sanity's `defineField`
|
|
506
609
|
* `validation` analogue: `validation: (rule) => rule.required().min(2)`.
|
|
@@ -599,6 +702,16 @@ interface ArrayFieldConfig extends BaseFieldConfig {
|
|
|
599
702
|
discriminator?: {
|
|
600
703
|
key: string;
|
|
601
704
|
variants: Record<string, Record<string, FieldConfig>>;
|
|
705
|
+
/**
|
|
706
|
+
* Optional per-variant presentation for the studio's "Add block" picker
|
|
707
|
+
* (the visual block builder). `label` defaults to a humanized variant
|
|
708
|
+
* name; `icon` is an opaque CSS class the studio applies to an `<i>`
|
|
709
|
+
* (e.g. a Phosphor `"ph ph-image"`), keeping cadmea icon-library-agnostic.
|
|
710
|
+
*/
|
|
711
|
+
variantsAdmin?: Record<string, {
|
|
712
|
+
label?: string;
|
|
713
|
+
icon?: string;
|
|
714
|
+
}>;
|
|
602
715
|
};
|
|
603
716
|
}
|
|
604
717
|
interface UploadFieldConfig extends BaseFieldConfig {
|
|
@@ -987,6 +1100,62 @@ interface CollectionMeta {
|
|
|
987
1100
|
}
|
|
988
1101
|
declare function getCollectionsMeta(config: CmsConfig): CollectionMeta[];
|
|
989
1102
|
//#endregion
|
|
1103
|
+
//#region src/cms/migrate.d.ts
|
|
1104
|
+
/**
|
|
1105
|
+
* Content-migration runner (issue #18) — adopts Sanity's `sanity/migrate`
|
|
1106
|
+
* idea (pattern, not code): a versioned, repeatable transform over a
|
|
1107
|
+
* collection's stored documents, for reshaping content when a block/field
|
|
1108
|
+
* type changes (distinct from Drizzle *schema* migrations, which only touch
|
|
1109
|
+
* columns — this reshapes the JSON content inside them).
|
|
1110
|
+
*
|
|
1111
|
+
* A migration declares a per-document `document(doc)` transform; the runner
|
|
1112
|
+
* streams every document, computes the {@link Patch} from old→new (reusing
|
|
1113
|
+
* #14's patch model), and either reports it (`dryRun`) or applies it via the
|
|
1114
|
+
* collection's Local API. Idempotent by construction: a transform that's
|
|
1115
|
+
* already been applied produces an empty patch, so re-running changes
|
|
1116
|
+
* nothing.
|
|
1117
|
+
*/
|
|
1118
|
+
type Doc = Record<string, JsonValue>;
|
|
1119
|
+
interface Migration<TDoc extends Doc = Doc> {
|
|
1120
|
+
/** Stable identifier — name the checked-in migration file after this. */
|
|
1121
|
+
name: string;
|
|
1122
|
+
/**
|
|
1123
|
+
* Transform one document. Return the reshaped document, or `undefined`
|
|
1124
|
+
* (or the unchanged doc) to leave it as-is. Must be pure and idempotent —
|
|
1125
|
+
* applying it twice yields the same result as once.
|
|
1126
|
+
*/
|
|
1127
|
+
document: (doc: TDoc) => TDoc | undefined | Promise<TDoc | undefined>;
|
|
1128
|
+
}
|
|
1129
|
+
/** Identity helper — gives a migration definition its type + a greppable call site. */
|
|
1130
|
+
declare function defineMigration<TDoc extends Doc = Doc>(migration: Migration<TDoc>): Migration<TDoc>;
|
|
1131
|
+
interface MigrationChange {
|
|
1132
|
+
id: number;
|
|
1133
|
+
patch: Patch;
|
|
1134
|
+
}
|
|
1135
|
+
interface MigrationResult {
|
|
1136
|
+
migration: string;
|
|
1137
|
+
dryRun: boolean;
|
|
1138
|
+
scanned: number;
|
|
1139
|
+
changed: number;
|
|
1140
|
+
/** Per-document patches (always populated — the dry-run report). */
|
|
1141
|
+
changes: MigrationChange[];
|
|
1142
|
+
errors: string[];
|
|
1143
|
+
}
|
|
1144
|
+
interface RunMigrationOptions<TContext> {
|
|
1145
|
+
api: LocalApi<any, TContext>;
|
|
1146
|
+
/** Context passed to the Local API's read/update (access + hooks). */
|
|
1147
|
+
context: TContext;
|
|
1148
|
+
/** When true, compute + report patches but write nothing. Default false. */
|
|
1149
|
+
dryRun?: boolean;
|
|
1150
|
+
}
|
|
1151
|
+
/**
|
|
1152
|
+
* Run a migration over every document in a collection. Reads all documents
|
|
1153
|
+
* through `api.find`, applies `migration.document`, and (unless `dryRun`)
|
|
1154
|
+
* writes the resulting patch through `api.update`. Returns a report of what
|
|
1155
|
+
* changed — run it `dryRun` first, then apply.
|
|
1156
|
+
*/
|
|
1157
|
+
declare function runMigration<TContext>(migration: Migration, options: RunMigrationOptions<TContext>): Promise<MigrationResult>;
|
|
1158
|
+
//#endregion
|
|
990
1159
|
//#region src/cms/schema-gen.d.ts
|
|
991
1160
|
declare function generateSchemaSource(config: CmsConfig): string;
|
|
992
1161
|
//#endregion
|
|
@@ -1070,6 +1239,69 @@ interface BuildStudioStructureOptions {
|
|
|
1070
1239
|
*/
|
|
1071
1240
|
declare function buildStudioStructure(config: CmsConfig, options?: BuildStudioStructureOptions): StudioStructureGroup[];
|
|
1072
1241
|
//#endregion
|
|
1242
|
+
//#region src/cms/visual-editing.d.ts
|
|
1243
|
+
/**
|
|
1244
|
+
* Visual editing / click-to-edit (issue #15) — adopts Sanity's
|
|
1245
|
+
* Presentation/visual-editing idea (pattern, not code): the rendered page
|
|
1246
|
+
* (in a preview context) tags editable regions with the source field they
|
|
1247
|
+
* came from, and an overlay turns those regions into click targets that tell
|
|
1248
|
+
* the studio which field to focus.
|
|
1249
|
+
*
|
|
1250
|
+
* This module ships the two reusable, framework-agnostic primitives:
|
|
1251
|
+
* 1. **Encoding** — `editAttr({ collection, id, field })` produces a data
|
|
1252
|
+
* attribute the server renderer spreads onto an element; `decodeEditRef`
|
|
1253
|
+
* reads it back. Pure, testable.
|
|
1254
|
+
* 2. **Overlay** — `mountVisualEditing()` (browser-only; references `document`
|
|
1255
|
+
* lazily, so importing it server-side is harmless) highlights tagged
|
|
1256
|
+
* elements on hover and, on click, calls `onSelect` and `postMessage`s the
|
|
1257
|
+
* ref to the parent window (the studio shell hosting the preview iframe).
|
|
1258
|
+
*
|
|
1259
|
+
* The studio side listens for that message and navigates to
|
|
1260
|
+
* `/admin/<collection>/<id>` (and may focus `<field>`); that wiring is
|
|
1261
|
+
* consumer-side and not prescribed here.
|
|
1262
|
+
*/
|
|
1263
|
+
/** A reference from a rendered region back to the field that produced it. */
|
|
1264
|
+
interface EditRef {
|
|
1265
|
+
collection: string;
|
|
1266
|
+
id: number;
|
|
1267
|
+
field: string;
|
|
1268
|
+
}
|
|
1269
|
+
/** The data attribute editable regions are tagged with. */
|
|
1270
|
+
declare const EDIT_ATTR = "data-cadmus-edit";
|
|
1271
|
+
/** `postMessage` payload type for a click-to-edit selection. */
|
|
1272
|
+
declare const VISUAL_EDIT_MESSAGE = "cadmus:visual-edit";
|
|
1273
|
+
declare function encodeEditRef(ref: EditRef): string;
|
|
1274
|
+
/** Parse an {@link EditRef} string, or null if malformed. */
|
|
1275
|
+
declare function decodeEditRef(value: string): EditRef | null;
|
|
1276
|
+
/**
|
|
1277
|
+
* Attribute object to spread onto a rendered element so the overlay can map
|
|
1278
|
+
* it back to its source field, e.g. `<h1 {...editAttr({collection:'pages',
|
|
1279
|
+
* id, field:'title'})}>`.
|
|
1280
|
+
*/
|
|
1281
|
+
declare function editAttr(ref: EditRef): Record<string, string>;
|
|
1282
|
+
interface VisualEditingMessage {
|
|
1283
|
+
type: typeof VISUAL_EDIT_MESSAGE;
|
|
1284
|
+
ref: EditRef;
|
|
1285
|
+
}
|
|
1286
|
+
interface VisualEditingOptions {
|
|
1287
|
+
/** Called with the decoded ref when an editable region is clicked. */
|
|
1288
|
+
onSelect?: (ref: EditRef, element: Element) => void;
|
|
1289
|
+
/**
|
|
1290
|
+
* Origin to `postMessage` the selection to the parent window. Default
|
|
1291
|
+
* `"*"`. Set to the studio origin in production.
|
|
1292
|
+
*/
|
|
1293
|
+
targetOrigin?: string;
|
|
1294
|
+
/** Outline color for the hover highlight. Default a teal accent. */
|
|
1295
|
+
highlightColor?: string;
|
|
1296
|
+
}
|
|
1297
|
+
/**
|
|
1298
|
+
* Mount the click-to-edit overlay. Browser-only — call from a preview page's
|
|
1299
|
+
* client script. Highlights `[data-cadmus-edit]` elements on hover and, on
|
|
1300
|
+
* click, calls `onSelect` and posts a {@link VisualEditingMessage} to the
|
|
1301
|
+
* parent window. Returns a cleanup function that removes the listeners.
|
|
1302
|
+
*/
|
|
1303
|
+
declare function mountVisualEditing(options?: VisualEditingOptions): () => void;
|
|
1304
|
+
//#endregion
|
|
1073
1305
|
//#region src/cms/webhooks.d.ts
|
|
1074
1306
|
interface WebhookConfig {
|
|
1075
1307
|
/** Endpoint this webhook POSTs to on every matching event. */
|
|
@@ -1108,5 +1340,5 @@ declare function createWebhookHook(queue: Queue<WebhookMessage>, config: Webhook
|
|
|
1108
1340
|
*/
|
|
1109
1341
|
declare function deliverWebhookMessage(message: WebhookMessage): Promise<void>;
|
|
1110
1342
|
//#endregion
|
|
1111
|
-
export {
|
|
1112
|
-
//# sourceMappingURL=index-
|
|
1343
|
+
export { NumberFieldConfig as $, renderBlocksToString as $t, cmsConfigToSchema as A, Patch as At, CadmeaPlugin as B, CadmusDbError as Bt, RunMigrationOptions as C, can as Ct, getCollectionsMeta as D, DiffOptions as Dt, CollectionMeta as E, getRegisteredApi as Et, extractSearchText as F, CadmusAccessDeniedError as Ft, CollectionConfig as G, CadmusSessionError as Gt, CmsConfig as H, CadmusError as Ht, relationshipJoinTables as I, CadmusApiError as It, FieldAdminConfig as J, ValidationViolation as Jt, CollectionHooks as K, CadmusStorageError as Kt, AccessFn as L, CadmusAuthError as Lt, collectionSearchTableSQL as M, applyPatch as Mt, collectionToTable as N, computePatch as Nt, defineCmsConfig as O, FieldChange as Ot, collectionVersionsTable as P, diffDocuments as Pt, JsonValue as Q, createBlockRegistry as Qt, ArrayFieldConfig as R, CadmusCacheError as Rt, MigrationResult as S, VersionedLocalApi as St, runMigration as T, createVersionedLocalApi as Tt, CollectionAccess as U, CadmusQueueError as Ut, CheckboxFieldConfig as V, CadmusEmailError as Vt, CollectionAdminConfig as W, CadmusRateLimitError as Wt, GroupFieldConfig as X, PortableBlockLike as Xt, FieldConfig as Y, BlockRegistry as Yt, JsonFieldConfig as Z, StringBlockRenderer as Zt, StudioStructureItem as _, defineField as _t, EDIT_ATTR as a, UploadFieldConfig as at, Migration as b, CmsRegistry as bt, VisualEditingMessage as c, nestDoc as ct, editAttr as d, Rule as dt, RelationshipDepth as et, encodeEditRef as f, ValidateDocumentOptions as ft, StudioStructureGroup as g, assertValid as gt, DEFAULT_STUDIO_GROUP as h, ValidationSeverity as ht, deliverWebhookMessage as i, TextFieldConfig as it, collectionSearchTableName as j, PatchOp as jt, defineCollection as k, FieldChangeKind as kt, VisualEditingOptions as l, CustomValidator as lt, BuildStudioStructureOptions as m, ValidationFieldContext as mt, WebhookMessage as n, RichTextFieldConfig as nt, EditRef as o, flattenDoc as ot, mountVisualEditing as p, ValidationBuilder as pt, DateFieldConfig as q, CadmusValidationError as qt, createWebhookHook as r, SelectFieldConfig as rt, VISUAL_EDIT_MESSAGE as s, flattenFields as st, WebhookConfig as t, RelationshipFieldConfig as tt, decodeEditRef as u, CustomValidatorResult as ut, buildStudioStructure as v, rule as vt, defineMigration as w, createLocalApi as wt, MigrationChange as x, LocalApi as xt, generateSchemaSource as y, validateDocument as yt, BaseFieldConfig as z, CadmusCmsError as zt };
|
|
1344
|
+
//# sourceMappingURL=index-CWrSoiPh.d.ts.map
|