diff --git a/packages/package_validator/seed/validator.json b/packages/package_validator/seed/validator.json new file mode 100644 index 000000000..398d0c1ca --- /dev/null +++ b/packages/package_validator/seed/validator.json @@ -0,0 +1,501 @@ +{ + "$schema": "../../json_script_example/seed/script.schema.json", + "schema_version": "2.1.0", + "package": "package_validator", + "description": "JSON-based package validator for modern JSON script packages", + + "exports": { + "functions": [ + "validate_package", + "validate_metadata", + "validate_scripts", + "validate_types", + "validate_components", + "validate_tests", + "validate_storybook" + ] + }, + + "functions": [ + { + "id": "validate_package", + "name": "validate_package", + "exported": true, + "docstring": { + "summary": "Validates an entire package structure", + "description": "Comprehensive validation of package including metadata, scripts, types, components, tests, and storybook configuration.", + "params": [ + { + "name": "packagePath", + "type": "string", + "description": "Path to package directory" + } + ], + "returns": { + "type": "ValidationResult", + "description": "Validation result with errors and warnings" + }, + "examples": [ + { + "title": "Validate json_script_example", + "code": "const result = validate_package('packages/json_script_example');\nif (result.valid) console.log('✓ Package is valid');" + } + ], + "since": "2.0.0", + "tags": ["validation", "package", "json-scripts"] + }, + "params": [ + { + "name": "packagePath", + "type": "string" + } + ], + "returnType": "object", + "body": [ + { + "type": "const_declaration", + "name": "errors", + "value": { + "type": "array_literal", + "elements": [] + } + }, + { + "type": "const_declaration", + "name": "warnings", + "value": { + "type": "array_literal", + "elements": [] + } + }, + { + "type": "comment", + "text": "Validate metadata.json" + }, + { + "type": "const_declaration", + "name": "metadataResult", + "value": { + "type": "call_expression", + "callee": "$ref:local.validate_metadata", + "args": ["$ref:params.packagePath"] + } + }, + { + "type": "comment", + "text": "Validate JSON scripts" + }, + { + "type": "const_declaration", + "name": "scriptsResult", + "value": { + "type": "call_expression", + "callee": "$ref:local.validate_scripts", + "args": ["$ref:params.packagePath"] + } + }, + { + "type": "comment", + "text": "Validate types.json if present" + }, + { + "type": "const_declaration", + "name": "typesResult", + "value": { + "type": "call_expression", + "callee": "$ref:local.validate_types", + "args": ["$ref:params.packagePath"] + } + }, + { + "type": "comment", + "text": "Validate components if present" + }, + { + "type": "const_declaration", + "name": "componentsResult", + "value": { + "type": "call_expression", + "callee": "$ref:local.validate_components", + "args": ["$ref:params.packagePath"] + } + }, + { + "type": "comment", + "text": "Return aggregated results" + }, + { + "type": "return", + "value": { + "type": "object_literal", + "properties": { + "valid": { + "type": "binary_expression", + "left": { + "type": "member_access", + "object": "$ref:local.errors", + "property": "length" + }, + "operator": "==", + "right": 0 + }, + "errors": "$ref:local.errors", + "warnings": "$ref:local.warnings", + "details": { + "type": "object_literal", + "properties": { + "metadata": "$ref:local.metadataResult", + "scripts": "$ref:local.scriptsResult", + "types": "$ref:local.typesResult", + "components": "$ref:local.componentsResult" + } + } + } + } + } + ] + }, + { + "id": "validate_metadata", + "name": "validate_metadata", + "exported": true, + "docstring": { + "summary": "Validates package metadata.json", + "description": "Checks metadata.json for required fields, correct structure, valid exports, and proper configuration.", + "params": [ + { + "name": "packagePath", + "type": "string", + "description": "Path to package directory" + } + ], + "returns": { + "type": "ValidationResult", + "description": "Validation result for metadata" + }, + "since": "2.0.0", + "tags": ["validation", "metadata"] + }, + "params": [ + { + "name": "packagePath", + "type": "string" + } + ], + "returnType": "object", + "body": [ + { + "type": "const_declaration", + "name": "errors", + "value": { + "type": "array_literal", + "elements": [] + } + }, + { + "type": "comment", + "text": "TODO: Load and validate metadata.json" + }, + { + "type": "comment", + "text": "Required fields: packageId, name, version, category, exports" + }, + { + "type": "comment", + "text": "Validate runtime.scripts array exists and points to valid files" + }, + { + "type": "comment", + "text": "Validate exports match actual exported items" + }, + { + "type": "return", + "value": { + "type": "object_literal", + "properties": { + "valid": true, + "errors": "$ref:local.errors" + } + } + } + ] + }, + { + "id": "validate_scripts", + "name": "validate_scripts", + "exported": true, + "docstring": { + "summary": "Validates JSON script files", + "description": "Validates all script files listed in metadata.json runtime.scripts, checking for:\n- Valid JSON syntax\n- Correct schema version\n- Valid expressions and statements\n- Proper imports/exports\n- Docstring format", + "params": [ + { + "name": "packagePath", + "type": "string", + "description": "Path to package directory" + } + ], + "returns": { + "type": "ValidationResult", + "description": "Validation result for scripts" + }, + "since": "2.0.0", + "tags": ["validation", "scripts", "json"] + }, + "params": [ + { + "name": "packagePath", + "type": "string" + } + ], + "returnType": "object", + "body": [ + { + "type": "const_declaration", + "name": "errors", + "value": { + "type": "array_literal", + "elements": [] + } + }, + { + "type": "comment", + "text": "TODO: Validate each script file" + }, + { + "type": "comment", + "text": "Check for valid $schema reference" + }, + { + "type": "comment", + "text": "Validate expression/statement syntax" + }, + { + "type": "comment", + "text": "Check import/export consistency" + }, + { + "type": "return", + "value": { + "type": "object_literal", + "properties": { + "valid": true, + "errors": "$ref:local.errors" + } + } + } + ] + }, + { + "id": "validate_types", + "name": "validate_types", + "exported": true, + "docstring": { + "summary": "Validates types.json file", + "description": "Validates type definitions including:\n- Valid JSON syntax\n- Correct schema reference\n- Well-formed type definitions\n- Property definitions\n- Exported types match metadata", + "params": [ + { + "name": "packagePath", + "type": "string", + "description": "Path to package directory" + } + ], + "returns": { + "type": "ValidationResult", + "description": "Validation result for types" + }, + "since": "2.0.0", + "tags": ["validation", "types", "typescript"] + }, + "params": [ + { + "name": "packagePath", + "type": "string" + } + ], + "returnType": "object", + "body": [ + { + "type": "const_declaration", + "name": "errors", + "value": { + "type": "array_literal", + "elements": [] + } + }, + { + "type": "comment", + "text": "TODO: Validate types.json if it exists" + }, + { + "type": "return", + "value": { + "type": "object_literal", + "properties": { + "valid": true, + "errors": "$ref:local.errors" + } + } + } + ] + }, + { + "id": "validate_components", + "name": "validate_components", + "exported": true, + "docstring": { + "summary": "Validates component definitions", + "description": "Validates components.json file including:\n- Valid JSON syntax\n- Component structure (props, render, state, handlers)\n- Docstrings\n- Exported components match metadata", + "params": [ + { + "name": "packagePath", + "type": "string", + "description": "Path to package directory" + } + ], + "returns": { + "type": "ValidationResult", + "description": "Validation result for components" + }, + "since": "2.0.0", + "tags": ["validation", "components", "ui"] + }, + "params": [ + { + "name": "packagePath", + "type": "string" + } + ], + "returnType": "object", + "body": [ + { + "type": "const_declaration", + "name": "errors", + "value": { + "type": "array_literal", + "elements": [] + } + }, + { + "type": "comment", + "text": "TODO: Validate components.json if it exists" + }, + { + "type": "return", + "value": { + "type": "object_literal", + "properties": { + "valid": true, + "errors": "$ref:local.errors" + } + } + } + ] + }, + { + "id": "validate_tests", + "name": "validate_tests", + "exported": true, + "docstring": { + "summary": "Validates test files", + "description": "Validates parameterized test structure:\n- Test logic files (*.test.logic.json)\n- Test parameter files (*.test.parameters.json)\n- Correct $schema references\n- Test function naming (test_*)\n- Valid test case structure", + "params": [ + { + "name": "packagePath", + "type": "string", + "description": "Path to package directory" + } + ], + "returns": { + "type": "ValidationResult", + "description": "Validation result for tests" + }, + "since": "2.0.0", + "tags": ["validation", "testing"] + }, + "params": [ + { + "name": "packagePath", + "type": "string" + } + ], + "returnType": "object", + "body": [ + { + "type": "const_declaration", + "name": "errors", + "value": { + "type": "array_literal", + "elements": [] + } + }, + { + "type": "comment", + "text": "TODO: Validate test files" + }, + { + "type": "return", + "value": { + "type": "object_literal", + "properties": { + "valid": true, + "errors": "$ref:local.errors" + } + } + } + ] + }, + { + "id": "validate_storybook", + "name": "validate_storybook", + "exported": true, + "docstring": { + "summary": "Validates storybook configuration", + "description": "Validates storybook section in metadata.json:\n- Stories reference valid functions/components\n- Arg controls match function parameters\n- Prop controls match component props\n- Story types are correct (function/component)", + "params": [ + { + "name": "packagePath", + "type": "string", + "description": "Path to package directory" + } + ], + "returns": { + "type": "ValidationResult", + "description": "Validation result for storybook config" + }, + "since": "2.0.0", + "tags": ["validation", "storybook"] + }, + "params": [ + { + "name": "packagePath", + "type": "string" + } + ], + "returnType": "object", + "body": [ + { + "type": "const_declaration", + "name": "errors", + "value": { + "type": "array_literal", + "elements": [] + } + }, + { + "type": "comment", + "text": "TODO: Validate storybook configuration" + }, + { + "type": "return", + "value": { + "type": "object_literal", + "properties": { + "valid": true, + "errors": "$ref:local.errors" + } + } + } + ] + } + ] +}