{"_id":"@bsnext/mysql-minifier","_rev":"5-a0026b1b4c7c87fbfd1913528650f289","name":"@bsnext/mysql-minifier","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@bsnext/mysql-minifier","version":"1.0.0","keywords":["mysql","sql","sqlite","optimizer","compress","minifier"],"author":{"name":"SalwadoR"},"license":"MIT","_id":"@bsnext/mysql-minifier@1.0.0","maintainers":[{"name":"bsnext","email":"beststudiomta@gmail.com"}],"homepage":"https://github.com/bsnext/MySQL-Minifier#readme","bugs":{"url":"https://github.com/bsnext/MySQL-Minifier/issues"},"dist":{"shasum":"85ea7f8240970ffcc1d0239b369ac1f8de61d379","tarball":"https://registry.npmjs.org/@bsnext/mysql-minifier/-/mysql-minifier-1.0.0.tgz","fileCount":16,"integrity":"sha512-gNp8y/ACESfu87v+h5HDpM45dREdY5EJohheJamlifWIWtQ+uPdOwUXvjA3pm4AogC1Wjadg/zq50NY+gOmfYQ==","signatures":[{"sig":"MEUCIEXLhGP1BA49N2PhGmvh93zNWeIrD2Ch/7lfZFmIOW9VAiEA6nkvWF6TiDm9vEkUwDQVSCxiJr6pUdSF7rRKel4K8uw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43211},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"c93cc7a7759d68cdba607a616dbd2cfdc47e0b4c","scripts":{"bench":"npm run build && node dist/benchmark/index.js","build":"tsc --project tsconfig.json","start":"npm run build && node dist/index.js","watch":"tsc --watch","example":"npm run build && node dist/example/index.js"},"_npmUser":{"name":"bsnext","email":"beststudiomta@gmail.com"},"repository":{"url":"git+https://github.com/bsnext/MySQL-Minifier.git","type":"git"},"_npmVersion":"10.2.4","description":"MySQL/SQL Queries minifier.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"@types/node":"^20.12.7"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^4.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mysql-minifier_1.0.0_1712822669199_0.3476200213350762","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@bsnext/mysql-minifier","version":"1.0.1","keywords":["mysql","sql","sqlite","optimizer","compress","minifier"],"author":{"name":"SalwadoR"},"license":"MIT","_id":"@bsnext/mysql-minifier@1.0.1","maintainers":[{"name":"bsnext","email":"beststudiomta@gmail.com"}],"homepage":"https://github.com/bsnext/MySQL-Minifier#readme","bugs":{"url":"https://github.com/bsnext/MySQL-Minifier/issues"},"dist":{"shasum":"4420c10305406ddd670335acd14503df3252399f","tarball":"https://registry.npmjs.org/@bsnext/mysql-minifier/-/mysql-minifier-1.0.1.tgz","fileCount":16,"integrity":"sha512-/EaI0QpQ1JllUGfnVyFs9XS9gk66fM6rJGL0//PakwbdIe2hcG17QFhOFrOSYIQNsdVWm6v+O3MFeDuw4QiAAA==","signatures":[{"sig":"MEQCIBjGXXrlNe/Dedi1N01W4Gr7hR2JH08uMklPBPThlUqfAiBzyP74Zo3ORwRdBAkP5wOHgDKbXLWuWipAQwEVy1aTmQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43212},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"3ad7f3f2bd5d63ed48d9d5870c8d9187f02e853c","scripts":{"bench":"npm run build && node dist/benchmark/index.js","build":"tsc --project tsconfig.json","start":"npm run build && node dist/index.js","watch":"tsc --watch","example":"npm run build && node dist/example/index.js"},"_npmUser":{"name":"bsnext","email":"beststudiomta@gmail.com"},"repository":{"url":"git+https://github.com/bsnext/MySQL-Minifier.git","type":"git"},"_npmVersion":"10.2.4","description":"MySQL/SQL Queries minifier.","directories":{},"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^4.9.3","@types/node":"^20.12.7"},"_npmOperationalInternal":{"tmp":"tmp/mysql-minifier_1.0.1_1712912458061_0.043146874418534376","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@bsnext/mysql-minifier","version":"1.0.2","keywords":["mysql","sql","sqlite","optimizer","compress","minifier"],"author":{"name":"SalwadoR"},"license":"MIT","_id":"@bsnext/mysql-minifier@1.0.2","maintainers":[{"name":"bsnext","email":"beststudiomta@gmail.com"}],"homepage":"https://github.com/bsnext/MySQL-Minifier#readme","bugs":{"url":"https://github.com/bsnext/MySQL-Minifier/issues"},"dist":{"shasum":"739f9830d1f264f44fcdedd0465a2a63d2b51138","tarball":"https://registry.npmjs.org/@bsnext/mysql-minifier/-/mysql-minifier-1.0.2.tgz","fileCount":6,"integrity":"sha512-UixkSPYJHYNV41qzpd5BD6dkcClLsef94JFkKeysgxQzIY/T3LTi3LlkTBEZ7rM6F+U+LcNk7dQb0+uME52ubQ==","signatures":[{"sig":"MEYCIQC+/T6bQ9KDOWwfYkKc1mP6ryh28WXeBaBi7RY58cU9EwIhAI/qZcd37iYm9evqATpWTQThEDPRijGXDeJi2pfZFb8x","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13416},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"3ad7f3f2bd5d63ed48d9d5870c8d9187f02e853c","scripts":{"bench":"npm run build && node dist/benchmark/index.js","build":"tsc --project tsconfig.json","start":"npm run build && node dist/index.js","watch":"tsc --watch","example":"npm run build && node dist/example/index.js"},"_npmUser":{"name":"bsnext","email":"beststudiomta@gmail.com"},"repository":{"url":"git+https://github.com/bsnext/MySQL-Minifier.git","type":"git"},"_npmVersion":"10.2.4","description":"MySQL/SQL Queries minifier.","directories":{},"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^4.9.3","@types/node":"^20.12.7"},"_npmOperationalInternal":{"tmp":"tmp/mysql-minifier_1.0.2_1712960089877_0.3460227805626743","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@bsnext/mysql-minifier","version":"1.0.3","keywords":["mysql","sql","sqlite","optimizer","compress","minifier"],"author":{"name":"SalwadoR"},"license":"MIT","_id":"@bsnext/mysql-minifier@1.0.3","maintainers":[{"name":"bsnext","email":"beststudiomta@gmail.com"}],"homepage":"https://github.com/bsnext/MySQL-Minifier#readme","bugs":{"url":"https://github.com/bsnext/MySQL-Minifier/issues"},"dist":{"shasum":"b791412e7d630e9322ad15af5a3cf0f91e6f9f85","tarball":"https://registry.npmjs.org/@bsnext/mysql-minifier/-/mysql-minifier-1.0.3.tgz","fileCount":6,"integrity":"sha512-kNwi73gb6aeRTzXXeEvmQfsP2D6/MERd2i3WS+dq9fDCN0FXUP9WWPheXPMUzQbgdRnjN/K252TluzJFHi6jww==","signatures":[{"sig":"MEYCIQDdLyvQoiPQYwP0xpHJg/AnZF78tLuKBLt7jClixyjzgQIhAPxfF1OagL2bw0DB8f7OPBJZNy9r36XxXOAwy+w4zPKu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13416},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"2b5623622720bc62290979715480c17dd75eea18","scripts":{"bench":"npm run build && node dist/benchmark/index.js","build":"tsc --project tsconfig.json","start":"npm run build && node dist/index.js","watch":"tsc --watch","example":"npm run build && node dist/example/index.js"},"_npmUser":{"name":"bsnext","email":"beststudiomta@gmail.com"},"repository":{"url":"git+https://github.com/bsnext/MySQL-Minifier.git","type":"git"},"_npmVersion":"10.2.4","description":"MySQL/SQL Queries minifier.","directories":{},"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^4.9.3","@types/node":"^20.12.7"},"_npmOperationalInternal":{"tmp":"tmp/mysql-minifier_1.0.3_1712966969365_0.654200997458672","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@bsnext/mysql-minifier","version":"1.0.4","keywords":["mysql","sql","sqlite","optimizer","compress","minifier"],"author":{"name":"SalwadoR"},"license":"MIT","_id":"@bsnext/mysql-minifier@1.0.4","maintainers":[{"name":"bsnext","email":"beststudiomta@gmail.com"}],"homepage":"https://github.com/bsnext/MySQL-Minifier#readme","bugs":{"url":"https://github.com/bsnext/MySQL-Minifier/issues"},"dist":{"shasum":"63d8fa5873fac8f97029af46b9ef6a9d12ad1b31","tarball":"https://registry.npmjs.org/@bsnext/mysql-minifier/-/mysql-minifier-1.0.4.tgz","fileCount":6,"integrity":"sha512-z/VU0S4r/zpBptSXVx0ELY1IgxCsq/jEtOYqXAl2r1lgka4g2vwpQ/ZgvZ2yMn8ehV45dORAEN7UIGeAdKo4jA==","signatures":[{"sig":"MEUCIQCJq9jm1CoZeOmrKwrllMkZDcklZX7hX6+Y0ttgv5708gIgMbZOkWGPlYp9AT0fh8wy9M/aOHOOqcFmjrOPmXxmGZY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13452},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"bf92c89563e8e918728c6778a0c3538d5716781e","scripts":{"bench":"npm run build && node dist/benchmark/index.js","build":"tsc --project tsconfig.json","start":"npm run build && node dist/index.js","watch":"tsc --watch","example":"npm run build && node dist/example/index.js"},"_npmUser":{"name":"bsnext","email":"beststudiomta@gmail.com"},"repository":{"url":"git+https://github.com/bsnext/MySQL-Minifier.git","type":"git"},"_npmVersion":"10.2.4","description":"MySQL/SQL Queries minifier.","directories":{},"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^4.9.3","@types/node":"^20.12.7"},"_npmOperationalInternal":{"tmp":"tmp/mysql-minifier_1.0.4_1712968588687_0.4765018191142609","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@bsnext/mysql-minifier","version":"1.1.0","description":"MySQL/SQL Queries minifier.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"example":"npm run build && node dist/example/index.js","start":"npm run build && node dist/index.js","bench":"npm run build && node dist/benchmark/no-cache-expensive.js && node dist/benchmark/no-cache-medium.js && node dist/benchmark/no-cache-cheap.js && node dist/benchmark/cache-expensive.js && node dist/benchmark/cache-medium.js && node dist/benchmark/cache-cheap.js","build":"tsc --project tsconfig.json","watch":"tsc --watch"},"repository":{"type":"git","url":"git+https://github.com/bsnext/MySQL-Minifier.git"},"keywords":["mysql","sql","sqlite","optimizer","compress","minifier"],"bugs":{"url":"https://github.com/bsnext/MySQL-Minifier/issues"},"homepage":"https://github.com/bsnext/MySQL-Minifier#readme","author":{"name":"SalwadoR"},"type":"commonjs","license":"MIT","devDependencies":{"@types/node":"^20.12.7","benchmark":"^2.1.4","typescript":"^4.9.3"},"_id":"@bsnext/mysql-minifier@1.1.0","gitHead":"d5517780ccba519669fb525d350d5821209ee165","_nodeVersion":"22.8.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-l3NBAM1i4Zc/pAmPZBic4vr3DfZzWZem4iRImNQ/sEJBPVgRjRTfcBsNnLteeETmC9L5+52UHe7FuQBXr3tERg==","shasum":"ebde8dd83074b450c72c9c7ab6fab1a2dbfbe763","tarball":"https://registry.npmjs.org/@bsnext/mysql-minifier/-/mysql-minifier-1.1.0.tgz","fileCount":6,"unpackedSize":17335,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBPqjMQOCtOhhNY8RgsJrGiU4ieN7QACWjDJ4qB4mq5fAiA0JF+hSaO3eb+wgsqanZQ8jALZybbZUr9pJiB6ZJCS4g=="}]},"_npmUser":{"name":"bsnext","email":"beststudiomta@gmail.com"},"directories":{},"maintainers":[{"name":"bsnext","email":"beststudiomta@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mysql-minifier_1.1.0_1729344171443_0.8648253508294703"},"_hasShrinkwrap":false}},"time":{"created":"2024-04-11T08:04:29.086Z","modified":"2024-10-19T13:22:51.791Z","1.0.0":"2024-04-11T08:04:29.338Z","1.0.1":"2024-04-12T09:00:58.243Z","1.0.2":"2024-04-12T22:14:50.019Z","1.0.3":"2024-04-13T00:09:29.528Z","1.0.4":"2024-04-13T00:36:28.856Z","1.1.0":"2024-10-19T13:22:51.623Z"},"bugs":{"url":"https://github.com/bsnext/MySQL-Minifier/issues"},"author":{"name":"SalwadoR"},"license":"MIT","homepage":"https://github.com/bsnext/MySQL-Minifier#readme","keywords":["mysql","sql","sqlite","optimizer","compress","minifier"],"repository":{"type":"git","url":"git+https://github.com/bsnext/MySQL-Minifier.git"},"description":"MySQL/SQL Queries minifier.","maintainers":[{"name":"bsnext","email":"beststudiomta@gmail.com"}],"readme":"# MySQL-Minifier\r\n\r\nSmall library for compress queries, for decrease data-size transfered in network.\r\n\r\n## Installing:\r\n```bash\r\nnpm install @bsnext/mysql-minifier\r\n```\r\n\r\n```ts\r\nimport MySQLMinifier from \"@bsnext/mysql-minifier\";\r\nconst minifier = new MySQLMinifier(true);\r\nconst result = minifier.minify(`HERE A YOUR MYSQL QUERY`);\r\n```\r\n\r\n## Usage:\r\n```ts\r\nnew MySQLMinifier(isCaching: boolean = false, cacheLimit: number = 100, cachePurgeTime?: number)\r\n```\r\n\r\n* isCaching - State of LRU cache mode for store parsed keys.\r\n* cacheLimit - Limit of max LRU cache size.\r\n* cachePurgeTime - Interval (seconds) for purge cache. Disabled by default.\r\n\r\n## Example:\r\n<b>2884 characters.</b>\r\n```sql\r\nSET @running_total := 0, @previous_salary := 0; -- Initialize variables for running total and previous salary\r\n\r\nSELECT \r\n    E.id, -- Select employee ID\r\n    E.name, -- Employee name\r\n    CONCAT(E.first_name, ' ', E.last_name) AS full_name, # Concatenate first and last name for full name\r\n    D.name AS department, -- Department name\r\n    P.title AS project, -- Project title\r\n    T.task_description, # Task description\r\n    AVG(T.hours) AS average_hours, -- Calculate average hours worked on tasks\r\n    SUM(T.hours) OVER (PARTITION BY E.id ORDER BY T.date) AS cumulative_hours, # Cumulative hours worked by each employee\r\n    @running_total := @running_total + E.salary AS running_total_salary, -- Calculate running total of salaries\r\n    CASE \r\n        WHEN @previous_salary < E.salary THEN 'Increased'\r\n        ELSE 'Decreased'\r\n    END AS salary_trend, -- Trend of salary compared to previous\r\n    @previous_salary := E.salary, # Update previous salary to current salary\r\n    (SELECT GROUP_CONCAT(task_name SEPARATOR ', ') FROM tasks WHERE employee_id = E.id) AS all_tasks, -- Concatenate all task names for each employee\r\n    (SELECT MAX(budget) FROM projects WHERE manager_id = E.id) AS max_project_budget, -- Maximum project budget managed by the employee\r\n    (SELECT MIN(start_date) FROM projects WHERE department_id = D.id) AS department_earliest_project, # Earliest project start date in the department\r\n    (SELECT COUNT(*) FROM department_employees WHERE department_id = D.id) AS department_size, -- Size of the department\r\n    (SELECT AVG(salary) FROM employees WHERE department_id = D.id) AS department_avg_salary, -- Average salary in the department\r\n    (SELECT SUM(hours) FROM tasks WHERE employee_id = E.id AND date BETWEEN '2023-01-01' AND '2023-06-30') AS total_hours_first_half -- Total hours worked in the first half of 2023\r\nFROM \r\n    employees E -- From employees table\r\nJOIN \r\n    department_employees DE ON E.id = DE.employee_id -- Join with department_employees\r\nJOIN \r\n    departments D ON DE.department_id = D.id -- Join with departments\r\nLEFT JOIN \r\n    project_assignments PA ON E.id = PA.employee_id -- Left join with project_assignments\r\nLEFT JOIN \r\n    projects P ON PA.project_id = P.id -- Left join with projects\r\nLEFT JOIN \r\n    tasks T ON E.id = T.employee_id -- Left join with tasks\r\nWHERE \r\n    E.salary > (SELECT AVG(salary) FROM employees WHERE department_id = D.id) -- Filter for salaries above department average\r\n    AND E.start_date < '2023-01-01' -- Filter for employees who started before 2023\r\n    AND EXISTS (SELECT 1 FROM projects WHERE manager_id = E.id) -- Filter for employees who manage at least one project\r\nGROUP BY \r\n    E.id, E.name, D.name, P.title, T.task_description -- Group by various fields for aggregation\r\nORDER BY \r\n    cumulative_hours DESC, max_project_budget DESC, department_avg_salary -- Order by several criteria\r\nLIMIT 10; # Limit to top 10 results\r\n```\r\n\r\n## Result:\r\n<b>1550 characters.</b>\r\n```sql\r\nSET@running_total:=0,@previous_salary:=0;SELECT E.id,E.name,CONCAT(E.first_name,' ',E.last_name)AS full_name,D.name AS department,P.title AS project,T.task_description,AVG(T.hours)AS average_hours,SUM(T.hours)OVER(PARTITION BY E.id ORDER BY T.date)AS cumulative_hours,@running_total:=@running_total+E.salary AS running_total_salary,CASE WHEN@previous_salary<E.salary THEN'Increased'ELSE'Decreased'END AS salary_trend,@previous_salary:=E.salary,(SELECT GROUP_CONCAT(task_name SEPARATOR', ')FROM tasks WHERE employee_id=E.id)AS all_tasks,(SELECT MAX(budget)FROM projects WHERE manager_id=E.id)AS max_project_budget,(SELECT MIN(start_date)FROM projects WHERE department_id=D.id)AS department_earliest_project,(SELECT COUNT(*)FROM department_employees WHERE department_id=D.id)AS department_size,(SELECT AVG(salary)FROM employees WHERE department_id=D.id)AS department_avg_salary,(SELECT SUM(hours)FROM tasks WHERE employee_id=E.id AND date BETWEEN'2023-01-01'AND'2023-06-30')AS total_hours_first_half FROM employees E JOIN department_employees DE ON E.id=DE.employee_id JOIN departments D ON DE.department_id=D.id LEFT JOIN project_assignments PA ON E.id=PA.employee_id LEFT JOIN projects P ON PA.project_id=P.id LEFT JOIN tasks T ON E.id=T.employee_id WHERE E.salary>(SELECT AVG(salary)FROM employees WHERE department_id=D.id)AND E.start_date<'2023-01-01'AND EXISTS(SELECT 1 FROM projects WHERE manager_id=E.id)GROUP BY E.id,E.name,D.name,P.title,T.task_description ORDER BY cumulative_hours DESC,max_project_budget DESC,department_avg_salary LIMIT 10;\r\n```\r\n\r\n## Benchmark:\r\n[Used code for test and get those results.](https://github.com/bsnext/MySQL-Minifier/blob/main/src/benchmark)\r\n```js\r\n[No Cache] Minify Very-Expensive x 21,620 ops/sec ±0.50% (95 runs sampled)\r\n[No Cache] Minify Medium SQL Query x 41,684 ops/sec ±0.73% (94 runs sampled)\r\n[No Cache] Minify Cheap SQL Query x 91,676 ops/sec ±0.37% (93 runs sampled)\r\n[Cache] Minify Very-Expensive x 125,527,995 ops/sec ±3.23% (83 runs sampled)\r\n[Cache] Minify Medium SQL Query x 125,468,551 ops/sec ±3.82% (84 runs sampled)\r\n[Cache] Minify Cheap SQL Query x 122,797,325 ops/sec ±3.46% (82 runs sampled)\r\n\r\n// Node v22.8.0, Win 11, Ryzen 7 3800X 3.89 GHz, 32 GB RAM 3200 MHz\r\n```\r\n","readmeFilename":"README.md"}