{"id":16125545,"url":"https://github.com/semibran/manifest","last_synced_at":"2025-08-27T15:13:08.004Z","repository":{"id":57139849,"uuid":"104918388","full_name":"semibran/manifest","owner":"semibran","description":":boom: convert virtual DOM nodes into HTML elements","archived":false,"fork":false,"pushed_at":"2018-03-23T18:31:37.000Z","size":4,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-08T22:04:18.805Z","etag":null,"topics":["dom","html","virtual-dom"],"latest_commit_sha":null,"homepage":"","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/semibran.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}},"created_at":"2017-09-26T17:42:35.000Z","updated_at":"2018-03-23T18:31:38.000Z","dependencies_parsed_at":"2022-09-04T22:10:17.759Z","dependency_job_id":null,"html_url":"https://github.com/semibran/manifest","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/semibran/manifest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semibran%2Fmanifest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semibran%2Fmanifest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semibran%2Fmanifest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semibran%2Fmanifest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semibran","download_url":"https://codeload.github.com/semibran/manifest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semibran%2Fmanifest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270956949,"owners_count":24675030,"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","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","html","virtual-dom"],"created_at":"2024-10-09T21:29:57.485Z","updated_at":"2025-08-18T07:07:40.968Z","avatar_url":"https://github.com/semibran.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# manifest\n\u003e convert virtual DOM nodes into HTML elements\n\n```js\nlet heading = manifest({\n  tag: \"h1\",\n  attributes: { class: \"foo\" },\n  children: [ \"hello world\" ]\n})\n\ndocument.body.appendChild(heading)\nconsole.log(document.body.outerHTML)\n// \u003cbody\u003e\u003ch1 class=\"foo\"\u003ehello world\u003c/h1\u003e\u003c/body\u003e\n```\n\nWe can extend the definition of a virtual node as specified by [`hyper2/h2spec`][hyper2/h2spec] to cover primitive values. Doing so enables us to create \"text nodes\" out of raw strings, numbers, etc. and greatly simplifies vnode conversion. When used with primitive values, this function is practically equivalent to calling `document.createTextNode`, as in the following (impractical) example:\n\n```js\nlet foo = manifest(\"foo\")\nlet bar = document.createTextNode(\"bar\")\ndocument.body.appendChild(foo)\ndocument.body.appendChild(bar)\nconsole.log(document.body.outerHTML)\n// \u003cbody\u003efoobar\u003c/body\u003e\n```\n\n## usage\n[![npm badge]][npm package]\n\nTo use this module in your project, package your code together using a bundler like [`rollup`][rollup/rollup] together with [`rollup-plugin-node-resolve`][rollup/rollup-plugin-node-resolve].\n\n## related\n* [`semibran/patch`][semibran/patch]: efficient patch operation for HTML elements\n\n[npm badge]:                         https://nodei.co/npm/@semibran/manifest.png?mini\n[npm package]:                       https://www.npmjs.com/package/@semibran/manifest\n[semibran/patch]:                    https://github.com/semibran/patch\n[hyper2/h2spec]:                     https://github.com/hyper2/h2spec\n[rollup/rollup]:                     https://github.com/rollup/rollup\n[rollup/rollup-plugin-node-resolve]: https://github.com/rollup/rollup-plugin-node-resolve\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemibran%2Fmanifest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemibran%2Fmanifest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemibran%2Fmanifest/lists"}