@cmssy/core 14.1.0 → 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{csp-CY7ssZsh.d.cts → csp-BHjoSZ2p.d.cts} +4 -4
- package/dist/{csp-DLCKZAyi.d.ts → csp-COFMUmsq.d.ts} +4 -4
- package/dist/index.cjs +64 -2
- package/dist/index.d.cts +38 -4
- package/dist/index.d.ts +38 -4
- package/dist/index.js +59 -3
- package/dist/internal.cjs +2 -2
- package/dist/internal.d.cts +2 -2
- package/dist/internal.d.ts +2 -2
- package/dist/internal.js +2 -2
- package/package.json +2 -2
|
@@ -58,7 +58,7 @@ interface CmssyClient {
|
|
|
58
58
|
}
|
|
59
59
|
declare function createCmssyClient(input: CmssyClientConfig): CmssyClient;
|
|
60
60
|
|
|
61
|
-
declare const PROTOCOL_VERSION =
|
|
61
|
+
declare const PROTOCOL_VERSION = 3;
|
|
62
62
|
|
|
63
63
|
declare const SHORTCUT_ACTIONS: readonly ["undo", "redo", "save", "duplicate", "delete", "escape"];
|
|
64
64
|
type ShortcutAction = (typeof SHORTCUT_ACTIONS)[number];
|
|
@@ -69,7 +69,7 @@ interface ReadyMessage {
|
|
|
69
69
|
id: string;
|
|
70
70
|
type: string;
|
|
71
71
|
bounds: BlockRect;
|
|
72
|
-
|
|
72
|
+
layoutRegion?: string;
|
|
73
73
|
}>;
|
|
74
74
|
schemas: Record<string, BlockSchema>;
|
|
75
75
|
blockMeta?: Record<string, BlockMeta>;
|
|
@@ -85,7 +85,7 @@ interface ClickMessage {
|
|
|
85
85
|
type: "cmssy:click";
|
|
86
86
|
blockId: string;
|
|
87
87
|
rect: BlockRect;
|
|
88
|
-
|
|
88
|
+
layoutRegion?: string;
|
|
89
89
|
}
|
|
90
90
|
interface DeselectMessage {
|
|
91
91
|
type: "cmssy:deselect";
|
|
@@ -128,7 +128,7 @@ interface PatchMessage {
|
|
|
128
128
|
content: Record<string, unknown>;
|
|
129
129
|
style?: Record<string, unknown>;
|
|
130
130
|
advanced?: Record<string, unknown>;
|
|
131
|
-
|
|
131
|
+
layoutRegion?: string;
|
|
132
132
|
}
|
|
133
133
|
interface ParentReadyMessage {
|
|
134
134
|
type: "cmssy:parent-ready";
|
|
@@ -58,7 +58,7 @@ interface CmssyClient {
|
|
|
58
58
|
}
|
|
59
59
|
declare function createCmssyClient(input: CmssyClientConfig): CmssyClient;
|
|
60
60
|
|
|
61
|
-
declare const PROTOCOL_VERSION =
|
|
61
|
+
declare const PROTOCOL_VERSION = 3;
|
|
62
62
|
|
|
63
63
|
declare const SHORTCUT_ACTIONS: readonly ["undo", "redo", "save", "duplicate", "delete", "escape"];
|
|
64
64
|
type ShortcutAction = (typeof SHORTCUT_ACTIONS)[number];
|
|
@@ -69,7 +69,7 @@ interface ReadyMessage {
|
|
|
69
69
|
id: string;
|
|
70
70
|
type: string;
|
|
71
71
|
bounds: BlockRect;
|
|
72
|
-
|
|
72
|
+
layoutRegion?: string;
|
|
73
73
|
}>;
|
|
74
74
|
schemas: Record<string, BlockSchema>;
|
|
75
75
|
blockMeta?: Record<string, BlockMeta>;
|
|
@@ -85,7 +85,7 @@ interface ClickMessage {
|
|
|
85
85
|
type: "cmssy:click";
|
|
86
86
|
blockId: string;
|
|
87
87
|
rect: BlockRect;
|
|
88
|
-
|
|
88
|
+
layoutRegion?: string;
|
|
89
89
|
}
|
|
90
90
|
interface DeselectMessage {
|
|
91
91
|
type: "cmssy:deselect";
|
|
@@ -128,7 +128,7 @@ interface PatchMessage {
|
|
|
128
128
|
content: Record<string, unknown>;
|
|
129
129
|
style?: Record<string, unknown>;
|
|
130
130
|
advanced?: Record<string, unknown>;
|
|
131
|
-
|
|
131
|
+
layoutRegion?: string;
|
|
132
132
|
}
|
|
133
133
|
interface ParentReadyMessage {
|
|
134
134
|
type: "cmssy:parent-ready";
|
package/dist/index.cjs
CHANGED
|
@@ -619,6 +619,62 @@ function defineCmssyLayout(layout) {
|
|
|
619
619
|
return { regions };
|
|
620
620
|
}
|
|
621
621
|
|
|
622
|
+
// src/manifest.ts
|
|
623
|
+
function propsToSchema(props) {
|
|
624
|
+
const schema = {};
|
|
625
|
+
for (const [key, def] of Object.entries(props)) {
|
|
626
|
+
schema[key] = { ...def, label: def.label || key };
|
|
627
|
+
}
|
|
628
|
+
return schema;
|
|
629
|
+
}
|
|
630
|
+
function blocksToSchemas(blocks) {
|
|
631
|
+
const out = /* @__PURE__ */ Object.create(null);
|
|
632
|
+
for (const block of blocks) out[block.type] = propsToSchema(block.props);
|
|
633
|
+
return out;
|
|
634
|
+
}
|
|
635
|
+
function blocksToMeta(blocks, defaults = {}) {
|
|
636
|
+
const out = /* @__PURE__ */ Object.create(null);
|
|
637
|
+
for (const block of blocks) {
|
|
638
|
+
const category = block.category ?? defaults.category;
|
|
639
|
+
out[block.type] = {
|
|
640
|
+
label: block.label ?? block.type,
|
|
641
|
+
...category ? { category } : {},
|
|
642
|
+
...block.icon ? { icon: block.icon } : {},
|
|
643
|
+
...block.layoutRegions ? { layoutRegions: block.layoutRegions } : {},
|
|
644
|
+
...block.description ? { description: block.description } : {}
|
|
645
|
+
};
|
|
646
|
+
}
|
|
647
|
+
return out;
|
|
648
|
+
}
|
|
649
|
+
function layoutRegionsToBridge(regions) {
|
|
650
|
+
return regions.map(
|
|
651
|
+
(region) => region.settings ? { ...region, settings: propsToSchema(region.settings) } : { ...region }
|
|
652
|
+
);
|
|
653
|
+
}
|
|
654
|
+
function registryToManifestBlocks(schemas, blockMeta) {
|
|
655
|
+
return Object.entries(schemas).sort(([a], [b]) => a.localeCompare(b)).map(([type, schema]) => {
|
|
656
|
+
const meta = blockMeta?.[type];
|
|
657
|
+
return {
|
|
658
|
+
type,
|
|
659
|
+
label: meta?.label || type,
|
|
660
|
+
...meta?.category ? { category: meta.category } : {},
|
|
661
|
+
...meta?.icon ? { icon: meta.icon } : {},
|
|
662
|
+
...meta?.description ? { description: meta.description } : {},
|
|
663
|
+
...meta?.layoutRegions?.length ? { layoutRegions: meta.layoutRegions } : {},
|
|
664
|
+
schema
|
|
665
|
+
};
|
|
666
|
+
});
|
|
667
|
+
}
|
|
668
|
+
function buildBlockManifest(blocks, options = {}) {
|
|
669
|
+
return {
|
|
670
|
+
blocks: registryToManifestBlocks(
|
|
671
|
+
blocksToSchemas(blocks),
|
|
672
|
+
blocksToMeta(blocks, { category: options.category })
|
|
673
|
+
),
|
|
674
|
+
regions: options.regions ? layoutRegionsToBridge(options.regions) : null
|
|
675
|
+
};
|
|
676
|
+
}
|
|
677
|
+
|
|
622
678
|
// src/data/localize-href.ts
|
|
623
679
|
var PROTOCOL_OR_RELATIVE = /^([a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
624
680
|
function isExternalHref(href) {
|
|
@@ -708,7 +764,7 @@ function splitLocaleFromPath(path, siteLocales) {
|
|
|
708
764
|
var CMSSY_LOCALE_HEADER = "x-cmssy-locale";
|
|
709
765
|
|
|
710
766
|
// src/bridge/protocol.ts
|
|
711
|
-
var PROTOCOL_VERSION =
|
|
767
|
+
var PROTOCOL_VERSION = 3;
|
|
712
768
|
var SHORTCUT_ACTIONS = [
|
|
713
769
|
"undo",
|
|
714
770
|
"redo",
|
|
@@ -766,7 +822,7 @@ function parseEditorMessage(data, origin, expectedOrigin) {
|
|
|
766
822
|
protocolVersion: PROTOCOL_VERSION,
|
|
767
823
|
...isObject(data.style) ? { style: data.style } : {},
|
|
768
824
|
...isObject(data.advanced) ? { advanced: data.advanced } : {},
|
|
769
|
-
...typeof data.
|
|
825
|
+
...typeof data.layoutRegion === "string" ? { layoutRegion: data.layoutRegion } : {}
|
|
770
826
|
} : null;
|
|
771
827
|
case "cmssy:parent-ready":
|
|
772
828
|
return data.protocolVersion === PROTOCOL_VERSION ? { type: "cmssy:parent-ready", protocolVersion: PROTOCOL_VERSION } : null;
|
|
@@ -1009,6 +1065,9 @@ exports.DEFAULT_CMSSY_EDITOR_ORIGINS = DEFAULT_CMSSY_EDITOR_ORIGINS;
|
|
|
1009
1065
|
exports.PROTOCOL_VERSION = PROTOCOL_VERSION;
|
|
1010
1066
|
exports.SHORTCUT_ACTIONS = SHORTCUT_ACTIONS;
|
|
1011
1067
|
exports.applyCmssyCsp = applyCmssyCsp;
|
|
1068
|
+
exports.blocksToMeta = blocksToMeta;
|
|
1069
|
+
exports.blocksToSchemas = blocksToSchemas;
|
|
1070
|
+
exports.buildBlockManifest = buildBlockManifest;
|
|
1012
1071
|
exports.createCmssyClient = createCmssyClient;
|
|
1013
1072
|
exports.defineCmssyConfig = defineCmssyConfig;
|
|
1014
1073
|
exports.defineCmssyLayout = defineCmssyLayout;
|
|
@@ -1016,6 +1075,7 @@ exports.fields = fields;
|
|
|
1016
1075
|
exports.graphqlRequest = graphqlRequest;
|
|
1017
1076
|
exports.isProtocolCompatible = isProtocolCompatible;
|
|
1018
1077
|
exports.isVerifiedEditUrl = isVerifiedEditUrl;
|
|
1078
|
+
exports.layoutRegionsToBridge = layoutRegionsToBridge;
|
|
1019
1079
|
exports.localizeHref = localizeHref;
|
|
1020
1080
|
exports.mediaAlt = mediaAlt;
|
|
1021
1081
|
exports.mediaUrl = mediaUrl;
|
|
@@ -1023,6 +1083,8 @@ exports.mediaUrls = mediaUrls;
|
|
|
1023
1083
|
exports.normalizeOrigin = normalizeOrigin;
|
|
1024
1084
|
exports.parseEditorMessage = parseEditorMessage;
|
|
1025
1085
|
exports.postToEditor = postToEditor;
|
|
1086
|
+
exports.propsToSchema = propsToSchema;
|
|
1087
|
+
exports.registryToManifestBlocks = registryToManifestBlocks;
|
|
1026
1088
|
exports.resolveCmssyLocale = resolveCmssyLocale;
|
|
1027
1089
|
exports.resolveEditorOrigin = resolveEditorOrigin;
|
|
1028
1090
|
exports.verifyCmssyWebhook = verifyCmssyWebhook;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { A as AppToEditorMessage, B as BoundsMessage, C as ClickMessage, a as CmssyClient, b as CmssyConfig, c as CmssyCspOptions, d as CmssyEnvConfig, e as CmssyLayout, f as CmssyRegion, g as CmssyRegionOf, h as CmssyRegionSettings, i as CmssyRegionSettingsOf, j as CmssyTypedDocument, D as DEFAULT_CMSSY_EDITOR_ORIGINS, E as EditorToAppMessage, I as InvisibleBlock, k as InvisibleBlocksMessage, P as PROTOCOL_VERSION, l as ParentReadyMessage, m as PatchMessage, n as PostTarget, Q as QueryScopedOptions, R as ReadyMessage, S as SHORTCUT_ACTIONS, o as SelectMessage, p as ShortcutAction, q as ShortcutMessage, V as ViewportMessage, r as applyCmssyCsp, s as createCmssyClient, t as defineCmssyConfig, u as defineCmssyLayout, v as isProtocolCompatible, w as normalizeOrigin, x as parseEditorMessage, y as postToEditor, z as resolveEditorOrigin } from './csp-
|
|
1
|
+
export { A as AppToEditorMessage, B as BoundsMessage, C as ClickMessage, a as CmssyClient, b as CmssyConfig, c as CmssyCspOptions, d as CmssyEnvConfig, e as CmssyLayout, f as CmssyRegion, g as CmssyRegionOf, h as CmssyRegionSettings, i as CmssyRegionSettingsOf, j as CmssyTypedDocument, D as DEFAULT_CMSSY_EDITOR_ORIGINS, E as EditorToAppMessage, I as InvisibleBlock, k as InvisibleBlocksMessage, P as PROTOCOL_VERSION, l as ParentReadyMessage, m as PatchMessage, n as PostTarget, Q as QueryScopedOptions, R as ReadyMessage, S as SHORTCUT_ACTIONS, o as SelectMessage, p as ShortcutAction, q as ShortcutMessage, V as ViewportMessage, r as applyCmssyCsp, s as createCmssyClient, t as defineCmssyConfig, u as defineCmssyLayout, v as isProtocolCompatible, w as normalizeOrigin, x as parseEditorMessage, y as postToEditor, z as resolveEditorOrigin } from './csp-BHjoSZ2p.cjs';
|
|
2
2
|
export { C as CMSSY_LOCALE_HEADER, G as GraphqlRequestOptions, g as graphqlRequest, l as localizeHref, r as resolveCmssyLocale } from './locale-JyBHqpAQ.cjs';
|
|
3
3
|
export { C as CMSSY_RATE_LIMIT_WINDOW_MS, a as CMSSY_RETRY_MODES, b as CmssyRequestError, c as CmssyRetryMode, D as DEFAULT_CMSSY_API_URL, F as FetchLike, d as FetchLikeResponse, e as FetchPageOptions, R as RetryOption, f as RetryPolicy } from './content-client-65N8ZRq9.cjs';
|
|
4
4
|
import * as _cmssy_types from '@cmssy/types';
|
|
5
|
-
import { FieldOptions, TypedField, ResolvedMediaValue, PageRef, BlockPropsSchema, InferBlockContent, RelationMode, CmssyModelRecord, ResolvedMedia, VerifyCmssyWebhookOptions, CmssyWebhookEvent } from '@cmssy/types';
|
|
6
|
-
export { BlockMeta, BlockPropsSchema, BlockRect, BlockSchema, BuildBlockContextExtra, CmssyBlockAuthContext, CmssyBlockContext, CmssyBlockMember, CmssyBlockPage, CmssyBlockWorkspace, CmssyBranding, CmssyClientConfig, CmssyFormDefinition, CmssyFormField, CmssyFormSettings, CmssyFormSubmitResponse, CmssyLayoutGroup, CmssyLocaleContext, CmssyLocalizedValue, CmssyModelDefinition, CmssyModelRecord, CmssyPageData, CmssyPageMeta, CmssyPageSummary, CmssyRecordList, CmssySiteConfig, CmssyWebhookEvent, CmssyWebhookOrder, FieldCondition, FieldConditionGroup, FieldConditionLogic, FieldControl, FieldDefinition, FieldOptions, FieldType, InferBlockContent,
|
|
5
|
+
import { FieldOptions, TypedField, ResolvedMediaValue, PageRef, BlockPropsSchema, InferBlockContent, RelationMode, CmssyModelRecord, ResolvedMedia, BlockSchema, LayoutRegion, FieldDefinition, BlockMeta, VerifyCmssyWebhookOptions, CmssyWebhookEvent } from '@cmssy/types';
|
|
6
|
+
export { BlockMeta, BlockPropsSchema, BlockRect, BlockSchema, BuildBlockContextExtra, CmssyBlockAuthContext, CmssyBlockContext, CmssyBlockMember, CmssyBlockPage, CmssyBlockWorkspace, CmssyBranding, CmssyClientConfig, CmssyFormDefinition, CmssyFormField, CmssyFormSettings, CmssyFormSubmitResponse, CmssyLayoutGroup, CmssyLocaleContext, CmssyLocalizedValue, CmssyModelDefinition, CmssyModelRecord, CmssyPageData, CmssyPageMeta, CmssyPageSummary, CmssyRecordList, CmssySiteConfig, CmssyWebhookEvent, CmssyWebhookOrder, FieldCondition, FieldConditionGroup, FieldConditionLogic, FieldControl, FieldDefinition, FieldOptions, FieldType, InferBlockContent, LayoutRegion, LayoutRegionId, RawBlock, RawLayoutBlock, SubmitFormInput, TypedField, VerifyCmssyWebhookOptions, evaluateFieldConditionGroup } from '@cmssy/types';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Whether the content is guaranteed to carry the field. Only `required` says
|
|
@@ -79,6 +79,40 @@ declare function mediaUrl(value: MediaLike): string | null;
|
|
|
79
79
|
declare function mediaUrls(value: readonly MediaLike[] | null | undefined): string[];
|
|
80
80
|
declare function mediaAlt(value: MediaLike): string | undefined;
|
|
81
81
|
|
|
82
|
+
interface BlockManifestSource {
|
|
83
|
+
type: string;
|
|
84
|
+
label?: string;
|
|
85
|
+
category?: string;
|
|
86
|
+
icon?: string;
|
|
87
|
+
layoutRegions?: string[];
|
|
88
|
+
description?: string;
|
|
89
|
+
props: Record<string, FieldDefinition>;
|
|
90
|
+
}
|
|
91
|
+
interface BlockManifestBlock {
|
|
92
|
+
type: string;
|
|
93
|
+
label: string;
|
|
94
|
+
category?: string;
|
|
95
|
+
icon?: string;
|
|
96
|
+
description?: string;
|
|
97
|
+
layoutRegions?: string[];
|
|
98
|
+
schema: BlockSchema;
|
|
99
|
+
}
|
|
100
|
+
interface BlockManifest {
|
|
101
|
+
blocks: BlockManifestBlock[];
|
|
102
|
+
regions: LayoutRegion[] | null;
|
|
103
|
+
}
|
|
104
|
+
declare function propsToSchema(props: BlockPropsSchema): BlockSchema;
|
|
105
|
+
declare function blocksToSchemas(blocks: readonly BlockManifestSource[]): Record<string, BlockSchema>;
|
|
106
|
+
declare function blocksToMeta(blocks: readonly BlockManifestSource[], defaults?: {
|
|
107
|
+
category?: string;
|
|
108
|
+
}): Record<string, BlockMeta>;
|
|
109
|
+
declare function layoutRegionsToBridge(regions: readonly LayoutRegion[]): LayoutRegion[];
|
|
110
|
+
declare function registryToManifestBlocks(schemas: Record<string, BlockSchema>, blockMeta: Record<string, BlockMeta> | null): BlockManifestBlock[];
|
|
111
|
+
declare function buildBlockManifest(blocks: readonly BlockManifestSource[], options?: {
|
|
112
|
+
category?: string;
|
|
113
|
+
regions?: readonly LayoutRegion[] | null;
|
|
114
|
+
}): BlockManifest;
|
|
115
|
+
|
|
82
116
|
declare const CMSSY_EDIT_HEADER = "x-cmssy-edit";
|
|
83
117
|
declare const CMSSY_EDIT_QUERY_PARAM = "cmssyEdit";
|
|
84
118
|
declare const CMSSY_SECRET_QUERY_PARAM = "cmssySecret";
|
|
@@ -97,4 +131,4 @@ declare class CmssyWebhookError extends Error {
|
|
|
97
131
|
}
|
|
98
132
|
declare function verifyCmssyWebhook(options: VerifyCmssyWebhookOptions): Promise<CmssyWebhookEvent>;
|
|
99
133
|
|
|
100
|
-
export { CMSSY_EDIT_HEADER, CMSSY_EDIT_QUERY_PARAM, CMSSY_SECRET_QUERY_PARAM, CmssyWebhookError, type MediaLike, fields, isVerifiedEditUrl, mediaAlt, mediaUrl, mediaUrls, verifyCmssyWebhook };
|
|
134
|
+
export { type BlockManifest, type BlockManifestBlock, type BlockManifestSource, CMSSY_EDIT_HEADER, CMSSY_EDIT_QUERY_PARAM, CMSSY_SECRET_QUERY_PARAM, CmssyWebhookError, type MediaLike, blocksToMeta, blocksToSchemas, buildBlockManifest, fields, isVerifiedEditUrl, layoutRegionsToBridge, mediaAlt, mediaUrl, mediaUrls, propsToSchema, registryToManifestBlocks, verifyCmssyWebhook };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { A as AppToEditorMessage, B as BoundsMessage, C as ClickMessage, a as CmssyClient, b as CmssyConfig, c as CmssyCspOptions, d as CmssyEnvConfig, e as CmssyLayout, f as CmssyRegion, g as CmssyRegionOf, h as CmssyRegionSettings, i as CmssyRegionSettingsOf, j as CmssyTypedDocument, D as DEFAULT_CMSSY_EDITOR_ORIGINS, E as EditorToAppMessage, I as InvisibleBlock, k as InvisibleBlocksMessage, P as PROTOCOL_VERSION, l as ParentReadyMessage, m as PatchMessage, n as PostTarget, Q as QueryScopedOptions, R as ReadyMessage, S as SHORTCUT_ACTIONS, o as SelectMessage, p as ShortcutAction, q as ShortcutMessage, V as ViewportMessage, r as applyCmssyCsp, s as createCmssyClient, t as defineCmssyConfig, u as defineCmssyLayout, v as isProtocolCompatible, w as normalizeOrigin, x as parseEditorMessage, y as postToEditor, z as resolveEditorOrigin } from './csp-
|
|
1
|
+
export { A as AppToEditorMessage, B as BoundsMessage, C as ClickMessage, a as CmssyClient, b as CmssyConfig, c as CmssyCspOptions, d as CmssyEnvConfig, e as CmssyLayout, f as CmssyRegion, g as CmssyRegionOf, h as CmssyRegionSettings, i as CmssyRegionSettingsOf, j as CmssyTypedDocument, D as DEFAULT_CMSSY_EDITOR_ORIGINS, E as EditorToAppMessage, I as InvisibleBlock, k as InvisibleBlocksMessage, P as PROTOCOL_VERSION, l as ParentReadyMessage, m as PatchMessage, n as PostTarget, Q as QueryScopedOptions, R as ReadyMessage, S as SHORTCUT_ACTIONS, o as SelectMessage, p as ShortcutAction, q as ShortcutMessage, V as ViewportMessage, r as applyCmssyCsp, s as createCmssyClient, t as defineCmssyConfig, u as defineCmssyLayout, v as isProtocolCompatible, w as normalizeOrigin, x as parseEditorMessage, y as postToEditor, z as resolveEditorOrigin } from './csp-COFMUmsq.js';
|
|
2
2
|
export { C as CMSSY_LOCALE_HEADER, G as GraphqlRequestOptions, g as graphqlRequest, l as localizeHref, r as resolveCmssyLocale } from './locale-D9KI4bND.js';
|
|
3
3
|
export { C as CMSSY_RATE_LIMIT_WINDOW_MS, a as CMSSY_RETRY_MODES, b as CmssyRequestError, c as CmssyRetryMode, D as DEFAULT_CMSSY_API_URL, F as FetchLike, d as FetchLikeResponse, e as FetchPageOptions, R as RetryOption, f as RetryPolicy } from './content-client-65N8ZRq9.js';
|
|
4
4
|
import * as _cmssy_types from '@cmssy/types';
|
|
5
|
-
import { FieldOptions, TypedField, ResolvedMediaValue, PageRef, BlockPropsSchema, InferBlockContent, RelationMode, CmssyModelRecord, ResolvedMedia, VerifyCmssyWebhookOptions, CmssyWebhookEvent } from '@cmssy/types';
|
|
6
|
-
export { BlockMeta, BlockPropsSchema, BlockRect, BlockSchema, BuildBlockContextExtra, CmssyBlockAuthContext, CmssyBlockContext, CmssyBlockMember, CmssyBlockPage, CmssyBlockWorkspace, CmssyBranding, CmssyClientConfig, CmssyFormDefinition, CmssyFormField, CmssyFormSettings, CmssyFormSubmitResponse, CmssyLayoutGroup, CmssyLocaleContext, CmssyLocalizedValue, CmssyModelDefinition, CmssyModelRecord, CmssyPageData, CmssyPageMeta, CmssyPageSummary, CmssyRecordList, CmssySiteConfig, CmssyWebhookEvent, CmssyWebhookOrder, FieldCondition, FieldConditionGroup, FieldConditionLogic, FieldControl, FieldDefinition, FieldOptions, FieldType, InferBlockContent,
|
|
5
|
+
import { FieldOptions, TypedField, ResolvedMediaValue, PageRef, BlockPropsSchema, InferBlockContent, RelationMode, CmssyModelRecord, ResolvedMedia, BlockSchema, LayoutRegion, FieldDefinition, BlockMeta, VerifyCmssyWebhookOptions, CmssyWebhookEvent } from '@cmssy/types';
|
|
6
|
+
export { BlockMeta, BlockPropsSchema, BlockRect, BlockSchema, BuildBlockContextExtra, CmssyBlockAuthContext, CmssyBlockContext, CmssyBlockMember, CmssyBlockPage, CmssyBlockWorkspace, CmssyBranding, CmssyClientConfig, CmssyFormDefinition, CmssyFormField, CmssyFormSettings, CmssyFormSubmitResponse, CmssyLayoutGroup, CmssyLocaleContext, CmssyLocalizedValue, CmssyModelDefinition, CmssyModelRecord, CmssyPageData, CmssyPageMeta, CmssyPageSummary, CmssyRecordList, CmssySiteConfig, CmssyWebhookEvent, CmssyWebhookOrder, FieldCondition, FieldConditionGroup, FieldConditionLogic, FieldControl, FieldDefinition, FieldOptions, FieldType, InferBlockContent, LayoutRegion, LayoutRegionId, RawBlock, RawLayoutBlock, SubmitFormInput, TypedField, VerifyCmssyWebhookOptions, evaluateFieldConditionGroup } from '@cmssy/types';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Whether the content is guaranteed to carry the field. Only `required` says
|
|
@@ -79,6 +79,40 @@ declare function mediaUrl(value: MediaLike): string | null;
|
|
|
79
79
|
declare function mediaUrls(value: readonly MediaLike[] | null | undefined): string[];
|
|
80
80
|
declare function mediaAlt(value: MediaLike): string | undefined;
|
|
81
81
|
|
|
82
|
+
interface BlockManifestSource {
|
|
83
|
+
type: string;
|
|
84
|
+
label?: string;
|
|
85
|
+
category?: string;
|
|
86
|
+
icon?: string;
|
|
87
|
+
layoutRegions?: string[];
|
|
88
|
+
description?: string;
|
|
89
|
+
props: Record<string, FieldDefinition>;
|
|
90
|
+
}
|
|
91
|
+
interface BlockManifestBlock {
|
|
92
|
+
type: string;
|
|
93
|
+
label: string;
|
|
94
|
+
category?: string;
|
|
95
|
+
icon?: string;
|
|
96
|
+
description?: string;
|
|
97
|
+
layoutRegions?: string[];
|
|
98
|
+
schema: BlockSchema;
|
|
99
|
+
}
|
|
100
|
+
interface BlockManifest {
|
|
101
|
+
blocks: BlockManifestBlock[];
|
|
102
|
+
regions: LayoutRegion[] | null;
|
|
103
|
+
}
|
|
104
|
+
declare function propsToSchema(props: BlockPropsSchema): BlockSchema;
|
|
105
|
+
declare function blocksToSchemas(blocks: readonly BlockManifestSource[]): Record<string, BlockSchema>;
|
|
106
|
+
declare function blocksToMeta(blocks: readonly BlockManifestSource[], defaults?: {
|
|
107
|
+
category?: string;
|
|
108
|
+
}): Record<string, BlockMeta>;
|
|
109
|
+
declare function layoutRegionsToBridge(regions: readonly LayoutRegion[]): LayoutRegion[];
|
|
110
|
+
declare function registryToManifestBlocks(schemas: Record<string, BlockSchema>, blockMeta: Record<string, BlockMeta> | null): BlockManifestBlock[];
|
|
111
|
+
declare function buildBlockManifest(blocks: readonly BlockManifestSource[], options?: {
|
|
112
|
+
category?: string;
|
|
113
|
+
regions?: readonly LayoutRegion[] | null;
|
|
114
|
+
}): BlockManifest;
|
|
115
|
+
|
|
82
116
|
declare const CMSSY_EDIT_HEADER = "x-cmssy-edit";
|
|
83
117
|
declare const CMSSY_EDIT_QUERY_PARAM = "cmssyEdit";
|
|
84
118
|
declare const CMSSY_SECRET_QUERY_PARAM = "cmssySecret";
|
|
@@ -97,4 +131,4 @@ declare class CmssyWebhookError extends Error {
|
|
|
97
131
|
}
|
|
98
132
|
declare function verifyCmssyWebhook(options: VerifyCmssyWebhookOptions): Promise<CmssyWebhookEvent>;
|
|
99
133
|
|
|
100
|
-
export { CMSSY_EDIT_HEADER, CMSSY_EDIT_QUERY_PARAM, CMSSY_SECRET_QUERY_PARAM, CmssyWebhookError, type MediaLike, fields, isVerifiedEditUrl, mediaAlt, mediaUrl, mediaUrls, verifyCmssyWebhook };
|
|
134
|
+
export { type BlockManifest, type BlockManifestBlock, type BlockManifestSource, CMSSY_EDIT_HEADER, CMSSY_EDIT_QUERY_PARAM, CMSSY_SECRET_QUERY_PARAM, CmssyWebhookError, type MediaLike, blocksToMeta, blocksToSchemas, buildBlockManifest, fields, isVerifiedEditUrl, layoutRegionsToBridge, mediaAlt, mediaUrl, mediaUrls, propsToSchema, registryToManifestBlocks, verifyCmssyWebhook };
|
package/dist/index.js
CHANGED
|
@@ -618,6 +618,62 @@ function defineCmssyLayout(layout) {
|
|
|
618
618
|
return { regions };
|
|
619
619
|
}
|
|
620
620
|
|
|
621
|
+
// src/manifest.ts
|
|
622
|
+
function propsToSchema(props) {
|
|
623
|
+
const schema = {};
|
|
624
|
+
for (const [key, def] of Object.entries(props)) {
|
|
625
|
+
schema[key] = { ...def, label: def.label || key };
|
|
626
|
+
}
|
|
627
|
+
return schema;
|
|
628
|
+
}
|
|
629
|
+
function blocksToSchemas(blocks) {
|
|
630
|
+
const out = /* @__PURE__ */ Object.create(null);
|
|
631
|
+
for (const block of blocks) out[block.type] = propsToSchema(block.props);
|
|
632
|
+
return out;
|
|
633
|
+
}
|
|
634
|
+
function blocksToMeta(blocks, defaults = {}) {
|
|
635
|
+
const out = /* @__PURE__ */ Object.create(null);
|
|
636
|
+
for (const block of blocks) {
|
|
637
|
+
const category = block.category ?? defaults.category;
|
|
638
|
+
out[block.type] = {
|
|
639
|
+
label: block.label ?? block.type,
|
|
640
|
+
...category ? { category } : {},
|
|
641
|
+
...block.icon ? { icon: block.icon } : {},
|
|
642
|
+
...block.layoutRegions ? { layoutRegions: block.layoutRegions } : {},
|
|
643
|
+
...block.description ? { description: block.description } : {}
|
|
644
|
+
};
|
|
645
|
+
}
|
|
646
|
+
return out;
|
|
647
|
+
}
|
|
648
|
+
function layoutRegionsToBridge(regions) {
|
|
649
|
+
return regions.map(
|
|
650
|
+
(region) => region.settings ? { ...region, settings: propsToSchema(region.settings) } : { ...region }
|
|
651
|
+
);
|
|
652
|
+
}
|
|
653
|
+
function registryToManifestBlocks(schemas, blockMeta) {
|
|
654
|
+
return Object.entries(schemas).sort(([a], [b]) => a.localeCompare(b)).map(([type, schema]) => {
|
|
655
|
+
const meta = blockMeta?.[type];
|
|
656
|
+
return {
|
|
657
|
+
type,
|
|
658
|
+
label: meta?.label || type,
|
|
659
|
+
...meta?.category ? { category: meta.category } : {},
|
|
660
|
+
...meta?.icon ? { icon: meta.icon } : {},
|
|
661
|
+
...meta?.description ? { description: meta.description } : {},
|
|
662
|
+
...meta?.layoutRegions?.length ? { layoutRegions: meta.layoutRegions } : {},
|
|
663
|
+
schema
|
|
664
|
+
};
|
|
665
|
+
});
|
|
666
|
+
}
|
|
667
|
+
function buildBlockManifest(blocks, options = {}) {
|
|
668
|
+
return {
|
|
669
|
+
blocks: registryToManifestBlocks(
|
|
670
|
+
blocksToSchemas(blocks),
|
|
671
|
+
blocksToMeta(blocks, { category: options.category })
|
|
672
|
+
),
|
|
673
|
+
regions: options.regions ? layoutRegionsToBridge(options.regions) : null
|
|
674
|
+
};
|
|
675
|
+
}
|
|
676
|
+
|
|
621
677
|
// src/data/localize-href.ts
|
|
622
678
|
var PROTOCOL_OR_RELATIVE = /^([a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
623
679
|
function isExternalHref(href) {
|
|
@@ -707,7 +763,7 @@ function splitLocaleFromPath(path, siteLocales) {
|
|
|
707
763
|
var CMSSY_LOCALE_HEADER = "x-cmssy-locale";
|
|
708
764
|
|
|
709
765
|
// src/bridge/protocol.ts
|
|
710
|
-
var PROTOCOL_VERSION =
|
|
766
|
+
var PROTOCOL_VERSION = 3;
|
|
711
767
|
var SHORTCUT_ACTIONS = [
|
|
712
768
|
"undo",
|
|
713
769
|
"redo",
|
|
@@ -765,7 +821,7 @@ function parseEditorMessage(data, origin, expectedOrigin) {
|
|
|
765
821
|
protocolVersion: PROTOCOL_VERSION,
|
|
766
822
|
...isObject(data.style) ? { style: data.style } : {},
|
|
767
823
|
...isObject(data.advanced) ? { advanced: data.advanced } : {},
|
|
768
|
-
...typeof data.
|
|
824
|
+
...typeof data.layoutRegion === "string" ? { layoutRegion: data.layoutRegion } : {}
|
|
769
825
|
} : null;
|
|
770
826
|
case "cmssy:parent-ready":
|
|
771
827
|
return data.protocolVersion === PROTOCOL_VERSION ? { type: "cmssy:parent-ready", protocolVersion: PROTOCOL_VERSION } : null;
|
|
@@ -991,4 +1047,4 @@ async function verifyCmssyWebhook(options) {
|
|
|
991
1047
|
return parsed;
|
|
992
1048
|
}
|
|
993
1049
|
|
|
994
|
-
export { CMSSY_EDIT_HEADER, CMSSY_EDIT_QUERY_PARAM, CMSSY_LOCALE_HEADER, CMSSY_RATE_LIMIT_WINDOW_MS, CMSSY_RETRY_MODES, CMSSY_SECRET_QUERY_PARAM, CmssyRequestError, CmssyWebhookError, DEFAULT_CMSSY_API_URL, DEFAULT_CMSSY_EDITOR_ORIGINS, PROTOCOL_VERSION, SHORTCUT_ACTIONS, applyCmssyCsp, createCmssyClient, defineCmssyConfig, defineCmssyLayout, fields, graphqlRequest, isProtocolCompatible, isVerifiedEditUrl, localizeHref, mediaAlt, mediaUrl, mediaUrls, normalizeOrigin, parseEditorMessage, postToEditor, resolveCmssyLocale, resolveEditorOrigin, verifyCmssyWebhook };
|
|
1050
|
+
export { CMSSY_EDIT_HEADER, CMSSY_EDIT_QUERY_PARAM, CMSSY_LOCALE_HEADER, CMSSY_RATE_LIMIT_WINDOW_MS, CMSSY_RETRY_MODES, CMSSY_SECRET_QUERY_PARAM, CmssyRequestError, CmssyWebhookError, DEFAULT_CMSSY_API_URL, DEFAULT_CMSSY_EDITOR_ORIGINS, PROTOCOL_VERSION, SHORTCUT_ACTIONS, applyCmssyCsp, blocksToMeta, blocksToSchemas, buildBlockManifest, createCmssyClient, defineCmssyConfig, defineCmssyLayout, fields, graphqlRequest, isProtocolCompatible, isVerifiedEditUrl, layoutRegionsToBridge, localizeHref, mediaAlt, mediaUrl, mediaUrls, normalizeOrigin, parseEditorMessage, postToEditor, propsToSchema, registryToManifestBlocks, resolveCmssyLocale, resolveEditorOrigin, verifyCmssyWebhook };
|
package/dist/internal.cjs
CHANGED
|
@@ -257,7 +257,7 @@ var PUBLIC_PAGE_LAYOUTS_QUERY = `query PublicPageLayouts($workspaceSlug: String!
|
|
|
257
257
|
public {
|
|
258
258
|
page {
|
|
259
259
|
layouts(workspaceSlug: $workspaceSlug, pageSlug: $pageSlug, previewSecret: $previewSecret) {
|
|
260
|
-
|
|
260
|
+
region
|
|
261
261
|
blocks { id type content style advanced order isActive }
|
|
262
262
|
settings
|
|
263
263
|
}
|
|
@@ -1282,7 +1282,7 @@ var CMSSY_DELIVERY_OPERATIONS = [
|
|
|
1282
1282
|
document: PUBLIC_PAGE_META_QUERY
|
|
1283
1283
|
},
|
|
1284
1284
|
{
|
|
1285
|
-
purpose: "Header, footer and the other layout
|
|
1285
|
+
purpose: "Header, footer and the other layout regions for a page.",
|
|
1286
1286
|
document: PUBLIC_PAGE_LAYOUTS_QUERY
|
|
1287
1287
|
},
|
|
1288
1288
|
{
|
package/dist/internal.d.cts
CHANGED
|
@@ -3,8 +3,8 @@ import { CmssyFormDefinition, BuildBlockContextExtra, CmssyBlockContext, CmssyCl
|
|
|
3
3
|
export { CmssySiteLocales } from '@cmssy/types';
|
|
4
4
|
import { G as GraphqlRequestOptions } from './locale-JyBHqpAQ.cjs';
|
|
5
5
|
export { C as CMSSY_LOCALE_HEADER, a as localeForPath, b as localeForPathname, l as localizeHref, c as resolveSiteLocales, s as splitCmssyLocale, d as splitLocaleFromPath } from './locale-JyBHqpAQ.cjs';
|
|
6
|
-
import { Q as QueryScopedOptions } from './csp-
|
|
7
|
-
export { F as cmssyCspHeaders, G as isDevelopment, H as layoutRegionIds, J as resolveInitialTarget, K as toCspOrigin } from './csp-
|
|
6
|
+
import { Q as QueryScopedOptions } from './csp-BHjoSZ2p.cjs';
|
|
7
|
+
export { F as cmssyCspHeaders, G as isDevelopment, H as layoutRegionIds, J as resolveInitialTarget, K as toCspOrigin } from './csp-BHjoSZ2p.cjs';
|
|
8
8
|
export { localizedPath } from './internal/locale.cjs';
|
|
9
9
|
|
|
10
10
|
declare const SITE_CONFIG_QUERY = "query PublicSiteConfig($workspaceSlug: String!) {\n public {\n siteConfig(workspaceSlug: $workspaceSlug) {\n id\n workspaceId\n siteName\n defaultLanguage\n enabledLanguages\n enabledFeatures\n notFoundPageId\n previewUrl\n branding {\n brandName\n logoUrl\n logoDarkUrl\n faviconUrl\n ogImageUrl\n }\n }\n }\n}";
|
package/dist/internal.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { CmssyFormDefinition, BuildBlockContextExtra, CmssyBlockContext, CmssyCl
|
|
|
3
3
|
export { CmssySiteLocales } from '@cmssy/types';
|
|
4
4
|
import { G as GraphqlRequestOptions } from './locale-D9KI4bND.js';
|
|
5
5
|
export { C as CMSSY_LOCALE_HEADER, a as localeForPath, b as localeForPathname, l as localizeHref, c as resolveSiteLocales, s as splitCmssyLocale, d as splitLocaleFromPath } from './locale-D9KI4bND.js';
|
|
6
|
-
import { Q as QueryScopedOptions } from './csp-
|
|
7
|
-
export { F as cmssyCspHeaders, G as isDevelopment, H as layoutRegionIds, J as resolveInitialTarget, K as toCspOrigin } from './csp-
|
|
6
|
+
import { Q as QueryScopedOptions } from './csp-COFMUmsq.js';
|
|
7
|
+
export { F as cmssyCspHeaders, G as isDevelopment, H as layoutRegionIds, J as resolveInitialTarget, K as toCspOrigin } from './csp-COFMUmsq.js';
|
|
8
8
|
export { localizedPath } from './internal/locale.js';
|
|
9
9
|
|
|
10
10
|
declare const SITE_CONFIG_QUERY = "query PublicSiteConfig($workspaceSlug: String!) {\n public {\n siteConfig(workspaceSlug: $workspaceSlug) {\n id\n workspaceId\n siteName\n defaultLanguage\n enabledLanguages\n enabledFeatures\n notFoundPageId\n previewUrl\n branding {\n brandName\n logoUrl\n logoDarkUrl\n faviconUrl\n ogImageUrl\n }\n }\n }\n}";
|
package/dist/internal.js
CHANGED
|
@@ -255,7 +255,7 @@ var PUBLIC_PAGE_LAYOUTS_QUERY = `query PublicPageLayouts($workspaceSlug: String!
|
|
|
255
255
|
public {
|
|
256
256
|
page {
|
|
257
257
|
layouts(workspaceSlug: $workspaceSlug, pageSlug: $pageSlug, previewSecret: $previewSecret) {
|
|
258
|
-
|
|
258
|
+
region
|
|
259
259
|
blocks { id type content style advanced order isActive }
|
|
260
260
|
settings
|
|
261
261
|
}
|
|
@@ -1280,7 +1280,7 @@ var CMSSY_DELIVERY_OPERATIONS = [
|
|
|
1280
1280
|
document: PUBLIC_PAGE_META_QUERY
|
|
1281
1281
|
},
|
|
1282
1282
|
{
|
|
1283
|
-
purpose: "Header, footer and the other layout
|
|
1283
|
+
purpose: "Header, footer and the other layout regions for a page.",
|
|
1284
1284
|
document: PUBLIC_PAGE_LAYOUTS_QUERY
|
|
1285
1285
|
},
|
|
1286
1286
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cmssy/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "15.0.0",
|
|
4
4
|
"description": "Framework-agnostic cmssy gateway: GraphQL client, block/field system, editor protocol. No React, no Next.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cmssy",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"vitest": "^2.1.0"
|
|
88
88
|
},
|
|
89
89
|
"dependencies": {
|
|
90
|
-
"@cmssy/types": "0.
|
|
90
|
+
"@cmssy/types": "0.40.0",
|
|
91
91
|
"jose": "^6.2.3"
|
|
92
92
|
},
|
|
93
93
|
"scripts": {
|