@10up/block-renderer-validator 0.1.5 → 0.2.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.
@@ -0,0 +1,26 @@
1
+ import type { BlockTree, BlockElement, ValidationResult } from '@10up/block-renderer-core';
2
+ /**
3
+ * Validates that a block follows block-specific rules.
4
+ *
5
+ * @param element - The block element to validate
6
+ * @param tree - The full block tree (for checking children)
7
+ * @returns Validation result
8
+ */
9
+ export declare function validateBlockRules(element: BlockElement, tree: BlockTree): ValidationResult;
10
+ /**
11
+ * Validates all elements in a tree against block-specific rules.
12
+ *
13
+ * @param tree - The block tree to validate
14
+ * @returns Combined validation result
15
+ */
16
+ export declare function validateTreeBlockRules(tree: BlockTree): ValidationResult;
17
+ /**
18
+ * Gets guidance for blocks that have special requirements.
19
+ * Used by prompt generator to provide context about block usage.
20
+ */
21
+ export declare function getBlockSpecialRequirements(): Array<{
22
+ blockType: string;
23
+ requirement: string;
24
+ example: string;
25
+ }>;
26
+ //# sourceMappingURL=block-rules-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-rules-validator.d.ts","sourceRoot":"","sources":["../src/block-rules-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AA4B3F;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,GACd,gBAAgB,CAqDlB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAiBxE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,KAAK,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CA0DD"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Block-specific validation rules.
3
+ * These rules enforce proper usage patterns for specific block types.
4
+ */
5
+ /**
6
+ * Blocks that require inner blocks instead of certain attributes.
7
+ * Maps block type to { deprecatedAttr, requiredChildType, description }.
8
+ */
9
+ const INNER_BLOCKS_REQUIRED = {
10
+ 'core/list': {
11
+ deprecatedAttr: 'values',
12
+ requiredChildType: 'core/list-item',
13
+ description: 'List blocks must use core/list-item inner blocks instead of the deprecated "values" attribute',
14
+ },
15
+ 'core/navigation': {
16
+ deprecatedAttr: 'items',
17
+ requiredChildType: 'core/navigation-link',
18
+ description: 'Navigation blocks must use inner blocks (core/navigation-link, core/navigation-submenu) instead of "items" attribute',
19
+ },
20
+ };
21
+ /**
22
+ * Validates that a block follows block-specific rules.
23
+ *
24
+ * @param element - The block element to validate
25
+ * @param tree - The full block tree (for checking children)
26
+ * @returns Validation result
27
+ */
28
+ export function validateBlockRules(element, tree) {
29
+ const errors = [];
30
+ const warnings = [];
31
+ // Check inner blocks requirements
32
+ const innerBlocksRule = INNER_BLOCKS_REQUIRED[element.type];
33
+ if (innerBlocksRule) {
34
+ const hasDeprecatedAttr = element.props[innerBlocksRule.deprecatedAttr] !== undefined;
35
+ const hasRequiredChildren = element.children?.some(key => {
36
+ const child = tree.elements[key];
37
+ return child?.type === innerBlocksRule.requiredChildType;
38
+ });
39
+ if (hasDeprecatedAttr && !hasRequiredChildren) {
40
+ errors.push(`[${element.key}] ${innerBlocksRule.description}. ` +
41
+ `Found "${innerBlocksRule.deprecatedAttr}" attribute but no ${innerBlocksRule.requiredChildType} children.`);
42
+ }
43
+ else if (hasDeprecatedAttr) {
44
+ warnings.push(`[${element.key}] Block uses deprecated "${innerBlocksRule.deprecatedAttr}" attribute. ` +
45
+ `Consider using ${innerBlocksRule.requiredChildType} inner blocks instead.`);
46
+ }
47
+ }
48
+ // Validate core/button is inside core/buttons
49
+ if (element.type === 'core/button') {
50
+ const parent = element.parentKey ? tree.elements[element.parentKey] : null;
51
+ if (parent && parent.type !== 'core/buttons') {
52
+ errors.push(`[${element.key}] core/button must be a direct child of core/buttons, ` +
53
+ `but found parent "${parent.type}"`);
54
+ }
55
+ }
56
+ // Validate core/column is inside core/columns
57
+ if (element.type === 'core/column') {
58
+ const parent = element.parentKey ? tree.elements[element.parentKey] : null;
59
+ if (parent && parent.type !== 'core/columns') {
60
+ errors.push(`[${element.key}] core/column must be a direct child of core/columns, ` +
61
+ `but found parent "${parent.type}"`);
62
+ }
63
+ }
64
+ return {
65
+ valid: errors.length === 0,
66
+ errors,
67
+ warnings: warnings.length > 0 ? warnings : undefined,
68
+ };
69
+ }
70
+ /**
71
+ * Validates all elements in a tree against block-specific rules.
72
+ *
73
+ * @param tree - The block tree to validate
74
+ * @returns Combined validation result
75
+ */
76
+ export function validateTreeBlockRules(tree) {
77
+ const errors = [];
78
+ const warnings = [];
79
+ for (const element of Object.values(tree.elements)) {
80
+ const result = validateBlockRules(element, tree);
81
+ errors.push(...result.errors);
82
+ if (result.warnings) {
83
+ warnings.push(...result.warnings);
84
+ }
85
+ }
86
+ return {
87
+ valid: errors.length === 0,
88
+ errors,
89
+ warnings: warnings.length > 0 ? warnings : undefined,
90
+ };
91
+ }
92
+ /**
93
+ * Gets guidance for blocks that have special requirements.
94
+ * Used by prompt generator to provide context about block usage.
95
+ */
96
+ export function getBlockSpecialRequirements() {
97
+ return [
98
+ {
99
+ blockType: 'core/list',
100
+ requirement: 'Must use core/list-item inner blocks for list items. The deprecated "values" attribute is not supported.',
101
+ example: `{
102
+ "key": "list-1",
103
+ "type": "core/list",
104
+ "props": { "ordered": false },
105
+ "children": ["item-1", "item-2"]
106
+ },
107
+ {
108
+ "key": "item-1",
109
+ "type": "core/list-item",
110
+ "props": { "content": "First item" },
111
+ "parentKey": "list-1"
112
+ },
113
+ {
114
+ "key": "item-2",
115
+ "type": "core/list-item",
116
+ "props": { "content": "Second item" },
117
+ "parentKey": "list-1"
118
+ }`,
119
+ },
120
+ {
121
+ blockType: 'core/button',
122
+ requirement: 'Must be a direct child of core/buttons wrapper block.',
123
+ example: `{
124
+ "key": "buttons-1",
125
+ "type": "core/buttons",
126
+ "props": { "layout": { "type": "flex" } },
127
+ "children": ["button-1"]
128
+ },
129
+ {
130
+ "key": "button-1",
131
+ "type": "core/button",
132
+ "props": { "text": "Click me", "url": "/page" },
133
+ "parentKey": "buttons-1"
134
+ }`,
135
+ },
136
+ {
137
+ blockType: 'core/column',
138
+ requirement: 'Must be a direct child of core/columns container.',
139
+ example: `{
140
+ "key": "columns-1",
141
+ "type": "core/columns",
142
+ "props": {},
143
+ "children": ["col-1", "col-2"]
144
+ },
145
+ {
146
+ "key": "col-1",
147
+ "type": "core/column",
148
+ "props": { "width": "50%" },
149
+ "children": ["para-1"],
150
+ "parentKey": "columns-1"
151
+ }`,
152
+ },
153
+ ];
154
+ }
155
+ //# sourceMappingURL=block-rules-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-rules-validator.js","sourceRoot":"","sources":["../src/block-rules-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Ignite WP Extension Validator
3
+ *
4
+ * Validates that blocks using Ignite extension attributes include
5
+ * the required classNames for proper frontend rendering.
6
+ */
7
+ import type { BlockTree, BlockElement, ValidationResult } from '@10up/block-renderer-core';
8
+ /**
9
+ * Validates a single element for Ignite extension className requirements.
10
+ */
11
+ export declare function validateIgniteElement(element: BlockElement): ValidationResult;
12
+ /**
13
+ * Validates all elements in a tree for Ignite extension className requirements.
14
+ *
15
+ * @param tree - The block tree to validate
16
+ * @returns Validation result with errors for missing required classNames
17
+ */
18
+ export declare function validateTreeIgniteExtensions(tree: BlockTree): ValidationResult;
19
+ /**
20
+ * Checks if a tree uses any Ignite extension attributes.
21
+ * Useful to determine if Ignite validation should be run.
22
+ */
23
+ export declare function treeUsesIgniteExtensions(tree: BlockTree): boolean;
24
+ /**
25
+ * Gets a list of all Ignite extension attributes found in a tree.
26
+ */
27
+ export declare function getIgniteExtensionsUsed(tree: BlockTree): Array<{
28
+ elementKey: string;
29
+ attribute: string;
30
+ value: unknown;
31
+ }>;
32
+ //# sourceMappingURL=ignite-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignite-validator.d.ts","sourceRoot":"","sources":["../src/ignite-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AAuGnC;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,YAAY,GACpB,gBAAgB,CAgDlB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAqB9E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAajE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,GACd,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAkBlE"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Ignite WP Extension Validator
3
+ *
4
+ * Validates that blocks using Ignite extension attributes include
5
+ * the required classNames for proper frontend rendering.
6
+ */
7
+ /**
8
+ * Validation rules for Ignite extensions that require className
9
+ */
10
+ const IGNITE_VALIDATION_RULES = [
11
+ {
12
+ attribute: 'typographyPreset',
13
+ isActive: (value) => typeof value === 'string' && value.length > 0,
14
+ getRequiredClasses: (value) => [`is-typography-preset-${value}`],
15
+ description: 'Typography preset',
16
+ },
17
+ {
18
+ attribute: 'modalAnchorToTrigger',
19
+ isActive: (value) => typeof value === 'string' && value.length > 0,
20
+ getRequiredClasses: () => ['is-modal-trigger'],
21
+ description: 'Modal trigger',
22
+ },
23
+ {
24
+ attribute: 'animation',
25
+ isActive: (value) => {
26
+ if (typeof value !== 'object' || value === null)
27
+ return false;
28
+ const anim = value;
29
+ return typeof anim.name === 'string' && anim.name.length > 0;
30
+ },
31
+ getRequiredClasses: (value) => {
32
+ const anim = value;
33
+ const classes = ['has-block-animation'];
34
+ if (anim.name) {
35
+ classes.push(anim.name);
36
+ classes.push(`duration-${anim.duration || 300}`);
37
+ }
38
+ if (anim.delay) {
39
+ classes.push(`delay-${anim.delay}`);
40
+ }
41
+ if (anim.easing) {
42
+ classes.push(`timing-${anim.easing}`);
43
+ }
44
+ return classes;
45
+ },
46
+ description: 'Animation',
47
+ },
48
+ {
49
+ attribute: 'enableMobileCarousel',
50
+ isActive: (value) => value === true,
51
+ getRequiredClasses: () => ['has-mobile-carousel'],
52
+ description: 'Mobile carousel',
53
+ },
54
+ ];
55
+ /**
56
+ * Parses the className string into an array of class names.
57
+ */
58
+ function parseClassName(className) {
59
+ if (typeof className !== 'string')
60
+ return [];
61
+ return className.split(/\s+/).filter((c) => c.length > 0);
62
+ }
63
+ /**
64
+ * Checks if all required classes are present in the className.
65
+ */
66
+ function hasRequiredClasses(className, requiredClasses) {
67
+ const missing = [];
68
+ const present = [];
69
+ for (const required of requiredClasses) {
70
+ if (className.includes(required)) {
71
+ present.push(required);
72
+ }
73
+ else {
74
+ missing.push(required);
75
+ }
76
+ }
77
+ return { missing, present };
78
+ }
79
+ /**
80
+ * Validates a single element for Ignite extension className requirements.
81
+ */
82
+ export function validateIgniteElement(element) {
83
+ const errors = [];
84
+ const warnings = [];
85
+ const props = element.props || {};
86
+ const classNames = parseClassName(props.className);
87
+ for (const rule of IGNITE_VALIDATION_RULES) {
88
+ const attrValue = props[rule.attribute];
89
+ // Skip if attribute is not set or not active
90
+ if (attrValue === undefined || !rule.isActive(attrValue)) {
91
+ continue;
92
+ }
93
+ // Get required classes for this attribute
94
+ const requiredClasses = rule.getRequiredClasses(attrValue);
95
+ const { missing } = hasRequiredClasses(classNames, requiredClasses);
96
+ if (missing.length > 0) {
97
+ // For animation, only require the core class for clearer error messages
98
+ if (rule.attribute === 'animation') {
99
+ const coreClassMissing = missing.includes('has-block-animation');
100
+ if (coreClassMissing) {
101
+ errors.push(`[${element.key}] ${rule.description} requires className to include: "${missing.join(' ')}". ` +
102
+ `Add className: "${requiredClasses.join(' ')}" to the block props.`);
103
+ }
104
+ else {
105
+ // Animation name/duration/etc classes are missing - warn but don't error
106
+ warnings.push(`[${element.key}] ${rule.description} className is missing some classes: "${missing.join(' ')}". ` +
107
+ `Expected: "${requiredClasses.join(' ')}"`);
108
+ }
109
+ }
110
+ else {
111
+ errors.push(`[${element.key}] ${rule.description} requires className to include: "${missing.join(' ')}". ` +
112
+ `When using "${rule.attribute}", add the corresponding className.`);
113
+ }
114
+ }
115
+ }
116
+ return {
117
+ valid: errors.length === 0,
118
+ errors,
119
+ warnings: warnings.length > 0 ? warnings : undefined,
120
+ };
121
+ }
122
+ /**
123
+ * Validates all elements in a tree for Ignite extension className requirements.
124
+ *
125
+ * @param tree - The block tree to validate
126
+ * @returns Validation result with errors for missing required classNames
127
+ */
128
+ export function validateTreeIgniteExtensions(tree) {
129
+ const errors = [];
130
+ const warnings = [];
131
+ for (const element of Object.values(tree.elements)) {
132
+ const result = validateIgniteElement(element);
133
+ if (!result.valid) {
134
+ errors.push(...result.errors);
135
+ }
136
+ if (result.warnings) {
137
+ warnings.push(...result.warnings);
138
+ }
139
+ }
140
+ return {
141
+ valid: errors.length === 0,
142
+ errors,
143
+ warnings: warnings.length > 0 ? warnings : undefined,
144
+ };
145
+ }
146
+ /**
147
+ * Checks if a tree uses any Ignite extension attributes.
148
+ * Useful to determine if Ignite validation should be run.
149
+ */
150
+ export function treeUsesIgniteExtensions(tree) {
151
+ const igniteAttributes = IGNITE_VALIDATION_RULES.map((r) => r.attribute);
152
+ for (const element of Object.values(tree.elements)) {
153
+ const props = element.props || {};
154
+ for (const attr of igniteAttributes) {
155
+ if (props[attr] !== undefined) {
156
+ return true;
157
+ }
158
+ }
159
+ }
160
+ return false;
161
+ }
162
+ /**
163
+ * Gets a list of all Ignite extension attributes found in a tree.
164
+ */
165
+ export function getIgniteExtensionsUsed(tree) {
166
+ const results = [];
167
+ const igniteAttributes = IGNITE_VALIDATION_RULES.map((r) => r.attribute);
168
+ for (const element of Object.values(tree.elements)) {
169
+ const props = element.props || {};
170
+ for (const attr of igniteAttributes) {
171
+ if (props[attr] !== undefined) {
172
+ results.push({
173
+ elementKey: element.key,
174
+ attribute: attr,
175
+ value: props[attr],
176
+ });
177
+ }
178
+ }
179
+ }
180
+ return results;
181
+ }
182
+ //# sourceMappingURL=ignite-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignite-validator.js","sourceRoot":"","sources":["../src/ignite-validator.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,8 @@ export { validateColorTokens, validateTypographyTokens, validateSpacingTokens, v
7
7
  export { isPatternReference, validatePatternReference, validateTreePatterns, getPatternReferences, } from './pattern-validator.js';
8
8
  export { validateTemplateStructure, validateTemplateBlockTypes, validateTemplateNesting, validateTemplate, } from './template-validator.js';
9
9
  export type { TemplateValidationResult, ValidateTemplateOptions, } from './template-validator.js';
10
+ export { validateIgniteElement, validateTreeIgniteExtensions, treeUsesIgniteExtensions, getIgniteExtensionsUsed, } from './ignite-validator.js';
11
+ export { validateBlockRules, validateTreeBlockRules, getBlockSpecialRequirements, } from './block-rules-validator.js';
10
12
  /**
11
13
  * Options for full tree validation.
12
14
  */
@@ -25,6 +27,10 @@ export interface ValidateTreeOptions {
25
27
  validateTokens?: boolean;
26
28
  /** Whether to validate pattern references (default: true if patterns provided) */
27
29
  validatePatterns?: boolean;
30
+ /** Whether to validate Ignite extension classNames (default: false) */
31
+ validateIgnite?: boolean;
32
+ /** Whether to validate block-specific rules like list inner blocks (default: true) */
33
+ validateBlockRules?: boolean;
28
34
  }
29
35
  /**
30
36
  * Validates a complete block tree with all available validations.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EAEZ,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAQrE,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAEL,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,mBAAwB,GAChC,oBAAoB,CA4CtB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,mBAAmB,GAC3B,CAAC,IAAI,EAAE,SAAS,KAAK,oBAAoB,CAE3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EAEZ,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAUrE,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAEL,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAEL,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,mBAAwB,GAChC,oBAAoB,CA8DtB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,mBAAmB,GAC3B,CAAC,IAAI,EAAE,SAAS,KAAK,oBAAoB,CAE3C"}
package/dist/index.js CHANGED
@@ -2,6 +2,8 @@ import { validateTreeSchemas } from './schema-validator.js';
2
2
  import { validateTreeNesting } from './tree-validator.js';
3
3
  import { validateTreeTokens } from './token-validator.js';
4
4
  import { validateTreePatterns } from './pattern-validator.js';
5
+ import { validateTreeIgniteExtensions } from './ignite-validator.js';
6
+ import { validateTreeBlockRules } from './block-rules-validator.js';
5
7
  // Re-export individual validators
6
8
  export {
7
9
  // Schema validation
@@ -18,6 +20,12 @@ isPatternReference, validatePatternReference, validateTreePatterns, getPatternRe
18
20
  export {
19
21
  // Template validation
20
22
  validateTemplateStructure, validateTemplateBlockTypes, validateTemplateNesting, validateTemplate, } from './template-validator.js';
23
+ export {
24
+ // Ignite extension validation
25
+ validateIgniteElement, validateTreeIgniteExtensions, treeUsesIgniteExtensions, getIgniteExtensionsUsed, } from './ignite-validator.js';
26
+ export {
27
+ // Block-specific rules validation
28
+ validateBlockRules, validateTreeBlockRules, getBlockSpecialRequirements, } from './block-rules-validator.js';
21
29
  /**
22
30
  * Validates a complete block tree with all available validations.
23
31
  *
@@ -58,6 +66,22 @@ export function validateTree(tree, options = {}) {
58
66
  const patternResult = validateTreePatterns(tree, options.patterns);
59
67
  errors.push(...patternResult.errors);
60
68
  }
69
+ // Ignite extension validation (validates className requirements)
70
+ if (options.validateIgnite) {
71
+ const igniteResult = validateTreeIgniteExtensions(tree);
72
+ errors.push(...igniteResult.errors);
73
+ if (igniteResult.warnings) {
74
+ warnings.push(...igniteResult.warnings);
75
+ }
76
+ }
77
+ // Block-specific rules validation (default: enabled)
78
+ if (options.validateBlockRules !== false) {
79
+ const blockRulesResult = validateTreeBlockRules(tree);
80
+ errors.push(...blockRulesResult.errors);
81
+ if (blockRulesResult.warnings) {
82
+ warnings.push(...blockRulesResult.warnings);
83
+ }
84
+ }
61
85
  return {
62
86
  valid: errors.length === 0,
63
87
  errors,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../src/schema-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,eAAe,GAC1B,gBAAgB,CA8BlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GACpB,gBAAgB,CA6BlB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,eAAe,GAC1B,CAAC,KAAK,EAAE,OAAO,KAAK,gBAAgB,CAetC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,EAAE,CAGxE"}
1
+ {"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../src/schema-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AAGnC;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,eAAe,GAC1B,gBAAgB,CA8BlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GACpB,gBAAgB,CAkClB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,eAAe,GAC1B,CAAC,KAAK,EAAE,OAAO,KAAK,gBAAgB,CAetC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,EAAE,CAGxE"}
@@ -1,3 +1,4 @@
1
+ import { FRAGMENT_BLOCK_TYPE } from '@10up/block-renderer-core';
1
2
  /**
2
3
  * Validates a block element's props against its schema.
3
4
  */
@@ -31,6 +32,10 @@ export function validateTreeSchemas(tree, catalog) {
31
32
  const errors = [];
32
33
  const warnings = [];
33
34
  for (const element of Object.values(tree.elements)) {
35
+ // Skip fragment pseudo-blocks (they have no attributes to validate)
36
+ if (element.type === FRAGMENT_BLOCK_TYPE) {
37
+ continue;
38
+ }
34
39
  const definition = catalog.get(element.type);
35
40
  if (!definition) {
36
41
  // Unknown block type - could be a 3rd party block
@@ -1 +1 @@
1
- {"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../src/schema-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../src/schema-validator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAqB,EACrB,UAA2B;IAE3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,kCAAkC;YAClC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM,CAAC,IAAI,CACT,IAAI,OAAO,CAAC,GAAG,mBAAmB,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAC5D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,IAAI,OAAO,CAAC,GAAG,8BACb,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;QACN,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAe,EACf,OAAqB;IAErB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,oEAAoE;QACpE,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACzC,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,kDAAkD;YAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,yBAAyB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACtE,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;QACN,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAA2B;IAE3B,OAAO,CAAC,KAAc,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAElD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACrC,CAAC;QAED,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAC7B,KAAK,CAAC,EAAE,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CACpE;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAA2B;IAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAqC,CAAC;IACtE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree-validator.d.ts","sourceRoot":"","sources":["../src/tree-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AA6CnC;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,eAAe,GAC1B,gBAAgB,CA4BlB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,eAAe,GAC1B,gBAAgB,CAwBlB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,eAAe,GAC1B,gBAAgB,CAyBlB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GACpB,gBAAgB,CAuBlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GACpB,gBAAgB,CA2ClB"}
1
+ {"version":3,"file":"tree-validator.d.ts","sourceRoot":"","sources":["../src/tree-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AAwDnC;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,eAAe,GAC1B,gBAAgB,CA4BlB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,eAAe,GAC1B,gBAAgB,CAwBlB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,eAAe,GAC1B,gBAAgB,CAyBlB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GACpB,gBAAgB,CAuBlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GACpB,gBAAgB,CAsDlB"}
@@ -1,10 +1,20 @@
1
+ import { FRAGMENT_BLOCK_TYPE } from '@10up/block-renderer-core';
1
2
  /**
2
3
  * Gets the parent element of a block in the tree.
4
+ * Returns null for root-level blocks or blocks whose parent is a fragment
5
+ * (fragments are transparent for nesting validation purposes).
3
6
  */
4
7
  function getParentElement(element, tree) {
5
8
  if (!element.parentKey)
6
9
  return null;
7
- return tree.elements[element.parentKey] || null;
10
+ const parent = tree.elements[element.parentKey];
11
+ if (!parent)
12
+ return null;
13
+ // Fragments are transparent - treat fragment children as root-level
14
+ if (parent.type === FRAGMENT_BLOCK_TYPE) {
15
+ return null;
16
+ }
17
+ return parent;
8
18
  }
9
19
  /**
10
20
  * Gets all ancestor elements of a block (from immediate parent to root).
@@ -125,6 +135,14 @@ export function validateTreeNesting(tree, catalog) {
125
135
  const warnings = [];
126
136
  // Validate each element's nesting
127
137
  for (const element of Object.values(tree.elements)) {
138
+ // Fragment pseudo-blocks: only allowed at root level
139
+ if (element.type === FRAGMENT_BLOCK_TYPE) {
140
+ if (element.key !== tree.root) {
141
+ errors.push(`[${element.key}] Fragment blocks can only be used at the root level of a tree`);
142
+ }
143
+ // Skip further nesting validation for fragments (no definition needed)
144
+ continue;
145
+ }
128
146
  const definition = catalog.get(element.type);
129
147
  if (!definition) {
130
148
  // Unknown block type - skip nesting validation
@@ -1 +1 @@
1
- {"version":3,"file":"tree-validator.js","sourceRoot":"","sources":["../src/tree-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree-validator.js","sourceRoot":"","sources":["../src/tree-validator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@10up/block-renderer-validator",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "description": "Validation for WordPress block trees - schema, nesting, and token validation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,9 +17,9 @@
17
17
  ],
18
18
  "dependencies": {
19
19
  "zod": "^3.24.0",
20
- "@10up/block-renderer-core": "0.1.5",
21
- "@10up/block-renderer-theme-json": "0.1.5",
22
- "@10up/block-renderer-patterns": "0.1.5"
20
+ "@10up/block-renderer-core": "0.2.0",
21
+ "@10up/block-renderer-theme-json": "0.1.7",
22
+ "@10up/block-renderer-patterns": "0.1.7"
23
23
  },
24
24
  "devDependencies": {
25
25
  "typescript": "^5.7.0",