stylpp 1.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/README.md +475 -0
- package/bin/stylpp.js +2 -0
- package/dist/stylpp.esm.js +726 -0
- package/dist/stylpp.esm.js.map +1 -0
- package/dist/stylpp.js +734 -0
- package/dist/stylpp.js.map +1 -0
- package/dist/stylpp.min.js +2 -0
- package/dist/stylpp.min.js.map +1 -0
- package/package.json +59 -0
- package/src/cli/index.js +400 -0
- package/src/compiler/animation.js +346 -0
- package/src/compiler/effects.js +344 -0
- package/src/compiler/generator.js +157 -0
- package/src/compiler/index.js +119 -0
- package/src/compiler/parser.js +210 -0
- package/src/compiler/physics.js +286 -0
- package/src/compiler/transformer.js +228 -0
- package/src/runtime/advanced.js +293 -0
- package/src/runtime/browser.js +239 -0
- package/stylpp-1.0.0.tgz +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stylpp.esm.js","sources":["../src/compiler/parser.js","../src/compiler/transformer.js","../src/compiler/generator.js","../src/compiler/index.js"],"sourcesContent":["/**\r\n * STYL++ Parser\r\n * Converts STYL++ source code into an Abstract Syntax Tree (AST)\r\n * Handles semicolon-based indentation and property-value parsing\r\n */\r\n\r\nclass StylppParser {\r\n constructor(options = {}) {\r\n this.options = options;\r\n this.errors = [];\r\n }\r\n\r\n /**\r\n * Parse STYL++ code and return AST\r\n * @param {string} code - STYL++ source code\r\n * @returns {Object} AST\r\n */\r\n parse(code) {\r\n const lines = code.split('\\n');\r\n const ast = {\r\n type: 'stylesheet',\r\n rules: [],\r\n variables: {}\r\n };\r\n\r\n let currentIndent = 0;\r\n const stack = [];\r\n\r\n for (let lineNumber = 0; lineNumber < lines.length; lineNumber++) {\r\n const line = lines[lineNumber];\r\n const trimmed = line.trim();\r\n\r\n // Skip empty lines\r\n if (!trimmed) continue;\r\n\r\n // Skip comment lines (start with ; at beginning)\r\n if (trimmed.startsWith(';') && !trimmed.match(/^\\s*;\\s*\\w+/)) continue;\r\n\r\n // Count leading semicolons for indentation\r\n const indentMatch = line.match(/^(;*)/);\r\n const indentLevel = indentMatch ? indentMatch[0].length : 0;\r\n const content = line.substring(indentLevel).trim();\r\n\r\n // Skip empty content\r\n if (!content) continue;\r\n\r\n // Handle variables section\r\n if (content === 'variables;' || content === 'variables') {\r\n const variablesSection = this.parseVariablesSection(lines, lineNumber + 1);\r\n ast.variables = variablesSection.variables;\r\n lineNumber = variablesSection.endLine;\r\n continue;\r\n }\r\n\r\n // Handle property-value pairs\r\n if (content.endsWith(';') && indentLevel > 0) {\r\n const propValue = this.parseProperty(content);\r\n if (propValue && stack.length > 0) {\r\n const parent = stack[stack.length - 1];\r\n if (!parent.declarations) parent.declarations = [];\r\n parent.declarations.push(propValue);\r\n }\r\n continue;\r\n }\r\n\r\n // Handle rules/selectors\r\n const selector = content.replace(/;$/, '');\r\n const newRule = {\r\n type: 'rule',\r\n selector: selector,\r\n declarations: [],\r\n rules: []\r\n };\r\n\r\n // Manage indentation stack\r\n if (indentLevel > currentIndent) {\r\n // Nested rule\r\n if (stack.length > 0) {\r\n const parent = stack[stack.length - 1];\r\n parent.rules.push(newRule);\r\n }\r\n stack.push(newRule);\r\n } else if (indentLevel < currentIndent) {\r\n // Pop stack until we reach the right level\r\n const popCount = (currentIndent - indentLevel);\r\n for (let i = 0; i < popCount; i++) {\r\n stack.pop();\r\n }\r\n if (stack.length > 0) {\r\n const parent = stack[stack.length - 1];\r\n parent.rules.push(newRule);\r\n } else {\r\n ast.rules.push(newRule);\r\n }\r\n stack.push(newRule);\r\n } else {\r\n // Same level\r\n if (stack.length > 0) {\r\n stack.pop();\r\n if (stack.length > 0) {\r\n const parent = stack[stack.length - 1];\r\n parent.rules.push(newRule);\r\n } else {\r\n ast.rules.push(newRule);\r\n }\r\n } else {\r\n ast.rules.push(newRule);\r\n }\r\n stack.push(newRule);\r\n }\r\n\r\n currentIndent = indentLevel;\r\n }\r\n\r\n return ast;\r\n }\r\n\r\n /**\r\n * Parse variables section\r\n * @param {Array} lines - All code lines\r\n * @param {number} startLine - Starting line number\r\n * @returns {Object} Variables and end line\r\n */\r\n parseVariablesSection(lines, startLine) {\r\n const variables = {};\r\n let endLine = startLine;\r\n\r\n for (let i = startLine; i < lines.length; i++) {\r\n const line = lines[i];\r\n const trimmed = line.trim();\r\n\r\n if (!trimmed || trimmed.startsWith(';')) continue;\r\n\r\n // Check if we've exited the variables section\r\n const leadingSemicolons = line.match(/^(;*)/)[0].length;\r\n if (leadingSemicolons === 0 && trimmed && !trimmed.match(/^\\w+\\s+/)) {\r\n break;\r\n }\r\n\r\n const parts = trimmed.split(/\\s+/);\r\n if (parts.length >= 2) {\r\n const name = parts[0];\r\n const value = parts.slice(1).join(' ').replace(/;$/, '');\r\n variables[name] = value;\r\n endLine = i;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n return { variables, endLine };\r\n }\r\n\r\n /**\r\n * Parse a property-value pair\r\n * @param {string} content - Property-value string (e.g., \"background white;\")\r\n * @returns {Object} Declaration object\r\n */\r\n parseProperty(content) {\r\n // Remove trailing semicolon\r\n const cleaned = content.replace(/;$/, '').trim();\r\n \r\n // Split by first space to separate property from value\r\n const spaceIndex = cleaned.indexOf(' ');\r\n if (spaceIndex === -1) return null;\r\n\r\n const property = cleaned.substring(0, spaceIndex);\r\n const value = cleaned.substring(spaceIndex + 1);\r\n\r\n return {\r\n type: 'declaration',\r\n property: property,\r\n value: value\r\n };\r\n }\r\n\r\n /**\r\n * Parse for loop syntax: for i in 1 to 5;\r\n * @param {string} content - For loop declaration\r\n * @returns {Object} Loop object or null\r\n */\r\n parseForLoop(content) {\r\n const match = content.match(/for\\s+(\\w+)\\s+in\\s+([\\d\\w]+)\\s+to\\s+([\\d\\w]+)/);\r\n if (!match) return null;\r\n\r\n return {\r\n type: 'for-loop',\r\n variable: match[1],\r\n from: parseInt(match[2]),\r\n to: parseInt(match[3])\r\n };\r\n }\r\n\r\n /**\r\n * Parse if/conditional syntax: if condition;\r\n * @param {string} content - If statement\r\n * @returns {Object} Conditional object or null\r\n */\r\n parseConditional(content) {\r\n const match = content.match(/@(\\w+)/);\r\n if (!match) return null;\r\n\r\n return {\r\n type: 'conditional',\r\n condition: match[1]\r\n };\r\n }\r\n}\r\n\r\nmodule.exports = StylppParser;\r\n","/**\r\n * STYL++ Transformer\r\n * Transforms the AST to handle:\r\n * - Variable resolution\r\n * - Math operations\r\n * - Loop expansion\r\n * - Conditional processing\r\n * - Function expansion\r\n */\r\n\r\nclass StylppTransformer {\r\n constructor(options = {}) {\r\n this.options = options;\r\n this.variables = {};\r\n this.errors = [];\r\n }\r\n\r\n /**\r\n * Transform AST\r\n * @param {Object} ast - Original AST\r\n * @returns {Object} Transformed AST\r\n */\r\n transform(ast) {\r\n // First pass: collect all variables\r\n this.variables = { ...ast.variables };\r\n\r\n // Second pass: transform rules\r\n const transformedRules = ast.rules.map(rule => this.transformRule(rule));\r\n\r\n return {\r\n type: 'stylesheet',\r\n rules: transformedRules,\r\n variables: this.variables\r\n };\r\n }\r\n\r\n /**\r\n * Transform a single rule\r\n * @param {Object} rule - Rule object\r\n * @returns {Object} Transformed rule\r\n */\r\n transformRule(rule) {\r\n const transformed = {\r\n type: rule.type,\r\n selector: rule.selector,\r\n declarations: [],\r\n rules: []\r\n };\r\n\r\n // Transform declarations\r\n if (rule.declarations) {\r\n rule.declarations.forEach(decl => {\r\n const transformedDecl = this.transformDeclaration(decl);\r\n if (Array.isArray(transformedDecl)) {\r\n transformed.declarations.push(...transformedDecl);\r\n } else {\r\n transformed.declarations.push(transformedDecl);\r\n }\r\n });\r\n }\r\n\r\n // Transform nested rules\r\n if (rule.rules) {\r\n rule.rules.forEach(nestedRule => {\r\n const transformed = this.transformRule(nestedRule);\r\n if (Array.isArray(transformed)) {\r\n transformed.forEach(r => rule.rules.push(r));\r\n } else {\r\n rule.rules.push(transformed);\r\n }\r\n });\r\n transformed.rules = rule.rules;\r\n }\r\n\r\n return transformed;\r\n }\r\n\r\n /**\r\n * Transform a declaration (property-value pair)\r\n * @param {Object} decl - Declaration object\r\n * @returns {Object|Array} Transformed declaration(s)\r\n */\r\n transformDeclaration(decl) {\r\n let value = decl.value;\r\n\r\n // Resolve variables\r\n value = this.resolveVariables(value);\r\n\r\n // Handle math operations\r\n if (this.hasMathOperation(value)) {\r\n value = this.processMathOperation(value);\r\n }\r\n\r\n // Handle responsive values\r\n if (this.isResponsiveValue(value)) {\r\n value = this.processResponsiveValue(value);\r\n }\r\n\r\n // Handle color operations\r\n if (this.isColorOperation(value)) {\r\n value = this.processColorOperation(value);\r\n }\r\n\r\n return {\r\n type: 'declaration',\r\n property: decl.property,\r\n value: value\r\n };\r\n }\r\n\r\n /**\r\n * Resolve variables in value (e.g., var(primary) -> #007bff)\r\n * @param {string} value - Value string\r\n * @returns {string} Resolved value\r\n */\r\n resolveVariables(value) {\r\n return value.replace(/var\\((\\w+)\\)/g, (match, varName) => {\r\n return this.variables[varName] || match;\r\n });\r\n }\r\n\r\n /**\r\n * Check if value contains math operations\r\n * @param {string} value - Value string\r\n * @returns {boolean}\r\n */\r\n hasMathOperation(value) {\r\n return /[\\+\\-\\*\\/\\^]/.test(value) && /\\d/.test(value);\r\n }\r\n\r\n /**\r\n * Process math operations: 100% - 40px -> calc(100% - 40px)\r\n * @param {string} value - Value with math\r\n * @returns {string} CSS calc expression\r\n */\r\n processMathOperation(value) {\r\n // Already has calc? Return as-is\r\n if (value.includes('calc(')) return value;\r\n\r\n // Check for mathematical expressions\r\n const mathPattern = /^[\\d\\w\\s\\+\\-\\*\\/\\%\\(\\)\\.]+$/;\r\n if (mathPattern.test(value.replace(/px|em|rem|%|vh|vw|ex|ch|deg|s|ms/g, ''))) {\r\n return `calc(${value})`;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Check if value is a responsive function\r\n * @param {string} value - Value string\r\n * @returns {boolean}\r\n */\r\n isResponsiveValue(value) {\r\n return /responsive\\(|fluid\\(/.test(value);\r\n }\r\n\r\n /**\r\n * Process responsive value: responsive(300px, 800px) -> clamp(...)\r\n * @param {string} value - Value string\r\n * @returns {string} Clamp expression\r\n */\r\n processResponsiveValue(value) {\r\n // responsive(300px, 800px) -> clamp(300px, 50vw + 100px, 800px)\r\n const match = value.match(/responsive\\(([^,]+),\\s*([^)]+)\\)/);\r\n if (match) {\r\n const min = match[1].trim();\r\n const max = match[2].trim();\r\n const mid = `${(parseInt(min) + parseInt(max)) / 4}px`;\r\n return `clamp(${min}, 50vw + ${mid}, ${max})`;\r\n }\r\n\r\n // fluid(300px, 800px)\r\n const fluidMatch = value.match(/fluid\\(([^,]+),\\s*([^)]+)\\)/);\r\n if (fluidMatch) {\r\n const min = fluidMatch[1].trim();\r\n const max = fluidMatch[2].trim();\r\n return `clamp(${min}, 5vw, ${max})`;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Check if value uses color operations\r\n * @param {string} value - Value string\r\n * @returns {boolean}\r\n */\r\n isColorOperation(value) {\r\n return /darken\\(|lighten\\(|mix\\(/.test(value);\r\n }\r\n\r\n /**\r\n * Process color operations\r\n * @param {string} value - Value string\r\n * @returns {string} Processed color\r\n */\r\n processColorOperation(value) {\r\n // darken(#007bff, 20%) - simplified implementation\r\n const darkenMatch = value.match(/darken\\(([^,]+),\\s*(\\d+)%\\)/);\r\n if (darkenMatch) {\r\n const color = darkenMatch[1].trim();\r\n const amount = parseInt(darkenMatch[2]);\r\n // Simple approximation - in real implementation would use color library\r\n return `${color}`;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Expand for loops\r\n * @param {Object} rule - Rule with for loop\r\n * @param {number} iterations - Number of iterations\r\n * @returns {Array} Expanded rules\r\n */\r\n expandForLoop(rule, iterations) {\r\n const expanded = [];\r\n for (let i = 0; i < iterations; i++) {\r\n const expandedRule = { ...rule };\r\n expandedRule.selector = rule.selector.replace(/{i}/g, i);\r\n expanded.push(expandedRule);\r\n }\r\n return expanded;\r\n }\r\n}\r\n\r\nmodule.exports = StylppTransformer;\r\n","/**\r\n * STYL++ CSS Generator\r\n * Converts the transformed AST into valid CSS output\r\n * Supports minification, source maps, and vendor prefixes\r\n */\r\n\r\nclass StylppGenerator {\r\n constructor(options = {}) {\r\n this.options = {\r\n minify: false,\r\n sourceMap: false,\r\n vendorPrefix: true,\r\n ...options\r\n };\r\n this.css = '';\r\n this.sourceMap = { version: 3, sources: [], mappings: '' };\r\n }\r\n\r\n /**\r\n * Generate CSS from AST\r\n * @param {Object} ast - Transformed AST\r\n * @returns {string} CSS code\r\n */\r\n generate(ast) {\r\n this.css = '';\r\n this.generateRules(ast.rules, 0);\r\n\r\n if (this.options.minify) {\r\n this.css = this.minifyCSS(this.css);\r\n }\r\n\r\n return this.css;\r\n }\r\n\r\n /**\r\n * Generate rules recursively\r\n * @param {Array} rules - Rules array\r\n * @param {number} indent - Indentation level\r\n */\r\n generateRules(rules, indent = 0) {\r\n const indentStr = this.options.minify ? '' : ' '.repeat(indent);\r\n const newline = this.options.minify ? '' : '\\n';\r\n\r\n rules.forEach(rule => {\r\n if (rule.type === 'rule') {\r\n this.css += `${indentStr}${rule.selector} {${newline}`;\r\n\r\n // Add declarations\r\n if (rule.declarations && rule.declarations.length > 0) {\r\n rule.declarations.forEach(decl => {\r\n const property = this.normalizeProperty(decl.property);\r\n const value = this.normalizeValue(decl.value);\r\n this.css += `${indentStr} ${property}: ${value};${newline}`;\r\n\r\n // Add vendor prefixes if needed\r\n if (this.options.vendorPrefix) {\r\n const prefixed = this.getVendorPrefixes(property, value);\r\n prefixed.forEach(p => {\r\n this.css += `${indentStr} ${p.property}: ${p.value};${newline}`;\r\n });\r\n }\r\n });\r\n }\r\n\r\n // Add nested rules\r\n if (rule.rules && rule.rules.length > 0) {\r\n this.generateRules(rule.rules, indent + 1);\r\n }\r\n\r\n this.css += `${indentStr}}${newline}`;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Normalize CSS property names (handle hyphenation)\r\n * @param {string} property - Property name\r\n * @returns {string} Normalized property\r\n */\r\n normalizeProperty(property) {\r\n // Convert camelCase to kebab-case\r\n return property.replace(/([A-Z])/g, '-$1').toLowerCase();\r\n }\r\n\r\n /**\r\n * Normalize CSS values\r\n * @param {string} value - Property value\r\n * @returns {string} Normalized value\r\n */\r\n normalizeValue(value) {\r\n // Remove extra whitespace\r\n value = value.replace(/\\s+/g, ' ').trim();\r\n\r\n // Ensure calc() is properly formatted\r\n if (value.includes('calc(')) {\r\n value = value.replace(/calc\\(\\s+/g, 'calc(').replace(/\\s+\\)/g, ')');\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Get vendor prefixes for a property\r\n * @param {string} property - CSS property\r\n * @param {string} value - CSS value\r\n * @returns {Array} Vendor-prefixed versions\r\n */\r\n getVendorPrefixes(property, value) {\r\n const prefixes = [];\r\n const prefixMap = {\r\n 'transform': ['-webkit-transform', '-moz-transform', '-o-transform'],\r\n 'transition': ['-webkit-transition', '-moz-transition', '-o-transition'],\r\n 'box-shadow': ['-webkit-box-shadow'],\r\n 'border-radius': ['-webkit-border-radius'],\r\n 'gradient': ['-webkit-linear-gradient', '-moz-linear-gradient'],\r\n 'appearance': ['-webkit-appearance', '-moz-appearance'],\r\n 'user-select': ['-webkit-user-select', '-moz-user-select', '-ms-user-select']\r\n };\r\n\r\n Object.keys(prefixMap).forEach(key => {\r\n if (property.includes(key)) {\r\n prefixMap[key].forEach(prefixed => {\r\n prefixes.push({ property: prefixed, value: value });\r\n });\r\n }\r\n });\r\n\r\n return prefixes;\r\n }\r\n\r\n /**\r\n * Minify CSS\r\n * @param {string} css - CSS code\r\n * @returns {string} Minified CSS\r\n */\r\n minifyCSS(css) {\r\n return css\r\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Remove comments\r\n .replace(/\\s+{/g, '{') // Remove spaces before {\r\n .replace(/\\s+}/g, '}') // Remove spaces before }\r\n .replace(/;\\s+/g, ';') // Remove spaces after ;\r\n .replace(/:\\s+/g, ':') // Remove spaces after :\r\n .replace(/,\\s+/g, ',') // Remove spaces after ,\r\n .replace(/\\n/g, '') // Remove newlines\r\n .trim();\r\n }\r\n\r\n /**\r\n * Generate source map\r\n * @returns {Object} Source map object\r\n */\r\n generateSourceMap() {\r\n return this.sourceMap;\r\n }\r\n}\r\n\r\nmodule.exports = StylppGenerator;\r\n","/**\r\n * STYL++ Main Compiler\r\n * Orchestrates parsing, transformation, and code generation\r\n */\r\n\r\nconst StylppParser = require('./parser');\r\nconst StylppTransformer = require('./transformer');\r\nconst StylppGenerator = require('./generator');\r\n\r\nclass StylppCompiler {\r\n constructor(options = {}) {\r\n this.options = {\r\n minify: false,\r\n sourceMap: false,\r\n vendorPrefix: true,\r\n ...options\r\n };\r\n \r\n this.parser = new StylppParser();\r\n this.transformer = new StylppTransformer();\r\n this.generator = new StylppGenerator(this.options);\r\n }\r\n\r\n /**\r\n * Compile STYL++ code to CSS\r\n * @param {string} code - STYL++ source code\r\n * @param {string} filename - Source filename (for error reporting)\r\n * @returns {Object} Compilation result\r\n */\r\n compile(code, filename = 'input.stylpp') {\r\n try {\r\n // Phase 1: Parse\r\n const ast = this.parser.parse(code);\r\n\r\n if (this.parser.errors.length > 0) {\r\n return {\r\n success: false,\r\n css: '',\r\n ast: null,\r\n errors: this.parser.errors,\r\n filename\r\n };\r\n }\r\n\r\n // Phase 2: Transform\r\n const transformedAst = this.transformer.transform(ast);\r\n\r\n if (this.transformer.errors.length > 0) {\r\n return {\r\n success: false,\r\n css: '',\r\n ast: ast,\r\n transformedAst: null,\r\n errors: this.transformer.errors,\r\n filename\r\n };\r\n }\r\n\r\n // Phase 3: Generate\r\n const css = this.generator.generate(transformedAst);\r\n\r\n // Optional: Generate source map\r\n let sourceMap = null;\r\n if (this.options.sourceMap) {\r\n sourceMap = this.generator.generateSourceMap();\r\n }\r\n\r\n return {\r\n success: true,\r\n css: css,\r\n ast: ast,\r\n transformedAst: transformedAst,\r\n sourceMap: sourceMap,\r\n errors: [],\r\n filename\r\n };\r\n\r\n } catch (error) {\r\n return {\r\n success: false,\r\n css: '',\r\n ast: null,\r\n transformedAst: null,\r\n errors: [{\r\n type: 'CompileError',\r\n message: error.message,\r\n stack: error.stack,\r\n filename\r\n }],\r\n filename\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Check if code is valid without compiling\r\n * @param {string} code - STYL++ source code\r\n * @returns {Object} Validation result\r\n */\r\n validate(code) {\r\n try {\r\n const ast = this.parser.parse(code);\r\n return {\r\n valid: true,\r\n errors: []\r\n };\r\n } catch (error) {\r\n return {\r\n valid: false,\r\n errors: [{\r\n message: error.message,\r\n line: error.line\r\n }]\r\n };\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = StylppCompiler;\r\n"],"names":["StylppParser","StylppTransformer","StylppGenerator","require$$0","require$$1","require$$2"],"mappings":"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"}
|