{"_id":"@atomdev/core","_rev":"7-089ef97b2da5ed13d334753d45acdba3","name":"@atomdev/core","dist-tags":{"latest":"0.7.0"},"versions":{"0.2.0":{"name":"@atomdev/core","version":"0.2.0","keywords":["react","ui","components","jsx","typescript","class-components","virtual-dom","frontend","framework"],"author":{"url":"https://carbondigital.us/","name":"Carbon Digital","email":"hello@carbondigital.us"},"license":"ISC","_id":"@atomdev/core@0.2.0","maintainers":[{"name":"jared.ledbetter","email":"hello@carbondigital.us"}],"homepage":"https://github.com/carbondigitalus/atom-core#readme","bugs":{"url":"https://github.com/carbondigitalus/atom-core/issues"},"dist":{"shasum":"053bb91f5bc34b9481488f2250c2588ee41cdbc1","tarball":"https://registry.npmjs.org/@atomdev/core/-/core-0.2.0.tgz","fileCount":66,"integrity":"sha512-F99QFjueM0GMXJCifsw8RvLUGWhIJuPYOlfOrSqWsUvH0IfNY0Qps0SOr8+hYSAsGAbvYWT1j3sT57/uX9EORw==","signatures":[{"sig":"MEQCIEgjOR3rNUOgNDCVxTeGMBtnXCohnRHccGQO2ocYDQtBAiAMoAg+1SC5HeNFAHOSZ9rrb7Yi9VXYcz2zbOnHdgBbGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36537},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./jsx-runtime":{"types":"./dist/runtime/jsx-runtime.d.ts","default":"./dist/runtime/jsx-runtime.js"},"./jsx-dev-runtime":{"types":"./dist/runtime/jsx-dev-runtime.d.ts","default":"./dist/runtime/jsx-dev-runtime.js"}},"gitHead":"8613a4210fcd51af0e0cc4f35dfa700de188e1a8","scripts":{"build":"tsc","preview":"vite preview","code:lint":"eslint src --ext .ts,.tsx","start:dev":"vite","code:format":"prettier --write src","start:dev:types":"tsc --watch --noEmit"},"_npmUser":{"name":"jared.ledbetter","email":"hello@carbondigital.us"},"repository":{"url":"git+https://github.com/carbondigitalus/atom-core.git","type":"git"},"_npmVersion":"10.9.2","description":"The AtomJS Core project.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"jsx-runtime":["dist/runtime/jsx-runtime.d.ts"],"jsx-dev-runtime":["dist/runtime/jsx-dev-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.3","eslint":"^9.34.0","prettier":"^3.6.2","typescript":"^5.9.2","@types/node":"^24.3.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.40.0","@typescript-eslint/eslint-plugin":"^8.40.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.0_1756365552702_0.31289568292788017","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@atomdev/core","version":"0.3.0","keywords":["react","ui","components","jsx","typescript","class-components","virtual-dom","frontend","framework"],"author":{"url":"https://carbondigital.us/","name":"Carbon Digital","email":"hello@carbondigital.us"},"license":"ISC","_id":"@atomdev/core@0.3.0","maintainers":[{"name":"jared.ledbetter","email":"hello@carbondigital.us"}],"homepage":"https://github.com/carbondigitalus/atom-core#readme","bugs":{"url":"https://github.com/carbondigitalus/atom-core/issues"},"dist":{"shasum":"6797a7891287419812dd7020abf94beaf3271644","tarball":"https://registry.npmjs.org/@atomdev/core/-/core-0.3.0.tgz","fileCount":74,"integrity":"sha512-iILeTJMsSxTv6VyPKQ0TA/DMUG17WPhj8POUbATYFprjMMlM2CpnAOIG6XsiaWL3KHYFpoOz+GGh//+P+qPqrg==","signatures":[{"sig":"MEUCIQDMx2XSklSXCRO1z2a54kiZaVsfzLsQHGrc6/ubTa63hQIgC8551k7cD5E+ZwDRC+vkTtj0cpO+1TwuoSk8+V9SumA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38258},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./jsx-runtime":{"types":"./dist/runtime/jsx-runtime.d.ts","default":"./dist/runtime/jsx-runtime.js"},"./jsx-dev-runtime":{"types":"./dist/runtime/jsx-dev-runtime.d.ts","default":"./dist/runtime/jsx-dev-runtime.js"}},"gitHead":"d51e8f023d73d930d62762f98691a11a9553e503","scripts":{"test":"node --experimental-vm-modules ./node_modules/jest/bin/jest.js","build":"tsc --project tsconfig.build.json","preview":"vite preview","code:lint":"eslint src --ext .ts,.tsx","start:dev":"vite","code:format":"prettier --write src","start:dev:types":"tsc --watch --noEmit","report:jest:view":"npx allure open reports-jest/report","report:jest:generate":"npx allure generate reports-jest/data --clean -o reports-jest/report"},"_npmUser":{"name":"jared.ledbetter","email":"hello@carbondigital.us"},"repository":{"url":"git+https://github.com/carbondigitalus/atom-core.git","type":"git"},"_npmVersion":"10.9.2","description":"The AtomJS Core project.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"jsx-runtime":["dist/runtime/jsx-runtime.d.ts"],"jsx-dev-runtime":["dist/runtime/jsx-dev-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.1","vite":"^7.1.3","eslint":"^9.34.0","ts-jest":"^29.4.1","ts-node":"^10.9.2","prettier":"^3.6.2","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.3.0","allure-commandline":"^2.34.1","jest-allure2-reporter":"^2.2.6","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","jest-environment-jsdom":"^30.1.1","@typescript-eslint/parser":"^8.40.0","@typescript-eslint/eslint-plugin":"^8.40.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.3.0_1756377277322_0.10488622844525941","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@atomdev/core","version":"0.4.0","keywords":["react","ui","components","jsx","typescript","class-components","virtual-dom","frontend","framework"],"author":{"url":"https://carbondigital.us/","name":"Carbon Digital","email":"hello@carbondigital.us"},"license":"ISC","_id":"@atomdev/core@0.4.0","maintainers":[{"name":"jared.ledbetter","email":"hello@carbondigital.us"}],"homepage":"https://github.com/carbondigitalus/atom-core#readme","bugs":{"url":"https://github.com/carbondigitalus/atom-core/issues"},"dist":{"shasum":"b0270e0b4711458146c17061c88a85c869542647","tarball":"https://registry.npmjs.org/@atomdev/core/-/core-0.4.0.tgz","fileCount":74,"integrity":"sha512-YfizqpXb0vpxZkaTNMp397zHmaawGAcdJVUPKStReSla1FynJ6wU8UnNHMiZkG5YgmnzRkuf7kgg5N6thCcZ6A==","signatures":[{"sig":"MEQCIBGRBzqdLQAbqrtqgmCu0GtwopAg9Dio633Y5TUPD284AiBcnCShOmru4HtNVtnVJeJK6dTxtX/Pn0mpW0ie6128VA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33639},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./jsx-runtime":{"types":"./dist/runtime/jsx-runtime.d.ts","default":"./dist/runtime/jsx-runtime.js"},"./jsx-dev-runtime":{"types":"./dist/runtime/jsx-dev-runtime.d.ts","default":"./dist/runtime/jsx-dev-runtime.js"}},"gitHead":"369449d2033e6bd903087065738d60a29d06bd71","scripts":{"build":"tsc --project tsconfig.build.json","preview":"vite preview","code:lint":"eslint src --ext .ts,.tsx","start:dev":"vite","test:unit":"node --experimental-vm-modules ./node_modules/jest/bin/jest.js","code:format":"prettier --write src","test:browser":"wdio run test/browser/wdio.conf.ts","start:dev:types":"tsc --watch --noEmit","report:unit:view":"npx allure open reports/jest/report","report:browser:view":"allure open reports/webdriver/report","report:unit:generate":"npx allure generate reports/jest/data --clean -o reports/jest/report","test:browser:headful":"WDIO_HEADFUL=1 node -e \"process.exit(0)\" && wdio run test/browser/wdio.conf.ts","report:browser:generate":"allure generate reports/webdriver/data --clean -o reports/webdriver/report"},"_npmUser":{"name":"jared.ledbetter","email":"hello@carbondigital.us"},"repository":{"url":"git+https://github.com/carbondigitalus/atom-core.git","type":"git"},"_npmVersion":"10.9.2","description":"The AtomJS Core project.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"jsx-runtime":["dist/runtime/jsx-runtime.d.ts"],"jsx-dev-runtime":["dist/runtime/jsx-dev-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.1","vite":"^7.1.3","eslint":"^9.34.0","ts-jest":"^29.4.1","ts-node":"^10.9.2","prettier":"^3.6.2","@wdio/cli":"^9.19.2","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.3.0","webdriverio":"^9.19.2","chromedriver":"^139.0.3","@wdio/local-runner":"^9.19.2","allure-commandline":"^2.34.1","@wdio/spec-reporter":"^9.19.2","@wdio/allure-reporter":"^9.19.2","@wdio/mocha-framework":"^9.19.2","jest-allure2-reporter":"^2.2.6","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","jest-environment-jsdom":"^30.1.1","@typescript-eslint/parser":"^8.40.0","@wdio/static-server-service":"^9.19.2","@typescript-eslint/eslint-plugin":"^8.40.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.0_1756425019197_0.8579870311272719","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@atomdev/core","version":"0.5.0","keywords":["react","ui","components","jsx","typescript","class-components","virtual-dom","frontend","framework"],"author":{"url":"https://carbondigital.us/","name":"Carbon Digital","email":"hello@carbondigital.us"},"license":"ISC","_id":"@atomdev/core@0.5.0","maintainers":[{"name":"jared.ledbetter","email":"hello@carbondigital.us"}],"homepage":"https://github.com/carbondigitalus/atom-core#readme","bugs":{"url":"https://github.com/carbondigitalus/atom-core/issues"},"dist":{"shasum":"83d7edaefff47936c9e3f72c95a1309c086bdfe2","tarball":"https://registry.npmjs.org/@atomdev/core/-/core-0.5.0.tgz","fileCount":82,"integrity":"sha512-BAW97z1qtUlQdWe0XiMpwPcs3hWjYnY+dnuo9cwsRoioDvfJMqegXePNvSOcqamDbr+oSJKMVs8HHuzE0UkLYw==","signatures":[{"sig":"MEUCICm9/5hcE7BQgVTTCcf5q8jVwNNIVG9BwcVY4+3GyVqMAiEA/av1ZzbNyMNH+QeEqhWJRfqtH7rSrXfHADC+xw9ctf4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48114},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./jsx-runtime":{"types":"./dist/runtime/jsx-runtime.d.ts","default":"./dist/runtime/jsx-runtime.js"},"./jsx-dev-runtime":{"types":"./dist/runtime/jsx-dev-runtime.d.ts","default":"./dist/runtime/jsx-dev-runtime.js"}},"gitHead":"41ba5936ecfe9e45613f8e57039c053bade82421","scripts":{"build":"tsc --project tsconfig.build.json","preview":"vite preview","code:lint":"eslint src --ext .ts,.tsx","start:dev":"vite","test:unit":"node --experimental-vm-modules ./node_modules/jest/bin/jest.js --coverage","code:format":"prettier --write src","test:browser":"wdio run test/browser/wdio.conf.ts","test:coverage":"jest --coverage","start:dev:types":"tsc --watch --noEmit","report:unit:view":"npx allure open reports/jest/report","report:browser:view":"allure open reports/webdriver/report","report:unit:generate":"npx allure generate reports/jest/data --clean -o reports/jest/report","test:browser:headful":"WDIO_HEADFUL=1 node -e \"process.exit(0)\" && wdio run test/browser/wdio.conf.ts","report:browser:generate":"allure generate reports/webdriver/data --clean -o reports/webdriver/report"},"_npmUser":{"name":"jared.ledbetter","email":"hello@carbondigital.us"},"repository":{"url":"git+https://github.com/carbondigitalus/atom-core.git","type":"git"},"_npmVersion":"10.9.2","description":"The AtomJS Core project.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"jsx-runtime":["dist/runtime/jsx-runtime.d.ts"],"jsx-dev-runtime":["dist/runtime/jsx-dev-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.1","vite":"^7.1.3","eslint":"^9.34.0","ts-jest":"^29.4.1","ts-node":"^10.9.2","prettier":"^3.6.2","@wdio/cli":"^9.19.2","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.3.0","webdriverio":"^9.19.2","chromedriver":"^139.0.3","@wdio/local-runner":"^9.19.2","allure-commandline":"^2.34.1","@wdio/spec-reporter":"^9.19.2","@wdio/allure-reporter":"^9.19.2","@wdio/mocha-framework":"^9.19.2","jest-allure2-reporter":"^2.2.6","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","jest-environment-jsdom":"^30.1.1","@typescript-eslint/parser":"^8.40.0","@wdio/static-server-service":"^9.19.2","@typescript-eslint/eslint-plugin":"^8.40.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.0_1756548041059_0.14263824810827663","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@atomdev/core","version":"0.5.1","keywords":["react","ui","components","jsx","typescript","class-components","virtual-dom","frontend","framework"],"author":{"url":"https://carbondigital.us/","name":"Carbon Digital","email":"hello@carbondigital.us"},"license":"ISC","_id":"@atomdev/core@0.5.1","maintainers":[{"name":"jared.ledbetter","email":"hello@carbondigital.us"}],"homepage":"https://github.com/carbondigitalus/atom-core#readme","bugs":{"url":"https://github.com/carbondigitalus/atom-core/issues"},"dist":{"shasum":"d69eeb89c6d5567c94f543ab1bea31985c6e35a4","tarball":"https://registry.npmjs.org/@atomdev/core/-/core-0.5.1.tgz","fileCount":82,"integrity":"sha512-okirS6TgvhMdVDE0hr1/r8ES0ijH6rX774Wfdu9ViyWGDrAH0xVk9Mr/CNACU8dGqpJl/VXsmZtNg+4mrOSFJQ==","signatures":[{"sig":"MEUCIBBCSnfGPp68V4rk959FhhSf7VUO8qFBuIIMfWlk1pSbAiEA+HazT7I95zHYKn9VVQitiROiWYZTsZ0oBIp1hKQSEOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43421},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./jsx-runtime":{"types":"./dist/runtime/jsx-runtime.d.ts","default":"./dist/runtime/jsx-runtime.js"},"./jsx-dev-runtime":{"types":"./dist/runtime/jsx-dev-runtime.d.ts","default":"./dist/runtime/jsx-dev-runtime.js"}},"gitHead":"7ad0a5dd8e20c3127c2dbe5718e727373388fb6b","scripts":{"build":"tsc --project tsconfig.build.json","preview":"vite preview","code:lint":"eslint src --ext .ts,.tsx","start:dev":"vite","test:unit":"node --experimental-vm-modules ./node_modules/jest/bin/jest.js --coverage","code:format":"prettier --write src","test:browser":"wdio run test/browser/wdio.conf.ts","test:coverage":"jest --coverage","start:dev:types":"tsc --watch --noEmit","report:unit:view":"npx allure open reports/jest/report","report:browser:view":"allure open reports/webdriver/report","report:unit:generate":"npx allure generate reports/jest/data --clean -o reports/jest/report","test:browser:headful":"WDIO_HEADFUL=1 node -e \"process.exit(0)\" && wdio run test/browser/wdio.conf.ts","report:browser:generate":"allure generate reports/webdriver/data --clean -o reports/webdriver/report"},"_npmUser":{"name":"jared.ledbetter","email":"hello@carbondigital.us"},"repository":{"url":"git+https://github.com/carbondigitalus/atom-core.git","type":"git"},"_npmVersion":"10.9.2","description":"The AtomJS Core project.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"jsx-runtime":["dist/runtime/jsx-runtime.d.ts"],"jsx-dev-runtime":["dist/runtime/jsx-dev-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.1","vite":"^7.1.3","eslint":"^9.34.0","ts-jest":"^29.4.1","ts-node":"^10.9.2","prettier":"^3.6.2","@wdio/cli":"^9.19.2","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.3.0","webdriverio":"^9.19.2","chromedriver":"^139.0.3","@wdio/local-runner":"^9.19.2","allure-commandline":"^2.34.1","@wdio/spec-reporter":"^9.19.2","@wdio/allure-reporter":"^9.19.2","@wdio/mocha-framework":"^9.19.2","jest-allure2-reporter":"^2.2.6","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","jest-environment-jsdom":"^30.1.1","@typescript-eslint/parser":"^8.40.0","@wdio/static-server-service":"^9.19.2","@typescript-eslint/eslint-plugin":"^8.40.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.1_1756548268588_0.1371143696913535","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@atomdev/core","version":"0.6.0","keywords":["react","ui","components","jsx","typescript","class-components","virtual-dom","frontend","framework"],"author":{"url":"https://carbondigital.us/","name":"Carbon Digital","email":"hello@carbondigital.us"},"license":"MIT","_id":"@atomdev/core@0.6.0","maintainers":[{"name":"jared.ledbetter","email":"hello@carbondigital.us"}],"homepage":"https://atomjs.dev","bugs":{"url":"https://github.com/carbondigitalus/atom-core/issues"},"dist":{"shasum":"52ea7c58eab1e98fa90c2a2f0c578441c3bfda8a","tarball":"https://registry.npmjs.org/@atomdev/core/-/core-0.6.0.tgz","fileCount":83,"integrity":"sha512-U9lBmao9MiiF3ZqVe2i9sQjl7dVMnLtZILyNy5ZnIFNTHIQ2w93ZlsUigAF4fkA5NpTwIafSTjXTB5HnHJLzvw==","signatures":[{"sig":"MEUCIEGmTmbeYvGCYZNdRncYEfryZmoIKZJgrCrI/vm4XYuCAiEA53CpgFbcgRlovMkQ+aXAmXE3C0JfJKjerqRmIdHsDVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55642},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./jsx-runtime":{"types":"./dist/runtime/jsx-runtime.d.ts","default":"./dist/runtime/jsx-runtime.js"},"./jsx-dev-runtime":{"types":"./dist/runtime/jsx-dev-runtime.d.ts","default":"./dist/runtime/jsx-dev-runtime.js"}},"gitHead":"1b24ffe3ce4aefd0f7ad9408749966a2847b3ead","scripts":{"build":"tsc --project tsconfig.build.json","preview":"vite preview","code:lint":"eslint src --ext .ts,.tsx","start:dev":"vite","test:unit":"node --experimental-vm-modules ./node_modules/jest/bin/jest.js --coverage","code:format":"prettier --write src","test:browser":"wdio run test/browser/wdio.conf.ts","test:coverage":"jest --coverage","start:dev:types":"tsc --watch --noEmit","report:unit:view":"npx allure open reports/jest/report","report:browser:view":"allure open reports/webdriver/report","report:unit:generate":"npx allure generate reports/jest/data --clean -o reports/jest/report","test:browser:headful":"WDIO_HEADFUL=1 node -e \"process.exit(0)\" && wdio run test/browser/wdio.conf.ts","report:browser:generate":"allure generate reports/webdriver/data --clean -o reports/webdriver/report"},"_npmUser":{"name":"jared.ledbetter","email":"hello@carbondigital.us"},"repository":{"url":"git+https://github.com/carbondigitalus/atom-core.git","type":"git"},"_npmVersion":"10.9.2","description":"The AtomJS Core project.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"jsx-runtime":["dist/runtime/jsx-runtime.d.ts"],"jsx-dev-runtime":["dist/runtime/jsx-dev-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.1.1","vite":"^7.1.3","eslint":"^9.34.0","ts-jest":"^29.4.1","ts-node":"^10.9.2","prettier":"^3.6.2","@wdio/cli":"^9.19.2","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/node":"^24.3.0","webdriverio":"^9.19.2","chromedriver":"^139.0.3","@wdio/local-runner":"^9.19.2","allure-commandline":"^2.34.1","@wdio/spec-reporter":"^9.19.2","@wdio/allure-reporter":"^9.19.2","@wdio/mocha-framework":"^9.19.2","jest-allure2-reporter":"^2.2.6","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","jest-environment-jsdom":"^30.1.1","@typescript-eslint/parser":"^8.40.0","@wdio/static-server-service":"^9.19.2","@typescript-eslint/eslint-plugin":"^8.40.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.0_1756615268294_0.6192087263781918","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@atomdev/core","version":"0.7.0","description":"The AtomJS Core project.","scripts":{"build":"tsc --project tsconfig.build.json","code:lint":"eslint src --ext .ts,.tsx","code:format":"prettier --write src","preview":"vite preview","report:browser:generate":"allure generate reports/webdriver/data --clean -o reports/webdriver/report","report:browser:view":"allure open reports/webdriver/report","report:unit:generate":"npx allure generate reports/jest/data --clean -o reports/jest/report","report:unit:view":"npx allure open reports/jest/report","start:dev":"vite","start:dev:types":"tsc --watch --noEmit","test:browser":"wdio run test/browser/wdio.conf.ts","test:browser:headful":"WDIO_HEADFUL=1 node -e \"process.exit(0)\" && wdio run test/browser/wdio.conf.ts","test:coverage":"jest --coverage","test:unit":"node --experimental-vm-modules ./node_modules/jest/bin/jest.js --coverage"},"devDependencies":{"@types/jest":"^30.0.0","@types/node":"^24.3.0","@typescript-eslint/eslint-plugin":"^8.40.0","@typescript-eslint/parser":"^8.40.0","@wdio/allure-reporter":"^9.19.2","@wdio/cli":"^9.19.2","@wdio/local-runner":"^9.19.2","@wdio/mocha-framework":"^9.19.2","@wdio/spec-reporter":"^9.19.2","@wdio/static-server-service":"^9.19.2","allure-commandline":"^2.34.1","chromedriver":"^139.0.3","eslint":"^9.34.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","jest":"^30.1.1","jest-allure2-reporter":"^2.2.6","jest-environment-jsdom":"^30.1.1","prettier":"^3.6.2","ts-jest":"^29.4.1","ts-node":"^10.9.2","typescript":"^5.9.2","vite":"^7.1.3","webdriverio":"^9.19.2"},"author":{"name":"Carbon Digital","email":"hello@carbondigital.us","url":"https://carbondigital.us/"},"bugs":{"url":"https://github.com/carbondigitalus/atom-core/issues"},"engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./jsx-runtime":{"types":"./dist/runtime/jsx-runtime.d.ts","default":"./dist/runtime/jsx-runtime.js"},"./jsx-dev-runtime":{"types":"./dist/runtime/jsx-dev-runtime.d.ts","default":"./dist/runtime/jsx-dev-runtime.js"}},"homepage":"https://atomjs.dev","keywords":["react","ui","components","jsx","typescript","class-components","virtual-dom","frontend","framework"],"license":"MIT","main":"dist/index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/carbondigitalus/atom-core.git"},"type":"module","types":"dist/index.d.ts","typesVersions":{"*":{"jsx-runtime":["dist/runtime/jsx-runtime.d.ts"],"jsx-dev-runtime":["dist/runtime/jsx-dev-runtime.d.ts"]}},"_id":"@atomdev/core@0.7.0","gitHead":"af51ca3f52736c0cf7bc72c6b7fa547682ced6ea","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-p454FNEQWUr1wQ+QEHLDXWBAIFkyuhy+aK9lHmIs30V3V+CiufaqfFPRYRVwR/CDfoMkTFAeJpVL24z683u6Eg==","shasum":"0df98ce6b8472509cd0b40d4a34d273d0d041c75","tarball":"https://registry.npmjs.org/@atomdev/core/-/core-0.7.0.tgz","fileCount":83,"unpackedSize":55642,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICWNyTr3b0zvr2mW5KFQip7jUusS9iAa9hksEImqEaMuAiEA9/ou0UbD6LW4uazFa0keWZZEogIupKTJURiVO6V+4xM="}]},"_npmUser":{"name":"jared.ledbetter","email":"hello@carbondigital.us"},"directories":{},"maintainers":[{"name":"jared.ledbetter","email":"hello@carbondigital.us"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_0.7.0_1757917575531_0.08090216144848439"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-28T07:19:12.611Z","modified":"2025-09-15T06:26:15.920Z","0.2.0":"2025-08-28T07:19:12.900Z","0.3.0":"2025-08-28T10:34:37.524Z","0.4.0":"2025-08-28T23:50:19.404Z","0.5.0":"2025-08-30T10:00:41.296Z","0.5.1":"2025-08-30T10:04:28.788Z","0.6.0":"2025-08-31T04:41:08.499Z","0.7.0":"2025-09-15T06:26:15.699Z"},"bugs":{"url":"https://github.com/carbondigitalus/atom-core/issues"},"author":{"name":"Carbon Digital","email":"hello@carbondigital.us","url":"https://carbondigital.us/"},"license":"MIT","homepage":"https://atomjs.dev","keywords":["react","ui","components","jsx","typescript","class-components","virtual-dom","frontend","framework"],"repository":{"type":"git","url":"git+https://github.com/carbondigitalus/atom-core.git"},"description":"The AtomJS Core project.","maintainers":[{"name":"jared.ledbetter","email":"hello@carbondigital.us"}],"readme":"# AtomJS Core\n\n> Build with Atom — the fundamental building blocks of UI\n\n**AtomJS Core** is a lightweight, class-based UI library written in TypeScript. It embraces familiar JSX syntax and a React-style component model, with a simple, predictable lifecycle and minimal runtime.\n\n---\n\n## ✨ Features\n\n- **Class Components** with a clear constructor lifecycle\n  - `super(props)` required; initialize `this.state` directly\n  - Optional `defaultProps` and `propTypes` for safer APIs\n  - Lifecycle hooks: `beforeMount`, `afterMount`, `beforeUpdate`, `afterUpdate`, `shouldUpdate`, `beforeUnmount`\n- **JSX Runtime** (`jsx`, `jsxs`, `jsxDEV`) and **Fragments**\n- **Virtual DOM** with `createElement` and efficient child collection\n- **DOM Rendering** via `render(vnode, container)`\n- **TypeScript-first**: strong types for `VNode`, `Props`, `ElementType`, etc.\n- **Testing-ready**: designed to be unit/integration test friendly\n\n---\n\n## 📦 Install\n\n```bash\nnpm install @atomdev/core\n# or\nyarn add @atomdev/core\n# or\npnpm add @atomdev/core\n```\n\n---\n\n## 🚀 Quick Start\n\n```tsx\nimport { render } from '@atomdev/core';\n\nfunction App() {\n  return {\n    type: 'div',\n    props: { id: 'root', children: 'Hello, Atom!' }\n  };\n}\n\nconst container = document.getElementById('app')!;\nrender({ type: App, props: {} }, container);\n```\n\n---\n\n## 🔁 Lifecycle: `beforeMount()`\n\n**When it runs:** after the constructor, **before** the first `render()` and **before** any DOM is inserted.\n\n**What it’s for:** non-DOM setup — subscriptions, timers, event listeners, config prep, and “fire-and-forget” async kickoffs.\n\n**Signature**\n\n```ts\nbeforeMount(): void\n```\n\n**Access inside the hook**\n\n- `this.props` — already merged with `defaultProps` and validated by `propTypes` (if provided)\n- `this.state` — initialized in your constructor\n- `this.setState(partial)` — allowed; merges state for the **first render** and **does not schedule** an extra render during mounting\n\n**Rules**\n\n- Called **once** per component instance\n- Runs **synchronously** (don’t `await` inside it)\n- **No DOM access** here — the component’s DOM does not exist yet\n- Errors are **caught** and do **not** prevent the initial render\n\n---\n\n## ✅ Common Patterns\n\n### 1) Basic setup (socket + interval + global listener)\n\n```ts\nclass MyComponent extends AtomComponent<\n  { url: string },\n  { connected: boolean }\n> {\n  private ws?: WebSocket;\n  private timer?: number;\n\n  constructor(props: { url: string }) {\n    super(props);\n    this.state = { connected: false };\n  }\n\n  beforeMount() {\n    this.ws = new WebSocket(this.props.url);\n    this.ws.onopen = () => this.setState({ connected: true });\n\n    this.timer = setInterval(() => this.fetchData(), 5000);\n\n    window.addEventListener('resize', this.handleResize);\n  }\n\n  beforeUnmount() {\n    if (this.timer) clearInterval(this.timer);\n    try {\n      this.ws?.close();\n    } catch {}\n    window.removeEventListener('resize', this.handleResize);\n  }\n\n  handleResize = () => {\n    /* ... */\n  };\n  fetchData() {\n    /* ... */\n  }\n\n  render() {\n    return {\n      type: 'div',\n      props: { children: this.state.connected ? 'Online' : 'Connecting…' }\n    } as any;\n  }\n}\n```\n\n### 2) Async kickoff (non-blocking)\n\n```ts\nclass DataComponent extends AtomComponent<\n  {},\n  { loading: boolean; data: unknown; error?: string }\n> {\n  constructor(p: {}) {\n    super(p);\n    this.state = { loading: true, data: null };\n  }\n\n  beforeMount() {\n    // Fire and forget — do not await here\n    this.loadInitialData();\n  }\n\n  private async loadInitialData() {\n    try {\n      const res = await fetch('/api/initial-data');\n      const data = await res.json();\n      this.setState({ data, loading: false });\n    } catch (e) {\n      const msg = e instanceof Error ? e.message : String(e);\n      this.setState({ loading: false, error: msg });\n    }\n  }\n\n  render() {\n    if (this.state.loading)\n      return { type: 'div', props: { children: 'Loading…' } } as any;\n    return {\n      type: 'pre',\n      props: { children: JSON.stringify(this.state.data, null, 2) }\n    } as any;\n  }\n}\n```\n\n### 3) Third-party config prep\n\n```ts\nclass ChartComponent extends AtomComponent<\n  {\n    chartType?: string;\n    initialData?: number[];\n    chartOptions?: Record<string, unknown>;\n  },\n  { chartReady: boolean }\n> {\n  private chartConfig?: {\n    type: string;\n    data: number[];\n    options: Record<string, unknown>;\n  };\n\n  constructor(p: any) {\n    super(p);\n    this.state = { chartReady: false };\n  }\n\n  beforeMount() {\n    this.chartConfig = {\n      type: this.props.chartType ?? 'line',\n      data: this.props.initialData ?? [],\n      options: { responsive: true, ...(this.props.chartOptions ?? {}) }\n    };\n    this.setState({ chartReady: true });\n  }\n\n  render() {\n    return {\n      type: 'div',\n      props: {\n        'data-ready': String(this.state.chartReady),\n        children: 'Chart config ready'\n      }\n    } as any;\n  }\n}\n```\n\n### 4) Defensive setup (errors don’t block first render)\n\n```ts\nclass RobustComponent extends AtomComponent<{}, { setupError?: string }> {\n  beforeMount() {\n    try {\n      this.riskySetup();\n    } catch (e) {\n      // Logged by AtomJS too; you may still capture state for UI\n      const msg = e instanceof Error ? e.message : String(e);\n      this.setState({ setupError: msg });\n    }\n  }\n  private riskySetup() {\n    /* may throw */\n  }\n  render() {\n    return {\n      type: 'div',\n      props: {\n        children: this.state.setupError\n          ? `Setup failed: ${this.state.setupError}`\n          : 'OK'\n      }\n    } as any;\n  }\n}\n```\n\n---\n\n## ⚠️ Do / Don’t\n\n**Do**\n\n- Start subscriptions, intervals, and global listeners\n- Initialize configurations and kick off async requests\n- Use `setState` to seed data for the first render (no extra render is scheduled)\n\n**Don’t**\n\n- Touch the DOM — use `afterMount` for DOM work\n- Block the thread with heavy synchronous work\n- Forget to clean up resources in `beforeUnmount`\n\n---\n\n## 🧪 Testing tips\n\n- Use a **jsdom** environment for DOM-related tests.\n- Assert order: constructor → `beforeMount` → `render`.\n- Verify first render reflects `setState` done inside `beforeMount`.\n- For async kickoffs, assert that rendering happens **before** the promise resolves.\n\n---\n\n## 📚 Documentation\n\nLooking for the full guide and API docs? Head to the official docs:\n\n\\*\\*➡️ https://atomjs.dev/\n\n- Lifecycle overview\n- `beforeMount()` usage & examples\n- Testing patterns\n- Gotchas & anti-patterns\n","readmeFilename":"README.md"}