{"_id":"@capytale/capytale-logic","_rev":"7-4bc0e0fe813e3c0e9a7a010fcd5f3c01","name":"@capytale/capytale-logic","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.2":{"name":"@capytale/capytale-logic","version":"0.1.2","_id":"@capytale/capytale-logic@0.1.2","maintainers":[{"name":"casatir","email":"romain.casati@basthon.fr"},{"name":"tjaisson","email":"thomas.jaisson@ac-paris.fr"},{"name":"chardetm","email":"chardetm@gmail.com"},{"name":"capytale-bot","email":"contact@capytale.fr"}],"dist":{"shasum":"012a86b945aaf8dab11073d6aecf062ed754ba4e","tarball":"https://registry.npmjs.org/@capytale/capytale-logic/-/capytale-logic-0.1.2.tgz","fileCount":228,"integrity":"sha512-GcjvXO6ChFZMTsQN+N9vWw8WDrh9sKeNE4H6U/yRIHbWhBh0f4a57CRGN92QQYB0N0xx5LF3DMAqHATzVY5Pjg==","signatures":[{"sig":"MEUCIG9ck5bo0Q3GpXwaDFYk2yXTnYgLq4wUmpASj+GEEItJAiEA0ns590vomjejyK/rPdPSmzcJ5oaIPRizdVpD3T+GeZk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4707455},"main":"electron-main.js","watch":{"lint":{"patterns":["simulator",".eslintrc.json"],"extensions":"ts,json"},"bundle":{"ignore":"simulator/lib","patterns":["simulator","package.json","tools"],"extensions":"ts,js,html,css,svg,json"}},"gitHead":"020388b8f2e53e78ac6c9bc762d0a247235c216a","scripts":{"lint":"eslint . --ext .ts","bundle":"./tools/bundle.js --dev --dist","server":"./tools/local_server.py 8088","compile":"tsc -p tsconfig.json","electron":"electron .","deploy-all":"./deploy-jpp.sh && ./deploy-modulo.sh && ./deploy-modulo-dev.sh","lint-watch":"npm-watch lint","bundle-watch":"npm-watch bundle","compile-watch":"tsc -p tsconfig.json --watch","publish_major":"git push origin $(npm version major)","publish_minor":"git push origin $(npm version minor)","publish_patch":"git push origin $(npm version patch)","capytale-build":"node ./tools/bundle.js --dist && rm -rf ./dist && mkdir -p ./dist && cp ./simulator/lib/* ./dist && cp ./simulator/html/capytale-index.html ./dist/index.html && cp ./simulator/html/capytale-index-prof.html ./dist/index-prof.html"},"_npmUser":{"name":"chardetm","email":"chardetm@gmail.com"},"_npmVersion":"10.9.0","description":"A logic circuit simulator useful for educational use.","directories":{},"_nodeVersion":"21.7.3","dependencies":{"fp-ts":"^2.13.1","io-ts":"^2.2.16","json5":"^2.2.3","qrcode":"^1.5.0","electron":"^21.1.1","bezier-js":"^6.1.0","lz-string":"^1.4.4","file-saver":"^2.0.5","@popperjs/core":"^2.9.1","dialog-polyfill":"^0.5.6","png-metadata-writer":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","esbuild":"^0.17.17","npm-watch":"^0.9.0","ts-loader":"^8.0.18","typescript":"^5.0.3","@types/json5":"^2.2.0","@types/jquery":"^3.5.14","@types/qrcode":"^1.4.2","ts-arithmetic":"^0.1.1","type-coverage":"^2.17.2","@types/bezier-js":"^4.1.0","@types/lz-string":"^1.3.34","@types/file-saver":"^2.0.5","@typescript-eslint/parser":"^4.30.0","typescript-coverage-report":"^0.5.1","@typescript-eslint/eslint-plugin":"^4.30.0"},"_npmOperationalInternal":{"tmp":"tmp/capytale-logic_0.1.2_1732619232884_0.26435635733781315","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@capytale/capytale-logic","version":"0.2.0","_id":"@capytale/capytale-logic@0.2.0","maintainers":[{"name":"casatir","email":"romain.casati@basthon.fr"},{"name":"tjaisson","email":"thomas.jaisson@ac-paris.fr"},{"name":"chardetm","email":"chardetm@gmail.com"},{"name":"capytale-bot","email":"contact@capytale.fr"}],"dist":{"shasum":"219bb83d5633d46678a9314aad190363eec9493d","tarball":"https://registry.npmjs.org/@capytale/capytale-logic/-/capytale-logic-0.2.0.tgz","fileCount":228,"integrity":"sha512-XU4fIYQBkaQNZBJIXXfQVyWfs/P/2rFcsN/sCUjOolwyll/kkhi2amnbYsyoYrZ0dG8x0TmT5D0raRDnA0GVbw==","signatures":[{"sig":"MEUCIQD6icV4fZJ0xAfvFYvsSRLrvD/hC+Hwotc4oyafNcXagAIgKk/pu7f8YoJy3ilnWx/zetruP6CNLdcN6Dcl3E/UZmw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4707455},"main":"electron-main.js","watch":{"lint":{"patterns":["simulator",".eslintrc.json"],"extensions":"ts,json"},"bundle":{"ignore":"simulator/lib","patterns":["simulator","package.json","tools"],"extensions":"ts,js,html,css,svg,json"}},"gitHead":"c714aa83a905fd60afb27d82c218ecf33e76b002","scripts":{"lint":"eslint . --ext .ts","bundle":"./tools/bundle.js --dev --dist","server":"./tools/local_server.py 8088","compile":"tsc -p tsconfig.json","electron":"electron .","deploy-all":"./deploy-jpp.sh && ./deploy-modulo.sh && ./deploy-modulo-dev.sh","lint-watch":"npm-watch lint","bundle-watch":"npm-watch bundle","compile-watch":"tsc -p tsconfig.json --watch","publish_major":"git push origin $(npm version major)","publish_minor":"git push origin $(npm version minor)","publish_patch":"git push origin $(npm version patch)","capytale-build":"node ./tools/bundle.js --dist && rm -rf ./dist && mkdir -p ./dist && cp ./simulator/lib/* ./dist && cp ./simulator/html/capytale-index.html ./dist/index.html && cp ./simulator/html/capytale-index-prof.html ./dist/index-prof.html"},"_npmUser":{"name":"chardetm","email":"chardetm@gmail.com"},"_npmVersion":"10.9.0","description":"A logic circuit simulator useful for educational use.","directories":{},"_nodeVersion":"23.3.0","dependencies":{"fp-ts":"^2.13.1","io-ts":"^2.2.16","json5":"^2.2.3","qrcode":"^1.5.0","electron":"^21.1.1","bezier-js":"^6.1.0","lz-string":"^1.4.4","file-saver":"^2.0.5","@popperjs/core":"^2.9.1","dialog-polyfill":"^0.5.6","png-metadata-writer":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","esbuild":"^0.17.17","npm-watch":"^0.9.0","ts-loader":"^8.0.18","typescript":"^5.0.3","@types/json5":"^2.2.0","@types/jquery":"^3.5.14","@types/qrcode":"^1.4.2","ts-arithmetic":"^0.1.1","type-coverage":"^2.17.2","@types/bezier-js":"^4.1.0","@types/lz-string":"^1.3.34","@types/file-saver":"^2.0.5","@typescript-eslint/parser":"^4.30.0","typescript-coverage-report":"^0.5.1","@typescript-eslint/eslint-plugin":"^4.30.0"},"_npmOperationalInternal":{"tmp":"tmp/capytale-logic_0.2.0_1737125736600_0.4368728272361442","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@capytale/capytale-logic","version":"0.2.1","_id":"@capytale/capytale-logic@0.2.1","maintainers":[{"name":"casatir","email":"romain.casati@basthon.fr"},{"name":"tjaisson","email":"thomas.jaisson@ac-paris.fr"},{"name":"chardetm","email":"chardetm@gmail.com"},{"name":"capytale-bot","email":"contact@capytale.fr"}],"dist":{"shasum":"b70195130f181cf6367287f258c21521c0acb7d2","tarball":"https://registry.npmjs.org/@capytale/capytale-logic/-/capytale-logic-0.2.1.tgz","fileCount":235,"integrity":"sha512-FjC16OxAbv8VavMUBE4K5Be9HM/Ky73d06D/PgHwcQA1gqtgg6mWQANDqtKYfqKg35yGtmiaLDcBcygCsMnnaw==","signatures":[{"sig":"MEQCIFQDc91o4pZOKXylNpcKLepVOdZZqXxfMW3EPBkjmW+TAiBFACqjVS2rujWCOzoJrMcnd3a2wZ6BKNSbPHUEh2nqPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4954396},"main":"electron-main.js","watch":{"lint":{"patterns":["simulator",".eslintrc.json"],"extensions":"ts,json"},"bundle":{"ignore":"simulator/lib","patterns":["simulator","package.json","tools"],"extensions":"ts,js,html,css,svg,json"}},"gitHead":"773b2bade74640cedf7f2069adda0cea798c0fbe","scripts":{"lint":"eslint . --ext .ts","bundle":"./tools/bundle.js --dev --dist","server":"./tools/local_server.py 8088","compile":"tsc -p tsconfig.json","electron":"electron .","deploy-all":"./deploy-jpp.sh && ./deploy-modulo.sh && ./deploy-modulo-dev.sh","lint-watch":"npm-watch lint","bundle-watch":"npm-watch bundle","compile-watch":"tsc -p tsconfig.json --watch","publish_major":"git push origin $(npm version major)","publish_minor":"git push origin $(npm version minor)","publish_patch":"git push origin $(npm version patch)","capytale-build":"node ./tools/bundle.js --dist && rm -rf ./dist && mkdir -p ./dist && cp ./simulator/lib/* ./dist && cp ./simulator/html/capytale-index.html ./dist/index.html && cp ./simulator/html/capytale-index-prof.html ./dist/index-prof.html"},"_npmUser":{"name":"chardetm","email":"chardetm@gmail.com"},"_npmVersion":"10.9.0","description":"A logic circuit simulator useful for educational use.","directories":{},"_nodeVersion":"23.3.0","dependencies":{"fp-ts":"^2.13.1","io-ts":"^2.2.16","json5":"^2.2.3","qrcode":"^1.5.0","electron":"^21.1.1","bezier-js":"^6.1.0","lz-string":"^1.4.4","file-saver":"^2.0.5","@popperjs/core":"^2.9.1","dialog-polyfill":"^0.5.6","png-metadata-writer":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","esbuild":"^0.17.17","npm-watch":"^0.9.0","ts-loader":"^8.0.18","typescript":"^5.7.2","@types/json5":"^2.2.0","@types/jquery":"^3.5.14","@types/qrcode":"^1.4.2","ts-arithmetic":"^0.1.1","type-coverage":"^2.17.2","@types/bezier-js":"^4.1.0","@types/lz-string":"^1.3.34","@types/file-saver":"^2.0.5","@typescript-eslint/parser":"^4.30.0","@total-typescript/ts-reset":"^0.5.1","typescript-coverage-report":"^0.5.1","@typescript-eslint/eslint-plugin":"^4.30.0"},"_npmOperationalInternal":{"tmp":"tmp/capytale-logic_0.2.1_1738060833036_0.8373954944614657","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@capytale/capytale-logic","version":"0.2.2","_id":"@capytale/capytale-logic@0.2.2","maintainers":[{"name":"casatir","email":"romain.casati@basthon.fr"},{"name":"tjaisson","email":"thomas.jaisson@ac-paris.fr"},{"name":"chardetm","email":"chardetm@gmail.com"},{"name":"capytale-bot","email":"contact@capytale.fr"}],"dist":{"shasum":"e3ef215599421dec5a53277aa6d6f2df2832966a","tarball":"https://registry.npmjs.org/@capytale/capytale-logic/-/capytale-logic-0.2.2.tgz","fileCount":235,"integrity":"sha512-DQiCrUH1KhCDxHc7WuKeUh5CXv2jNuY6gKC2ZEM73EFuMXHPt5p5R3/HDb4H7ZFOF7T786UDXbtx+Iut8pIaBQ==","signatures":[{"sig":"MEUCIF6/1m2pMiGD4ODsrjpOW7oSy8P+MLA/gzXmcghimL2cAiEAwLTQolqv0KZWjQgG+AjxSUvFTF6IRGP8zEO8Ug8+Guw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4954622},"main":"electron-main.js","watch":{"lint":{"patterns":["simulator",".eslintrc.json"],"extensions":"ts,json"},"bundle":{"ignore":"simulator/lib","patterns":["simulator","package.json","tools"],"extensions":"ts,js,html,css,svg,json"}},"gitHead":"64c06780299626d59efdc391af8a929204123d55","scripts":{"lint":"eslint . --ext .ts","bundle":"./tools/bundle.js --dev --dist","server":"./tools/local_server.py 8088","compile":"tsc -p tsconfig.json","electron":"electron .","deploy-all":"./deploy-jpp.sh && ./deploy-modulo.sh && ./deploy-modulo-dev.sh","lint-watch":"npm-watch lint","bundle-watch":"npm-watch bundle","compile-watch":"tsc -p tsconfig.json --watch","publish_major":"git push origin $(npm version major)","publish_minor":"git push origin $(npm version minor)","publish_patch":"git push origin $(npm version patch)","capytale-build":"node ./tools/bundle.js --dist && rm -rf ./dist && mkdir -p ./dist && cp ./simulator/lib/* ./dist && cp ./simulator/html/capytale-index.html ./dist/index.html && cp ./simulator/html/capytale-index-prof.html ./dist/index-prof.html"},"_npmUser":{"name":"chardetm","email":"chardetm@gmail.com"},"_npmVersion":"10.9.0","description":"A logic circuit simulator useful for educational use.","directories":{},"_nodeVersion":"23.3.0","dependencies":{"fp-ts":"^2.13.1","io-ts":"^2.2.16","json5":"^2.2.3","qrcode":"^1.5.0","electron":"^21.1.1","bezier-js":"^6.1.0","lz-string":"^1.4.4","file-saver":"^2.0.5","@popperjs/core":"^2.9.1","dialog-polyfill":"^0.5.6","png-metadata-writer":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","esbuild":"^0.17.17","npm-watch":"^0.9.0","ts-loader":"^8.0.18","typescript":"^5.7.2","@types/json5":"^2.2.0","@types/jquery":"^3.5.14","@types/qrcode":"^1.4.2","ts-arithmetic":"^0.1.1","type-coverage":"^2.17.2","@types/bezier-js":"^4.1.0","@types/lz-string":"^1.3.34","@types/file-saver":"^2.0.5","@typescript-eslint/parser":"^4.30.0","@total-typescript/ts-reset":"^0.5.1","typescript-coverage-report":"^0.5.1","@typescript-eslint/eslint-plugin":"^4.30.0"},"_npmOperationalInternal":{"tmp":"tmp/capytale-logic_0.2.2_1739550709201_0.964743893933603","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@capytale/capytale-logic","version":"0.2.3","_id":"@capytale/capytale-logic@0.2.3","maintainers":[{"name":"casatir","email":"romain.casati@basthon.fr"},{"name":"tjaisson","email":"thomas.jaisson@ac-paris.fr"},{"name":"chardetm","email":"chardetm@gmail.com"},{"name":"capytale-bot","email":"contact@capytale.fr"}],"dist":{"shasum":"993d04ee141c2cdfe6f350fd4a45323eeca67f84","tarball":"https://registry.npmjs.org/@capytale/capytale-logic/-/capytale-logic-0.2.3.tgz","fileCount":235,"integrity":"sha512-vxXsk9XZsuJNrd5K6eymNG1I8l1g+0wVCNlgC+GDKXQUss8kUZel0KGikvw0f8wDwgM/sB5P5hMeM2xvlcOMlg==","signatures":[{"sig":"MEUCIQCGJl39bKrKMEyzmA4/bg7GUsfjX6N9BWuC6kUbmO6WJQIgBLVF8vXJfZwTbi4ejRjIho6kbbyupvDyF1c67aqh/3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4954793},"main":"electron-main.js","watch":{"lint":{"patterns":["simulator",".eslintrc.json"],"extensions":"ts,json"},"bundle":{"ignore":"simulator/lib","patterns":["simulator","package.json","tools"],"extensions":"ts,js,html,css,svg,json"}},"gitHead":"b6c2a16fe536d79879e92f13a93541291e8072e9","scripts":{"lint":"eslint . --ext .ts","bundle":"./tools/bundle.js --dev --dist","server":"./tools/local_server.py 8088","compile":"tsc -p tsconfig.json","electron":"electron .","deploy-all":"./deploy-jpp.sh && ./deploy-modulo.sh && ./deploy-modulo-dev.sh","lint-watch":"npm-watch lint","bundle-watch":"npm-watch bundle","compile-watch":"tsc -p tsconfig.json --watch","publish_major":"git push origin $(npm version major)","publish_minor":"git push origin $(npm version minor)","publish_patch":"git push origin $(npm version patch)","capytale-build":"node ./tools/bundle.js --dist && rm -rf ./dist && mkdir -p ./dist && cp ./simulator/lib/* ./dist && cp ./simulator/html/capytale-index.html ./dist/index.html && cp ./simulator/html/capytale-index-prof.html ./dist/index-prof.html"},"_npmUser":{"name":"chardetm","email":"chardetm@gmail.com"},"_npmVersion":"10.9.0","description":"A logic circuit simulator useful for educational use.","directories":{},"_nodeVersion":"23.3.0","dependencies":{"fp-ts":"^2.13.1","io-ts":"^2.2.16","json5":"^2.2.3","qrcode":"^1.5.0","electron":"^21.1.1","bezier-js":"^6.1.0","lz-string":"^1.4.4","file-saver":"^2.0.5","@popperjs/core":"^2.9.1","dialog-polyfill":"^0.5.6","png-metadata-writer":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","esbuild":"^0.17.17","npm-watch":"^0.9.0","ts-loader":"^8.0.18","typescript":"^5.7.2","@types/json5":"^2.2.0","@types/jquery":"^3.5.14","@types/qrcode":"^1.4.2","ts-arithmetic":"^0.1.1","type-coverage":"^2.17.2","@types/bezier-js":"^4.1.0","@types/lz-string":"^1.3.34","@types/file-saver":"^2.0.5","@typescript-eslint/parser":"^4.30.0","@total-typescript/ts-reset":"^0.5.1","typescript-coverage-report":"^0.5.1","@typescript-eslint/eslint-plugin":"^4.30.0"},"_npmOperationalInternal":{"tmp":"tmp/capytale-logic_0.2.3_1739551333660_0.22387688998258204","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@capytale/capytale-logic","version":"0.2.4","_id":"@capytale/capytale-logic@0.2.4","maintainers":[{"name":"casatir","email":"romain.casati@basthon.fr"},{"name":"tjaisson","email":"thomas.jaisson@ac-paris.fr"},{"name":"chardetm","email":"chardetm@gmail.com"},{"name":"capytale-bot","email":"contact@capytale.fr"}],"dist":{"shasum":"af1db9dc9797cc06f6af427368d5c0b1f071be84","tarball":"https://registry.npmjs.org/@capytale/capytale-logic/-/capytale-logic-0.2.4.tgz","fileCount":238,"integrity":"sha512-wqG45AMBzBeXyd5vLM2W4ZKfXmKwnXUsEE8+192XbuNQJnubUo+4NTwL5vhTRZ3TPMSoflcgcHmVqvpwvef8Ig==","signatures":[{"sig":"MEQCIEJptsCQT1JKUTzBeezGYmW5u6p8X1y9kBi1U1Q37D2kAiBVMZphE9EVgIMjjlnxH/ntKq43gPuLivg93MAIQlfR6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5068577},"main":"electron-main.js","watch":{"lint":{"patterns":["simulator",".eslintrc.json"],"extensions":"ts,json"},"bundle":{"ignore":"simulator/lib","patterns":["simulator","package.json","tools"],"extensions":"ts,js,html,css,svg,json"}},"gitHead":"e53bbad68890ad0fadf300626ffe9b0885fc39e0","scripts":{"lint":"eslint . --ext .ts","bundle":"./tools/bundle.js --dev --dist","server":"./tools/local_server.py 8088","compile":"tsc -p tsconfig.json","electron":"electron .","deploy-all":"./deploy-jpp.sh && ./deploy-modulo.sh && ./deploy-modulo-dev.sh","lint-watch":"npm-watch lint","bundle-watch":"npm-watch bundle","compile-watch":"tsc -p tsconfig.json --watch","publish_major":"git push origin $(npm version major)","publish_minor":"git push origin $(npm version minor)","publish_patch":"git push origin $(npm version patch)","capytale-build":"node ./tools/bundle.js --dist && rm -rf ./dist && mkdir -p ./dist && cp ./simulator/lib/* ./dist && cp ./simulator/html/capytale-index.html ./dist/index.html && cp ./simulator/html/capytale-index-prof.html ./dist/index-prof.html"},"_npmUser":{"name":"chardetm","email":"chardetm@gmail.com"},"_npmVersion":"10.9.0","description":"A logic circuit simulator useful for educational use.","directories":{},"_nodeVersion":"23.3.0","dependencies":{"fp-ts":"^2.13.1","io-ts":"^2.2.16","json5":"^2.2.3","qrcode":"^1.5.0","electron":"^21.1.1","bezier-js":"^6.1.0","lz-string":"^1.4.4","file-saver":"^2.0.5","@popperjs/core":"^2.9.1","dialog-polyfill":"^0.5.6","png-metadata-writer":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.32.0","esbuild":"^0.17.17","npm-watch":"^0.9.0","ts-loader":"^8.0.18","typescript":"^5.7.2","@types/json5":"^2.2.0","@types/jquery":"^3.5.14","@types/qrcode":"^1.4.2","ts-arithmetic":"^0.1.1","type-coverage":"^2.17.2","@types/bezier-js":"^4.1.0","@types/lz-string":"^1.3.34","@types/file-saver":"^2.0.5","@typescript-eslint/parser":"^4.30.0","@total-typescript/ts-reset":"^0.5.1","typescript-coverage-report":"^0.5.1","@typescript-eslint/eslint-plugin":"^4.30.0"},"_npmOperationalInternal":{"tmp":"tmp/capytale-logic_0.2.4_1742918501327_0.4716969714829833","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2024-11-26T11:07:12.779Z","modified":"2026-02-27T17:26:34.201Z","0.1.2":"2024-11-26T11:07:13.141Z","0.2.0":"2025-01-17T14:55:36.898Z","0.2.1":"2025-01-28T10:40:33.318Z","0.2.2":"2025-02-14T16:31:49.456Z","0.2.3":"2025-02-14T16:42:14.093Z","0.2.4":"2025-03-25T16:01:41.645Z"},"description":"A logic circuit simulator useful for educational use.","maintainers":[{"email":"romain.casati@basthon.fr","name":"casatir"},{"email":"thomas.jaisson@ac-paris.fr","name":"tjaisson"},{"email":"chardetm@gmail.com","name":"chardetm"},{"email":"corentin.martinot-lagarde@ac-paris.fr","name":"corentin_martinot"},{"email":"contact@capytale.fr","name":"capytale-bot"}],"readme":"# Logic Circuit Simulator\n\nA logic circuit simulator useful for educational use.\n\nThis is a fork followed by an almost complete rewrite of [drendog's Logic-Circuit-Simuator](https://github.com/drendog/Logic-Circuit-Simulator).\n\n\n## Demo\n\nSee <https://jp.pellet.name/hep/logiga/>\n\n\n## Development\n\n * Checkout with git\n * `npm install`\n * Open VS Code and open folder\n * `npm run compile-watch` to run the TypeScript compiler (without output) to check for errors\n * `npm run lint-watch` to run `eslint` to check for linting errors\n * `npm run bundle-watch` to build the bundle with `esbuild` (can be done on every save because `esbuild` is so fast)\n * `npm run server` to serve locally for testing on port 8088\n\n\n## Differences with Original Version\n\n * This fork is completely written in TypeScript\n * Based on web components so that it can easily be embedded by pulling in a single JS file\n * Dependency on p5 was removed\n * Interface is drawn differently, all with canvas calls and no external images\n * Screen is only refreshed when needed and not 60 times per second no matter what\n * Clocks can be paused\n * Components have been added: bit display, segment display, nibble display, half adder, muxes, register, RAM, counter, various decoders, etc.\n * Size of components (in terms of number of bits) can be changed\n * RAM/ROM contents can be loaded from files\n * Mouseover tooltips have been added\n * Components can be edited to be faulty, for educational exercises\n * Editor can be in several modes with different capabilities\n * Component buttons can be hidden or shown for educational purposes with URL parameters\n * Loading and saving using JSON is much cleaner and does not include unnecessary properties\n * Demo circuits are predefined and can be loaded from the JavaScript console\n * Circuits can be loaded from a JSON export by drag-n-drop\n * An animated propagation delay can be set\n * Custom components can be created, loaded, saved from library files\n * Tests for a given circuit can be defined (or automatically generated) and run\n * UI can be in English or French (easy to add more translations)\n * Much more\n\n\n## License\n\n[MIT License](https://choosealicense.com/licenses/mit/)\n","readmeFilename":"README.md"}