{"id":21320522,"url":"https://github.com/marcodpt/hammer","last_synced_at":"2026-05-22T14:15:15.198Z","repository":{"id":263044991,"uuid":"862324780","full_name":"marcodpt/hammer","owner":"marcodpt","description":"Hyperscript tools for web craftsmen.","archived":false,"fork":false,"pushed_at":"2024-11-18T14:45:10.000Z","size":56,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T11:33:38.815Z","etag":null,"topics":["dom","es6","esm","esmodule","frontend","html","hyperapp","hyperscript","javascript","microjs","microlibrary","mithril","server-side","server-side-rendering","superfine","tags","template","vdom"],"latest_commit_sha":null,"homepage":"https://marcodpt.github.io/hammer/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcodpt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-24T12:14:27.000Z","updated_at":"2024-11-18T14:45:16.000Z","dependencies_parsed_at":"2024-11-15T20:17:44.300Z","dependency_job_id":"48128b68-91a7-4495-afd0-87111250d076","html_url":"https://github.com/marcodpt/hammer","commit_stats":null,"previous_names":["marcodpt/hammer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcodpt%2Fhammer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcodpt%2Fhammer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcodpt%2Fhammer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcodpt%2Fhammer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcodpt","download_url":"https://codeload.github.com/marcodpt/hammer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243801604,"owners_count":20350105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dom","es6","esm","esmodule","frontend","html","hyperapp","hyperscript","javascript","microjs","microlibrary","mithril","server-side","server-side-rendering","superfine","tags","template","vdom"],"created_at":"2024-11-21T19:48:10.378Z","updated_at":"2026-05-22T14:15:06.828Z","avatar_url":"https://github.com/marcodpt.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![](favicon.ico) Hammer\n\nHyperscript tools for web craftsmen.\n\n[![Demo](https://img.shields.io/badge/Demo-blue)](https://marcodpt.github.io/hammer/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![GitHub Tag](https://img.shields.io/github/v/tag/marcodpt/hammer)](https://github.com/marcodpt/hammer/tags)\n[![bundlejs](https://deno.bundlejs.com/badge?q=https://raw.githubusercontent.com/marcodpt/hammer/main/index.js\u0026treeshake=[*])](https://bundlejs.com/?q=https://raw.githubusercontent.com/marcodpt/hammer/main/index.js\u0026treeshake=[*])\n\n## ❤️ Features\n - [ES6 module](https://github.com/marcodpt/hammer/blob/main/index.js).\n - Extremely well\n[tested](https://marcodpt.github.io/hammer/tests/index.html).\n - Online `HTML` to hyperscript\n[converter](https://marcodpt.github.io/hammer/examples/convert.html).\n - Online `HTML`\n[formatter](https://marcodpt.github.io/hammer/examples/format.html).\n - Optimized syntax for readability and clarity:\n   - All `HTML` tags without introducing global variables.\n   - `Attributes` are `objects` and always precede `children`.\n   - `Style` attribute can be `string` or `object`.\n   - `Class` attribute can be `string` or `array`.\n   - Automatic transformation from `camelCase` to `kebab-case` in `attribute`\nand `style` keys.\n   - `Children` are always `arrays` and falsy values are automatically ignored.\n - Flexibility taken to the extreme:\n   - [Template engine](https://marcodpt.github.io/hammer/examples/template.html)\nproducing well-formatted `HTML`. Can be used in any JavaScript runtime (\n[NodeJS](https://nodejs.org/en),\n[Deno](https://deno.com/),\n[Bun](https://bun.sh/),\n[txiki.js](https://bettercallsaghul.com/txiki.js/api/index.html)).\n   - [DOM Node](https://marcodpt.github.io/hammer/examples/todo.html)\ngeneration in pure JavaScript, supported in any modern browser.\n   - Easy integration with any framework using virtual dom:\n     - Example with\n[hyperapp](https://marcodpt.github.io/hammer/examples/hyperapp.html).\n     - Example with\n[superfine](https://marcodpt.github.io/hammer/examples/superfine.html).\n\n## 💻 Usage\n\n## 📖 API\n\n## 📢 Motivation\nThe advantages of using `hyperscript` to produce `HTML` elements are many:\n\n - No build steps required.\n - No special text editor support required.\n - No need to learn a new templating language.\n - Standard debug and error analysis tools work normally.\n - It is possible to use well-tested and defined functions to produce `HTML`\nelements.\n - It is possible to combine elements to produce complex applications.\n - It can be used to generate `HTML` text, `DOM` node, virtual `DOM`, both in\nthe browser and on the server.\n - Can be combined with any framework or library, both in the browser and on\nthe server.\n - Frameworks and libraries go in and out of use, `hyperscript` is just a\nfunction that will always be supported.\n\nMost `hyperscript` implementations are made with a specific use in mind,\nassociated with a framework, library or browser.\n\nThe objective of this module is to deliver a `hyperscript` implementation that\nallows a clear and expressive syntax to read, without making any assumptions\nabout its use.\n\nThis way, it is possible to use `hyperscript` to create views and elements,\nwithout being tied to a technology or page rendering strategy.\n\n## 🤝 Contributing\nIt's a very simple project.\nAny contribution, any feedback is greatly appreciated.\n\n## ⭐ Support\nIf this project was useful to you, consider giving it a star on github, it's a\nway to increase evidence and attract more contributors.\n\n## 🙏 Acknowledgment\nThis work is hugely influenced by these amazing projects:\n - [hyperscript](https://github.com/hyperhype/hyperscript)\n - [virtual-dom](https://github.com/Matt-Esch/virtual-dom)\n - [hyperapp](https://github.com/jorgebucaran/hyperapp)\n - [superfine](https://github.com/jorgebucaran/superfine)\n - [mercury](https://github.com/Raynos/mercury)\n - [jquery](https://github.com/jquery/jquery)\n\nA huge thank you to all the people who contributed to these projects.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcodpt%2Fhammer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcodpt%2Fhammer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcodpt%2Fhammer/lists"}