{"_id":"xcraft-core-book","_rev":"34-a22d3f25371bc6c2aeef9128204e17d8","name":"xcraft-core-book","dist-tags":{"latest":"1.16.0"},"versions":{"1.0.0":{"name":"xcraft-core-book","version":"1.0.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.0.0","maintainers":[{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"01b1fe2c16c0ecaca645109c98c09c986b5fddbe","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.0.0.tgz","fileCount":7,"integrity":"sha512-yx3h++pHI838ts/cOapuBvFuVOLCIl/uF45iYBp8HTIYs/6Aaxd3ld1ZghfV+6yn6eNFsiszf6xoE47JIt2nQg==","signatures":[{"sig":"MEQCIBYLcnZJBEXfK7oK7f4e0OLbFY7NVIus4zYcbOJreJvSAiAw9y7tMEEmnizxVuWC2mEW4Tco355hxx3Xv9Vv760oAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ1fuCRA9TVsSAnZWagAAEH8P/3Viyc16wgVLvafDQIhS\nWujK/HeMHy7ghUMea+BnuVeyFA6qjKdmapnk6qltfJwfSbVXIuXoB0BXLqfu\nRErv+uI58M+BXj4bKAGf1vA7Gab9xBj5505cqnFtjPk98je7ldDCfZlme1oT\nJYQIAG2Uqy7pL9tW/UurbIr2tUo2nPTvuaBgPn2xS8iie0camttHliNLFwvS\nEvvzawv8C8YL/Q0lL7QgQHHVHvVgobtxIEPxMqbWOnFGWBrRwOk5o5Rg2iym\n7wH9mZ6uHH02UcyMXJzJFS30Ez0Az/BkXVeqkGj9thUAIbdmLMAs42pjvfjo\nhDSg5j/cgi3znPT4dNiwkZCrZRa+Di3GEM+fxmlCGvNlrVlwA7pZm73AOwGT\nesXPomeKSfG+piP0p7aufWOxWWKLG+XqAiOJRtdh7tU8COo2jZDxuKkWP+gY\nSBx1nnKwAqkC2GOBQpD8SycXrIKakbwuKDecIPARZDK+K8sVoisGd2MAvfM6\n5AhidyhgQbu1GtfeEX35cVVoUQIQ4e0cFlvxAVhZIWhQBtN/nka190cuu0S/\nDZEvaWt7tYbxK0fmgU3xsG0udSx5v8tQACHAwkeeKIoSIg2m50BwP61g6UfF\n2pWV3l7AcgguMjrozkTCXXHQqgozYxQg0HfVSwAMIpIgyFiWEgKMmhLe5QIm\nt7TG\r\n=HdQE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=14"},"gitHead":"03749c03bd5c12d137d88df281c8de202efc2c97","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"7.23.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"14.17.6","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","better-sqlite3":"^7.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^2.0.0","xcraft-dev-prettier":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.0.0_1631803374735_0.8719562280530588","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"xcraft-core-book","version":"1.0.1","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.0.1","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"3f5a9ea37ba28468a4b7d310aa9d90ae1a7ae501","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.0.1.tgz","fileCount":7,"integrity":"sha512-oBkVbR42PmmdBWKEri9On5WPEtKtr0AvKTFfg5t2aAq7bwJzVRAQf910tB/Hww7VPKPpd+8M3CZzrt0XyEEGMQ==","signatures":[{"sig":"MEYCIQCwTObryEXYBfGq8tkck45snY45Pfb/4AETyqMjJfe74gIhAP6hh73/7Glkvj1Bml7DT31Xm0ZBxd5VnOGq9PlNUH9L","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZ+PzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWiw/8DkqxuNVGsKWYidraHZJR16awbzW2EdluqHRLhPZs20qJVDpm\r\nwFMZzfDOcenyhV/jmE3P+KOzr0SjYmTR9UuhP8+moHp15SwYK+EsoU/tAbTY\r\nlbCY2GXbvSMAOdQg7mn25ITvA+x7F3jObSOEbSLc8arCRl1mxiaHrJHzNDPf\r\nmcJtra2UaxCLv1EDyemeQyu0kQOcEm1SNzw9eq1nW/4gRfBgYj9QfzqeChb8\r\n2WyWpfu/f21LtFK/EqrJ6CIP6PMajAz09o0dISt+woTi5OUFBD6v/gYvv/K4\r\nE5430hmyrESoD3ROfkF5sPdmfM1K3hrCaxyEKEpE9LKw6jSAO9PXDVSF12xI\r\n3m+IE3pOvwaGGHOhTOcef0xeLslIpOiYdtqLA6vhCu+7Oobv8HL65lQ6o4S3\r\neeU0HNkloug7XQvNNh1jG41rQcYkXyookoJFd59sDUIsncLYhusNTegcpJPq\r\n1rG/I1YfITTWoGmUZ6UlV8ZsLJsnR+GlOtTVjW1fRCI+CD8lhZsH+BvWpjMw\r\nKiUrXcPCL2HnolhNsKwO+x4pAdgnOuYMp/gKy4s91cI/j9QmeuBvRZLNRFv6\r\nCI/9Q8rpVA8dCvRWHaoU5/5xeOAxTjczn1eYArS+sOAdBRBG9oqeT0mC5kUi\r\nVXsK7bOx1AcD9Y6wRDZ3TooAZXUv9vJMDmA=\r\n=qmnF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=14"},"gitHead":"b341abdc0770c58d8b6bedb355589a9cbb74fa1c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"8.7.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"14.19.1","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","better-sqlite3":"^7.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^2.0.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.0.1_1650975731453_0.4524774961230913","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"xcraft-core-book","version":"1.1.1","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.1.1","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"dbb13dd215038c0bb7faf018064a4adff33fe6f6","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.1.1.tgz","fileCount":8,"integrity":"sha512-pwXE8cLsz//bxYx+03Y1yialW96yb4h5D9YFIpS/iFbqyul395Nd/Dm5191xGXsOcAOjtMrjCK+NP7O2zFon5w==","signatures":[{"sig":"MEUCIBHamtvOSVyw910AHn29j8uKAlltr7K/b4j0uIA6NesTAiEA3i1O3GXsrexoI8OVxfqAahQ9aUKw20Bgvkw9vFoc3kU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkNW+iACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTAhAAlSzKC3txs/rfNYy5LGQ9Pag/YepjhC5DqDkX7/95DBJ+GrfV\r\nDLTs8IYmXZsrRF3TmHiZAl8cl3VBBadIy4EZ0560NXYEwTjA0cWPKiWolnYD\r\nQaFN4m5rU3XNEaLBytOKz3E7ST7l1MNIuHUrxu5EbCmvZGR3UW4oPQ5Gv5vE\r\n5qu/9PlRrxqGMIxSMzoqN9dZj9IM4g96IGHhCLmIYwO8pOsBZ8wx2JciOpsm\r\nc4Da8qByqEXrkyoHiFtCBngHYPsogBoaL7kFMPT2UEPTF8b8fgU2acT3SOrx\r\nuxgqPxtW+5qPBrArqBCqeYOoRld2kifCOY3SLyGnW9AHrSXRI+qOIxqDpTn1\r\n1LJxFh56VCkl1JfREaSHZGW0L8sB8WLrBuO9ZTiiXp5QnEqLoK+32uovrZfj\r\nT3VusaFQW59wpmUYd8kvdWYADm3ngZOx2lbEZ4ktPlurBO0mz/HXRMytn2HI\r\nLOupKqsXCblO7+qnxfQrZDNhlzlPNk+0oWADdGm0i00rCU+5H4KijA/u/Mbp\r\n4WCXNpBIWcqnhf0eABBklti5xohEA81KoAuionBAWc6SFVcEw772wMv5YcBt\r\ngXB6YFLsz0CPcK2X++vMrQkBFCh3OHjVYHcpafGW6rM7T9jIzVGfWTgeS/ai\r\nPCvI7ibWc/RWKkvmuwOlueozrYt6qQlIOoY=\r\n=U6Uh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=14"},"gitHead":"04bc25d4d138fc87ee37df26e85a6c58355a1c04","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"9.6.3","description":"Xcraft spell book","directories":{},"_nodeVersion":"14.21.3","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","better-sqlite3":"^7.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^2.0.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.1.1_1681223586521_0.46655067624795366","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"xcraft-core-book","version":"1.2.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.2.0","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"37daa0d99d45c11e56bc101f765d248611a39219","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.2.0.tgz","fileCount":8,"integrity":"sha512-cP9mmtPWkS+R+qhkV8PM56zkt2HbnG69E/FZyaMW5N17JibuPLLJVBYsLyVJeGUA12bKcKfthtu7ZPfrHvfUEg==","signatures":[{"sig":"MEUCIQCpLAfS5kLJqyVBaDCRF7D7XsNtG6xf1bOZwhqhytSCjwIgHWNIcr53Ct7yGYAiZqpPKm84+EsVGt09BW6kStuNYg0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8924},"main":"index.js","engines":{"node":">=14"},"gitHead":"9c4250180e421144a7b9f8e227030934382ee406","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"9.8.1","description":"Xcraft spell book","directories":{},"_nodeVersion":"18.13.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.1.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^8.5.2"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.2.0_1693476288175_0.504129265974705","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"xcraft-core-book","version":"1.3.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.3.0","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"d64972b98088c4f3a9bd8476cf7046a104e80767","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.3.0.tgz","fileCount":8,"integrity":"sha512-Sv+RYq4U/wuToX6vexx5DEBAxpZFlkY/07kIFjKUggemUyY6EkWEP74cbdBbSLV+8hesx/U01JsAuYhVuG2wfg==","signatures":[{"sig":"MEUCIHbNY0e13S9dkx0CFFlX6ILQJsSRljMPzGvUjXx199YqAiEA54QiAMbi1zztQhL4o1zUnxrep1vTxwRl51uut2NyJRE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9014},"main":"index.js","engines":{"node":">=14"},"gitHead":"447877261e245c4ff4121af45cdacca717aab798","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"9.8.1","description":"Xcraft spell book","directories":{},"_nodeVersion":"18.13.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.1.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^8.5.2"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.3.0_1693486229350_0.511647536872925","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"xcraft-core-book","version":"1.4.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.4.0","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"5229d25b249464c9a42ad45eef230d7683122bde","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.4.0.tgz","fileCount":8,"integrity":"sha512-wJGgeHndvQaM4UL3/3mgC6Q+0QnpPWhhpJ+AbHeryQROkfd2PbhAFrnu/EQyalRLTtLKDS8e6KXsakl9zf/WgA==","signatures":[{"sig":"MEUCIQDWOm4hmJePU5We8tCjcCcGj/3xZ/ZwYqUj4304NXzo+QIgSIfuQzDlHsyt7JOBby8qjWuHQaNZqGUcujP9Jk6MzRQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9014},"main":"index.js","engines":{"node":">=14"},"gitHead":"c6370353afdf69785340a11ade96969788268ecc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"9.8.1","description":"Xcraft spell book","directories":{},"_nodeVersion":"18.13.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.1.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^9.1.1"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.4.0_1700057268602_0.6755742092541102","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"xcraft-core-book","version":"1.6.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.6.0","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"a65b38cb915aed9a1c3df2ff3173cde46dda0ff3","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.6.0.tgz","fileCount":8,"integrity":"sha512-0rymwbqNHH2N0mXZj6kjqBB4HpqMCL/6i2W5wza1mLlnZCR06XUyfSBU2Fy3ea6iPd7T8B/VLA8P384lD0vmPA==","signatures":[{"sig":"MEYCIQCwBNW2nRxqMWUAn+X9v9bfgUf0IMRi4Eur0Lt6D7byQwIhAORBzRyg37Ma31OHYASROpc1C7cgToOyTalN9o3qgnF+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9239},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"9.9.2","description":"Xcraft spell book","directories":{},"_nodeVersion":"18.19.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.1.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^9.3.0"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.6.0_1705573328753_0.8669331760340273","host":"s3://npm-registry-packages"}},"1.6.2":{"name":"xcraft-core-book","version":"1.6.2","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.6.2","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"baded6974f92ccd769458efc64fd64e3241ece0f","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.6.2.tgz","fileCount":8,"integrity":"sha512-PwASVozMK9BbCGg7fMtKNR00rItQa8hRZ6LnXcthcH/Kf2CSLdoyGHLQsvCSQFAxv5ZPY0t5ZOX/kg6bjJMEXA==","signatures":[{"sig":"MEUCIEuwh1BusB69kTN2bZHczKPlJkanv41f/DL1CVCS4cy4AiEA5fqgYbIGeussqdHemioYgb89MoXbma7GIRjJUxckEsM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9467},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"9.9.2","description":"Xcraft spell book","directories":{},"_nodeVersion":"18.19.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.1.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^9.3.0"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.6.2_1707470867688_0.9624061533300257","host":"s3://npm-registry-packages"}},"1.6.3":{"name":"xcraft-core-book","version":"1.6.3","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.6.3","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"92aa77070abdfcf7ec5324a62a959a524ba2eafe","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.6.3.tgz","fileCount":8,"integrity":"sha512-YKrA5cd+l92LEOHIlLx4tLkIVIiRCwfp+1O2zFaipNIvABI2cJLP0b/3KvwajzZ3X791q44XgUdj0nG38OqMPg==","signatures":[{"sig":"MEUCIGqepz1g8FE1YsJ1OxWamwIM8+1PzjBKaxHZ/MHgjJqtAiEA1FznvaRSCyOtfVX10ijxhpKS3nhyc1UkKgyCsPbajHM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9461},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"10.4.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"18.19.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.1.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^9.3.0"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.6.3_1708439016140_0.0480766003985067","host":"s3://npm-registry-packages"}},"1.7.1":{"name":"xcraft-core-book","version":"1.7.1","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.7.1","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"961148d11d84d1369a5e04c593f2fe7ea7257272","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.7.1.tgz","fileCount":8,"integrity":"sha512-fYpsQQDLSDECju7dZkdUS0abIkcTC2uJRZpNoU5Tgj+MK2HcxQth6iC+61ywA3DFp4/MtBmZtc6EDWGZUy04cA==","signatures":[{"sig":"MEYCIQD71pVBq8dj6TpBLx6mOXstOCZl6zEp3otvkQUFrsLEFgIhAJLmziLah0NrqRDYdSvIjc/lIcS5ioAXbs/Nuymhw7/D","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9524},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"10.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.17.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.3.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.1.2"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.7.1_1724338327587_0.72420023938277","host":"s3://npm-registry-packages"}},"1.7.2":{"name":"xcraft-core-book","version":"1.7.2","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.7.2","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"f442a0cf4d43e128767c63817b9e4638d834c318","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.7.2.tgz","fileCount":8,"integrity":"sha512-KTtHsIFQ7iat0SB6xGyPcKx9UZuDauXn8sDHza+tBJiqAaUWzrf9ecclJWmL85F+bGuNW+u6s0eOmTfiRCh82Q==","signatures":[{"sig":"MEQCIE//QIfvdy+lb+akYdd0LPjwGmDSx4gImX8saKLN43opAiBNvww1hClex/rt9XX/ahlC5n8De34my1Y4uF4Hr0FjBA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10302},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"10.8.2","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.17.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.0","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.1.2"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.7.2_1725287236617_0.10470385707423513","host":"s3://npm-registry-packages"}},"1.9.0":{"name":"xcraft-core-book","version":"1.9.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.9.0","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"209f18be23d36a4f2449068cc47e7e01c6c81d09","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.9.0.tgz","fileCount":9,"integrity":"sha512-GKLT6GVMntoZ+tBNRD/SXNDLaeeiuEbvoGifDGZat6JWzLKtaZIgBBO3dJ8fqGgZLsZMNWANDM70x85dElaLTA==","signatures":[{"sig":"MEYCIQCH805Y8UT9mqRAb2o0AV5axBIJBGgmfZtkC0LyOr9GZwIhAOzgLCn2Od9hXyint7rgS+pIQoTzE9HdgYOAwkmbMjOI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13473},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"10.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.17.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"peerDependencies":{"node-sqlite3-wasm":"^0.8.22"},"optionalDependencies":{"better-sqlite3":"^11.1.2"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.9.0_1727861488091_0.14501198830366335","host":"s3://npm-registry-packages"}},"1.9.1":{"name":"xcraft-core-book","version":"1.9.1","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.9.1","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"a930d66bf7ff4f0cfeba5e775b6671252f6bcd5c","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.9.1.tgz","fileCount":9,"integrity":"sha512-yw15wv2Fk23U4MLM9MS8a/AMKt/vgxd6Urp27r59c53ZAYAuNYqP1jfCAYeh3c3VscY/G+6aE1tG7Vf0EGEYlQ==","signatures":[{"sig":"MEYCIQDxAxYbOE228hMEQwhA7XqRthQq+LXhIQLM4DpSY8/rFgIhAL5at5wh+bpxJJUki1O47Rn4cW5iGfTySpje9Fr1Ip2L","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13672},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"10.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.17.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"peerDependencies":{"better-sqlite3":"10.1.0"},"optionalDependencies":{"node-sqlite3-wasm":"^0.8.22"},"peerDependenciesMeta":{"better-sqlite3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.9.1_1728230513658_0.22299113989421793","host":"s3://npm-registry-packages"}},"1.9.2":{"name":"xcraft-core-book","version":"1.9.2","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.9.2","maintainers":[{"name":"yvessaz","email":"vessaz@epsitec.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"542b7d389cc6fd32bb4627bf71ed9c28dee5229c","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.9.2.tgz","fileCount":9,"integrity":"sha512-goW/YojOGbJQxIcl72X3cCeAzHrQ/GTl+eBlFDsgTA9MV1yajuBRaslgxiCxD7wili1x996ZZplR7nMCzY+rtg==","signatures":[{"sig":"MEUCIG+7fOSPD6VtkQy4r22dKTPHUZ+UuGGrkHxAsLMjiZIpAiEA1EYEIlK282c1+/yQaG2TOO0Les60d9YBsz7RwMxzR5c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13558},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"10.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.17.0","dependencies":{"cli-color":"^1.2.0","gigawatts":"^4.0.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"10.1.0","node-sqlite3-wasm":"^0.8.22"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.9.2_1728251119330_0.7305992913894497","host":"s3://npm-registry-packages"}},"1.10.4":{"name":"xcraft-core-book","version":"1.10.4","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.10.4","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"954ff4abc1670f2712cb19d278ca472e8ee0f788","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.10.4.tgz","fileCount":11,"integrity":"sha512-6jEF/be+4EJJUWI2OEl0ct6Fc/82r7wwcesdaEj6ZNxXFhyaS9OfhfrHn0paslZEOKvRxdg8xuwTANXQJTwX1A==","signatures":[{"sig":"MEUCIQDsnxK8vqNg82G1HQLX1rSnv0Og8u1zHzESKg5WdTDIUgIgX7ctp0t09YEAZ0Rt74RzFRGqNIQRM41XYS4hqLz/3JE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14898},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.1.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.0","dependencies":{"fs-extra":"^9.1.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"10.1.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.10.4_1743755575648_0.2030720452272161","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"xcraft-core-book","version":"1.11.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.11.0","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"44042086182b4873f0a9de353b85180c8412740d","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.11.0.tgz","fileCount":11,"integrity":"sha512-0j5YmoBKY7EUZM1h7M0yMLZAe/n8Q2UQgpIT7+fRl4kBoUh88L2yHNMKJgXC9npfXTrXl+AR3Btn5Qs1cB+tFw==","signatures":[{"sig":"MEUCIQCnb6V+aIR779+Rm6rZuZyo8vOQnWw87niteuMbKR2IlAIgB1BH6p68ICXQyqZssL+LvsAYwhX1ER+RY54etD880To=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15648},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.0","dependencies":{"fs-extra":"^9.1.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"10.1.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.11.0_1747074209286_0.3717866811577253","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"xcraft-core-book","version":"1.12.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.12.0","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"0463871f9769be7dd330f6c758be3f0075bebb44","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.12.0.tgz","fileCount":11,"integrity":"sha512-vQEPFFIBzaqWMz2hVEwP2bTgIqPntOjF0C34OYBD0SiceRQKbYofdtWps2qGfcL+caM7WFr/9jDB6v8y5KQcjQ==","signatures":[{"sig":"MEYCIQCgtUzM/pY6O4brODeR61PSB4zBf9qx+HXBSBc1ISEVGwIhAKmQxuDoYagMLG9FKr8Tb+qXumGNeEuzLavWrySG8ZQq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15649},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.2","dependencies":{"fs-extra":"^9.1.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.3.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.12.0_1749106397861_0.04459642438843958","host":"s3://npm-registry-packages-npm-production"}},"1.12.1":{"name":"xcraft-core-book","version":"1.12.1","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.12.1","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"147de5daec0d709520588510926bb09ec6f8385a","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.12.1.tgz","fileCount":11,"integrity":"sha512-apQae08/gOscf0kIFgrF3P4WPdKv7vjj29uAWOVkMSKE14yDgG1tlu2R6oI/zatf0WzbWPtGEfhpJOm8/SKfeQ==","signatures":[{"sig":"MEQCIH9glCpGrvUc6WFrGb/xn9jsk9eNc508EumRngfd0imeAiBQCpxeR14jENb9jbCKcCGfcBcdZSijf5p0AWwqiACxKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15650},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.2","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.3.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.12.1_1749417223095_0.5262627138821427","host":"s3://npm-registry-packages-npm-production"}},"1.12.2":{"name":"xcraft-core-book","version":"1.12.2","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.12.2","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"2b7d1e695af4cfe3128ac1b640fb48bfe171f0c7","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.12.2.tgz","fileCount":11,"integrity":"sha512-LWfiZgZKlBxQSCnyantAEHaEOZtiIN874Xc8uGGpXb5ChwSs235AdT5Awx8QjbNxPhxQQnXo6tAoZUWgKMQyDw==","signatures":[{"sig":"MEQCIF34co1KIAXIlrSLVgZ8EwOlVrVWjZmmO0eR1HDHu/HHAiBEqKhiJLhqtwfttdmAIdq3BoHOACEZ87x2JVD8kwBgFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15721},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","actor":{"name":"schroeterm","type":"user","email":"mathieu@schroetersa.ch"},"email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.2","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.3.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.12.2_1750884772508_0.9224428593623877","host":"s3://npm-registry-packages-npm-production"}},"1.12.3":{"name":"xcraft-core-book","version":"1.12.3","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.12.3","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"505bb5db016b1f4d69a502ab787ec47cabede388","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.12.3.tgz","fileCount":11,"integrity":"sha512-Hnf3i1Ryh0K+FUaWvX7Ea2bT180edur0IqGcpuuqADqZF6r7MArwv1CIS3PGsxeXG/YfpT2nTBCronR5T9Qrfw==","signatures":[{"sig":"MEQCIHhdR5BmaHSiP2DZjVPBlGTnwjl3BZJiNZWtdZUnKSTGAiAPYviLqXjqzaB1TuLmUzeNxWiLWFp1ZEotAleHN4XUuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28236},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","actor":{"name":"schroeterm","type":"user","email":"mathieu@schroetersa.ch"},"email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.2","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.1.1","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.3.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.12.3_1750939040810_0.11668346215021597","host":"s3://npm-registry-packages-npm-production"}},"1.12.4":{"name":"xcraft-core-book","version":"1.12.4","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.12.4","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"f144ac777687108f23f74546f2f1728e9d81df54","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.12.4.tgz","fileCount":11,"integrity":"sha512-Q0sP2iUzpiFRk73zwZZyByldBZ2ys1gkjQwSruUA7XSaYmmzcH1GZ9+Dsd+leFo/pBV3zMxa5ggGyGImordDDw==","signatures":[{"sig":"MEQCIBAMHNPWcheRybU73tQP0AH7XxRyyoaHMUDNTV3UZTO3AiBJ63SNVWi8w+OdOq9GN+5tqWS1UBsfSJ+BobHha3kXyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28229},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","actor":{"name":"schroeterm","type":"user","email":"mathieu@schroetersa.ch"},"email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.2","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.2.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.3.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.12.4_1751006396999_0.5838395098513374","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"xcraft-core-book","version":"1.13.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.13.0","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"c1e5448d0b563e7ce47565250b33c22f654a96b2","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.13.0.tgz","fileCount":11,"integrity":"sha512-7mjREoJZK8iqgOWYRkaVMbOPLBGb+Voj5z0XFWdf3Omz3ygaLUekw7UFcRoF6bHiCwDCPHODTLeUBhkJBQ2lLA==","signatures":[{"sig":"MEUCIQCa1svltZ3dcImhrpi/xhMKHZvm0Qq/gc4mSXMORiFrNQIgLuptpnQvhZuTP/sbXNntazG4IRkNy0FpuuRm1dClwu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28575},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","actor":{"name":"schroeterm","type":"user","email":"mathieu@schroetersa.ch"},"email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.2","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.2.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.3.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.13.0_1751014477246_0.49427471835174375","host":"s3://npm-registry-packages-npm-production"}},"1.13.1":{"name":"xcraft-core-book","version":"1.13.1","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Mathieu Schroeter"},"license":"MIT","_id":"xcraft-core-book@1.13.1","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"b92b37ff82ba1e6e3745b8524c8a6d83cf9e7cc6","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.13.1.tgz","fileCount":11,"integrity":"sha512-pIo8QjfniLqsD9imi0/FUDBSsSzU2lORQOXdVMpxSgbWhP+maQ537dWbcVfImWxPtN6ffpzx7AsVxoHQFjOJ8g==","signatures":[{"sig":"MEYCIQDk4+tb8VLqHXWde/4VT/NPQA4gh9SNTLe+rwRQ0h++IAIhAMAPE295pjG92bzn1+Mml6Qf8gQrarOjQGEKSnU3lxXd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28348},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","actor":{"name":"schroeterm","type":"user","email":"mathieu@schroetersa.ch"},"email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.2","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.2.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.3.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.13.1_1751024102145_0.017469656603010364","host":"s3://npm-registry-packages-npm-production"}},"1.13.3":{"name":"xcraft-core-book","version":"1.13.3","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Epsitec SA"},"license":"MIT","_id":"xcraft-core-book@1.13.3","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"contributors":[{"name":"Mathieu Schroeter","email":"schroeter@epsitec.ch"},{"name":"Samuel Loup","email":"loup@epsitec.ch"},{"name":"Gillian Fries","email":"fries@epsitec.ch"},{"name":"Yannick Vessaz","email":"vessaz@epsitec.ch"},{"name":"Jonny Quarta","email":"quarta@epsitec.ch"},{"name":"Louis-Samuel Leuenberger","email":"leuenberger@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"d380642f782dcb6b0313425e67794fb6bd8a218c","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.13.3.tgz","fileCount":12,"integrity":"sha512-ZQ/wkE5OgcDRcrrv5kTU2KSTM5sQ0DYofeIKdEuxVR1k/OaPZwr+iZuBxBZJ8QzvLPIgWMINCDjebdg3GoSROA==","signatures":[{"sig":"MEUCIFLuPhP5DWxIAauRGRV6Au0ENEuxe40nv7PPcdtf0wSHAiEAy54BVcHn6Q0plDSYJAKEQMRmBkHlrQc1k7geHyDi2G4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29719},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.3.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"20.19.2","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.2.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^11.3.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.13.3_1752849476569_0.7489356046003373","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"xcraft-core-book","version":"1.14.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Epsitec SA"},"license":"MIT","_id":"xcraft-core-book@1.14.0","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"contributors":[{"name":"Mathieu Schroeter","email":"schroeter@epsitec.ch"},{"name":"Samuel Loup","email":"loup@epsitec.ch"},{"name":"Gillian Fries","email":"fries@epsitec.ch"},{"name":"Yannick Vessaz","email":"vessaz@epsitec.ch"},{"name":"Jonny Quarta","email":"quarta@epsitec.ch"},{"name":"Louis-Samuel Leuenberger","email":"leuenberger@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"162e58ae1cc3b3d741a2ab744b5bc3a010e9e6fd","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.14.0.tgz","fileCount":12,"integrity":"sha512-rK+I2Mhfhcgo96DoD/NMgiLCDW7iUVcOO6mtRpyiZRcagxTYKFVFddKykmnCSg4wmcLtHjGew2Xp7kbMmweM2Q==","signatures":[{"sig":"MEUCIFGIuuiRakYQo5tc2nthBVxl5+2nLwShKzEOYpLcKV/PAiEAmMxHhYXiiHo3q8SdZXAxIN+Oo/NY8PCh1qDbfyGm1r8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29719},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.5.2","description":"Xcraft spell book","directories":{},"_nodeVersion":"24.5.0","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.2.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^12.2.0","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.14.0_1756209483216_0.010014862779677891","host":"s3://npm-registry-packages-npm-production"}},"1.14.1":{"name":"xcraft-core-book","version":"1.14.1","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Epsitec SA"},"license":"MIT","_id":"xcraft-core-book@1.14.1","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"contributors":[{"name":"Mathieu Schroeter","email":"schroeter@epsitec.ch"},{"name":"Samuel Loup","email":"loup@epsitec.ch"},{"name":"Gillian Fries","email":"fries@epsitec.ch"},{"name":"Yannick Vessaz","email":"vessaz@epsitec.ch"},{"name":"Jonny Quarta","email":"quarta@epsitec.ch"},{"name":"Louis-Samuel Leuenberger","email":"leuenberger@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"7bee377c915d1c10d5cd947a60f88aadd151f992","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.14.1.tgz","fileCount":12,"integrity":"sha512-tckGjRdG/dN/GfELs3STWNQu4eT8PnmvCOuHPnTCvYRmWEHNL6PEew6ysPLo4N8GwiGyYq34p1qp64ZrapUkqA==","signatures":[{"sig":"MEYCIQDKhz3XOTahVjNtHRKv5mYcZUMtNJF1z/2xNw35JS3yhAIhAIuvs/0Uj0pbnYZBM+9zJBE0DKRjJ86/Lo+eCTHQNY4j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29719},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.5.2","description":"Xcraft spell book","directories":{},"_nodeVersion":"24.10.0","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.2.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^12.4.1","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.14.1_1760528339600_0.5638299214160749","host":"s3://npm-registry-packages-npm-production"}},"1.14.2":{"name":"xcraft-core-book","version":"1.14.2","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Epsitec SA"},"license":"MIT","_id":"xcraft-core-book@1.14.2","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"contributors":[{"name":"Mathieu Schroeter","email":"schroeter@epsitec.ch"},{"name":"Samuel Loup","email":"loup@epsitec.ch"},{"name":"Gillian Fries","email":"fries@epsitec.ch"},{"name":"Yannick Vessaz","email":"vessaz@epsitec.ch"},{"name":"Jonny Quarta","email":"quarta@epsitec.ch"},{"name":"Louis-Samuel Leuenberger","email":"leuenberger@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"64915f2a014d88b159d1288f9e9a1763d382264b","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.14.2.tgz","fileCount":12,"integrity":"sha512-Fsx/OljkqLo67r897C1NQ73aqxzGPpaXewtT3dKwDrUHFd2j5C6tqUN1SGhsIm4kNdf0SWWQMZGzvhElMU5SgA==","signatures":[{"sig":"MEQCIF1P0VqNShP4nv/nGwC0ixQSSnpBECt6c375aGddrg+HAiAI1HYUvnh2AnZuOqJ6m4PwDlO08lYfjft1sDUCHRmVVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29840},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.5.2","description":"Xcraft spell book","directories":{},"_nodeVersion":"24.11.0","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.2.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^12.4.1","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.14.2_1762003688963_0.9694077391380937","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"xcraft-core-book","version":"1.15.0","keywords":["xcraft","book","database","sqlite"],"author":{"name":"Epsitec SA"},"license":"MIT","_id":"xcraft-core-book@1.15.0","maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"contributors":[{"name":"Mathieu Schroeter","email":"schroeter@epsitec.ch"},{"name":"Samuel Loup","email":"loup@epsitec.ch"},{"name":"Gillian Fries","email":"fries@epsitec.ch"},{"name":"Yannick Vessaz","email":"vessaz@epsitec.ch"},{"name":"Jonny Quarta","email":"quarta@epsitec.ch"},{"name":"Louis-Samuel Leuenberger","email":"leuenberger@epsitec.ch"}],"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"dist":{"shasum":"38ed66d9d3125640e0275af6c54f597982e457fc","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.15.0.tgz","fileCount":12,"integrity":"sha512-TvxxtFxmiXIlicFecVAjN/KEFmjEdRGl/CRkQJOLDHYsLRQfDbtq2bxvgTgBrR0VSc6Ihe3fiUOSaAjCUxzUkA==","signatures":[{"sig":"MEYCIQDAHiq9dbeReVZxYJkfvtg8XKW3qp3bB6VLiNz8tBDHcAIhALy/C3wcOGm/fdeABooVnMNpZJ2Wow6S5bl4JtGERVLj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29885},"main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"prettier":"xcraft-dev-prettier","repository":{"url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git","type":"git"},"_npmVersion":"11.7.0","description":"Xcraft spell book","directories":{},"_nodeVersion":"24.13.0","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.2.0","xcraft-core-utils":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"2.0.4","xcraft-dev-rules":"^4.4.2","xcraft-dev-prettier":"^2.0.0"},"optionalDependencies":{"better-sqlite3":"^12.4.1","node-sqlite3-wasm":"^0.8.24"},"_npmOperationalInternal":{"tmp":"tmp/xcraft-core-book_1.15.0_1772026444802_0.193206895189584","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"xcraft-core-book","version":"1.16.0","description":"Xcraft spell book","main":"index.js","engines":{"node":">=14"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":["xcraft","book","database","sqlite"],"repository":{"type":"git","url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git"},"author":{"name":"Epsitec SA"},"contributors":[{"name":"Mathieu Schroeter","email":"schroeter@epsitec.ch"},{"name":"Samuel Loup","email":"loup@epsitec.ch"},{"name":"Gillian Fries","email":"fries@epsitec.ch"},{"name":"Yannick Vessaz","email":"vessaz@epsitec.ch"},{"name":"Jonny Quarta","email":"quarta@epsitec.ch"},{"name":"Louis-Samuel Leuenberger","email":"leuenberger@epsitec.ch"}],"license":"MIT","dependencies":{"fs-extra":"^11.3.0","gigawatts":"^4.0.1","picocolors":"^1.1.1","xcraft-core-fs":"^2.0.0","xcraft-core-log":"^2.2.0","xcraft-core-utils":"^4.0.0"},"optionalDependencies":{"better-sqlite3":"^12.4.1","node-sqlite3-wasm":"^0.8.24"},"bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","devDependencies":{"prettier":"2.0.4","xcraft-dev-prettier":"^2.0.0","xcraft-dev-rules":"^4.4.2"},"prettier":"xcraft-dev-prettier","_id":"xcraft-core-book@1.16.0","_nodeVersion":"24.13.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-uHJo0LacYk/P8owhYlS08EpyCGVCqp3Tn4NoOvBYQz57BilxFnPcCi+LJGj/GvEfydrZd9m0clooT5FU5cEyVA==","shasum":"92ed19af1919746f743593c96b0f18a73850bee0","tarball":"https://registry.npmjs.org/xcraft-core-book/-/xcraft-core-book-1.16.0.tgz","fileCount":12,"unpackedSize":29062,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCKpB6KTPvYTpKNb6Sc/0m7FHQba02VD+7fNaT5/j1NUwIhAMlHZAO3BRkqWuMPT349dBvBpNv89mp99MXWG6fLtqCm"}]},"_npmUser":{"name":"schroeterm","email":"mathieu@schroetersa.ch"},"directories":{},"maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/xcraft-core-book_1.16.0_1774966665769_0.17516446057820145"},"_hasShrinkwrap":false}},"time":{"created":"2021-09-16T14:42:54.734Z","modified":"2026-03-31T14:17:46.117Z","1.0.0":"2021-09-16T14:42:54.856Z","1.0.1":"2022-04-26T12:22:11.606Z","1.1.1":"2023-04-11T14:33:06.749Z","1.2.0":"2023-08-31T10:04:48.472Z","1.3.0":"2023-08-31T12:50:29.532Z","1.4.0":"2023-11-15T14:07:48.881Z","1.6.0":"2024-01-18T10:22:08.905Z","1.6.2":"2024-02-09T09:27:47.827Z","1.6.3":"2024-02-20T14:23:36.283Z","1.7.1":"2024-08-22T14:52:07.758Z","1.7.2":"2024-09-02T14:27:16.778Z","1.9.0":"2024-10-02T09:31:28.279Z","1.9.1":"2024-10-06T16:01:53.847Z","1.9.2":"2024-10-06T21:45:19.522Z","1.10.4":"2025-04-04T08:32:55.848Z","1.11.0":"2025-05-12T18:23:29.447Z","1.12.0":"2025-06-05T06:53:18.032Z","1.12.1":"2025-06-08T21:13:43.274Z","1.12.2":"2025-06-25T20:52:52.679Z","1.12.3":"2025-06-26T11:57:21.002Z","1.12.4":"2025-06-27T06:39:57.180Z","1.13.0":"2025-06-27T08:54:37.461Z","1.13.1":"2025-06-27T11:35:02.327Z","1.13.3":"2025-07-18T14:37:56.718Z","1.14.0":"2025-08-26T11:58:03.381Z","1.14.1":"2025-10-15T11:38:59.805Z","1.14.2":"2025-11-01T13:28:09.173Z","1.15.0":"2026-02-25T13:34:04.936Z","1.16.0":"2026-03-31T14:17:45.925Z"},"bugs":{"url":"https://github.com/Xcraft-Inc/xcraft-core-book/issues"},"author":{"name":"Epsitec SA"},"license":"MIT","homepage":"https://github.com/Xcraft-Inc/xcraft-core-book#readme","keywords":["xcraft","book","database","sqlite"],"repository":{"type":"git","url":"git+https://github.com/Xcraft-Inc/xcraft-core-book.git"},"description":"Xcraft spell book","contributors":[{"name":"Mathieu Schroeter","email":"schroeter@epsitec.ch"},{"name":"Samuel Loup","email":"loup@epsitec.ch"},{"name":"Gillian Fries","email":"fries@epsitec.ch"},{"name":"Yannick Vessaz","email":"vessaz@epsitec.ch"},{"name":"Jonny Quarta","email":"quarta@epsitec.ch"},{"name":"Louis-Samuel Leuenberger","email":"leuenberger@epsitec.ch"}],"maintainers":[{"name":"samlebarbare","email":"samuel.loup@gmail.com"},{"name":"schroeterm","email":"mathieu@schroetersa.ch"},{"name":"nocturnight","email":"skynight.fries@gmail.com"},{"name":"quarta","email":"quarta@epsitec.ch"},{"name":"yvessaz","email":"vessaz@epsitec.ch"}],"readme":"# 📘 xcraft-core-book\n\n## Aperçu\n\nLe module `xcraft-core-book` est une librairie utilitaire du framework Xcraft qui fournit des abstractions pour la gestion de bases de données SQLite et des files d'attente de tâches persistantes. Il constitue le \"livre de sorts\" (spell book) de Xcraft en offrant des outils de persistance et de traitement asynchrone robustes avec support multi-plateforme (Node.js, Electron, Bun, WASM).\n\n## Sommaire\n\n- [Structure du module](#structure-du-module)\n- [Fonctionnement global](#fonctionnement-global)\n- [Exemples d'utilisation](#exemples-dutilisation)\n- [Interactions avec d'autres modules](#interactions-avec-dautres-modules)\n- [Détails des sources](#détails-des-sources)\n\n## Structure du module\n\nLe module expose deux classes principales :\n\n- **`SQLite`** : Gestionnaire de bases de données SQLite avec support multi-backend\n- **`PersistantJobQueue`** : File d'attente de tâches persistante basée sur SQLite\n\nL'architecture modulaire permet de supporter différents backends SQLite selon l'environnement d'exécution avec une API unifiée. Les backends disponibles sont `better-sqlite3`, `node-sqlite3-wasm` et `bun-sqlite`.\n\n## Fonctionnement global\n\n### Gestion SQLite multi-backend\n\nLa classe `SQLite` abstrait l'accès à SQLite en déléguant à l'un des backends disponibles selon le contexte d'exécution :\n\n1. **better-sqlite3** (défaut) : Backend principal pour Node.js et Electron avec optimisations de binaires pré-compilés depuis le cache.\n2. **node-sqlite3-wasm** : Backend WebAssembly pour les environnements où les binaires natifs ne sont pas disponibles.\n3. **bun-sqlite** : Backend natif pour l'environnement Bun, non sélectionnable via le constructeur de `SQLite` (utilisé directement).\n\nLe choix du backend s'effectue à l'instanciation via le paramètre `wasm`. Si `wasm` vaut `true`, le backend WASM est chargé ; sinon `better-sqlite3` est utilisé par défaut. Le fichier `bun-sqlite.js` est destiné à un usage direct dans un environnement Bun.\n\n### File d'attente persistante\n\nLa classe `PersistantJobQueue` implémente une file d'attente FIFO avec :\n\n- **Persistance** : Les tâches sont stockées dans SQLite et survivent aux redémarrages.\n- **Parallélisme contrôlé** : Nombre de tâches simultanées configurable via `parallelLimit`.\n- **Gestion d'état** : Chaque tâche transite par les états `waiting` → `running` → supprimée à la fin.\n- **Thread-safety** : Les insertions sont protégées par un mutex ([gigawatts]).\n- **Séquençage FIFO** : Les tâches sont traitées dans l'ordre d'insertion via un numéro de séquence.\n- **Logging coloré** : Affichage du nombre de tâches en attente et en cours via [xcraft-core-log].\n\n## Exemples d'utilisation\n\n### Utilisation de SQLite\n\n```javascript\nconst {SQLite} = require('xcraft-core-book');\n\n// Instanciation avec le backend par défaut (better-sqlite3)\nconst sqlite = new SQLite('/path/to/db/directory');\n\n// Instanciation avec le backend WASM\nconst sqliteWasm = new SQLite('/path/to/db/directory', false, true);\n\nif (!sqlite.usable()) {\n  console.log('SQLite non disponible sur cette plateforme');\n  return;\n}\n\n// Ouverture d'une base de données avec tables, requêtes préparées et indices\nconst tables = `\n  CREATE TABLE IF NOT EXISTS users (\n    id INTEGER PRIMARY KEY,\n    name TEXT NOT NULL,\n    email TEXT UNIQUE\n  );\n`;\n\nconst queries = {\n  insertUser: 'INSERT INTO users (name, email) VALUES ($name, $email)',\n  getUser: 'SELECT * FROM users WHERE id = $id',\n};\n\nconst indices = `CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);`;\n\nsqlite.open('myapp', tables, queries, null, null, indices);\n\n// Utilisation des requêtes préparées\nconst stmts = sqlite.stmts('myapp');\nstmts.insertUser.run({name: 'John Doe', email: 'john@example.com'});\nconst user = stmts.getUser.get({id: 1});\n\n// Retry automatique en cas de verrouillage\nconst result = await SQLite.wait(() => stmts.getUser.get({id: 1}));\n```\n\n### Utilisation de PersistantJobQueue\n\n```javascript\nconst {PersistantJobQueue} = require('xcraft-core-book');\n\nconst jobRunner = (job, callback) => {\n  console.log(`Traitement du job ${job.jobId}`, job.work);\n  setTimeout(() => {\n    console.log(`Job ${job.jobId} terminé`);\n    callback();\n  }, 500);\n};\n\nconst queue = new PersistantJobQueue(\n  '/path/to/queue.db', // Chemin de la base SQLite\n  'email-queue', // Nom de la queue\n  jobRunner, // Fonction de traitement\n  3, // Limite de parallélisme\n  true, // Activer le logger\n  {timeout: 5000} // Options SQLite\n);\n\n// Ajout de tâches\nawait queue.push({\n  id: 'email-001',\n  topic: 'notifications',\n  work: {to: 'user@example.com', subject: 'Bienvenue'},\n});\n\n// Contrôle du flux\nqueue.pause();\nsetTimeout(() => queue.resume(), 5000);\n```\n\n## Interactions avec d'autres modules\n\n- **[xcraft-core-fs]** : Utilisé pour créer les répertoires de stockage des bases de données.\n- **[xcraft-core-log]** : Système de logging pour le suivi des opérations dans `PersistantJobQueue`.\n- **[xcraft-core-utils]** : Fournit le `Mutex` utilisé pour la protection des insertions concurrentes.\n\nCe module est couramment utilisé par les acteurs Goblin et Elf pour la persistance d'état, ainsi que par les modules de backend nécessitant un stockage structuré léger.\n\n## Détails des sources\n\n### `lib/sqlite.js`\n\nClasse principale d'accès à SQLite. Elle gère le cycle de vie des connexions (ouverture, fermeture, dispose), la préparation et le cache des requêtes SQL, et fournit des utilitaires pour les migrations, les pragma et les fonctions SQL personnalisées.\n\nÀ l'instanciation, le backend est chargé dynamiquement selon le paramètre `wasm`. Le backend est résolu depuis `./backends/better-sqlite3.js` ou `./backends/node-sqlite3-wasm.js`. En cas d'échec du chargement (plateforme non supportée), `this.Database` reste `null` et `usable()` retourne `false`.\n\nLa méthode statique `wait` implémente un mécanisme de retry avec attente de 400 ms pour les erreurs `SQLITE_BUSY`, `SQLITE_LOCKED` et les messages équivalents de better-sqlite3, couvrant notamment le cas documenté dans [better-sqlite3#203].\n\n#### Méthodes publiques\n\n- **`open(dbName, tables, queries, onOpen, onMigrate, indices, options)`** — Ouvre (ou crée) une base de données. Exécute `tables` pour créer le schéma, le callback `onOpen` juste après l'ouverture, `onMigrate` pour les migrations, puis `indices` pour les index. Prépare enfin toutes les requêtes de l'objet `queries`. Retourne `false` si SQLite est indisponible.\n- **`close(dbName)`** — Ferme la connexion à la base spécifiée et libère la référence interne.\n- **`dispose()`** — Ferme toutes les bases ouvertes en gérant les erreurs individuellement.\n- **`usable()`** — Retourne `true` si le backend SQLite a été chargé avec succès.\n- **`tryToUse()`** — Appelle `_onError` et retourne `false` si SQLite est indisponible, `true` sinon.\n- **`setEnable(enabled)`** — Active ou désactive SQLite dynamiquement ; si désactivé, ferme toutes les connexions ouvertes.\n- **`getHandle(dbName)`** — Retourne une fonction `() => db` donnant accès direct à l'instance de base, ou `null` si SQLite est indisponible.\n- **`stmts(dbName)`** — Retourne l'objet contenant toutes les requêtes préparées pour la base donnée.\n- **`getAllNames()`** — Retourne un tableau des noms de toutes les bases actuellement ouvertes.\n- **`getLocation()`** — Retourne le chemin du répertoire de stockage configuré à l'instanciation.\n- **`exec(dbName, query)`** — Exécute une requête SQL brute (sans préparation) sur la base spécifiée.\n- **`prepare(dbName, sql)`** — Prépare dynamiquement une nouvelle requête SQL et retourne le statement.\n- **`function(dbName, funcName, func)`** — Enregistre une fonction JavaScript appelable depuis les requêtes SQL.\n- **`pragma(dbName, pragma)`** — Exécute une directive pragma et retourne le résultat en mode `simple`.\n- **`timestamp()`** — Retourne la date/heure courante au format ISO 8601.\n- **`inTransaction(dbName)`** — Retourne `true` si une transaction est actuellement active sur la base.\n- **`SQLite.wait(handler)`** _(statique)_ — Exécute `handler` avec retry automatique (400 ms de délai) en cas d'erreur de verrouillage SQLite. Propage toute autre erreur immédiatement.\n\n### `lib/persistant-job-queue.js`\n\nImplémentation d'une file d'attente persistante basée sur une table SQLite `JobQueue` (colonnes : `jobId`, `topic`, `seq`, `status`, `work`). Le constructeur crée la table si elle n'existe pas, prépare toutes les requêtes et compte les tâches en attente au démarrage pour reprendre là où le processus s'était arrêté.\n\nLorsqu'une tâche est dépilée par `run()`, son statut passe à `running` et le runner est appelé via `setImmediate`. Une fois le callback du runner invoqué, la tâche est supprimée de la base et `run()` est rappelée récursivement pour traiter la suivante. Les insertions sont sérialisées par un `Mutex` ([gigawatts]) pour éviter les conflits en cas d'appels concurrents à `push`.\n\n#### Méthodes publiques\n\n- **`push(job)`** — Insère une tâche dans la file avec verrouillage mutex. `job` doit contenir `id` (identifiant unique), et peut contenir `topic` (catégorie, défaut : nom de la queue) et `work` (données sérialisées en JSON). Déclenche automatiquement `run()` après l'insertion.\n- **`run()`** — Traite les tâches en attente dans la limite du parallélisme. Sans effet si la queue est en pause, vide ou si la limite est atteinte.\n- **`pause()`** — Suspend le démarrage de nouvelles tâches sans interrompre celles en cours.\n- **`resume()`** — Lève la pause et relance immédiatement `run()`.\n\n### Fichiers backends\n\n#### `lib/backends/better-sqlite3.js`\n\nSous-classe de `better-sqlite3` qui résout automatiquement le binaire natif pré-compilé depuis `.cache/better-sqlite3` (chemin relatif à `node_modules`). Distingue les environnements Electron (`process.versions.electron`) et Node.js pour charger le binaire approprié (`electron_better_sqlite3.node` ou `node_better_sqlite3.node`). Si aucun binaire en cache n'est trouvé, `better-sqlite3` utilise son binaire embarqué standard.\n\n#### `lib/backends/node-sqlite3-wasm.js`\n\nAdapter complet qui harmonise l'API de `node-sqlite3-wasm` avec celle de `better-sqlite3`. Les différences couvertes incluent la normalisation des paramètres nommés (ajout du préfixe `$` manquant, conversion des `undefined` en `null`), le support du mode `raw` (résultats sous forme de tableaux de valeurs), l'implémentation du binding de paramètres avec mémorisation, le reset automatique des statements après chaque exécution, l'adaptation des itérateurs avec nettoyage, et les transactions manuelles via `BEGIN/COMMIT`. Les méthodes `backup()` et `unsafeMode()` sont des no-ops pour la compatibilité d'interface.\n\n#### `lib/backends/bun-sqlite.js`\n\nAdapter minimal pour `bun:sqlite` (module natif de Bun). Ajoute une implémentation de `pragma()` compatible avec l'API better-sqlite3 (mode `simple` avec parsing du nom de directive). La méthode `function()` lève une erreur explicite car non supportée par Bun. Les statements sont finalisés proprement après usage.\n\n## Licence\n\nCe module est distribué sous [licence MIT](./LICENSE).\n\n[xcraft-core-fs]: https://github.com/Xcraft-Inc/xcraft-core-fs\n[xcraft-core-log]: https://github.com/Xcraft-Inc/xcraft-core-log\n[xcraft-core-utils]: https://github.com/Xcraft-Inc/xcraft-core-utils\n[gigawatts]: https://github.com/Xcraft-Inc/gigawatts\n[better-sqlite3#203]: https://github.com/WiseLibs/better-sqlite3/issues/203\n\n---\n\n_Ce contenu a été généré par IA_\n","readmeFilename":"README.md"}