{"id":25300106,"url":"https://github.com/deftio/bitwrench","last_synced_at":"2026-04-12T10:00:10.498Z","repository":{"id":33096819,"uuid":"151674925","full_name":"deftio/bitwrench","owner":"deftio","description":"bitwrench is a javascript front end and ui library which provides styling, reactivity, and works with zero dependancies","archived":false,"fork":false,"pushed_at":"2026-03-06T09:19:47.000Z","size":28268,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-06T12:48:29.932Z","etag":null,"topics":["bootstrap","css","frontend","frontend-web","javascript","javascript-library","react","reactjs","solidjs","tailwindcss","ui","ui-components","vue","vuejs","zero-dependencies","zero-dependency"],"latest_commit_sha":null,"homepage":"https://deftio.github.io/bitwrench/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deftio.png","metadata":{"files":{"readme":"README-original.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-10-05T05:32:23.000Z","updated_at":"2026-03-06T09:19:51.000Z","dependencies_parsed_at":"2025-10-28T06:30:53.345Z","dependency_job_id":"aa3036f4-c50f-4ce0-8547-8e640b1ce53e","html_url":"https://github.com/deftio/bitwrench","commit_stats":{"total_commits":123,"total_committers":2,"mean_commits":61.5,"dds":0.1382113821138211,"last_synced_commit":"09843131862a8c52039618e1b5cbe0c6ac1306ff"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/deftio/bitwrench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deftio%2Fbitwrench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deftio%2Fbitwrench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deftio%2Fbitwrench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deftio%2Fbitwrench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deftio","download_url":"https://codeload.github.com/deftio/bitwrench/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deftio%2Fbitwrench/sbom","scorecard":{"id":332546,"data":{"date":"2025-08-11","repo":{"name":"github.com/deftio/bitwrench","commit":"76429bb56d11e239e4e511885f376cc1831a0c44"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.1,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/7 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: dev/docStringDev.js:0","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: dev/docStringParseDev.js:0","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: tools/bwconsole.js:0","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: tools/createSimpleHTMLPage.js:0","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: tools/export-bw-default-css.js:0","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: tools/umd2ModuleHack.js:0","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: tools/update-bw-package.js:0","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: tools/updatereadme.js:0","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/deftio/bitwrench/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/deftio/bitwrench/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/deftio/bitwrench/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/deftio/bitwrench/codeql-analysis.yml/master?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 23 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T03:56:51.158Z","repository_id":33096819,"created_at":"2025-08-18T03:56:51.158Z","updated_at":"2025-08-18T03:56:51.158Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30212106,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T09:02:10.694Z","status":"ssl_error","status_checked_at":"2026-03-07T09:02:08.429Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bootstrap","css","frontend","frontend-web","javascript","javascript-library","react","reactjs","solidjs","tailwindcss","ui","ui-components","vue","vuejs","zero-dependencies","zero-dependency"],"created_at":"2025-02-13T05:38:22.605Z","updated_at":"2026-03-10T11:07:41.831Z","avatar_url":"https://github.com/deftio.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License](https://img.shields.io/badge/License-BSD%202--Clause-blue.svg)](https://opensource.org/licenses/BSD-2-Clause)\n[![NPM version](https://img.shields.io/npm/v/bitwrench.svg?style=flat-square)](https://www.npmjs.com/package/bitwrench)\n[![Build Status](https://travis-ci.org/deftio/bitwrench.svg?branch=master)](https://travis-ci.org/deftio/fifostr)\n\n[![bitwrench](./images/bitwrench-logo-med.png)](http://www.deftio.com/bitwrench)\n\n\n## Welcome to bitwrench.js \n\nbitwrench.js is a javascript library for for creating quick demos with almost no depedancies.  With bitwrench one can create web pages and components with pure json or javascript dictionaries including handlers (e.g. onclick=\"...code..\" ==\u003e onclick:function_ref, css , etc. )\nbitwrench.js also has handyman functions such as loremIpsum generation, ranged random numbers and interpolaters, and color blenders.  Use it for throwing up quick web pages which don't depend on any server side framework but need a little prettyifcation or for visualizing quick data.  For example when debugging C/C++ embedded projects where we don't want to clutter the build dirs with lots of \"weird web stuff\" - just write a simple HTML page with bitwrench and still load and view raw text files, JSON, arrays and other bits of embedded files with no extra dependancies.\n\nFor those used to modern frameworks such as react / vue / svelte etc.  bitwrench.js comes from a pre 2011 time period - so it has more of a jquery like feel, but with a declaritve syntax.  See example code and page below for more.  bitwrench.js does work in older browsers such Internet Explorer (v7 and later).\n\n\n### Features\n\n* **HTML quick emits** -- create HTML objects either client or server side from pure JSON.  useful for making quick components or dynamic content w/o any inline HTML\n\t* html([\"div\", {class:\"class1 class2\", onclick:\"myFunction(this)\",\"This is the content\"}] \n\t* DOM selects and applies e.g. \n\t\t* bw.DOM(\"h3\",\"tada\") // set all \"h3\" tags to have the content \"tada\"\n\t\t* bw.DOM(\".myClass\",function(x){... do something on each element described by CSS selector .myClass})\n\t* supports \"deep\" hieararchical JSON constructs and arrays\n\t* registerFunction abilities allow functions to be passed statically to HTML elements (see docs)\n\t* Useful as a \"onefile\" framework which an interpret rich JSON in to full web pages.  \n* **Color conversions and interpolation**\n\t* RGB, RGBa, HSL, HSLa, and theme generation both as numeric values also as CSS outputs\n* **setting/getting cookies**   \n* **pretty printing json**\n* **Saving/Loading application data files** (works in both browser or node)\n\t* save / load files as raw or JSON \n* **Getting URL parameters with defaults**\n\t* simple parsing of URL params, also can be  used for command line scripts, also packs simple dicts back to URLs.  note that this functionality predated modern URL libs so you might want to use those for modern apps.  However bitwrench versions do work on old browers such as IE8 and iPodTouch 4th generation\n* **Data manipulation functions** and other \"random\" things \n\t* numeric interpolation \u0026 clipping\n\t* create multi-d arrays\n\t* random(4,11) ==\u003e put out a random number in the range 4-11, also provides multidim arrays of random numbers useful for testing tables etc\n\t* prandom() ==\u003e pseudorandom numbers with range settings,   also provides multidim arrays of random numbers useful for testing tables etc\n* **Logging** with time-stamps, messaging, and pretty printing (raw, HTML, and text) \n\t* Logging also has auto dissolve so one can log a process and then dump later or suppress in 'production'\n* **Built-in docString parsing** with extraction support \n\t* bitwrench.js self-documents in that from the browser DOM one can pull out a given function's doc strings such as bw.docString(\"DOM\") ==\u003e gives docString inforfor that function.\n\t* note that bitwrench.min.js strips comments so built-in help is not available.\n\n\n\nThere is no great structure here, just a bunch of kitchen sink things that seemed to be handy in alot of quick web dev situations.    All non-dom specific calls can be run either server side or client side.\n\nA minified form bitwrench.min.js is provided with identical functionality\n\n## Usage \nSee the quick docs here:\n[bitwrench quick docs](./quick-docs.html)\n\nother examples here:\n[bitwrench examples](./examples)\n\n### node.js\n```bash\n#Installation (server side)  \nnpm install bitwrench --save \n```\n\n```javascript\n//usage in nodejs\nvar bw = require('./bitwrench.js');  //adds to current scope\nvar s = bw.html([\"div\",{\"class\":\"foo\"},\"This is some  HTML\"]); // now... ===\u003e s = \"\u003cdiv class='foo'\u003eThis is some HTML\u003c/div\u003e\n\n```\n\n### browser\nIn the browser bitwrench is loaded like any script library.  Note that parameters can be passed to bitwrench to control the loading process.\nbitwrench generates its own default css from javascript and loads those.  You can see these statically in the bitwrench.css file (note that bitwrench.css can also be used standalone without the bitwrench.js library).\n[Example Page](./examples/example5.html) source code here:\n\n```html\n\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n\u003cscript src=\"../bitwrench.js\" \u003e\u003c/script\u003e\n\u003c/head\u003e\n\u003cbody class=\"bw-def-page-setup bw-font-sans-serif\"\u003e\n\u003cscript\u003e\nvar htmlData = {c: //for more on the format, see docs github.com/deftio/bitwrench\n [\n   [\"h1\" ,{\"class\":\"bw-h1\"},\"Bitwrench Test Area\"  ],\n   \"bitwrench version: \"+bw.version().version +\"\u003cbr\u003e\u003cbr\u003e\",\n   [\"div\",{\"class\":\"foo\"}  ,\"This page has HTML content which is entirely written as Javascript objects (JSON-like but with support for functions) by content using \"+bw.html([\"a\",{href:\"https://github.com/deftio/bitwrench\"},\"bitwrench.js\"])+\". Bitwrench has built-in grids, tables,headings, and other quick-n-dirty html prototyping tasks.  Bitwrench html generation runs either client or server side.\"],\n   \"\u003chr\u003e\",\n  [\"h2\",\"Lorem Ipsum Generator\"],\n  \"Good for testing simple layout ideas.\u003cbr\u003e\u003cbr\u003e\",\n  [\"div\",{},bw.loremIpsum(230)],\n  \"\u003chr\u003e\",\n  [\"h2\",{},\"Sample Content with 3 Columns\"],\n    [\"div\",{\"class\":\"bw-row\"}, \n      [ \n      [\"div\",{\"class\":\"bw-col-4 bw-left \"},\"\u003ch3\u003eLeft justified\u003c/h3\u003e\"+bw.loremIpsum(95)], //mix text and html freely\n      [\"div\",{\"class\":\"bw-col-4 bw-center bw-pad1\"},\"\u003ch3\u003eCentered\u003c/h3\u003e\"+bw.loremIpsum(95,3)], \n      [\"div\",{\"class\":\"bw-col-4 bw-right \"},\"\u003ch3\u003eRight justified\u003c/h3\u003e\"+bw.loremIpsum(95,2)],\n      ],\n    ], \n  \"\u003cbr\u003e\u003chr\u003e\",\n  [\"h2\", {}, \"Example Sortable Table\"],\n  bw.htmlTable( // json to table (note table data can be  functions as well)\n    [\n      [\"Name\",\"Age\", \"Prof\", \"Fav Color\"], // just an 2D array \n      [\"Sue\", 34, \"Engineer\", {a:{style:\"color:red\"},c:\"red\"}], // inline json-html objects\n      [\"Bob\" ,35, \"Teacher\",  {a:{style:\"color:green\"},c:\"green\"}],\n      [\"Vito\",23, \"Mechanic\", {a:{style:\"color:blue\",onclick:\"alert('blue!')\"},c:\"blue\"}],\n      [\"Hank\",73, \"Retired\",  {a:{style:\"color:purple\"},c:\"purple\"}]\n    ],{sortable:true}),\n   \"\u003cbr\u003e\u003chr\u003e\",\n   [\"h2\",{},\"Sample Buttons\"],\n   \"These buttons have function handlers attached.\u003cbr\u003e\u003cbr\u003e\",\n   [\"button\",{onclick:\"alert('button pressed!')\"},\"Alert Button\"], // staight js\n   \"\u0026nbsp;\u0026nbsp;\",\n   [\"button\",{onclick:myFunc},\"Time Button\"], // bitwrench maps and registers event functions\n   \"\u003cbr\u003e\u003chr\u003e\",\n   [\"h2\",\"Built in Headings\"],\n   [1,2,3,4,5,6].map( function(x){return bw.html([\"h\"+x,\"Heading \"+x])}).join(\"\"), // Headings\n   \"\u003cbr\u003e\u003chr\u003e\",\n   [\"h2\",\"Grid System (responsive)\"],\n   \"Grid system (just uses css so can use either bitwrench.js loader or just bitwrench.css with no javascript.  Use -fluid for responsive\u003cbr\u003e\u003cbr\u003e\",\n   [\"style\",{},\"\\n.boxEv {background-color: #aaa; height: 30px; border-radius:5px; border:1px solid black;}\\n.boxOd {background-color: #ddd; height:30px; border-radius:5px;border:1px solid black;;}\\n\"], // some styles (note bw has CSS generation shown in another example)\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-1 boxEv\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxOd\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxEv\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxOd\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxEv\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxOd\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxEv\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxOd\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxEv\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxOd\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxEv\"},c:\"bw-col-1\"},{a:{class:\"bw-col-1 boxOd\"},c:\"bw-col-1\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-2 boxEv\"},c:\"bw-col-2\"},{a:{class:\"bw-col-2 boxOd\"},c:\"bw-col-2\"},{a:{class:\"bw-col-2 boxEv\"},c:\"bw-col-2\"},{a:{class:\"bw-col-2 boxOd\"},c:\"bw-col-2\"},{a:{class:\"bw-col-2 boxEv\"},c:\"bw-col-2\"},{a:{class:\"bw-col-2 boxOd\"},c:\"bw-col-2\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-3 boxEv\"},c:\"bw-col-3\"},{a:{class:\"bw-col-3 boxOd\"},c:\"bw-col-3\"},{a:{class:\"bw-col-3 boxEv\"},c:\"bw-col-3\"},{a:{class:\"bw-col-3 boxOd\"},c:\"bw-col-3\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-4 boxEv\"},c:\"bw-col-4\"},{a:{class:\"bw-col-4 boxOd\"},c:\"bw-col-4\"},{a:{class:\"bw-col-4 boxEv\"},c:\"bw-col-4\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-5 boxEv\"},c:\"bw-col-5\"},{a:{class:\"bw-col-7 boxOd\"},c:\"bw-col-7\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-6 boxEv\"},c:\"bw-col-6\"},{a:{class:\"bw-col-6 boxOd\"},c:\"bw-col-6\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-7 boxEv\"},c:\"bw-col-7\"},{a:{class:\"bw-col-5 boxOd\"},c:\"bw-col-5\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-8 boxEv\"},c:\"bw-col-8\"},{a:{class:\"bw-col-4 boxOd\"},c:\"bw-col-4\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-9 boxEv\"},c:\"bw-col-9\"},{a:{class:\"bw-col-3 boxOd\"},c:\"bw-col-3\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-10 boxEv\"},c:\"bw-col-10\"},{a:{class:\"bw-col-2 boxOd\"},c:\"bw-col-2\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-11 boxEv\"},c:\"bw-col-11\"},{a:{class:\"bw-col-1 boxOd\"},c:\"bw-col-1\"}]],\n   [\"div\",{class:\"bw-row bw-center\"},[{a:{class:\"bw-col-12 boxEv\"},c:\"bw-col-12\"}]],\n\n   \"\u003cbr\u003e\u003chr\u003e\",\n   [\"h2\",{},\"Simple Sign\"],\n   [\"div\",{style:\"padding:10%; border:1px solid black;\"},bw.htmlSign(\"This is a big sign!\")],\n   \"\u003cbr\u003e\u003chr\u003e\",\n   [\"h2\",{},\"Tabbed Content\"],\n     bw.htmlTabs([\n        [\"Tab1\",bw.loremIpsum(300)],\n      [\"Tab2\",bw.loremIpsum(300,20)],\n      [\"Tab3\",bw.loremIpsum(300,50)]],{tab_atr:{style:\"\"}}) ,\n   \"\u003cbr\u003e\",\n ]};\n \nbw.DOMInsertElement(\"body\",bw.html(htmlData),true);\nfunction myFunc(x){return x.innerHTML = (new Date()).toLocaleTimeString();} // button function\n\n\nbw.DOMInsertElement(\"head\",bw.html(bw.htmlFavicon(\"\\u266C\",\"teal\"))); //  insert a favicon on the top tab of the page, \"X\" for a single letter\nbw.DOMInsertElement(\"head\",bw.html({t:\"title\",c:\"Bitwrench HTML Gen \"})); // insert a page title on the browser tab\n\u003c/script\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n \n\n## Source code home  \nall source is at github:  \n[bitwrench on github](http://github.com/deftio/bitwrench)  \n\n\n## Linting \nbitwrench uses eslint for static code checking and analysis.  Due to bitwrench's age we've kept \";\" as a required part of the linting process.  After running lint you should see no errors or warnings.\n\n```bash\nnpm install eslint --save-dev\n\n./node_modules/.bin/eslint --init\n\n```\nNow run the lint test like this:\n```bash\nnpm run lint\n```\n\n## Tests  (requires mocha and chai test suites)  \nbitwrench is tested with the mocha framework installed locally using npm along with instanbul for code / line coverage\n\n```bash\nnpm install mocha --save-dev mocha\n\n```\n\nRun the tests as follows:\n```bash\nnpm run test\n\n```\n\n## Release History  \n* 1.2x Initial release  \n  \n## License  \nbitwrench is released under the OSI Approved FreeBSD 2-clause license  \n\nsee LICENSE.txt file","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeftio%2Fbitwrench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeftio%2Fbitwrench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeftio%2Fbitwrench/lists"}