{"_id":"sigpro","_rev":"96-d581eea7aa5ae9b686d1adfd0bb018e6","name":"sigpro","dist-tags":{"latest":"2.0.4"},"versions":{"1.0.14":{"name":"sigpro","version":"1.0.14","keywords":["signals","reactive","web-components","vanilla-js","reactive-programming","signals-library","fine-grained-reactivity"],"license":"MIT","_id":"sigpro@1.0.14","maintainers":[{"name":"natxocc","email":"natxocc@gmail.com"}],"homepage":"https://natxocc.github.io/sigpro/","bugs":{"url":"https://github.com/natxocc/sigpro/issues"},"dist":{"shasum":"36e97051d69f69ff36a01184a009a30b2e20a9a1","tarball":"https://registry.npmjs.org/sigpro/-/sigpro-1.0.14.tgz","fileCount":102,"integrity":"sha512-QKH077+7Qk+mjnHmRlm0cgCFWRpAMKuNWvV6VX3ICwyYD/Bnptsbgvmaamw5D6BolfmY6RdvcFuaKsMvQqkWKA==","signatures":[{"sig":"MEQCIBIst1NwdURp9x+zUob5UhGqUpfik4ZCCFyF2wNblNyiAiA3Hrg/EFk5+KMlm8PuxmwYFhKdU6diK7DfbJfb5PHT1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7102577},"type":"module","gitHead":"20db42c2afe08781243c081dbc7915ba6f8849b4","scripts":{"docs:dev":"vitepress dev packages/docs","docs:build":"vitepress build packages/docs","docs:preview":"vitepress preview packages/docs"},"_npmUser":{"name":"natxocc","email":"natxocc@gmail.com"},"repository":{"url":"git+https://github.com/natxocc/sigpro.git","type":"git"},"_npmVersion":"10.8.2","description":"A minimalist reactive library for building web interfaces with signals, effects, and native web components. No compilation, no virtual DOM, just pure JavaScript and intelligent reactivity.","directories":{},"_nodeVersion":"20.20.1","_hasShrinkwrap":false,"devDependencies":{"vitepress":"^1.6.4"},"_npmOperationalInternal":{"tmp":"tmp/sigpro_1.0.14_1773967300871_0.6196070409755361","host":"s3://npm-registry-packages-npm-production"}},"1.1.20":{"name":"sigpro","version":"1.1.20","keywords":["signals","reactive","web-components","vanilla-js","reactive-programming","signals-library","fine-grained-reactivity"],"license":"MIT","_id":"sigpro@1.1.20","maintainers":[{"name":"natxocc","email":"natxocc@gmail.com"}],"homepage":"https://natxocc.github.io/sigpro/","bugs":{"url":"https://github.com/natxocc/sigpro/issues"},"dist":{"shasum":"3b253c1aa94482ce3b7144393bc07652b647b1a5","tarball":"https://registry.npmjs.org/sigpro/-/sigpro-1.1.20.tgz","fileCount":10,"integrity":"sha512-mw59Fi0T/1jKZazldkqc4lpN1nmssxBk8Zj4FGJhIIOKYOWGQLdUToSUXEEWKRyzwYzipsBt6UX3cF7QuuXMrQ==","signatures":[{"sig":"MEUCIQCmIQQOAf+xASfxqXP1b9tUn4cevmLDGGrvpFy9quOyQgIgQkM1tpKXEW9MaRI2ClqMKWIzZLX3OoC8O0UWZPViLyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71982},"main":"./dist/sigpro.esm.min.js","type":"module","unpkg":"./dist/sigpro.min.js","module":"./dist/sigpro.esm.min.js","exports":{".":{"types":"./sigpro/sigpro.d.ts","import":"./dist/sigpro.esm.min.js","script":"./dist/sigpro.js","development":"./index.js"},"./vite":"./vite/index.js","./vite/*":"./vite/*.js"},"gitHead":"fe5d1946feadc87da9cc5c0af28b7f352ae495d2","scripts":{"docs":"bun x serve docs","build":"npm run build:iife && npm run build:iife:min && npm run build:esm && npm run build:esm:min","clean":"rm -rf dist","prebuild":"npm run clean","build:esm":"bun build ./index.js --bundle --outfile=./dist/sigpro.esm.js --format=esm","build:iife":"bun build ./index.js --bundle --outfile=./dist/sigpro.js --format=iife --global-name=SigPro","build:esm:min":"bun build ./index.js --bundle --outfile=./dist/sigpro.esm.min.js --format=esm --minify","build:iife:min":"bun build ./index.js --bundle --outfile=./dist/sigpro.min.js --format=iife --global-name=SigPro --minify","prepublishOnly":"npm run build"},"_npmUser":{"name":"natxocc","email":"natxocc@gmail.com"},"jsdelivr":"./dist/sigpro.min.js","repository":{"url":"git+https://github.com/natxocc/sigpro.git","type":"git"},"_npmVersion":"10.8.2","description":"### **The Atomic Reactivity Engine for the Modern Web.**","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sigpro_1.1.20_1775317141347_0.9037267159869289","host":"s3://npm-registry-packages-npm-production"}},"1.2.40":{"name":"sigpro","version":"1.2.40","keywords":["signals","reactivity","reactive","pure","vanilla","js","ui","dom","state","frontend","spa","lightweight","sigpro"],"author":{"url":"https://sigpro.natxocc.com","name":"NatxoCC","email":"sigpro@natxocc.com"},"license":"MIT","_id":"sigpro@1.2.40","maintainers":[{"name":"natxocc","email":"natxocc@gmail.com"}],"homepage":"https://sigpro.natxocc.com/#/","bugs":{"url":"https://github.com/natxocc/sigpro/issues","email":"sigpro@natxocc.com"},"dist":{"shasum":"83380f9694e333281c7e5a00f094a50d6077b3f0","tarball":"https://registry.npmjs.org/sigpro/-/sigpro-1.2.40.tgz","fileCount":14,"integrity":"sha512-H1NdGuhycHHhF5EijCwdOSkYBCXBdulkLffSe+v8akNseKWOBdxacahynkjvwt+1BNg8AtF2OHj7OiWM71LfNQ==","signatures":[{"sig":"MEQCICP3iMqdra2g0ybsKENb8zkkQ3Mn7hWnT5SCDUS+PfSkAiB4USOcFPZgOqndo1TJOHTFrqJrRhr+GnXUC/FWii4wzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1745412},"main":"./dist/sigpro.js","type":"module","types":"./sigpro.d.ts","unpkg":"./dist/sigpro.js","module":"./dist/sigpro.js","exports":{".":{"types":"./sigpro.d.ts","import":"./dist/sigpro.js","default":"./dist/sigpro.js"},"./db":{"types":"./sigpro.d.ts","import":"./dist/sigpro.db.js","default":"./dist/sigpro.db.js"},"./ui":{"types":"./sigpro.ui.d.ts","import":"./dist/sigpro.ui.js","default":"./dist/sigpro.ui.js"},"./css":"./dist/sigpro.ui.css","./grid":{"import":"./dist/sigpro.grid.js","default":"./dist/sigpro.grid.js"},"./vite":{"import":"./dist/sigpro.vite.js","default":"./dist/sigpro.vite.js"},"./editor":{"import":"./dist/sigpro.editor.js","default":"./dist/sigpro.editor.js"},"./locale":{"types":"./sigpro.d.ts","import":"./dist/sigpro.locale.js","default":"./dist/sigpro.locale.js"},"./router":{"types":"./sigpro.d.ts","import":"./dist/sigpro.router.js","default":"./dist/sigpro.router.js"}},"gitHead":"eb1c81ec269a15982349122ff21a9f116decdb11","scripts":{"del":"bun pm cache rm && rm -f bun.lockb && rm -f bun.lock","docs":"bun x serve docs","build":"bun run build:core && bun run build:db && bun run build:router && bun run build:locale && bun run build:ui && bun run build:grid && bun run build:editor && bun run build:vite && bun run build:css && bun run build:convert && cp ./dist/* ./docs","clean":"rm -rf dist","build:db":"bun build ./src/sigpro.db.js --bundle --outfile=./dist/sigpro.db.js --format=esm --minify","build:ui":"bun build ./src/sigpro.ui.js --bundle --outfile=./dist/sigpro.ui.js --format=esm --external ./src/sigpro.js --minify","prebuild":"npm run clean","build:css":"tailwindcss -i ./src/sigpro.ui.css -o ./dist/sigpro.ui.css --minify --content './src/tailwind' && du -h ./dist/sigpro.ui.css","build:core":"bun build ./src/sigpro.js --bundle --outfile=./dist/sigpro.js --format=esm --minify","build:grid":"bun build ./src/sigpro.grid.js --bundle --external sigpro --outfile=./dist/sigpro.grid.js --format=esm --minify","build:vite":"bun build ./src/sigpro.vite.js --bundle --outfile=./dist/sigpro.vite.js --format=esm --external fs --external path --minify","build:editor":"bun build ./src/sigpro.editor.js --bundle --external sigpro --outfile=./dist/sigpro.editor.js --format=esm --minify","build:locale":"bun build ./src/sigpro.locale.js --bundle --outfile=./dist/sigpro.locale.js --format=esm --external ./src/sigpro.js --minify","build:router":"bun build ./src/sigpro.router.js --bundle --outfile=./dist/sigpro.router.js --format=esm --external ./src/sigpro.js --minify","build:convert":"bun build ./src/sigpro.convert.js --bundle --outfile=./docs/sigpro.convert.js --format=esm --external ./src/sigpro.js --minify"},"_npmUser":{"name":"natxocc","email":"natxocc@gmail.com"},"jsdelivr":"./dist/sigpro.js","repository":{"url":"git+https://github.com/natxocc/sigpro.git","type":"git"},"_npmVersion":"10.8.2","description":"Blazing fast, zero-overhead, vanilla JS renderer with atomic reactivity.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"daisyui":"^5.5.19","tailwindcss":"^4.3.0","@iconify/json":"^2.2.473","@tailwindcss/cli":"^4.3.0","ag-grid-community":"^35.3.0","@iconify/tailwind4":"^1.2.3"},"_npmOperationalInternal":{"tmp":"tmp/sigpro_1.2.40_1779485146447_0.7617941404296857","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"sigpro","version":"2.0.3","keywords":["signals","reactivity","reactive","pure","vanilla","js","ui","dom","state","frontend","spa","lightweight","sigpro"],"author":{"url":"https://sigpro.natxocc.com","name":"NatxoCC","email":"sigpro@natxocc.com"},"license":"MIT","_id":"sigpro@2.0.3","maintainers":[{"name":"natxocc","email":"natxocc@gmail.com"}],"homepage":"https://sigpro.natxocc.com/#/","bugs":{"url":"https://github.com/natxocc/sigpro/issues","email":"sigpro@natxocc.com"},"dist":{"shasum":"8adf973082139f70fbe28203eab84c098e173c4d","tarball":"https://registry.npmjs.org/sigpro/-/sigpro-2.0.3.tgz","fileCount":9,"integrity":"sha512-dIw4uNr1nzJMHSpfIHr80/0+vBXQMogO97q6fA5KZhB9zha3SrqmDabY/5++zrToO+v0S9B/NUyyfxaJVwXPuQ==","signatures":[{"sig":"MEUCIQCjSmiQUN5xyMW104eow+YOm6vIlj0hH8CePPAcsPSdRQIgH7vmpf3bnG/VxHXSrKFZ2nGB+UCuObq5H1XUwJNS5E0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDFhkir/xbLJQi8dqwOQKLSii9pUIc9g2eMfB1epRv5XAIgD/37WtfkFQX4ZsaDWDLDaBCD924QuaX+b/2ov0WGNSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1559496},"main":"./dist/sigpro.js","type":"module","types":"./sigpro.d.ts","unpkg":"./dist/sigpro.js","module":"./dist/sigpro.js","exports":{".":{"types":"./sigpro.d.ts","import":"./dist/sigpro.js","default":"./dist/sigpro.js"},"./grid":{"import":"./dist/sigpro.grid.js","default":"./dist/sigpro.grid.js"},"./vite":{"import":"./dist/sigpro.vite.js","default":"./dist/sigpro.vite.js"},"./editor":{"import":"./dist/sigpro.editor.js","default":"./dist/sigpro.editor.js"}},"gitHead":"f1318035c73f6a05e66354b4a8640b6ec1a0ff54","scripts":{"del":"bun pm cache rm && rm -f bun.lockb && rm -f bun.lock","docs":"bun x serve docs","build":"mkdir -p docs && bun run build:core && bun run build:grid && bun run build:editor && bun run build:vite && bun run build:convert && cp ./dist/*.js ./docs/","clean":"rm -rf dist docs/*.js","prebuild":"bun run clean","build:core":"bun build ./src/sigpro.js --bundle --outfile=./dist/sigpro.js --format=esm --minify","build:grid":"bun build ./src/sigpro.grid.js --bundle --outfile=./dist/sigpro.grid.js --format=esm --minify","build:vite":"bun build ./src/sigpro.vite.js --bundle --outfile=./dist/sigpro.vite.js --format=esm --external fs --external path --minify","build:editor":"bun build ./src/sigpro.editor.js --bundle --outfile=./dist/sigpro.editor.js --format=esm --minify","build:convert":"bun build ./src/sigpro.convert.js --bundle --outfile=./dist/sigpro.convert.js --format=esm --minify"},"_npmUser":{"name":"natxocc","email":"natxocc@gmail.com"},"jsdelivr":"./dist/sigpro.js","repository":{"url":"git+https://github.com/natxocc/sigpro.git","type":"git"},"_npmVersion":"10.8.2","description":"Blazing fast, zero-overhead, vanilla JS renderer with atomic reactivity.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"daisyui":"^5.5.19","tailwindcss":"^4.3.0","@iconify/json":"^2.2.473","@tailwindcss/cli":"^4.3.0","ag-grid-community":"^35.3.0","@iconify/tailwind4":"^1.2.3"},"_npmOperationalInternal":{"tmp":"tmp/sigpro_2.0.3_1790414980566_0.13875191453265434","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"_id":"sigpro@2.0.4","bugs":{"url":"https://github.com/natxocc/sigpro/issues","email":"sigpro@natxocc.com"},"dist":{"shasum":"136905d8033e6e6272b0a76a8dae52888ebbd81e","tarball":"https://registry.npmjs.org/sigpro/-/sigpro-2.0.4.tgz","fileCount":10,"integrity":"sha512-Mr7/WO/nmOEPIdGkDljKAotHbtY89uZdi/UtnjloE7PFT9VXgnQFAdWWcr3J1WzzFgH+NIYrg3Qm5bKxTfBgqg==","signatures":[{"sig":"MEUCIQC7n/i6ZxpxE+w/49uW/hR1sQ4WiVqrtRXsXs91T8a5mAIgfI1ARfNxGTWRztKcmRFvrCcn6eE4M8Up1JPdEFsN/rU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCItdDq6r7sPR3hONws8ZO3aPpaTVTeqOw0SXOdYQXkzQIhAP4zsbGolMdn7UnojNRFcC4dnEgf805L1HpPSCjBZddn"}],"unpackedSize":1579177},"main":"./dist/sigpro.js","name":"sigpro","type":"module","types":"./sigpro.d.ts","unpkg":"./dist/sigpro.js","author":{"url":"https://sigpro.natxocc.com","name":"NatxoCC","email":"sigpro@natxocc.com"},"module":"./dist/sigpro.js","exports":{".":{"types":"./sigpro.d.ts","import":"./dist/sigpro.js","default":"./dist/sigpro.js"},"./grid":{"import":"./dist/sigpro.grid.js","default":"./dist/sigpro.grid.js"},"./vite":{"import":"./dist/sigpro.vite.js","default":"./dist/sigpro.vite.js"},"./editor":{"import":"./dist/sigpro.editor.js","default":"./dist/sigpro.editor.js"}},"gitHead":"a7f25409a10476c8cd5ba70853ad01c7868dc080","license":"MIT","scripts":{"del":"bun pm cache rm && rm -f bun.lockb && rm -f bun.lock","docs":"bun x serve docs","build":"mkdir -p docs && bun run build:core && bun run build:grid && bun run build:editor && bun run build:ui && bun run build:vite && bun run build:convert && cp ./dist/*.js ./docs/","clean":"rm -rf dist docs/*.js","build:ui":"bun build ./src/sigpro.ui.js --bundle --outfile=./dist/sigpro.ui.js --format=esm --external ./src/sigpro.js --minify","prebuild":"bun run clean","build:core":"bun build ./src/sigpro.js --bundle --outfile=./dist/sigpro.js --format=esm --minify","build:grid":"bun build ./src/sigpro.grid.js --bundle --outfile=./dist/sigpro.grid.js --format=esm --minify","build:vite":"bun build ./src/sigpro.vite.js --bundle --outfile=./dist/sigpro.vite.js --format=esm --external fs --external path --minify","build:editor":"bun build ./src/sigpro.editor.js --bundle --outfile=./dist/sigpro.editor.js --format=esm --minify","build:convert":"bun build ./src/sigpro.convert.js --bundle --outfile=./dist/sigpro.convert.js --format=esm --minify"},"version":"2.0.4","_npmUser":{"name":"natxocc","email":"natxocc@gmail.com"},"homepage":"https://sigpro.natxocc.com/#/","jsdelivr":"./dist/sigpro.js","keywords":["signals","reactivity","reactive","pure","vanilla","js","ui","dom","state","frontend","spa","lightweight","sigpro"],"repository":{"url":"git+https://github.com/natxocc/sigpro.git","type":"git"},"_npmVersion":"10.8.2","description":"Blazing fast, zero-overhead, vanilla JS renderer with atomic reactivity.","directories":{},"maintainers":[{"name":"natxocc","email":"natxocc@gmail.com"}],"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"daisyui":"^5.5.19","tailwindcss":"^4.3.0","@iconify/json":"^2.2.473","@tailwindcss/cli":"^4.3.0","ag-grid-community":"^35.3.0","@iconify/tailwind4":"^1.2.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sigpro_2.0.4_1790473521246_0.5168875178655559"}}},"time":{"created":"2026-03-13T14:23:34.004Z","modified":"2026-09-27T01:45:21.504Z","1.0.0":"2026-03-13T14:23:34.160Z","1.0.1":"2026-03-13T14:41:16.024Z","1.0.2":"2026-03-13T15:12:49.124Z","1.0.3":"2026-03-14T00:20:05.287Z","1.0.4":"2026-03-15T13:03:30.403Z","1.0.5":"2026-03-15T13:38:06.910Z","1.0.6":"2026-03-16T00:13:24.862Z","1.0.7":"2026-03-16T20:19:42.989Z","1.0.8":"2026-03-16T22:20:18.183Z","1.0.9":"2026-03-17T11:47:06.028Z","1.0.10":"2026-03-17T14:01:28.091Z","1.0.11":"2026-03-20T00:25:52.298Z","1.0.13":"2026-03-20T00:32:25.843Z","1.0.14":"2026-03-20T00:41:41.053Z","1.1.0":"2026-03-22T00:13:28.814Z","1.1.1":"2026-03-22T02:05:59.544Z","1.1.2":"2026-03-23T00:12:52.861Z","1.1.3":"2026-03-25T23:40:50.941Z","1.1.4":"2026-03-25T23:44:32.910Z","1.1.5":"2026-03-26T13:08:33.375Z","1.1.6":"2026-03-26T19:02:20.933Z","1.1.7":"2026-03-26T19:27:36.717Z","1.1.8":"2026-03-26T19:32:10.307Z","1.1.9":"2026-03-26T19:38:23.653Z","1.1.10":"2026-03-26T22:03:18.436Z","1.1.11":"2026-03-26T22:15:05.414Z","1.1.12":"2026-03-28T19:47:27.183Z","1.1.13":"2026-03-30T19:24:29.483Z","1.1.14":"2026-03-30T19:29:33.041Z","1.1.16":"2026-03-30T21:31:48.003Z","1.1.17":"2026-03-31T11:51:13.671Z","1.1.18":"2026-04-01T07:25:12.474Z","1.1.19":"2026-04-03T21:56:51.077Z","1.1.20":"2026-04-04T15:39:01.507Z","1.2.11":"2026-04-15T08:45:48.484Z","1.2.12":"2026-04-15T13:00:22.167Z","1.2.19":"2026-04-26T00:49:44.134Z","1.2.20":"2026-04-26T17:15:37.757Z","1.2.24":"2026-04-27T13:47:43.524Z","1.2.25":"2026-04-28T20:34:47.806Z","1.2.26":"2026-04-29T15:50:37.042Z","1.2.28":"2026-04-29T21:35:13.274Z","1.2.30":"2026-04-30T22:03:57.703Z","1.2.31":"2026-05-02T19:34:27.376Z","1.2.35":"2026-05-04T16:20:28.709Z","1.2.36":"2026-05-05T14:46:14.391Z","1.2.38":"2026-05-09T17:54:05.016Z","1.2.39":"2026-05-14T12:15:09.181Z","1.2.40":"2026-05-22T21:25:46.632Z","2.0.3":"2026-09-26T09:29:40.698Z","2.0.4":"2026-09-27T01:45:21.339Z"},"bugs":{"url":"https://github.com/natxocc/sigpro/issues","email":"sigpro@natxocc.com"},"author":{"url":"https://sigpro.natxocc.com","name":"NatxoCC","email":"sigpro@natxocc.com"},"license":"MIT","homepage":"https://sigpro.natxocc.com/#/","keywords":["signals","reactivity","reactive","pure","vanilla","js","ui","dom","state","frontend","spa","lightweight","sigpro"],"repository":{"url":"git+https://github.com/natxocc/sigpro.git","type":"git"},"description":"Blazing fast, zero-overhead, vanilla JS renderer with atomic reactivity.","maintainers":[{"name":"natxocc","email":"natxocc@gmail.com"}],"readme":"# `SigPro`\n\nBlazing fast, zero-overhead, vanilla JS renderer with atomic reactivity.\n\n[![npm version](https://img.shields.io/npm/v/sigpro.svg)](https://www.npmjs.com/package/sigpro)\n![js size](https://img.shields.io/badge/js_size-~4_kB_brotli-blue)\n[![license](https://img.shields.io/npm/l/sigpro)](https://github.com/natxocc/sigpro/blob/main/LICENSE)\n\n[**Explore the Docs →**](https://sigpro.natxocc.com/#/)\n\n---\n\n## Why SigPro?\n\nAfter years of building within closed ecosystems like **React, Vue, or Svelte**—spending countless hours mastering their internal rules and extra development time on abstractions—we must face an inevitable truth: all those complex \"wrappers\" must ultimately be translated back into Pure JavaScript for the browser to understand.\n\nThat extra development time and the cognitive load of \"learning the framework\" instead of \"learning the language\" is exactly what **SigPro** eliminates. If the final destination is always JS, why not use a Pure JS-based system that drastically simplifies coding with a readable, vanilla, and remarkably fast architecture?\n\n* **Atomic Precision:** Powered by an **alien-signals**-class push-pull reactive core. State is bound directly to DOM nodes—when a value changes, **only that specific node updates**. No diffing, no virtual tree, no wasted work.\n* **Zero-Hydration Bottlenecks:** No 100KB bundles or complex build steps. SigPro is pure, optimized JavaScript tailored for the browser's native engine.\n* **Lazy Computation:** `computed()` is lazy and verified with `checkDirty`. Effects don't re-run when a dependency's value didn't actually change.\n* **Build-Tool Agnostic:** Total freedom. Use it with **Vite, Webpack, or Rollup** for enterprise projects, or simply import it via a **`<script>` tag** for rapid prototyping. No tooling required.\n* **Zero-Scale Bloat:** Unlike other frameworks where the bundle grows exponentially, SigPro's footprint remains **flat and predictable**.\n* **Premium DX:** Forget boilerplate imports. SigPro injects an elegant, functional syntax (`div()`, `button()`, `span()`) directly into your scope for a **\"Zero-Import\"** workflow.\n* **Fully Loaded:** Built-in Hash Routing, native **`localStorage` persistence**, **`provide`/`inject`** dependency injection, **SVG support**, and automatic cleanup of listeners and scopes—all in a single file.\n* **No Memory Leaks:** Scopes cascade idempotently. Event listeners are tracked and removed with the node. Computeds die with their owners.\n\n-----\n\n## Elegance in Action\n\nCreate reactive, persistent components with a syntax that feels like Vanilla JS, but works like magic:\n\n```html\n<div id=\"app\"></div>\n```\n\n```javascript\nimport { signal, computed, mount, exposeTags } from \"sigpro\";\n\nexposeTags();\n\nconst Counter = () => {\n  // Simple signal\n  const value = signal(100);\n  // One-line persistence: state survives page reloads automatically\n  const count = local(\"user-counter-pref\",0); // use local() for persistence\n  const ref   = signal(100);\n  const doubleValue = computed(() => value() * ref());\n\n  return div({ class: \"card\" }, [\n    h1(() => `Count: ${count()}, Reference: ${value()}, Double: ${doubleValue()}`),\n    p(\"Atomic updates. Zero re-renders of the parent tree.\"),\n    button({ onclick: () => count(count() + 1) }, \"Increment +1\")\n  ]);\n};\n\nmount(Counter, \"#app\");\n```\n\n-----\n\n## Core API\n\n### Reactivity\n\n```javascript\nimport {\n  signal, computed, effect, effectScope,\n  batch, untrack, watch, local, provide, inject\n} from \"sigpro\";\n\nconst count = signal(0);\ncount();        // read\ncount(1);       // write\n\nconst double = computed(() => count() * 2);\ndouble();       // → 2, lazily evaluated\n\n// Effect with cleanup\nconst stop = effect(() => {\n  const v = count();\n  console.log(v);\n  return () => console.log(\"cleanup\");\n});\n\n// Scoped effects (cascade cleanup for children)\nconst dispose = effectScope(() => {\n  effect(() => console.log(count()));\n  effect(() => console.log(double()));\n});\n\n// Batching: defer flush until the end\nbatch(() => {\n  count(1);\n  count(2);\n});\n\n// Watch: skip initial run, receive old/new values\nwatch(count, (newval, oldval) => console.log(oldval, \"→\", newval));\n\n// Untrack: read without subscribing\nuntrack(() => count());\n\n// Persistent signal (localStorage-backed, JSON)\nconst theme = local(\"theme\", \"light\");\ntheme(\"dark\");  // stored, survives reloads\n\n// Dependency injection\nprovide(\"theme\", signal(\"dark\"));\nconst t = inject(\"theme\");  // nearest provider\n```\n\n### Rendering\n\n```javascript\nimport { h, mount, exposeTags } from \"sigpro\";\n\nexposeTags(); // → window.div, window.span, window.button, etc.\n\n// Static\ndiv({ class: \"card\" }, \"Hello\");\n\n// Reactive props\ndiv({ class: () => active() ? \"card active\" : \"card\" });\n\n// Reactive style\ndiv({ style: () => open() ? \"\" : \"display:none\" });\n\n// Reactive children\ndiv({}, () => items().map(i => li({}, i.name)));\n\n// Events\nbutton({ onclick: () => count(count() + 1) }, \"+1\");\n\n// ref\ninput({ ref: el => el.focus() });\n\n// innerHTML (reactive)\ndiv({ html: () => markdown(run().text) });\n\n// Two-way binding\ninput({ value: () => username(), oninput: e => username(e.target.value)})\n```\n\n### SVG\n\n```javascript\nsvg({ viewBox: \"0 0 24 24\" }, [\n  path({ d: \"M9 12l2 2 4-4\", stroke: \"currentColor\", fill: \"none\" })\n]);\n```\n\nSVG tags are detected automatically. `class`, `style`, and every attribute go through `setAttribute` correctly.\n\n### Router\n\n```javascript\nimport { router } from \"sigpro\";\n\nconst App = router([\n  { path: \"/\",          component: Home },\n  { path: \"/about\",     component: About },\n  { path: \"/blog/:slug\", component: BlogPost },\n  { path: \"*\",          component: NotFound }\n]);\n\nrouter.to(\"/about\");\nrouter.back();\nrouter.path(); // current path\n```\n\n### i18n\n\n```javascript\nimport { addLang, setLocale, t, tt } from \"sigpro\";\n\naddLang({\n  en: { hello: \"Hello\" },\n  es: { hello: \"Hola\" }\n});\n\nsetLocale(\"es\");\ntt(\"hello\");    // \"Hola\"\nt(\"hello\")();   // \"Hola\" (reactive getter)\n```\n\n### HTTP Helper\n\n```javascript\nimport { db } from \"sigpro\";\n\nconst loading = signal(false);\nconst data = await db(\"/api/users\", null, loading);\n\n// POST\nawait db(\"/api/save\", { name: \"Ada\" });\n```\n\n-----\n\n## Performance Without Compromise\n\n| Feature | **SigPro** | React / Vue | Svelte |\n| :--- | :--- | :--- | :--- |\n| **Payload (Brotli)** | **~4KB** | ~30KB - 50KB | ~5KB (Compiled Runtime) |\n| **State Logic** | **Push-pull Signals** | Virtual DOM Diffing | Compiler Dirty Bits |\n| **Update Speed** | **Direct Node Access** | Component Re-render | Block Reconciliation |\n| **Native Persistence** | **`local()`** | Requires Plugins | Manual |\n| **Dependencies** | **Zero** | Many | Build Toolchain |\n| **Lifecycle Mgmt** | **Automatic (Scopes + `_cln`)** | Manual / Hook-based | Manual / Hook-based |\n| **Routing** | **Reactive Hash Router** | Virtual Router (External) | File-based / External |\n| **Learning Curve** | **Zero (Vanilla JS)** | Steep (JSX/Templates) | Medium (Directives) |\n\n-----\n\n## Quick Start\n\n```bash\nnpm install sigpro\n```\n\n**With Vite:**\n```bash\nnpm create vite@latest my-app -- --template vanilla\ncd my-app\nnpm install sigpro\n```\n\n**Or without build tools:**\n```html\n<script src=\"https://unpkg.com/sigpro\"></script>\n```\n\n-----\n\n## What SigPro Is Not\n\nSigPro is **not** a framework with a custom compiler, virtual DOM, or JSX transform. It is:\n\n- **Vanilla JS** with a reactive core.\n- **Explicit**: `signal()`, `computed()`, `effect()` — no overloaded operators, no magic argument-type dispatch.\n- **Minimal**: only the primitives needed to build UIs, not a kitchen sink.\n\nIf you want JSX, file-based routing with auto-generation, or a component lifecycle DSL, SigPro is not that. If you want **the rawest, smallest reactive renderer that stays out of your way**, it is.\n\n-----\n\n## License\n\nMIT © 2026 **SigPro Team**.\n*Engineered for speed, designed for clarity, built for the modern web.*\n","readmeFilename":"Readme.md"}