@platecms/delta-cast 0.4.1 → 0.6.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/README.md CHANGED
@@ -51,3 +51,63 @@ const castTree = {
51
51
  const hast = toHast(castTree);
52
52
  const htmlString = toHtml(hast);
53
53
  ```
54
+
55
+
56
+ # Normalization
57
+
58
+ A CAST tree can and should be normalized to ensure that it is in a consistent and predictable state. Different trees that represent the same content should be normalized to a single, canonical form.
59
+
60
+ ## Usage
61
+
62
+ ```typescript
63
+ import { normalizeCast } from '@platecms/delta-cast';
64
+
65
+ const normalizedTree = normalizeCast(castTree);
66
+ ```
67
+
68
+ ## Normalization Rules
69
+
70
+ The `normalizeCast` function applies the following normalization rules in an iterative process:
71
+
72
+ ### 1. Adjacent Node Merging
73
+ - **Text nodes**: Merge adjacent `text` nodes by concatenating their values
74
+ - **Formatting nodes**: Merge adjacent formatting nodes of the same type by combining their children
75
+ - **Mergeable types**: `text`, `bold`, `italic`, `underline`, `strikethrough`, `highlight`
76
+ - **Non-mergeable types**: `contentValue`, `externalLink`, `internalLink`, `inlineCode`
77
+
78
+ ### 2. Formatting Node Nesting Order
79
+ Formatting nodes are reordered to follow a consistent hierarchy:
80
+ ```
81
+ bold -> italic -> underline -> strikethrough -> highlight
82
+ ```
83
+
84
+ ### 3. Duplicate Formatting Removal
85
+ - Remove duplicate formatting nodes in a single path (e.g., `bold` containing `bold`)
86
+ - This prevents redundant nesting that doesn't change the visual output
87
+
88
+ ### 4. Empty Node Cleanup
89
+ - Remove empty formatting (inline) nodes that contain no children
90
+ - Block-level container nodes (paragraphs, headings, lists, etc.) are preserved even when empty
91
+
92
+ ## Special Behavior
93
+
94
+ - **ContentValue nodes**: Completely untouched - their nested CAST trees are never normalized
95
+ - **Property preservation**: All node properties (`url`, `target`, `prn`, `level`, `lang`, etc.) are preserved
96
+ - **Iterative process**: Normalization is an iterative process that continues until no more changes are detected
97
+ - **Immutable**: Returns a new tree without modifying the input
98
+
99
+ ## Formatting Priority
100
+
101
+ The `FORMATTING_PRIORITY` constant defines the canonical nesting order for formatting nodes:
102
+
103
+ ```typescript
104
+ export const FORMATTING_PRIORITY = {
105
+ 'bold': 1, // Highest priority
106
+ 'italic': 2,
107
+ 'underline': 3,
108
+ 'strikethrough': 4,
109
+ 'highlight': 5 // Lowest priority
110
+ } as const;
111
+ ```
112
+
113
+ This constant should be used across all packages (e.g., `cast-util-to-slate`, `cast-util-from-slate`) to ensure consistent formatting hierarchy throughout the platform.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@platecms/delta-cast",
3
3
  "description": "Package containing the definition of CAST",
4
- "version": "0.4.1",
4
+ "version": "0.6.0",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -22,7 +22,7 @@
22
22
  "tslib": "2.8.1"
23
23
  },
24
24
  "peerDependencies": {
25
- "@platecms/delta-plate-resource-notation": "0.4.1"
25
+ "@platecms/delta-plate-resource-notation": "0.6.0"
26
26
  },
27
27
  "type": "commonjs"
28
28
  }
package/src/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export type * from "./lib/schemas/schema";
2
2
  export * from "./lib/validate-cast";
3
3
  export * from "./lib/invalid-cast.error";
4
+ export * from "./lib/normalize-cast";
package/src/index.js CHANGED
@@ -3,4 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./lib/validate-cast"), exports);
5
5
  tslib_1.__exportStar(require("./lib/invalid-cast.error"), exports);
6
+ tslib_1.__exportStar(require("./lib/normalize-cast"), exports);
6
7
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/cast/src/index.ts"],"names":[],"mappings":";;;AACA,8DAAoC;AACpC,mEAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/cast/src/index.ts"],"names":[],"mappings":";;;AACA,8DAAoC;AACpC,mEAAyC;AACzC,+DAAqC"}
@@ -0,0 +1,9 @@
1
+ import { Root } from "./schemas/schema";
2
+ export declare const FORMATTING_PRIORITY: {
3
+ readonly bold: 1;
4
+ readonly italic: 2;
5
+ readonly underline: 3;
6
+ readonly strikethrough: 4;
7
+ readonly highlight: 5;
8
+ };
9
+ export declare function normalizeCast(root: Root): Root;
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FORMATTING_PRIORITY = void 0;
4
+ exports.normalizeCast = normalizeCast;
5
+ exports.FORMATTING_PRIORITY = {
6
+ bold: 1,
7
+ italic: 2,
8
+ underline: 3,
9
+ strikethrough: 4,
10
+ highlight: 5,
11
+ };
12
+ function hasChildren(node) {
13
+ return "children" in node && Array.isArray(node.children);
14
+ }
15
+ function isFormattingNode(node) {
16
+ const formattingTypes = ["bold", "italic", "underline", "strikethrough", "highlight"];
17
+ return formattingTypes.includes(node.type);
18
+ }
19
+ function canMerge(node1, node2) {
20
+ const mergeableTypes = ["bold", "italic", "underline", "strikethrough", "highlight", "text"];
21
+ if (mergeableTypes.includes(node1.type) && node1.type === node2.type) {
22
+ return true;
23
+ }
24
+ return false;
25
+ }
26
+ function mergeNodes(source, target) {
27
+ if (source.type === "text" && target.type === "text") {
28
+ target.value = source.value + target.value;
29
+ }
30
+ else if (source.type === target.type && hasChildren(source) && hasChildren(target)) {
31
+ const sourceWithChildren = source;
32
+ const targetWithChildren = target;
33
+ targetWithChildren.children = [...sourceWithChildren.children, ...targetWithChildren.children];
34
+ }
35
+ }
36
+ function shouldChildBeAboveParent(childType, parentType) {
37
+ const childPriority = exports.FORMATTING_PRIORITY[childType] || 999;
38
+ const parentPriority = exports.FORMATTING_PRIORITY[parentType] || 999;
39
+ return childPriority < parentPriority;
40
+ }
41
+ function splitParentIntoSeparateNodes(grandParent, parent, child, parentIndexInGrandParent, childIndexInParent) {
42
+ const siblingsBeforeChild = parent.children.slice(0, childIndexInParent);
43
+ const siblingsAfterChild = parent.children.slice(childIndexInParent + 1);
44
+ let insertionOffset = 0;
45
+ if (siblingsBeforeChild.length > 0) {
46
+ const newBeforeParent = { ...parent, children: siblingsBeforeChild };
47
+ grandParent.children.splice(parentIndexInGrandParent, 0, newBeforeParent);
48
+ insertionOffset = 1;
49
+ }
50
+ if (siblingsAfterChild.length > 0) {
51
+ const newAfterParent = { ...parent, children: siblingsAfterChild };
52
+ grandParent.children.splice(parentIndexInGrandParent + 1 + insertionOffset, 0, newAfterParent);
53
+ }
54
+ parent.children = [child];
55
+ return insertionOffset;
56
+ }
57
+ function processFormattingChild(grandParent, parent, child, parentIndexInGrandParent, childIndexInParent) {
58
+ if (!shouldChildBeAboveParent(child.type, parent.type)) {
59
+ return false;
60
+ }
61
+ let parentIndexInGrandParentOffset = 0;
62
+ if (parent.children.length > 1) {
63
+ parentIndexInGrandParentOffset += splitParentIntoSeparateNodes(grandParent, parent, child, parentIndexInGrandParent, childIndexInParent);
64
+ }
65
+ parent.children = child.children;
66
+ child.children = [parent];
67
+ grandParent.children[parentIndexInGrandParent + parentIndexInGrandParentOffset] = child;
68
+ return true;
69
+ }
70
+ function bubbleFormattingNodes(node, parent, nodeIndexInParent) {
71
+ let hasChanges = false;
72
+ if (!hasChildren(node)) {
73
+ return hasChanges;
74
+ }
75
+ for (let i = 0; i < node.children.length; i++) {
76
+ const child = node.children[i];
77
+ if (hasChildren(child)) {
78
+ hasChanges = bubbleFormattingNodes(child, node, i) || hasChanges;
79
+ }
80
+ }
81
+ if (!isFormattingNode(node)) {
82
+ return hasChanges;
83
+ }
84
+ if (!parent || nodeIndexInParent === undefined) {
85
+ return hasChanges;
86
+ }
87
+ for (let i = 0; i < node.children.length; i++) {
88
+ const child = node.children[i];
89
+ if (isFormattingNode(child) && hasChildren(child)) {
90
+ hasChanges = processFormattingChild(parent, node, child, nodeIndexInParent, i) || hasChanges;
91
+ }
92
+ }
93
+ return hasChanges;
94
+ }
95
+ function shouldRemoveEmptyNode(node) {
96
+ if (!isFormattingNode(node)) {
97
+ return false;
98
+ }
99
+ if (!hasChildren(node) || node.children.length === 0) {
100
+ return true;
101
+ }
102
+ return false;
103
+ }
104
+ function mergeAdjacentNodes(node) {
105
+ let hasChanges = false;
106
+ for (let i = 0; i < node.children.length - 1; i++) {
107
+ const current = node.children[i];
108
+ const next = node.children[i + 1];
109
+ if (canMerge(current, next)) {
110
+ mergeNodes(current, next);
111
+ node.children.splice(i, 1);
112
+ hasChanges = true;
113
+ i--;
114
+ }
115
+ }
116
+ for (const child of node.children) {
117
+ if (hasChildren(child)) {
118
+ hasChanges = mergeAdjacentNodes(child) || hasChanges;
119
+ }
120
+ }
121
+ return hasChanges;
122
+ }
123
+ function reorderFormattingNodes(node) {
124
+ let hasChanges = true;
125
+ let anyChanges = false;
126
+ while (hasChanges) {
127
+ hasChanges = false;
128
+ hasChanges = bubbleFormattingNodes(node) || hasChanges;
129
+ if (hasChanges) {
130
+ anyChanges = true;
131
+ }
132
+ }
133
+ return anyChanges;
134
+ }
135
+ function removeDuplicateFormatting(node, ancestorsFormattingNodeTypes, parent, nodeIndexInParent) {
136
+ let hasChanges = false;
137
+ if (!hasChildren(node)) {
138
+ return hasChanges;
139
+ }
140
+ const newAncestorsFormattingNodeTypes = isFormattingNode(node)
141
+ ? [...ancestorsFormattingNodeTypes, node.type]
142
+ : ancestorsFormattingNodeTypes;
143
+ for (let i = 0; i < node.children.length; i++) {
144
+ const child = node.children[i];
145
+ if (hasChildren(child)) {
146
+ hasChanges = removeDuplicateFormatting(child, newAncestorsFormattingNodeTypes, node, i) || hasChanges;
147
+ }
148
+ }
149
+ if (!parent || nodeIndexInParent === undefined) {
150
+ return hasChanges;
151
+ }
152
+ if (ancestorsFormattingNodeTypes.includes(node.type)) {
153
+ parent.children.splice(nodeIndexInParent, 1, ...node.children);
154
+ hasChanges = true;
155
+ }
156
+ return hasChanges;
157
+ }
158
+ function cleanupEmptyNodes(node) {
159
+ let hasChanges = false;
160
+ if (!hasChildren(node)) {
161
+ return hasChanges;
162
+ }
163
+ for (let i = node.children.length - 1; i >= 0; i--) {
164
+ const child = node.children[i];
165
+ if (hasChildren(child)) {
166
+ hasChanges = cleanupEmptyNodes(child) || hasChanges;
167
+ }
168
+ }
169
+ for (let i = node.children.length - 1; i >= 0; i--) {
170
+ const child = node.children[i];
171
+ if (shouldRemoveEmptyNode(child)) {
172
+ node.children.splice(i, 1);
173
+ hasChanges = true;
174
+ }
175
+ }
176
+ return hasChanges;
177
+ }
178
+ function normalizeCast(root) {
179
+ let hasChanges = true;
180
+ const currentRoot = JSON.parse(JSON.stringify(root));
181
+ while (hasChanges) {
182
+ hasChanges = false;
183
+ hasChanges = mergeAdjacentNodes(currentRoot) || hasChanges;
184
+ hasChanges = reorderFormattingNodes(currentRoot) || hasChanges;
185
+ hasChanges = removeDuplicateFormatting(currentRoot, []) || hasChanges;
186
+ hasChanges = cleanupEmptyNodes(currentRoot) || hasChanges;
187
+ }
188
+ return currentRoot;
189
+ }
190
+ //# sourceMappingURL=normalize-cast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-cast.js","sourceRoot":"","sources":["../../../../../../packages/cast/src/lib/normalize-cast.ts"],"names":[],"mappings":";;;AAgXA,sCAqBC;AA/XY,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,aAAa,EAAE,CAAC;IAChB,SAAS,EAAE,CAAC;CACJ,CAAC;AAKX,SAAS,WAAW,CAAC,IAAsB;IACzC,OAAO,UAAU,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,IAA8B,CAAC,QAAQ,CAAC,CAAC;AACvF,CAAC;AAKD,SAAS,gBAAgB,CAAC,IAAa;IACrC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;IACtF,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAKD,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAc;IAE9C,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7F,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAKD,SAAS,UAAU,CAAC,MAAe,EAAE,MAAe;IAClD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAErD,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7C,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAErF,MAAM,kBAAkB,GAAG,MAA2C,CAAC;QACvE,MAAM,kBAAkB,GAAG,MAA2C,CAAC;QACvE,kBAAkB,CAAC,QAAQ,GAAG,CAAC,GAAG,kBAAkB,CAAC,QAAQ,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAKD,SAAS,wBAAwB,CAAC,SAAiB,EAAE,UAAkB;IACrE,MAAM,aAAa,GAAG,2BAAmB,CAAC,SAA6C,CAAC,IAAI,GAAG,CAAC;IAChG,MAAM,cAAc,GAAG,2BAAmB,CAAC,UAA8C,CAAC,IAAI,GAAG,CAAC;IAElG,OAAO,aAAa,GAAG,cAAc,CAAC;AACxC,CAAC;AA4CD,SAAS,4BAA4B,CACnC,WAAmB,EACnB,MAAc,EACd,KAAa,EACb,wBAAgC,EAChC,kBAA0B;IAE1B,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzE,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;IAEzE,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,eAAe,GAAW,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;QAC7E,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,EAAE,eAA0B,CAAC,CAAC;QACrF,eAAe,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,cAAc,GAAW,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;QAC3E,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,GAAG,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,cAAyB,CAAC,CAAC;IAC5G,CAAC;IAED,MAAM,CAAC,QAAQ,GAAG,CAAC,KAAgB,CAAC,CAAC;IAErC,OAAO,eAAe,CAAC;AACzB,CAAC;AAMD,SAAS,sBAAsB,CAC7B,WAAmB,EACnB,MAAc,EACd,KAAa,EACb,wBAAgC,EAChC,kBAA0B;IAE1B,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,8BAA8B,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,8BAA8B,IAAI,4BAA4B,CAC5D,WAAW,EACX,MAAM,EACN,KAAK,EACL,wBAAwB,EACxB,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACjC,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAiB,CAAC,CAAC;IACrC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,GAAG,8BAA8B,CAAC,GAAG,KAAgB,CAAC;IACnG,OAAO,IAAI,CAAC;AACd,CAAC;AAKD,SAAS,qBAAqB,CAAC,IAAY,EAAE,MAAe,EAAE,iBAA0B;IACtF,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC;IACpB,CAAC;IAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC;QACnE,CAAC;IACH,CAAC;IAGD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC;IACpB,CAAC;IAGD,IAAI,CAAC,MAAM,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAKD,SAAS,qBAAqB,CAAC,IAAa;IAE1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAqBD,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,UAAU,GAAG,KAAK,CAAC;IAGvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAElC,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAE5B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,UAAU,GAAG,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAGD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAKD,SAAS,sBAAsB,CAAC,IAAY;IAC1C,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,UAAU,GAAG,KAAK,CAAC;IAGvB,OAAO,UAAU,EAAE,CAAC;QAClB,UAAU,GAAG,KAAK,CAAC;QACnB,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;QACvD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAKD,SAAS,yBAAyB,CAChC,IAAY,EACZ,4BAAsC,EACtC,MAAe,EACf,iBAA0B;IAE1B,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC;IACpB,CAAC;IAGD,MAAM,+BAA+B,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAC5D,CAAC,CAAC,CAAC,GAAG,4BAA4B,EAAE,IAAI,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAC,4BAA4B,CAAC;IAGjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,UAAU,GAAG,yBAAyB,CAAC,KAAK,EAAE,+BAA+B,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC;QACxG,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC;IAGD,IAAI,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAKD,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC;IACpB,CAAC;IAGD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;QACtD,CAAC;IACH,CAAC;IAID,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE/B,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AASD,SAAgB,aAAa,CAAC,IAAU;IACtC,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAS,CAAC;IAE7D,OAAO,UAAU,EAAE,CAAC;QAClB,UAAU,GAAG,KAAK,CAAC;QAGnB,UAAU,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC;QAG3D,UAAU,GAAG,sBAAsB,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC;QAG/D,UAAU,GAAG,yBAAyB,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC;QAGtE,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC;IAC5D,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -132,7 +132,7 @@ function assertValidContent(value) {
132
132
  assertValidInterpolatedContentValue(content);
133
133
  break;
134
134
  default:
135
- throw new invalid_cast_error_1.InvalidCastError("Invalid Content type.");
135
+ throw new invalid_cast_error_1.InvalidCastError(`Invalid Content type '${content.type}'.`);
136
136
  }
137
137
  }
138
138
  function validateCast(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"validate-cast.js","sourceRoot":"","sources":["../../../../../../packages/cast/src/lib/validate-cast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-cast.js","sourceRoot":"","sources":["../../../../../../packages/cast/src/lib/validate-cast.ts"],"names":[],"mappings":";;;AAwLA,oCAaC;AAxLD,6DAAwD;AACxD,2FAA+E;AAMlE,QAAA,SAAS,GACpB,8KAA8K,CAAC;AAEjL,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,qCAAgB,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC/E,MAAM,IAAI,qCAAgB,CAAC,iBAAiB,KAAK,CAAC,IAAI,0BAA0B,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,MAAM,GAAG,KAAe,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,qCAAgB,CAAC,0CAA0C,CAAC,CAAC;IACzE,CAAC;IAGD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,OAAO,GAAG,KAAgB,CAAC;IACjC,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,qCAAgB,CAAC,wCAAwC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,KAAgB,CAAC;IAC9B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,qCAAgB,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,KAAa,CAAC;IAC3B,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,qCAAgB,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,KAAa,CAAC;IAC3B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,IAAI,qCAAgB,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mCAAmC,CAAC,KAAc;IACzD,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,YAAY,GAAG,KAAiC,CAAC;IACvD,IAAI,CAAC;QACH,mCAAG,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,+CAAe,EAAE,CAAC;YACrC,MAAM,IAAI,qCAAgB,CAAC,qCAAqC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAEzB,MAAM,IAAI,GAAG,KAAqB,CAAC;IACnC,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,qCAAgB,CAAC,2BAA2B,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,iBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,qCAAgB,CAAC,6BAA6B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,KAAqB,CAAC;IACnC,IAAI,CAAC;QACH,mCAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,+CAAe,EAAE,CAAC;YACrC,MAAM,IAAI,qCAAgB,CAAC,6BAA6B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,KAAgB,CAAC;IACjC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,WAAW,CAAC;QACjB,KAAK,eAAe,CAAC;QACrB,KAAK,WAAW;YACd,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM;QACR,KAAK,cAAc;YACjB,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,cAAc;YACjB,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,SAAS;YACZ,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,YAAY;YACf,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM;QACR,KAAK,MAAM;YACT,eAAe,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,MAAM;YACT,eAAe,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,cAAc;YACjB,mCAAmC,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM;QACR;YACE,MAAM,IAAI,qCAAgB,CAAC,yBAA0B,OAA4B,CAAC,IAAI,IAAI,CAAC,CAAC;IAChG,CAAC;AACH,CAAC;AAMD,SAAgB,YAAY,CAAC,KAAc;IACzC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,KAAa,CAAC;IAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,qCAAgB,CAAC,kCAAkC,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,qCAAgB,CAAC,wCAAwC,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC5C,CAAC"}