{"_id":"@kollors/deep-json-server","_rev":"47-b8c5922b1195b3155cbc4059872bf538","name":"@kollors/deep-json-server","dist-tags":{"latest":"1.0.0","alpha":"1.0.0-alpha.12","beta":"1.0.0-beta.6","rc":"1.0.0-rc.9"},"versions":{"0.1.0":{"name":"@kollors/deep-json-server","version":"0.1.0","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.1.0","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server#readme","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"04b94682c21316153853103cc16a418b8ea7813d","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.1.0.tgz","fileCount":5,"integrity":"sha512-GkUplIHmrx1kHRbmS99qMBWv8TOlwLfU4U1hm1nUF6oDJB5ZkgP7cHgHkhwb/yZOR3cylqKTLF5fv5fEvziM5g==","signatures":[{"sig":"MEUCIQCAVAJAnTFVQL4llNH/tUxd7iTPmPRop0BM0ByXmpD/rwIgX78pHo713TqM46pi8wR2zWDwcQ9P1R2PKXnUINjvEaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33810},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"2e5d72119dcbe34773238a408f0672cc478a9c04","scripts":{"test":"node --test","check":"node --check index.js"},"_npmUser":{"name":"kollors","email":"kollors@mail.ru"},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"26.7.0","dependencies":{"lowdb":"^7.0.1","fastify":"^5.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.1.0_1787815461378_0.7695013780265851","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@kollors/deep-json-server","version":"0.1.1","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.1.1","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server#readme","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"d5c9b0949142c289be278149ae3545ef78d6a424","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.1.1.tgz","fileCount":5,"integrity":"sha512-CphlBxh2B19l4ClK3id7LAdc+CzWW+K/lhePerkVEH5LNzrHCrKwcfijNP7Jff8rdEGbAFet3h3QNrJ0BqiEUA==","signatures":[{"sig":"MEQCIAMv6GqImmCCmg8Gr/5/udHImOQD7kXvcv9qYavuYxa5AiBPPkDAvzO7IJi7aqvynM3TC3Sin70zjunLtWHhuofxwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDAeVmwNx/je57hN8T2BaU8+8qGeI+6809IYxvxQSz2cAiEA1CCkMKpeydQW+zTil4JQqq8m7x6qSySHGuoRBuT3pNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":34050},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"7e72851ad30c37fc124718d0c9c084db21be00b3","scripts":{"test":"node --test","check":"node --check index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.19.0","dependencies":{"lowdb":"^7.0.1","fastify":"^5.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.1.1_1787816143093_0.7251596771783582","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@kollors/deep-json-server","version":"0.2.0","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.2.0","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"285465b9a17011fc5fa6f9fc73a4d04ce260065a","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.2.0.tgz","fileCount":11,"integrity":"sha512-7U6LX4MeMReN/Jn3iylWg7DeMpdco1JAutynzIPQx7qYbA6zDbNsxQYzHgxp7AKUW6jjUVj9q33v4e2E2r/4Qw==","signatures":[{"sig":"MEQCIHi+kKgi7U4zxhVPCiWp0mqsPp1cleckGuXQbeWEhQboAiAEeOZarSlXfUzu6VkgcRzwdctwIfDqpOONuQgPJMpY2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFKY5/4XGcZpH9hsB9UsOD8W00W4wKuYpPs/OfWJj7owAiEAkORQpiuohgo+wWFHpbN3B8VabehrGlqlO2DGYc6KFdk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50391},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"f903c0cf9c1a5527d281cac351fa267d3d2c2709","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.19.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.2.0_1787826731882_0.8466075093847243","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@kollors/deep-json-server","version":"0.2.1","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.2.1","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"5996561c1370c8c3f133ced34fb3fcae7d043870","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.2.1.tgz","fileCount":11,"integrity":"sha512-WMacXJe67FbZcdTVCPD0ii7eCptj7gxZhQuW7jxFSWxIp2wlaeDxUXqUppB6TC/fsLCaXW//d1sKvK6bymO5Pg==","signatures":[{"sig":"MEUCIBwCfhKAmhXUXXXnZS98aFxSpbkBMV5CbE+/Anfeg2+fAiEAuc5Q5aNXx27ZqMRY01hHz69i03FGzeNrfv2X6tGGDfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID4mD60lbZm3nA9EdvuACocbcGPPbpn0YugYFtPMjGu5AiB48K+L+igaLSGKKM0GVFy6GnB5K/OahBIGx3W3wyjDsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50536},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"17dbd46065d23fc5138b4540097184b72addbd7a","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.19.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.2.1_1787827056315_0.7860385013322337","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@kollors/deep-json-server","version":"0.2.2","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.2.2","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"fccdd4336da8136de128a1da567f52c489893016","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.2.2.tgz","fileCount":11,"integrity":"sha512-R9UW0x0wWj1McL/ioc1Uc1WmuqYP6cFslhQl5sf3O0kaA2ZzzXKE0sGlfwVJQ6RSdys+hBlASH95jJtGCXkuNw==","signatures":[{"sig":"MEYCIQDQcxN5pYilYxZq9ytCvfO36NTnZUuIOpKa8AVP04aOWwIhAP9ytSAW+AUnxt9XqdpjGpiBLu1mMgs0dDhyaUrpu+41","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCiZppx1wfbDIxp71Ez47+apzfEm2tXYkHA3de//WdVoAIgIZTR0rbHt5/WwjAisGfoWLdPTqu3dWGEScDZFogF9p0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50572},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"2a710831e80258fc64217e9fe705a2626c97525a","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.19.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.2.2_1787827897096_0.3542081325325499","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@kollors/deep-json-server","version":"0.2.3","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.2.3","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"0c7fa97f41854cdf1bf816f02dc3d05d28076c3c","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.2.3.tgz","fileCount":11,"integrity":"sha512-8iiOscYqjjuTg0Bb4o45g0axSwyk/GgTTrP+57T8Wx632pESM6MFrf/wqMRfC3ksBKP+YFWDmUEdaKet4m1wOA==","signatures":[{"sig":"MEUCIQCys2bVmMC70GOCq/rk96Nch3zZ0gSxYG+psuGj74FqBwIgaz68f1st/NiwORaqSEzRZqD7D60EIjdqw2dz8cGgugU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDkr0ZF3dXmyp6LN1WjExmkUMsWZ+qX84UwoyN1X9MtQQIhAIvOGgkFd0QM0tkwwvWEYfdoBrxhs+7Gh2Ltq+u4kzvb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50377},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"b17c29e3c00586b99512d774e3e211d9b18ab1cb","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.19.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.2.3_1787828142971_0.8163875901665851","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@kollors/deep-json-server","version":"0.2.4","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.2.4","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"24d868803ab28a61dcfd41038d185c83db7bb35c","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.2.4.tgz","fileCount":11,"integrity":"sha512-1UH1+SvxdjWWQpBg+6BXG1NUYNvFt1zEZob8WK/5nm7Ljl0Bz3BZ557nGpI3WmN8l86OOMb0txYybLyPvDjbcg==","signatures":[{"sig":"MEQCIH64eNuWYZ6Y3rGpJWPl63F3saPHJ6aK/GTcshQO4uBvAiBUP+lNhEsYcxsJARM3TmAfC7GHSB/6tLr+SP4uSHTcbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDfkeHHwjNMB37zetoqmODTfWsRl+v9MC8AfoKlkS/42AiEAnNi2My5TPvQMZ6KjP2FNrAOG3hbaKTHYiIxCg87hXKE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51104},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"1d3ba1e569be3af13aa9ba52dc70050baa3be9f9","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.19.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.2.4_1787828540695_0.258319022360304","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@kollors/deep-json-server","version":"0.2.5","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.2.5","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"04c0fbc93408be6f54fd12646e7887e05eac5c5a","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.2.5.tgz","fileCount":11,"integrity":"sha512-bWSPUlFAvIpat1uBMAx/oVUvM89VD9ljOHLS3gn7wNaymDPOOCVbS44OQn4tkxvSdt+glPvL/1qBp0oEbC3beg==","signatures":[{"sig":"MEQCIHNXbbT+75qGlspwMo6SUjMSnibnU1xJiA0X12VAjGziAiBLvHUeO8djXbr+QMLTAV1xWVuC0uub1Xug0gs3v5fnFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDloWNsdpZAUPkPZ5/9BcPA+GeX2Lt/rxc3Hz33kQe8qAIgf6q0LTB1Eif2M70/J6LppFDDB+IWvSu4t+SD5Tzmm7k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51134},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"c6f30ed64672ddf6fcc2ff4c5a3351a3eaf29210","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.19.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.2.5_1787829285545_0.6313934063174553","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@kollors/deep-json-server","version":"0.2.6","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.2.6","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"e6f294ff1462aecdd93bfc3615fc6d519ddf62f3","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.2.6.tgz","fileCount":11,"integrity":"sha512-PHNZfGvDDtUgqZGRhpCVuIvsuEVd1snODmpOsBh9sSIB42WfmLLUsyOdmktMFV6zsDXnCIIFf3cKAfaCrlz1Vw==","signatures":[{"sig":"MEYCIQDfVtEscml/LDjGhDdPvtKYbJG57TejGZG8/PfmwXKfiwIhAL8KIeuH5CD34qcNU+Oj5HjX3rU6RRCBWR0pqbTrwsNv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCXs8e0kin9YdaSwMmugeUyFh63fiH/LQdyG8jtU/L5cwIgTQq7zHPSCj6a216pCKwsqbSI6nBWIZKPh0Yjsf7QC1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51094},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"03a410a1995b24ebbf371d2928533684b40da604","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.19.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.2.6_1787830488964_0.9391076844310002","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@kollors/deep-json-server","version":"0.3.0","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.3.0","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"8d7aa48e0cb392acdc3342533ff62c8316e6b630","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.3.0.tgz","fileCount":11,"integrity":"sha512-pr9rKclcB1f+7Gzz1nDcgrUWQsV12DgaBUZ9ZIZ9piRwKCjIa2hecV7Swm8160WaXLb42NgyPNwwxMXOwz+qyw==","signatures":[{"sig":"MEUCID2T/QM+pPgDKZwx+GJJbVjg6Ao7O6dcTbx+GMneEm6VAiEAwX9fkwPD0i6E38ahG+KteuACC+504iIxW0RuXlEsqRY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF6B0EUhzWPxLmgw6VYhqW5aIhrWlH+nnYbw0UXRchBOAiEA1M0sjzJsRhbMQeol3jBrOM8PqbxsJJvtciwMDEH/WwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53547},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"f59c09f78bc3e700364385eb89842612f1f614d1","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.17.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.19.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.3.0_1787844074120_0.8414046323527096","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@kollors/deep-json-server","version":"0.3.1","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.3.1","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"d4b1d12fd23c57a091dfc6a0499f4c6e6ad83526","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.3.1.tgz","fileCount":11,"integrity":"sha512-AUKI7GivXV4OoVvkxvt8cm4YjClpNXbFUfS6vl9L1j8wsdN4yV+wkgSNaQJwKg/vtV9wVFUzLlTyxWkAHeYNEA==","signatures":[{"sig":"MEYCIQDakzmuYJ1eIzX6IrbC6GDbyPdPcY1lJKUmXfxWekFh6wIhAIJWWHkAmx6m27BDkSvru+J/Hku6BV+YzGQ5bOGrJ6Mv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAb3ScCsq0KKmuUl+AQcIylkZRIdJiJsXyLmsy6ELjHeAiAbLw6aGMAaBacuYmzMfQZyVlEjQRB6nlfOLFNZ9RCvLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75644},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"c37f0778434d0d898c0e09285eb373ad35f5b096","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"kollors","email":"kollors@mail.ru"},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"26.7.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.3.1_1787863616004_0.33907614776735095","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@kollors/deep-json-server","version":"0.3.2","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.3.2","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"index.js"},"dist":{"shasum":"e42aca564e5993e968536a2fd8c7757720d793ec","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.3.2.tgz","fileCount":11,"integrity":"sha512-CfRZ7X69dUON6U4j88ikBJc1zTTWzK6CeMksuoLTIrC3JY9DuZ5dDl7wYkWzNq7QUNOqJJc0IF7btrbUr2+CTw==","signatures":[{"sig":"MEUCIHGGmoIzumbIjYFdGm+Df3vz0rGLVGgrKU2iHyD4EjADAiEAmIDhqT0OwSSqjqGE0aU6+tuf9KID5ElgWyDlZDWekHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCXUiCXE0X9VMsbYv+19NN1PHFZ67iOgW1Txrix8DFqHAIgb5JYbugURiYXQUwYGzjKmKbDycCe2Rc8u3W01tBE8oY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75439},"type":"module","engines":{"node":">=20"},"exports":{".":"./index.js"},"gitHead":"22d26ce20b9a76380714164260cde12f974d9ac2","scripts":{"test":"node --test","check":"node --check index.js && node --check src/*.js"},"_npmUser":{"name":"kollors","email":"kollors@mail.ru"},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"26.7.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.3.2_1787894055383_0.9396010552395353","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@kollors/deep-json-server","version":"0.4.0","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.4.0","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"bin/deep-json-server.js"},"dist":{"shasum":"e6d7c8d83ecdedf6fb512e913c3cfc317c58162c","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.4.0.tgz","fileCount":36,"integrity":"sha512-ld6fBtO59v3mUbC/PHMtn9SF9xzzVNe7G+hnstJpinp1cS7MWyFC0hUOYHxwvzJM4J+I28tuN49j2bipe2mXTg==","signatures":[{"sig":"MEUCIAlhiUl3gP3pPiewMkT7VbLv/5KyiHZPkEGrPa9LJiuiAiEAnJ/if83JannzKuxhDd3uCScqAgFGUTMgIdloGa4s0ec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCHwGFvMDxJVD8G5PO3mfkNbfZ4kTXvpDYQFzSItKzcLYCIQCZV0xTjS0uY7IL2MMkS2J4VX+RDucOCcpxvPW1UqxhDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98592},"type":"module","types":"./types/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./types/index.d.ts","import":"./index.js"}},"gitHead":"7cd5618f51ccf75b2cdfa6274321d0ba4ed305e4","scripts":{"lint":"biome check .","test":"node --test","check":"node --check index.js && node --check bin/deep-json-server.js && node --check src/*.js && node --check src/openapi/*.js && node --check src/query/*.js","types":"tsc -p tsconfig.types.json","verify":"npm run check && npm run lint && npm run test:coverage && npm run types","prepack":"npm run types","lint:fix":"biome check --write .","test:coverage":"node --test --experimental-test-coverage --test-coverage-lines=90 --test-coverage-branches=80 --test-coverage-functions=90","prepublishOnly":"npm run verify"},"_npmUser":{"name":"kollors","email":"kollors@mail.ru"},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"26.7.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@biomejs/biome":"^2.5.11"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.4.0_1788252187009_0.22620450960152239","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@kollors/deep-json-server","version":"0.5.0","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.5.0","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"bin/deep-json-server.js"},"dist":{"shasum":"e658f0cccfe668c914eb9e97651328b63a8aa641","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.5.0.tgz","fileCount":39,"integrity":"sha512-jCrP74IPuQdccRzuEHhFXXyvy8U+3+Ub4EXx78szA/6dnDQZ7H8e08leL0jMHTcUOPNNBqxnclnzG+Gr0Oqhlg==","signatures":[{"sig":"MEUCIHno8LlmhzmvumOFmiq2/hZxXikR0rcXilJFVkZKki3sAiEAtxSqPk1xc3hHRZNnvKi4AfiGUqSh8Hin7X9slsEEOww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCmr6bOZD7qbRKBIHUgSnMRR/7kV3UEEXa4BpVxrltMnQIgJQDCKIYeURO5wrdpyoG/lU1nMQ042l0ZniP+NvnNHAs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139853},"type":"module","types":"./types/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./types/index.d.ts","import":"./index.js"}},"gitHead":"582171d5afdadc58a050273301ce37ed8a119e6b","scripts":{"lint":"biome check .","test":"node --test","check":"node --check index.js && node --check bin/deep-json-server.js && node --check src/*.js && node --check src/openapi/*.js && node --check src/query/*.js","types":"tsc -p tsconfig.types.json","verify":"npm run check && npm run lint && npm run test:coverage && npm run types","prepack":"npm run types","lint:fix":"biome check --write .","test:coverage":"node --test --experimental-test-coverage --test-coverage-lines=90 --test-coverage-branches=80 --test-coverage-functions=90","prepublishOnly":"npm run verify"},"_npmUser":{"name":"kollors","email":"kollors@mail.ru"},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"26.7.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@biomejs/biome":"^2.5.11"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.5.0_1788273294248_0.7723262618815541","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@kollors/deep-json-server","version":"0.6.0","keywords":["api","deep-filter","json","mock","relations","rest"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.6.0","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"bin/deep-json-server.js"},"dist":{"shasum":"8eb9c75d330612921cc0916f7b8cf76ca574665f","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.6.0.tgz","fileCount":40,"integrity":"sha512-7Xk9zpQJJTHCrvxAYQz7iYolypC3yDaEfnLRB7dSjiu7Td+vyWykplsV3eGf2LokLD4cR+d+f7XvmBflEMdNPQ==","signatures":[{"sig":"MEQCIB8XwQeoRZJFE1JcDHC7hYyfEXWs6+uMslt4koMg5HlwAiBBeSnQ1x7LBSqhrlr7/bWrXtqU/iElTaceQR4m57CTvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC1f/kfddog1fcXpMQTSua4OmAzBQyHkJQsaCmXFdJ9NQIgdKQtpnmyAxMS96AAURsTOcH5xO5GrCdBMxXYuQFh8AA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162587},"type":"module","types":"./types/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./types/index.d.ts","import":"./index.js"}},"gitHead":"e5673b49ddd89f8d5f3dc0f0e75881d853c1a2be","scripts":{"lint":"biome check .","test":"node --test","check":"node --check index.js && node --check bin/deep-json-server.js && node --check src/*.js && node --check src/openapi/*.js && node --check src/query/*.js","types":"tsc -p tsconfig.types.json","verify":"npm run check && npm run lint && npm run test:coverage && npm run types","prepack":"npm run types","lint:fix":"biome check --write .","test:coverage":"node --test --experimental-test-coverage --test-coverage-lines=90 --test-coverage-branches=80 --test-coverage-functions=90","prepublishOnly":"npm run verify"},"_npmUser":{"name":"kollors","email":"kollors@mail.ru"},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"26.7.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@biomejs/biome":"^2.5.11"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.6.0_1788348006008_0.6741126070755028","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@kollors/deep-json-server","version":"0.7.0","keywords":["api","crud","deep-filter","file-upload","json","json-server","mock","mock-api","mock-server","openapi","relations","rest","rest-api"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.7.0","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"bin/deep-json-server.js"},"dist":{"shasum":"c122b658bfd8fb474d8f50d2f4c92c4655ac8ef5","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.7.0.tgz","fileCount":40,"integrity":"sha512-Fxik+dTHlTLcB3p3ntdZT6ZEqCj+ueCH+/jEgRwIGa4Nw3ikHofHPXwIJrZJQo9fhA4sKy++Z834iLlSbmoO9g==","signatures":[{"sig":"MEQCIFiwA6jqEGik2jZVnCE9WYELyeIBTvI/GlU/YGCoiTQNAiBGcjIHh7cmKyNLRszaImX3L78lL5lGfz91vqVGo9ljcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBFeHP4semocjxnylTxmYkJ/xlreK4K/Myhb6qkIm+g3AiEAim1ajnech4dYXff0phDkNFftUIudEj9Q07VvtpE4Pq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183245},"type":"module","types":"./types/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./types/index.d.ts","import":"./index.js"}},"gitHead":"1520355516a8de4bb7db417eaa530ca4ce5ecd96","scripts":{"lint":"biome check .","test":"node --test","check":"node --check index.js && node --check bin/deep-json-server.js && node --check src/*.js && node --check src/openapi/*.js && node --check src/query/*.js","types":"tsc -p tsconfig.types.json","verify":"npm run check && npm run lint && npm run test:coverage && npm run types","prepack":"npm run types","lint:fix":"biome check --write .","test:coverage":"node --test --experimental-test-coverage --test-coverage-lines=90 --test-coverage-branches=80 --test-coverage-functions=90","prepublishOnly":"npm run verify"},"_npmUser":{"name":"kollors","email":"kollors@mail.ru"},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"26.7.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@biomejs/biome":"^2.5.11"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.7.0_1788382010856_0.18474166070503872","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@kollors/deep-json-server","version":"0.8.0","keywords":["api","crud","deep-filter","file-upload","json","json-server","mock","mock-api","mock-server","openapi","relations","rest","rest-api"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.8.0","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"767aa4a4bf93cfeee7172ef153a0d6f1d5ece511","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.8.0.tgz","fileCount":76,"integrity":"sha512-E716qBH+jPmktXWrbUmV1ok7H3FKbeITnsWfvsM4cDWfeH8Hyw45UkGtav87xwckiDElX5yVk+fe6aYLxaUJQg==","signatures":[{"sig":"MEYCIQDLsPLH5zoRuCAp4wvqO+dRxnfF8MvaEMzmB6qUoHETzwIhAIl3ORx2jsrc+J27aZFtShlsW4tB/9qGItAkLbchjNyu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEP7cBHm2Kc3yEetBBg3zUk5kOSmvgd/x8gwTigkyRABAiEAqrLONb0uqrzum6qL3Xkv8as7wOX2ifUThx8i93HiEMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":328148},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"929d6a9127f8c5039ac977276721581f976fb735","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with deep filters and recursive relationship embedding","directories":{},"_nodeVersion":"24.20.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.10.0","@biomejs/biome":"^2.5.11","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.8.0_1788530597687_0.371394459660487","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@kollors/deep-json-server","version":"0.8.1","keywords":["api","crud","deep-filter","file-upload","json","json-server","mock","mock-api","mock-server","openapi","relations","rest","rest-api"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.8.1","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"fc28cbea56be0d744cb15def5ce6698bdeca01a0","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.8.1.tgz","fileCount":76,"integrity":"sha512-VFyAKyQxLSaFo4NYgABH7bB1TrHQiuDdZplyIaImHFuBJwMIoIG4dirtXgOJk9RPm+O0E0g+ksd9VYCmYieX9g==","signatures":[{"sig":"MEUCIQDS11HivelFC4XLlm2gdf+O+naHGP7rf6flgyS3vs8f9gIgaMZSC1DrCd9Xm+YfM9tHR9VUP1YJpB+tbGTMsKboeII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICxuye80g5QQRsTP9uP6AlwSUY2h7fCiHuCV+1tZpiU1AiA3oAraLfxmVtJiCLLqaezhyHjzBbKbyjQjgphgHsTsbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":328339},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e8aa33eb6340d6efe365af8a7c0d5fea377bcb86","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with nested data filtering and relation embedding","directories":{},"_nodeVersion":"24.20.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.1","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.10.0","@biomejs/biome":"^2.5.11","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.8.1_1788553222143_0.2195796283332454","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@kollors/deep-json-server","version":"0.9.0","keywords":["api","crud","deep-filter","file-upload","json","json-server","mock","mock-api","mock-server","openapi","relations","rest","rest-api"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@0.9.0","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"9f7fb5b4da21bfa521cc4283d8f93ad85118ff80","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-0.9.0.tgz","fileCount":76,"integrity":"sha512-M8QdLjc/JAk9zOYQuXbtK5S2BiNAddOqH3QJNUCCL0/GNTFH6Ukw+poa1QXXOJoNupUecGu3v3Bh2mHQGAupBw==","signatures":[{"sig":"MEYCIQCJ2XsRPTgr526pWnjikDBTXa1hCkr19U1F4jGS3WzkTgIhAPbEC2yMmbORCamViKMUo7sn3M+nQino4VV5D4akKFgW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCmw3z0ZY94Z1uJInG47FOBQRyZ6DfK/229k/GD6kgjdwIgOXTx9Q8JHxDJGGwf7i2unNxD1s4cH4q2bIrb76uWuBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":328338},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"86c9bce343177f04110552508722a8216768201f","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with nested data filtering and relation embedding","directories":{},"_nodeVersion":"24.20.0","dependencies":{"yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","pluralize":"^8.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_0.9.0_1788554427178_0.9037756494499227","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.1":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.1","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.1","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"381a0cfcde6dd8ab796727e1f7722ca875e2e6e8","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.1.tgz","fileCount":73,"integrity":"sha512-iGJG//rcmCDn2yh1JdqlZqycZvnVEhbTmG5bGOM64csIrsZDNJ8unqFpewSrNj/jxj7LYtIpks7ZzdpLBbPKcQ==","signatures":[{"sig":"MEUCIQDKaLLWtXNzDg7NgA0Bh837kILjKV49f1SxKHHouXH7vwIgEKKNtR6HeA+ycGo0NDxuViJ1rNwmoDZCS9ti24ycDfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHjpRk085TzrepfMFZKhPMuc4wwtKcpae1hwK1PtA/A2AiAMpjvutSzv5gfIG+ElksFMTLOLqR/MD7KW5bJtVYPFkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":358293},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f6b7378b87594f8787214f2093c629e4c99ddd35","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.1_1789069839490_0.5835332462978235","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.2":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.2","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.2","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"a376081df593c821e13bf188ac62e8eb88c6e285","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.2.tgz","fileCount":100,"integrity":"sha512-qyOy9zLnvhGnmNqYXRJh8LN7U9REvIURLHw2C4N4KZoy3BohFL6IJJ/xL/mBHAEfwBVVNOaaDISmsuTF7g+45Q==","signatures":[{"sig":"MEUCIQC1Qmz1Cd1AfCD2pGznxCgPJFp+PdvG6Yfs3WJrogrMkwIgB5ESXHDJgFJIyFmoAmLLWAC6iXg4l5sLG0kPIAduPMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICy32oDQ2MQiI5YkBWZgZrU58UY1ty2vSjPmmKvp/7/pAiEAivoFLHluuI6gav4jKiVPRy9saWkYy9hBbi7hcjqTFyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":382191},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c1067c67104745a26ff4d9cb66c87c4ccb4bcd39","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.2_1789123971893_0.3454493142542834","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.3":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.3","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.3","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"f1628cfc7df19283da5daf4370dc16a190fd2bad","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.3.tgz","fileCount":136,"integrity":"sha512-ccfuPNiZrKw6ufaKka79G2mmaK5U12zU5LJe7T40IOQJ96bOR727TTdfrsrsvuGZWIoWKsqixocmguO/j16bOg==","signatures":[{"sig":"MEUCIAkdpVfE3UgrUOmXsoSnN2ZBm9rYhLKwzIY4cAL3o2BwAiEAl1vuD1Jrsp7zFtYrUhbeWMZzkJBEGfsxzQywPFM7K+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD/dFz+X3ES5iVUhLFWzK0eD/eaeHMPO7xSev82ra61vAIhAPI+6v9k7aZMCBEYR54G4ACqJHjJ3fyej98tEcp7u7XH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":411977},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"77a2e2cf3338dc90b4920f86ee5d758950f8c07e","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.3_1789155033465_0.2766538133478804","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.4":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.4","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.4","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"b8492e0854b56fbb6ba1b786bdd490850ba3d913","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.4.tgz","fileCount":142,"integrity":"sha512-ejpMloNT+cot5tabZ62fDVQUYSZKYYQrylMopjxY0iYBJILvGSWXExUCpwlSrk0VPInvfH9rddPY0Wj2BfuYiA==","signatures":[{"sig":"MEYCIQDq+If8yNma/rT4f+hcFHefm8ptnA6TEOvYyX0T3agTAQIhANvvnKFbNzXt2Jrb0A0rKKO7ilPvXVf/brm2+aNRRRN8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCOxswPLKCYHQ0hQWjX+fjk3wkBjvYmVVbqykBR8dLzGQIhAPy9dFwizjlDNiSErSeeuMtMHDz6eQX+BDwnps79YoSa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":450454},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"d9adbfbca4453fa525a452a5b2b73286ae57b836","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.4_1789194806872_0.9470094224989167","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.5":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.5","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.5","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"849ab9d585ea7238c7bb2ef6b93c747224131c6d","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.5.tgz","fileCount":142,"integrity":"sha512-PfQM+O8kqPyAHKCOdQU3xyPetsmK4eRv7WiBHFYfNerXIJvawDBclCC4R2L+/9q5BHBgNI6SDQxQkT2Q533AXg==","signatures":[{"sig":"MEYCIQCvtlVLEZHY/Jov1RqW92MaKnsfIIRo6dJCCVzgwLgfjgIhALKG2AKPv2umXBcsl617Lowz3TvhvhZKdIwkJO7HljkR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIC50LUIp21jXwpFdkx4x7+45UG40k25pZz7SWDUOIKgTAiB+t5vYJWjs/4LNAa79drCFrzOQDbZt0P9M04QeA86x3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":452538},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"a6f957cb8db6843f19156caebad6b76dc777523b","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.5_1789213510385_0.5336296116017434","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.6":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.6","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.6","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"6333e5ae19e8082cf4264f96a267765b0f7d56a1","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.6.tgz","fileCount":160,"integrity":"sha512-DOpJollSv7LSzFcUc7OhsENCnEdSWs9qDBjFFZNF8InK8QVubRrcfQOsvqXp19R3AdoviJDdb/KVU+FJ5ZIcNA==","signatures":[{"sig":"MEUCIEyLM250hDpDpB8Mq/RJDtl0tjE958E2ll1qL9k4veTWAiEA78oik1qcHbLKNixuigZdgl7ufL4GpovdlPj0PTUqfIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDruOPOR5qPwFeP1UxZfqIxNJ5QoDfNmk854UIlhfcJKAIgOZQWeXBEZrp6VWvsIQwOl0+01hJ8rbItrCzWoGeUCj4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":489610},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"66e07ffa7ea4dcb2bbd72a241af99a4221d9a6ed","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.6_1789241701227_0.7439431607900127","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.7":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.7","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.7","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"c2f493e396df78474fcde14a87ad948534ea4265","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.7.tgz","fileCount":172,"integrity":"sha512-Ku1ut1xUpV9Ss80CekaucTLwnttRRwfljdRC+m27ik2HzUp6xglEEE1Q821mRZhhsn1GeNG0WKxjn+UAS7nB+g==","signatures":[{"sig":"MEUCIQDGIoGVel0DTGr0D1ZdhbTucOh3bZeuqZ22oNCgpLce4QIgUCtUmOafVCwqtCynD3hhCjz+KqMr8pok/BGSsrFwnRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCCKiHYaC3HH3bj/DI1xcjqgZ1itgU6Va5mDNVuPZOf8gIgRrim2VHyXBXpRT2hrIq/9R1XJrTTSdrCw8dzP804MR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":629151},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"bc86170f79ab4e180d2504894ab472e1cffc02c5","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.7_1789292456889_0.5204589912062543","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.8":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.8","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.8","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"e73e3c777ae3c74b009144ea2588e970a1fa4dec","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.8.tgz","fileCount":184,"integrity":"sha512-KgU0SnKXCA0lEUkQzsjsG44LqDSCbHVqXi2ebbEd1QcxauymoWP+smXRhp2+OMAw/EizQ1LQtxJiR5OrDyScmg==","signatures":[{"sig":"MEQCIEME/+rqc3/+4irq2k+TQAr/Ph58VJ5kdR1zzuRTvaQGAiASfFWq3kvqtfGdBpjg/OBBHGCflurzKio+uQ61y2Vlng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCUohy8YOR7GiMMEs0KNkRJNotjOnvBNbpDHInsEiTb6gIgdSs4+tnBwdpD93x7Gsw0nDh948mCCUoEYyIRvGF/uXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":676449},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"dfd3ad2d9e6293bdf9ed19b92e041ec7653dd436","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.8_1789327893241_0.11713073788508988","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.9":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.9","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.9","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"15594196dbafa81e478ea7c5c2af260148e6df4b","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.9.tgz","fileCount":190,"integrity":"sha512-LTPIThelgk4nNl5xrOevhhF+MdgdkLPPoZT9du0ukIOaEl1cHRorct4hvCHWxFolqEqtImReW7guMVfPlE18FQ==","signatures":[{"sig":"MEQCID65K5m5sQTJ2Lr2G/cY8COcNXRzZASUZ+tavFejAsP4AiAzQq5ioxek2wB5Ukntk4dNtcpB6dg+YQKjSXE+Xcxh0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBwzZ3wKYq90xuSve4jpAZuX6iKNQkgYTkxTtsY+C6vGAiEA/YtddY01bDENZU10qz4TlxjLxE9BsUGjYOILefTViWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":669227},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"0bd314f8e948943ab262ece92dd85177627cfa79","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.9_1789382662262_0.1212630555724643","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.10":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.10","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.10","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"e0051f50fb448cc58cf218893920669fa6c89094","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.10.tgz","fileCount":190,"integrity":"sha512-wQ1WJvxkuqLiZPDyRPvpKr1YaGJMDXqptydUi5qQWveOIj+rhZaWUW0BbutRHg4+wCQyoAdi0zoh5LwQDG8bhA==","signatures":[{"sig":"MEQCIA8nQ6wXTvDHUv75AcxqAy2POtvkfRYmQR8gqGWA+02kAiB1HkYJvUmYwyy6uSMbUPNs+vj2FCsxxnwPHWmNq7/yrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHpYkkVjej6tXel30jZXG9MOD/WEt8W12TuuP18GIobAAiBYHqoavvtwKOc28w3shlVKFgSxhaQMD/8h7NeIQsqwEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":667625},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"221f1168fde4e4f3ad7f9d925633eee59df231a2","scripts":{"lint":"biome check .","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, nested queries and OpenAPI generation","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.10_1789408395303_0.09899198346288474","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.11":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.11","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.11","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"be75099328813a580c17b796bd635451a2cacc1d","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.11.tgz","fileCount":211,"integrity":"sha512-fgQReIBfugQcjCHB05jtWI3WTKLQ7syigmRuwH8JsMYicYy7NRR7m9UMhlZqmZk/emES0BflpPZytQBWckLuMA==","signatures":[{"sig":"MEYCIQDwlsawcT6f5ZMr2v4huuPjMAVQdj9lR8cJ+BQ9NQ8VJwIhANVYHeShMytuWJmC5dRcrv5j5FjR5e6h5DrxtYhnHrR3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDuHMxXzmnlh673Q8kqUC2kPI+HfpC1zL5m6UbpdIMNWAiEA2H1UjgV/SbQj1JdgUDAZCJruSKOxcCNM10+wqRW2ues=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":679161},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"3deea3db359a0ab5eeb7116297b1653bab56188c","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.11_1789475208062_0.9153456480829607","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.12":{"name":"@kollors/deep-json-server","version":"1.0.0-alpha.12","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-alpha.12","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"a1c4b1b6a02ba715e64bbb98b81c0d5f6cc3c6b2","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-alpha.12.tgz","fileCount":211,"integrity":"sha512-yOOy6SWUQovsOUWPWoMPc0wQDtcfb/HYlrfJXId6vgzXN+2BmeRIBiGcdNv9iVSe14vz0VMeKK8yKcV0k78M4g==","signatures":[{"sig":"MEUCIQDo1vMBUrYXmgVZaglywBhOo553oD2FHvoJDcv9FRaX3gIgW77IVu8hWqCkRgGdX9HnzyNbwGNo3HHhAfonyQzti+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID4vg3KEXd4z2+KZ5l7zCipaP+mF5RDk5AcFPzmTkcTxAiAX4KpXwUM+4OLcfAiydUS632wvl7VUSEgdaIrPNOoYXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-alpha.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":686087},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"f27cb95af38f888b1974b52ead2243d3836aaaa1","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-alpha.12_1789816455087_0.09294204517377058","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.1":{"name":"@kollors/deep-json-server","version":"1.0.0-beta.1","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-beta.1","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"583fce104d01f0186ce979ffc83614fd453a0c8d","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-beta.1.tgz","fileCount":211,"integrity":"sha512-oJaJXvi3S+s6sfZV0yRrXkMM5T6DUL8xCB7YiRflRc1J849En6t1QaatmIwLe81urxzNI+BxXoZg5EXKsV2cLg==","signatures":[{"sig":"MEUCIHrMisBSNa90qR1YCvEpEsByjd1uMfRZveOX7RHGdA7HAiEA8E6JfL7QgjfZQsh/amkxDG+U4J+tesk/HyGrN2k1Qzw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDbPW1htwBk2LBgxsxOv5Ar/1/cUOu7f0/IHnLlPyaaiAiAZszjleZO4QB/vQ5ewhrFQ5lK5UGOWEkmawkPZxeffgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-beta.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":695367},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"aa0ba886e9f5a941246a857656131df333cd644d","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-beta.1_1789827506774_0.787130306963866","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.2":{"name":"@kollors/deep-json-server","version":"1.0.0-beta.2","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-beta.2","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"6b861cc926c5fa80af99189e65923a39e70ef251","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-beta.2.tgz","fileCount":211,"integrity":"sha512-yF7MLptNjbUAAB2H1LQfrwpn9HtUHs48UZisuKVxkca7/JhZJNItfpevwY4p1oz5fRhotebnuZjdCiEKQmPQ6w==","signatures":[{"sig":"MEYCIQCK1/mZZorym5uMptKj7ak4OGQux62H7ExZ4kcT27dpnAIhAJ+eoLTXWgld7vfZIj3ujHdckK7TQHctYUyYi+665z53","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCa0Da62hefrFPBafx4lg69Pvz+SR2aYbuTof/c+zfWXQIgISY8SF7hRs8BtbXJjUDG2Iqd4GZ8k+CQmY0XhXCt6+4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-beta.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":698187},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"78900777b39a1cb3be671c204368347974d2ce5a","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-beta.2_1789840316065_0.9789355835456806","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.3":{"name":"@kollors/deep-json-server","version":"1.0.0-beta.3","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-beta.3","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"de9461429423c66a989af4f83d24fd6c81c387e6","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-beta.3.tgz","fileCount":235,"integrity":"sha512-L8j/bbOK9Zq9GEvqdXzkIOT00uXA1dWl96V+ywX0RwLHNokE3hqeGbuelGZZ9F5v18N7Pie6iqPMSUk7OzSE4Q==","signatures":[{"sig":"MEUCIQCxFTNTHlcLahW/iR57F65/JGz7OP3vj577MBcoa0iNygIgH3/5ykjJeuidCld9wbX73ldtU/Ss5mdvCdwe81Fehls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDATptSCnnXYIzycjn3kzeFqjDLZ6xBTR0e00YVtaZAjAIhAI3VIj4YZGDWE3cI/dH0qTKWlhj7D41kt8QHHbRBrpHE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-beta.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":731388},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"fce9c54c3e10af5063bb085487dcff5da0ad272e","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-beta.3_1789919648764_0.5300049475793687","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.4":{"name":"@kollors/deep-json-server","version":"1.0.0-beta.4","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-beta.4","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"e839ec7e490b1af9cf880c454acb78911d95b4a7","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-beta.4.tgz","fileCount":238,"integrity":"sha512-zLpxsCIVCb0plMUHMWJVqoNRrDWBBfZnkrnUBRdOW1a2Bxu1PloXn7D15PUKLO2ke8WwjgaNbDMBW6CS4GRBGg==","signatures":[{"sig":"MEUCIQDBEnrUzZPr4SUxl0AXSbxGH5Cn4LS2A1XRv/8DuY+/CgIgK7SJtCASBZfP3jRO/ePQLMpbbpT3vu0yAze7p2Lca4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDoRz2m4qre2eoRq8ULuibUktWhGdPV5fWi4EXsmJSkyAiBTk8PaS61LbclJeKqu2hf47iegiZspLT/iOkTxEY+I9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-beta.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":740178},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"edac2d664e61e38be1213801d7866fa22ff08f5f","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-beta.4_1789968339053_0.909221434237188","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.5":{"name":"@kollors/deep-json-server","version":"1.0.0-beta.5","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-beta.5","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"8e71c18eceb282c7a3b631ddb41985771a4553c7","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-beta.5.tgz","fileCount":238,"integrity":"sha512-esqCMdN1i8CVEDBo6JixlS9NYWlncYJSGR5eTnzhrFVPPrr4PhReJL1hcYEy0aRZ52tliO2fllkHIga/ZVfDiQ==","signatures":[{"sig":"MEUCIQDDhzx41SVLv8+UYhoElK+/lwlOYZe5flyAwGy+rrO4eAIgc5oW04xCJT0t3wP3at3WjAx1NfEtZHIFenj6d1Imntc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCdabVRduOvJj11renQ4CgMYSgCksOvln8GJBNIs7B8IAIhANcDAyTpDh/X3orC+DiDZRHcz+9qM3jp44KhMFkLZMHN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-beta.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":740269},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"ebe3ee32fc07bafea8b98d6e8b76612e470d4abf","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-beta.5_1789989031614_0.3670862428934665","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.6":{"name":"@kollors/deep-json-server","version":"1.0.0-beta.6","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-beta.6","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"d703821c4c2f20b6093694481d8efaf0ad20b992","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-beta.6.tgz","fileCount":241,"integrity":"sha512-fAqZyzOwybA9rbhkAktVGrUv1O64M6MtSsoGL/jFHPPryTcRlni+4txHin+oHN17HNn4LKCHN4JXHGq63zXsBg==","signatures":[{"sig":"MEUCIQCYxBaFSJlSL3pNiNenZqlgAlMlgnTJUggerEVAjYMjSQIgNm8rJp1z0D4i7B+pKk9WZghvcksgRDBEaTJlsqb3pyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICCM3K83w1nAT4hWCf/LmuQha97ghEsQvQ8/VHF+CJDWAiBx84cLXM3ybZJhQZFjUzlY7ICk4LPE7oB33ZjLy0MuUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-beta.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":749922},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"2df1e696ce5b9aaecf84afe85d2c4fa7fcfcdafd","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-beta.6_1790005876804_0.10117122413640778","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.1":{"name":"@kollors/deep-json-server","version":"1.0.0-rc.1","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-rc.1","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"3f660ea33775502f621194df0529ce03e3e34dc4","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-rc.1.tgz","fileCount":246,"integrity":"sha512-mLeQt0i+6mg8P3QD/P0U+tp8A64FZT19IUyPpFk/X/Qf6DyAfxMWUjEtwkclbD+rx2cNCqtjdtML9+HdK82nCQ==","signatures":[{"sig":"MEQCIE47Y7bFusElFno1/9u2qjTI0fk+KjQvGTkFf54LgpvaAiB7AarM5FAhxmx4u5fg/ewUKojectSAxxM5hOmDA574xg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFRqf5BW4qfrQ7dPh6b6wDa0g7kcuNc6w2SAPRji7QrfAiBZb0JoV8B+LG90LOGm/dfJTfCdpYLLn+hqZCj1r+Fr4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":756869},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"ec5ad19dc326b6b4e5c47cea524c1699efcc1238","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-rc.1_1790146953200_0.1436753151667849","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.2":{"name":"@kollors/deep-json-server","version":"1.0.0-rc.2","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-rc.2","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"65d9d37dbd56fde03231eedcb834d790b33f153f","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-rc.2.tgz","fileCount":246,"integrity":"sha512-tl4q2pjxsyOE2nabhXQ/xZA5bm8A0EiYC3n1P5TAbm5S9jzi/q3kST4OoBFowIZA2J4q/f8W8hLqh/DECei5bg==","signatures":[{"sig":"MEUCIQDYmDv7w6NJ4Z2Jkphy6Fd+yeW+OKEP0DMWbJ739cYNuQIgFK1sKBGHSk3nxNWycTY33j0UzjG2nlAah6pQqoB7mT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGktP4HaIz3rWFchiE9j0NBIKeGUfGGOrn1tsac1NkGSAiEAx/+nGOsa+HcXAkZK2b+5I077b1a97RmfJheegpd57E0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-rc.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":766415},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"db0bdea21be2e3cf1ec84bedcd14429d531a7b8a","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-rc.2_1790162419370_0.7313192950750476","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.3":{"name":"@kollors/deep-json-server","version":"1.0.0-rc.3","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-rc.3","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"7497e4d88e6732e7a71fbd57cb9382a916782441","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-rc.3.tgz","fileCount":246,"integrity":"sha512-kjF8v2GLxisPDhqjGu/lYA36IbTA9aSYblJrs4rWzJcJPxCO+c93mvvuv+cHnXdKRtdJU3WTZZ4mIoI8w7bJ4g==","signatures":[{"sig":"MEYCIQChfWobKv99fIhx0fIp4OQRHREDztcAhd+/KXKvG2oJ+QIhAMcXAPdCKUG1lbyiffpEwNkdb6DF/uEYBlTj7isdrFDV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHGQfGdsDo6lYp+fZjwUDUarfd98g+xDHoUAv3bRWgaoAiEAng1hd9Fr7lLrX6jcpyYkdWFTfuTsrstp8RJmWGruQPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-rc.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":769079},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"bbd2c35d3a2ac7bb72ee8d69fb54fb6fc8e4b77b","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-rc.3_1790231434592_0.15164150189270642","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.4":{"name":"@kollors/deep-json-server","version":"1.0.0-rc.4","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-rc.4","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"757b360633a921f2620fdd0622fb1b3382122790","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-rc.4.tgz","fileCount":252,"integrity":"sha512-uVlxKKodfuxTZc5HGLJmCVic2HHYPNyAmzV45zR9VA2drJEMqdtjTjh8T+Nx+hO3AsqE4GRND7yge6L4EgOnSw==","signatures":[{"sig":"MEYCIQDCnk1YSWxu39tlUjheCzUOKXG08zJ9FVKJgA8srp0jkQIhAK5jPBAKpUwE1LY3TK0TpobRAFKRbpagzvcEPBFngUDP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA7I2Sj747AR0YB34n8Xn9gD1W4pSx76cGeYErsckcRhAiAeMd0kg5t1tNLDl25B208iyrSHNvgzK3uQ0sO0letszw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-rc.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":781651},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"0976e9dd93795828ec6ee11c4bc0ba5200890c26","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-rc.4_1790242408775_0.5081326254844221","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.5":{"name":"@kollors/deep-json-server","version":"1.0.0-rc.5","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-rc.5","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"c80a0995adb89eaada66b6c3fa6617f76dc7dde2","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-rc.5.tgz","fileCount":252,"integrity":"sha512-0NC1HJRbYPmLgqvGUUtbcRj1YCmntIovqxPZKie+lh3UCYDya110+ApiY57wgX8CQL3bpfyu/oAsolso6OOPdQ==","signatures":[{"sig":"MEUCIDocUshclJ6bU8rC7drQu3CelzC0oFjam1dYbxznQOY9AiEA+e2ywp+ZDIwmGFrO4fX0XlFq55WqnK5INajuhuOmdZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAyUR16Nef3zbLtz35hLh7ZPM11+fi6u/c9SYETKwT/ZAiEAyJYp8rWXNRpjv6YmMCUKyA/q7ouHKSBo89xGM0nmLtE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-rc.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":784987},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"49a5217d07cfbe6f50d62b8e0055415972042182","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-rc.5_1790251178884_0.20137477084005173","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.6":{"name":"@kollors/deep-json-server","version":"1.0.0-rc.6","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-rc.6","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"6c2f0f51e5fd811169f127788425ad547ac7f7d5","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-rc.6.tgz","fileCount":252,"integrity":"sha512-DgMSwImaJeGdUAvNQOPb1vTP4nkgOQ6vmVV8b17v74X547TTg+02NbmYASES7FJwLIMok5MNvrmiCzPLJOLzzg==","signatures":[{"sig":"MEUCIFGALny0+YMrCBTulUUeM4A4TdNGED0c5qZvCaUWZaXJAiEA8oI+hFzGKS1FcFYKA4hSjkGpfLrDG0g8k4Y58u3kMi4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD81DZU0A25A1khiAY3lmnKhfkItj7WiA6ofF3K6ivSLQIhAJjPYWht/MahQ4S80+EjsQr6d8BgDmKKIWLAaKIPRpUY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-rc.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":795353},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"999b61a8b7f10e6838c30db043a850e7f695a4f8","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-rc.6_1790257654504_0.7085410741720997","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.7":{"name":"@kollors/deep-json-server","version":"1.0.0-rc.7","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-rc.7","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"2b82356aef19d528e0bb8f23cc9cce3691352527","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-rc.7.tgz","fileCount":253,"integrity":"sha512-zpNxgxYKp821f5o+EfsL1Ir7Cey+W5/wVGVn2lvd8h2bMONxbDlOTqQFa48Cou4RFY/5Z2tzx4fhdoDoTq15ug==","signatures":[{"sig":"MEUCIDDE8rDfpm2OSLfaL4iBrbjKhK4t8/R1Wh1fcoIQN6UKAiEAttDPcm6sJoXJpmQ5ptcLu2TAITqbMuTv+n5YkvsKN8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCf9JV7LkSHw5ALdAxWAr/Lfsym3a6Ttu4KRYHaBDFTFAIgMJcpQQYATCwnZLsgZyfbeDkDfgwI3l2bVzLsy61EkJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-rc.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":836253},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"42cbc66c9780973e5e5bd16df7faa948f6e0fbb1","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-rc.7_1790314841845_0.302002732370817","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.8":{"name":"@kollors/deep-json-server","version":"1.0.0-rc.8","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-rc.8","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"3b814a5a07ad300d642dc77630993f8682a9bce7","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-rc.8.tgz","fileCount":257,"integrity":"sha512-sXSNDpURzzTB5nzDYncxw0pOU7TYWkiQkhZnRCzij4eeVhN/MWwVxCHQaiEMPwENPTB+s3x1KmXExiIg6fxclA==","signatures":[{"sig":"MEYCIQCOQYd8TcbSQqt5gOS3NQtOLLMCifpd3pbNIQnVzEnsWAIhAMWo7b/lUUtZri8rHGuq/Z8ibv6Cs187IibZs5rlyTzH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCC31SSpMTRK661bV4GR6O89+ilV1GkEOK5UXJlUA3WUQIgKO3CyA5vN/s3Nnh+TeQsf+djTbwaH4XT1zCDcWBPCsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-rc.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":887526},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"0f278d8a39f310c8622c61038e1a847d6809349b","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.3","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1","fs-native-extensions":"^1.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-rc.8_1790859690206_0.8139645358948575","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.9":{"name":"@kollors/deep-json-server","version":"1.0.0-rc.9","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"author":{"name":"kollors"},"license":"MIT","_id":"@kollors/deep-json-server@1.0.0-rc.9","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"homepage":"https://github.com/kollors/deep-json-server","bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"dist":{"shasum":"ce5fa35b0a1ab38f58d16a2f4abe54991d78ab37","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0-rc.9.tgz","fileCount":257,"integrity":"sha512-ktQnBcFLPbKSwiAvo8//nn8WGF3iiUbz8h5TN2KiZRhdlbHAUbUWLK0Apy9nYiNr3CI+q6rXlI3SF2eTV3Lp3g==","signatures":[{"sig":"MEYCIQDpDoOXw6OOuDveU/ic6EIQB2maIyouj7wA0IqD+B9U7AIhAOthQvQemoEdPXHk00YNM5DcppK3tjOB99qj2P2itYPK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDjFn9D6AqQjbQIkIoXpDfpUEHOXlZorXGajBm5ThoIBAIhAL91xJ/IgQj3DqzYrHqWt+jaGfhyQKDo0oeDE/GQsip8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0-rc.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":887914},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"555d2437c5394f616fe16daf2692d1143138f674","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","audit":"npm audit --omit=dev","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run audit && npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.5","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1","fs-native-extensions":"^1.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.ru.md","devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"tmp":"tmp/deep-json-server_1.0.0-rc.9_1790860805141_0.44124683096126605","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"_id":"@kollors/deep-json-server@1.0.0","bin":{"deep-json-server":"dist/bin/deep-json-server.js"},"bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"dist":{"shasum":"aafdad2acac5afb00b791fe43ff97fb3a41c3391","tarball":"https://registry.npmjs.org/@kollors/deep-json-server/-/deep-json-server-1.0.0.tgz","fileCount":257,"integrity":"sha512-/WfcM2kaINFXHvA6civmO4eAXtp6kcZ3BQFxbmw1/o2nGTAt+hNizFF09OT3PbOfwSQ6Ns1yS2bxyzZZClSJYw==","signatures":[{"sig":"MEYCIQDyznJpUn2SMb36WjQ7WsiaOXQMI8faAZ8fXDNOTzvgxAIhALgdllMhvTtq3NbLxTpfVZieFdepPcXml+eqol2/LV4C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICTXthgEECeKYHWcaz+khWyHAsXJQL2axSB0uIzpfqP0AiBThidSs4hsy2SEaDe4qOvdUrHrulL+S/9+2QsovO25ew=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@kollors%2fdeep-json-server@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":896319},"main":"./dist/index.js","name":"@kollors/deep-json-server","type":"module","types":"./dist/index.d.ts","author":{"name":"kollors"},"engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./auth":{"types":"./dist/src/auth/public.d.ts","import":"./dist/src/auth/public.js"},"./server":{"types":"./dist/src/server/public.d.ts","import":"./dist/src/server/public.js"},"./graphql":{"types":"./dist/src/graphql/entry.d.ts","import":"./dist/src/graphql/entry.js"},"./openapi":{"types":"./dist/src/openapi/entry.d.ts","import":"./dist/src/openapi/entry.js"}},"gitHead":"d0a2955f43b18451c2ce34305593bce03b60321b","license":"MIT","scripts":{"lint":"biome check . --error-on-warnings","test":"npm run build && node --test","audit":"npm audit --omit=dev","build":"node scripts/clean-dist.js && tsc && node scripts/prepare-dist.js","verify":"npm run audit && npm run typecheck && npm run lint && npm run test:coverage && npm run pack:check","prepack":"npm run build","lint:fix":"biome check --write .","typecheck":"tsc --noEmit && tsc -p tsconfig.type-tests.json","pack:check":"node scripts/check-package.js","test:coverage":"npm run build && node scripts/run-coverage.js","prepublishOnly":"npm run verify"},"version":"1.0.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"588496b0-ccf7-4a4b-adbb-2de251db75fd"}},"homepage":"https://github.com/kollors/deep-json-server","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"_npmVersion":"11.19.0","description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","directories":{},"maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"_nodeVersion":"24.21.0","dependencies":{"ajv":"^8.20.0","yaml":"^2.8.1","lowdb":"^7.0.1","fastify":"^5.12.5","graphql":"^16.14.2","mercurius":"^16.10.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1","fs-native-extensions":"^1.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^22.0.0","@biomejs/biome":"^2.5.12","@types/pluralize":"^0.0.33"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/deep-json-server_1.0.0_1790919088503_0.6875518512926388"}}},"time":{"created":"2026-08-27T07:24:21.220Z","modified":"2026-10-02T05:31:29.098Z","0.1.0":"2026-08-27T07:24:21.505Z","0.1.1":"2026-08-27T07:35:43.169Z","0.2.0":"2026-08-27T10:32:11.984Z","0.2.1":"2026-08-27T10:37:36.415Z","0.2.2":"2026-08-27T10:51:37.192Z","0.2.3":"2026-08-27T10:55:43.054Z","0.2.4":"2026-08-27T11:02:20.777Z","0.2.5":"2026-08-27T11:14:45.627Z","0.2.6":"2026-08-27T11:34:49.059Z","0.3.0":"2026-08-27T15:21:14.210Z","0.3.1":"2026-08-27T20:46:56.108Z","0.3.2":"2026-08-28T05:14:15.480Z","0.4.0":"2026-09-01T08:43:07.111Z","0.5.0":"2026-09-01T14:34:54.339Z","0.6.0":"2026-09-02T11:20:06.093Z","0.7.0":"2026-09-02T20:46:50.943Z","0.8.0":"2026-09-04T14:03:17.820Z","0.8.1":"2026-09-04T20:20:22.224Z","0.9.0":"2026-09-04T20:40:27.307Z","1.0.0-alpha.1":"2026-09-10T19:50:39.612Z","1.0.0-alpha.2":"2026-09-11T10:52:51.984Z","1.0.0-alpha.3":"2026-09-11T19:30:33.551Z","1.0.0-alpha.4":"2026-09-12T06:33:26.970Z","1.0.0-alpha.5":"2026-09-12T11:45:10.484Z","1.0.0-alpha.6":"2026-09-12T19:35:01.319Z","1.0.0-alpha.7":"2026-09-13T09:40:56.997Z","1.0.0-alpha.8":"2026-09-13T19:31:33.323Z","1.0.0-alpha.9":"2026-09-14T10:44:22.353Z","1.0.0-alpha.10":"2026-09-14T17:53:15.399Z","1.0.0-alpha.11":"2026-09-15T12:26:48.157Z","1.0.0-alpha.12":"2026-09-19T11:14:15.203Z","1.0.0-beta.1":"2026-09-19T14:18:26.881Z","1.0.0-beta.2":"2026-09-19T17:51:56.169Z","1.0.0-beta.3":"2026-09-20T15:54:08.858Z","1.0.0-beta.4":"2026-09-21T05:25:39.144Z","1.0.0-beta.5":"2026-09-21T11:10:31.721Z","1.0.0-beta.6":"2026-09-21T15:51:16.906Z","1.0.0-rc.1":"2026-09-23T07:02:33.296Z","1.0.0-rc.2":"2026-09-23T11:20:19.497Z","1.0.0-rc.3":"2026-09-24T06:30:34.677Z","1.0.0-rc.4":"2026-09-24T09:33:28.908Z","1.0.0-rc.5":"2026-09-24T11:59:38.985Z","1.0.0-rc.6":"2026-09-24T13:47:34.583Z","1.0.0-rc.7":"2026-09-25T05:40:41.941Z","1.0.0-rc.8":"2026-10-01T13:01:30.333Z","1.0.0-rc.9":"2026-10-01T13:20:05.241Z","1.0.0":"2026-10-02T05:31:28.631Z"},"bugs":{"url":"https://github.com/kollors/deep-json-server/issues"},"author":{"name":"kollors"},"license":"MIT","homepage":"https://github.com/kollors/deep-json-server","keywords":["api","crud","deep-filter","file-upload","json","mock","mock-api","mock-server","openapi","relations","rest","rest-api","graphql","openapi-generator"],"repository":{"url":"git+https://github.com/kollors/deep-json-server.git","type":"git"},"description":"JSON mock server with schema-driven REST, GraphQL, OpenAPI generation and file uploads","maintainers":[{"name":"kollors","email":"kollors@mail.ru"}],"readme":"# Deep JSON Server\n\n[English](README.md)\n\n[История выпусков](CHANGELOG.md) · [Переход с 0.9.0](MIGRATION.ru.md)\n\nJSON-сервер для тестового API с REST, GraphQL, связями между записями, загрузкой файлов и экспортом схем. Поддерживает аутентификацию, права владельца и администратора, даты создания и изменения записей, а также мягкое удаление. Требуется Node.js 22 или новее.\n\n## Установка\n\n```sh\nnpm install @kollors/deep-json-server\n```\n\nЧтобы установить именно версию 1.0.0, выполните `npm install @kollors/deep-json-server@1.0.0`.\n\n## Быстрый старт\n\nСоздайте два файла в одном каталоге. У конфигурации расширение `.mjs`, поскольку это ES-модуль. Если используете `.js`, добавьте `\"type\": \"module\"` в `package.json` проекта.\n\n`database.json`:\n\n```json\n{\n  \"users\": [\n    { \"id\": \"1\", \"fullName\": \"Mira Volkova\" }\n  ]\n}\n```\n\n`server.config.mjs`:\n\n```js\nexport default { storage: 'file', database: { source: './database.json' } };\n```\n\n```sh\nnpx deep-json-server server.config.mjs\n```\n\nСписок пользователей доступен по адресу `http://127.0.0.1:4001/users`.\n\nДля связей и валидации добавьте [схему моделей](#схема-моделей). Далее описаны [запросы](#запросы-и-ответы), [аутентификация](#аутентификация), [мягкое удаление](#даты-записей-удаление-и-владельцы), [файлы](#файлы) и [программный API](#программный-api).\n\n## Конфигурация\n\nПри `storage: 'file'` укажите пути ко всем источникам данных и схеме, при `'memory'` — передайте сами данные. Режим хранения общий для всей конфигурации.\n\nСекции `auth` и `files` включают соответствующие REST-маршруты. Секция `graphql` включает GraphQL, а `openapi` — HTTP-маршрут со спецификацией REST. Пустые секции `graphql: {}` и `openapi: {}` используют пути по умолчанию; для экспорта в файл добавьте `target`. При наличии секции `graphql` явно заданный корневой `api` должен содержать `graphql`. Если `api` не задан, сервер использует `['rest', 'graphql']`.\n\n```js\nexport default {\n  storage: 'file',\n  database: { source: './database.json', schema: './schema.json' },\n  auth: { source: './users.json', expiresIn: 3600 },\n  files: { source: './uploads' },\n  graphql: { target: './generated/schema.graphql' },\n  openapi: { target: './generated/openapi.yaml' },\n  package: { source: './package.json' },\n  server: { host: '127.0.0.1', port: 4001 },\n};\n```\n\n| Настройка | Назначение |\n|---|---|\n| `storage` | Обязательный режим: `file` или `memory`; общий для всех источников и схемы |\n| `database.source` | Путь к JSON-файлу базы или объект с коллекциями |\n| `database.schema` | Путь к JSON-файлу схемы или объект схемы; для REST можно не задавать |\n| `auth.source` | Путь к JSON-файлу пользователей или массив пользователей |\n| `auth.expiresIn` | Срок действия сессии в секундах; по умолчанию 3600 |\n| `files.source` | Каталог файлов или массив начальных файлов |\n| `files.metadata` | Только для `file`: путь к JSON-файлу метаданных; по умолчанию `.files.json` внутри `files.source` |\n| `graphql.endpoint` | HTTP-маршрут; по умолчанию `/graphql` |\n| `graphql.target` | Файл для экспорта GraphQL SDL |\n| `openapi.endpoint` | HTTP-маршрут; по умолчанию `/openapi.json` |\n| `openapi.target` | Файл для экспорта OpenAPI |\n| `package.source` | `package.json` проекта; обязателен при наличии `openapi` |\n| `server.host`, `server.port` | По умолчанию `127.0.0.1`, `4001`; CLI также читает `HOST`/`PORT` |\n| `server.pageSize`, `server.maxPageSize` | По умолчанию 10 и 100; если `pageSize` больше максимума, используется максимум |\n| `server.cors`, `server.logger` | По умолчанию `true`; logger принимает также настройки Fastify |\n| `server.maxFileSize` | По умолчанию 100 МиБ |\n\nФормат `package.source` зависит от режима хранения. При `storage: 'file'` укажите путь к `package.json`. При `storage: 'memory'` передайте метаданные напрямую: `{ name: 'example-api', version: '1.0.0', description: 'Example API' }`; `name` и `version` обязательны, `description` необязателен.\n\nОтносительные пути отсчитываются от каталога файла конфигурации; при вызове `createServer(config)` — от рабочего каталога. Сервер копирует переданные в память данные, включая схему и метаданные пакета. Порт `0` позволяет системе выбрать свободный порт.\n\nЧтобы открыть базу только через GraphQL, а аутентификацию и файлы оставить в REST с описанием OpenAPI, укажите:\n\n```js\nexport default {\n  storage: 'file',\n  database: { source: './database.json', schema: './schema.json' },\n  auth: { source: './users.json' },\n  files: { source: './uploads' },\n  graphql: {},\n  openapi: {},\n  package: { source: './package.json' },\n};\n```\n\nВ корне `schema.json` задайте `api`:\n\n<!-- tested-example: graphql-only-schema -->\n```json\n{\n  \"api\": [\"graphql\"],\n  \"models\": {\n    \"Item\": {\n      \"collection\": \"items\",\n      \"fields\": { \"id\": { \"type\": \"string\", \"primary\": true } }\n    }\n  }\n}\n```\n\nДля REST с описанием OpenAPI используйте `\"api\": [\"rest\"]` и `openapi: {}`; для обоих API базы — `[\"rest\", \"graphql\"]` с обеими секциями. Если корневой `api` задан явно, при наличии секции `graphql` в конфигурации добавьте `graphql` и в список API; без этой секции включать его в список нельзя. Если корневой `api` не задан, сервер определяет его по конфигурации. OpenAPI описывает маршруты базы, только если включён REST; маршруты аутентификации и файлов включаются при наличии соответствующих секций.\n\n### CLI\n\n| Флаг | Действие |\n|---|---|\n| `--generate` | Экспортировать схемы и запустить сервер |\n| `--generate-only` | Экспортировать схемы и завершить работу |\n| `--host <host>` | Адрес сервера |\n| `--port <port>` | Порт сервера |\n| `--help, -h` | Справка |\n| `--version, -v` | Версия пакета |\n\nПриоритет адреса и порта: CLI → конфигурация → `HOST`/`PORT` → значения по умолчанию. Без флагов генерации запускается только сервер. `--generate` и `--generate-only` нельзя передавать вместе.\n\n## Схема моделей\n\nПримеры: [база данных](examples/database.json), [схема моделей](examples/schema.json), [конфигурация](examples/server.config.js).\n\n<!-- tested-example: implicit-relation-schema -->\n```json\n{\n  \"api\": [\"rest\", \"graphql\"],\n  \"models\": {\n    \"Country\": {\n      \"collection\": \"countries\",\n      \"fields\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"primary\": true,\n          \"generated\": \"uuid\"\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"required\": true\n        },\n        \"users\": {\n          \"type\": \"User[]\",\n          \"keyOn\": \"related\"\n        }\n      }\n    },\n    \"User\": {\n      \"collection\": \"users\",\n      \"fields\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"primary\": true,\n          \"generated\": \"uuid\"\n        },\n        \"fullName\": {\n          \"type\": \"string\",\n          \"required\": true\n        },\n        \"country\": {\n          \"type\": \"Country\",\n          \"keyOn\": \"current\"\n        }\n      }\n    }\n  }\n}\n```\n\nМодели задаются в `models`. Корень схемы принимает `models`, `api`, `timestamps` и `softDelete`. Корневой `api` выбирает маршруты базы. Если он не задан, значение по умолчанию зависит от способа использования схемы:\n\n| Контекст | Корневой `api` по умолчанию |\n|---|---|\n| Сервер без секции `graphql` | `['rest']` |\n| Сервер с секцией `graphql` | `['rest', 'graphql']` |\n| Отдельный вызов `generateOpenapi()` | `['rest']` |\n| Отдельный вызов `generateGraphql()` | `['graphql']` |\n\nЯвный `['rest']` включает REST-маршруты базы; `['graphql']` — операции GraphQL; `['rest', 'graphql']` — оба API. OpenAPI описывает REST-маршруты при наличии секции `openapi`. Корневой `api: []` недопустим; `[]` разрешён только на уровне модели.\n\nМодель без собственного `api` наследует значение из корня. Указанный у модели массив может содержать `['rest']`, `['graphql']`, оба варианта или `[]`. Модель не может включить API, отсутствующий в корневом `api`.\n\nOpenAPI включает модели, доступные через REST. Для генерации GraphQL нужна хотя бы одна GraphQL-модель; для генерации OpenAPI с маршрутами базы — хотя бы одна REST-модель. Если база доступна только через GraphQL, OpenAPI всё равно может описывать настроенные маршруты аутентификации и файлов.\n\nСвязанные модели должны разрешать тот же API. Имена моделей должны быть допустимыми идентификаторами; конфликты типов и операций вызывают ошибку. Имена `and`, `or`, `not` зарезервированы фильтрами.\n\nПорядок элементов в `api` не важен.\n\nНапример, при корневом `api: ['rest', 'graphql']` модель с `api: ['rest']` получает REST-маршруты и пути в OpenAPI без операций GraphQL, а модель с `api: ['graphql']` — операции GraphQL без REST-маршрутов и путей в OpenAPI.\n\nИсключённая из API модель остаётся частью схемы базы, а её сохранённые записи продолжают проверяться. Поле `api` управляет доступом клиентов к модели.\n\n| Возможность | Со схемой | Без схемы |\n|---|---|---|\n| REST CRUD | Валидация модели | Только проверки JSON, тела запроса и идентификаторов |\n| Связи | Поля схемы | По ключам `countryId`, `genreIds` и аналогичным |\n| Экспорт OpenAPI 3.0.3 | Доступен | Ошибка при запросе экспорта |\n| GraphQL SDL / API | Доступен | Ошибка при запросе |\n\nПри явной схеме неизвестные поля и коллекции запрещены. Исключение — хранимые ключи, выведенные из связей. Они остаются в записях базы, но не становятся полями API. Исходная база проверяется при загрузке. Генерация использует описание моделей.\n\nREST без схемы создаёт ключ `id` и сохраняет произвольные JSON-поля. Новые выведенные связи доступны для последующего чтения и записи без перезапуска сервера. Для фильтров и выбора отдельных полей используются имена в формате идентификаторов. `scope=[{\"*\":true}]` возвращает скаляры верхнего уровня; массивы и объекты выбираются по имени. Поля с разными типами значений можно запросить явно, но фильтрация, сортировка и пагинация неоднородных списков требуют явной схемы.\n\nУ модели обязательны `collection` (имя коллекции в базе и REST-путь, если включён REST) и `fields` (описание полей). Имя модели (`User`) задаёт имена типов и операций GraphQL. `api` управляет доступностью маршрутов, а `timestamps` и `softDelete` переопределяют глобальные настройки для этой модели.\n\n### Поля\n\nПоле `type` принимает `string`, `number`, `boolean`, `object` или имя модели. Для массива добавьте суффикс `[]`: `string[]`, `object[]`, `Genre[]`. Вложенные поля описываются через точку, например `actors.fullName`.\n\n| Свойства | Назначение |\n|---|---|\n| `type` | Обязательный тип |\n| `description`, `example` | Документация и пример |\n| `required`, `nullable` | По умолчанию `false`; наличие поля и разрешение `null` независимы |\n| `default` | Значение для поля, не переданного при создании или замене; PATCH не подставляет его |\n| `enum` | Допустимые строки, числа или логические значения; у массива — значения каждого элемента |\n| `primary` | Корневой первичный ключ: обязательный, уникальный, неизменяемый, без `null` |\n| `generated` | `uuid` для строк, `increment` для чисел; значение создаёт сервер |\n| `readOnly`, `writeOnly` | Только ответ или только входные данные; взаимно исключаются |\n| `minLength`, `maxLength`, `pattern` | Ограничения строк |\n| `format` | `date`, `date-time`, `email`, `uri`, `uuid` |\n| `minimum`, `maximum` | Нижняя и верхняя границы числа, включая сами границы |\n| `keyOn`, `source`, `target`, `onDelete` | Описание связи |\n\nОграничения строк и чисел применяются к каждому элементу `string[]`/`number[]`. `required` и `nullable` относятся ко всему массиву; `default` и `example` содержат массив целиком. Элементы должны соответствовать типу массива и не могут быть `null`. При `required: true` поле массива должно присутствовать в записи, но сам массив может быть пустым.\n\nКаждое значение `enum` должно соответствовать типу поля и его ограничениям. Чтобы разрешить `null` для поля, укажите `nullable: true`; добавлять `null` в `enum` не нужно. Некорректные значения отклоняются при загрузке схемы.\n\nУ модели ровно один первичный ключ типа `string` или `number`, объявленный на верхнем уровне. Имя произвольное: `id`, `username`, `code`. Если `generated` не задан, значение передаёт клиент при создании.\n\nГенерируемые поля объявляются на верхнем уровне, исключаются из входных типов и несовместимы с `default`.\n\nПри замене записи сохраняются генерируемые значения и поля `readOnly`, в том числе во вложенных объектах. Даже при `nullable: true` объект нельзя заменить на `null`, если это удалит сохранённые поля `readOnly` внутри него. Для защиты полей внутри массива задайте `readOnly` всему массиву или содержащему его объекту. Объекты, состоящие только из полей, которыми управляет сервер, доступны лишь в ответах.\n\nНапример, `LocalUser` с первичным ключом `username` и полем `password: {\"type\":\"string\",\"required\":true,\"writeOnly\":true}` получает запрос `localUser(username: ...)` и маршрут `/localUsers/{username}`. Поле `writeOnly` доступно для записи и исключено из ответов, `scope`, фильтров и сортировки.\n\nОбъекты в GraphQL должны содержать хотя бы одно поле, доступное в ответе; REST допускает и пустые объекты.\n\n### Связи\n\n```json\n{\n  \"actors.genres\": {\n    \"type\": \"Genre[]\",\n    \"keyOn\": \"current\",\n    \"source\": \"actors.genreIds\",\n    \"required\": true\n  }\n}\n```\n\n`Genre` возвращает объект, `Genre[]` — список. Каждую явную связь нужно объявить с обеих сторон. В обоих полях обязателен `keyOn`: `current` обозначает сторону, где хранится ключ, `related` — обратную. В паре должно быть по одному полю каждого вида. Для примера выше добавьте `Genre.movies = {\"type\":\"Movie[]\",\"keyOn\":\"related\",\"target\":\"actors.genreIds\"}`.\n\nНа стороне `current` поле `target` по умолчанию равно первичному ключу связанной модели. `source` выводится из имени поля связи и этого ключа: `User.country` → `User.countryId`; для списка берётся единственное число имени связи и множественное число ключа: `Genre.parents` → `Genre.parentIds`. Поэтому `Genre.parents = {\"type\":\"Genre[]\",\"keyOn\":\"current\"}` и `Genre.children = {\"type\":\"Genre[]\",\"keyOn\":\"related\"}` используют один `Genre.parentIds`. Вложенные поля сохраняют родительский путь: `Movie.actors.genres` → `Movie.actors.genreIds`. Нестандартный первичный ключ меняет суффикс: `Movie.publishers` при ключе `Publisher.ref` → `Movie.publisherRefs`.\n\n`source` всегда указывает на поле текущей модели, а `target` — на поле модели из `type`. Для обратной связи пути меняются местами: у `Country.users` это `source: \"id\"` и `target: \"countryId\"`. Если ключ хранится под нестандартным именем, задайте путь явно. Когда между двумя моделями несколько связей, уточните обратные поля: например, `Country.birthUsers = {\"type\":\"User[]\",\"keyOn\":\"related\",\"target\":\"birthCountryId\"}` и `Country.residenceUsers = {\"type\":\"User[]\",\"keyOn\":\"related\",\"target\":\"residenceCountryId\"}`. Отсутствующая, противоречивая или неоднозначная пара вызывает ошибку при загрузке схемы.\n\nКлючи связей остаются в базе, даже если их нет в `fields`. На стороне `current` хранимый ключ, на который указывает `source`, можно не объявлять в `fields`, если известен тип целевого ключа. Сервер определит его тип: массив для множественной связи или одно значение для одиночной. Это действует и для первичного, и для непервичного целевого поля.\n\nТакой ключ остаётся внутренним: REST и GraphQL не позволяют читать, выбирать, фильтровать, сортировать или записывать его напрямую, а OpenAPI его не описывает. Сама связь при этом доступна.\n\nЧтобы открыть ключ в API, объявите его в `fields`, например `\"countryId\": { \"type\": \"string\" }`. При неоднозначном сопоставлении ключ тоже нужно объявить явно.\n\nНапример, для `publishers: { \"type\": \"Publisher[]\", \"keyOn\": \"current\", \"target\": \"code\" }` сервер определяет ключ `publisherCodes: { \"type\": \"string[]\" }`, если `Publisher.code` — строка, даже при первичном ключе `Publisher.id`. Типы явно объявленных хранимых ключей сохраняются.\n\nОбратная связь: `User.movies = {\"type\":\"Movie[]\",\"keyOn\":\"related\",\"target\":\"actors.userId\"}` соответствует `Movie.actors.user = {\"type\":\"User\",\"keyOn\":\"current\",\"source\":\"actors.userId\"}`. Фильм возвращается один раз, даже если совпало несколько актёров. Несколько совпадений для одиночной связи — ошибка.\n\nКаждый переданный напрямую и явно объявленный ключ связи должен указывать на существующую запись. `required: true` у одиночной связи требует целевую запись. У связи-списка с собственным массивом ключей `source` оно требует наличия этого массива, но `[]` допустим. Список без собственного массива ключей, включая обратную связь, вычисляется всегда и может быть пустым даже при `required: true`. Отсутствующая одиночная связь возвращает `null`.\n\nЕсли не передать связь `related` в `PUT`, существующие связи сохранятся: их ключи хранятся в других записях. Чтобы заменить состав связи, передайте её явно; например, `\"users\": []` удалит всех пользователей из обратного списка страны.\n\n`onDelete` срабатывает **при удалении целевой записи**:\n\n- `restrict` — по умолчанию: запретить удаление, пока на цель ссылается запись, которая остаётся в базе.\n- `cascade` — удалить ссылающуюся запись. Для `User.country` удаление страны удаляет пользователей. Для `Movie.actors.user` удаление пользователя удаляет соответствующие элементы `actors`, сохраняя фильм.\n\nКаскадное удаление выполняется целиком, включая циклические связи. Ошибка проверки отменяет всю операцию. Обратная связь `related` без `onDelete` сама по себе не запрещает удаление записи из-за ключа на другой стороне; задайте `onDelete`, если для неё нужно дополнительное правило.\n\n## Пример базы данных\n\nЭта база использует полную [схему примера](examples/schema.json). Кроме пользователей и стран из сокращённой схемы выше, она содержит фильмы, жанры и издателей.\n\n```json\n{\n  \"countries\": [\n    {\n      \"id\": \"1\",\n      \"name\": \"Ardenia\"\n    },\n    {\n      \"id\": \"2\",\n      \"name\": \"Veloria\"\n    }\n  ],\n  \"genres\": [\n    {\n      \"id\": \"1\",\n      \"name\": \"Crime\",\n      \"parentIds\": []\n    },\n    {\n      \"id\": \"2\",\n      \"name\": \"Gangster\",\n      \"parentIds\": [\"1\"]\n    },\n    {\n      \"id\": \"3\",\n      \"name\": \"Drama\",\n      \"parentIds\": []\n    },\n    {\n      \"id\": \"4\",\n      \"name\": \"Comedy\",\n      \"parentIds\": []\n    }\n  ],\n  \"movies\": [\n    {\n      \"actors\": [\n        {\n          \"genreIds\": [\"2\", \"3\"],\n          \"id\": \"movie-1-actor-1\",\n          \"userId\": \"1\"\n        },\n        {\n          \"genreIds\": [\"3\"],\n          \"id\": \"movie-1-actor-2\",\n          \"userId\": \"2\"\n        }\n      ],\n      \"coverSrc\": \"https://example.com/covers/shadows-of-ardenia.jpg\",\n      \"description\": \"An heiress in a port city uncovers a plot involving two rival families.\",\n      \"id\": \"1\",\n      \"publisherIds\": [\"2\"],\n      \"title\": \"Shadows of Ardenia\"\n    },\n    {\n      \"actors\": [],\n      \"coverSrc\": \"https://example.com/covers/northern-star.jpg\",\n      \"description\": \"A night clerk at an old hotel gets drawn into the search for a missing painting.\",\n      \"id\": \"2\",\n      \"publisherIds\": [\"1\"],\n      \"title\": \"Midnight at the Northern Star\"\n    }\n  ],\n  \"publishers\": [\n    {\n      \"id\": \"1\",\n      \"name\": \"Northlight Studio\"\n    },\n    {\n      \"id\": \"2\",\n      \"name\": \"Aurora Pictures\"\n    }\n  ],\n  \"users\": [\n    {\n      \"bornAt\": \"1988-03-14\",\n      \"countryId\": \"1\",\n      \"fullName\": \"Mira Volkova\",\n      \"id\": \"1\"\n    },\n    {\n      \"bornAt\": \"1991-11-02\",\n      \"countryId\": \"2\",\n      \"fullName\": \"Leon Vetrov\",\n      \"id\": \"2\"\n    }\n  ]\n}\n```\n\n## Запросы и ответы\n\nЗапустите примеры ниже с [конфигурацией примера](examples/server.config.js):\n\n```sh\nnpx deep-json-server examples/server.config.js\n```\n\nКоллекции и списки объектов, включая вложенные `object[]`, возвращают:\n\n```json\n{ \"data\": [], \"total\": 0 }\n```\n\nМассивы примитивов возвращаются обычными массивами. Каждый список объектов принимает необязательные `where`, `order` и `pager`. Порядок обработки: фильтрация → сортировка → пагинация. `total` — число записей после фильтрации, до пагинации.\n\nВ `pager` задаются `page` и `pageSize`. По умолчанию возвращается первая страница с размером из `server.pageSize`. Оба значения должны быть положительными целыми числами; `pageSize` ограничен `server.maxPageSize`. За пределами списка возвращается пустой `data` с общим числом найденных записей в `total`.\n\nФильтры: `eq`, `ne`, `in`; для строк `contains`, `startsWith`, `endsWith`; сравнения `gt`, `gte`, `lt`, `lte`. Несколько условий в одном объекте должны выполняться одновременно. `and` и `or` принимают массив условий, `not` — одно условие; `not` также можно использовать внутри фильтра поля. У массивов есть `some`, `every`, `none`; у примитивных массивов также `contains`, `in`.\n\n`contains`, `startsWith` и `endsWith` для строк не учитывают регистр; `eq`, `ne` и `in` сравнивают точные значения. Для строк `gt`, `gte`, `lt` и `lte` используют тот же порядок, что сортировка: без учёта регистра и с числовым сравнением фрагментов строки. Условие поля задаётся объектом с оператором, например `{ \"id\": { \"eq\": \"1\" } }`.\n\n```json\n{\n  \"movies\": {\n    \"some\": {\n      \"actors\": {\n        \"some\": {\n          \"genres\": { \"some\": { \"id\": { \"in\": [\"2\", \"3\"] } } }\n        }\n      }\n    }\n  }\n}\n```\n\nКорневой `where` выбирает записи основной коллекции. `where` внутри связи фильтрует её элементы, сохраняя родительскую запись. Каждый вложенный список обрабатывается отдельно. Фильтрация по связи работает независимо от её включения в ответ.\n\n`order` — массив правил `{ \"field\": \"fullName\", \"direction\": \"ASC\" }`. `ASC` сортирует по возрастанию, `DESC` — по убыванию. Первое правило приоритетнее; при равных значениях сохраняется порядок хранения. `null` и отсутствующее значение сравниваются одинаково. REST использует путь `profile.name`, GraphQL — enum `profile_name`. Неоднозначные имена enum вызывают ошибку генерации. Сортировка доступна по скалярным полям текущего объекта, включая вложенные поля. Для связанных списков задаётся собственный `order`.\n\n### REST\n\nЕсли REST включён корневым `api`, `GET /` перечисляет только REST-модели: `{ \"resources\": [\"users\", \"movies\"] }`. При базе только с GraphQL маршрута `GET /` нет. Для каждой REST-коллекции доступны следующие маршруты:\n\n| Метод | Путь | Операция |\n|---|---|---|\n| GET | `/users` | `userList` |\n| GET | `/users/{id}` | `user` |\n| POST | `/users` | `userCreate` |\n| PUT | `/users/{id}` | `userReplace` |\n| PATCH | `/users/{id}` | `userUpdate` |\n| DELETE | `/users/{id}` | `userDelete` |\n\nИмя параметра пути соответствует первичному ключу. POST, PUT и PATCH принимают JSON-объект записи. PUT заменяет запись с сохранением ключа и серверных полей. PATCH объединяет поля на верхнем уровне; переданные вложенные объекты заменяются с сохранением их полей `readOnly`. При создании и замене передавайте обязательные поля, доступные для записи и не имеющие значений по умолчанию. При обновлении проверяются переданные значения и итоговая запись. Отсутствующая запись — `404`, конфликт — `409`.\n\nPOST возвращает созданную запись со статусом `201`; PUT, PATCH и DELETE — результат со статусом `200`. Ошибки REST имеют вид `{ \"error\": \"Error description\" }`.\n\n### Параметры REST-запросов\n\nДля запросов к записям REST принимает один параметр URL `scope` с JSON-массивом `[fields, arguments?]`. Первый объект выбирает поля, второй задаёт `where`, `order` и `pager` для списка. Этот формат одинаков для корневого запроса, вложенных объектов и связей.\n\nПример выбора пользователей и их фильмов с отдельной сортировкой и пагинацией:\n\n<!-- tested-example: rest-user-list -->\n```js\nconst scope = [\n  {\n    id: true,\n    fullName: true,\n    movies: [\n      { id: true, title: true },\n      { order: [{ field: 'title', direction: 'ASC' }], pager: { page: 1, pageSize: 5 } },\n    ],\n  },\n  {\n    where: { fullName: { contains: 'Mira' } },\n    order: [{ field: 'fullName', direction: 'ASC' }],\n    pager: { page: 1, pageSize: 20 },\n  },\n];\nconst params = new URLSearchParams({ scope: JSON.stringify(scope) });\nconst response = await fetch(`/users?${params}`);\n```\n\nСкаляры и массивы примитивов выбираются через `true`, объекты и связи — через свой массив `scope`. Если аргументы не нужны, в массиве остаётся только объект полей.\n\n`\"*\": true` включает только скалярные поля текущей модели, которые не хранят ключи связей. Массивы, объекты, связи, их ключи и поля `writeOnly` в него не входят.\n\nСо схемой ключ связи можно выбрать через `{ \"*\": true, \"countryId\": true }`, только если он объявлен в `fields`. Без схемы ключ, присутствующий в записях базы, можно выбрать явно, даже если его нет в `*`; из `*` он исключается, когда сервер выводит связь по имени ключа и существующей коллекции.\n\nНапример, собственные поля фильма, пользователи актёров и отсортированные жанры:\n\n<!-- tested-example: rest-movie-scope -->\n```json\n[\n  {\n    \"*\": true,\n    \"actors\": [\n      {\n        \"user\": [{ \"id\": true, \"fullName\": true }],\n        \"genres\": [\n          { \"*\": true },\n          { \"order\": [{ \"field\": \"name\", \"direction\": \"ASC\" }] }\n        ]\n      }\n    ]\n  }\n]\n```\n\nБез `scope` возвращаются скалярные поля, как при `[{\"*\":true}]`. Пустой выбор `[{}]` возвращает объект без полей. Списки сохраняют структуру `{ data, total }`.\n\nАргументы доступны только у списков. Вместо них список может использовать `{ \"union\": [scope, ...] }`: каждая часть — обычный scope списка, части выполняются в порядке массива, а для каждого первичного ключа остаётся первая запись.\n\nВо вложенных массивах объектов без первичных ключей каждый исходный элемент включается один раз, даже если его выбрали несколько частей. Разные элементы с одинаковым содержимым сохраняются отдельно.\n\nВ запросе отдельной записи и в ответе мутации аргументы можно задать для вложенных списков.\n\nПараметры проверяются даже на пустых данных; ошибка в выборе ответа отменяет изменения записи. Некорректный `scope` возвращает `400`. Максимальная длина JSON — 10 000 символов, глубина выбора — 32 уровня.\n\nREST и GraphQL ограничивают общий объём работы одного запроса:\n\n- 1 000 элементов в дереве выбора полей.\n- 10 000 записей, развёрнутых в ответе.\n- 100 000 учитываемых шагов обработки, включая фильтрацию и сортировку.\n- 8 МиБ для оценочного размера JSON-ответа.\n\nЭти лимиты общие для вложенных списков, частей `union` и псевдонимов GraphQL. Размер оценивается с запасом на кодирование JSON, поэтому лимит может сработать, даже если фактический ответ меньше 8 МиБ. При превышении сервер возвращает REST `400` или GraphQL `INVALID_QUERY`; уменьшите число выбранных полей, вложенность или размер страниц. Если построение ответа REST превышает лимит, изменения записи откатываются.\n\n### Вложенная запись\n\nЯвно объявленные поля ключей, например `genreIds: [\"1\"]`, только задают связь. В поля связей можно передавать записи для создания или обновления:\n\n```http\nPATCH /movies/1\nContent-Type: application/json\n\n{\n  \"actors\": [\n    {\n      \"userId\": \"1\",\n      \"genres\": [\n        { \"id\": \"1\" },\n        { \"id\": \"2\", \"name\": \"Updated genre\" },\n        { \"name\": \"New genre\" }\n      ]\n    }\n  ]\n}\n```\n\n| Значение в связи | Действие |\n|---|---|\n| Объект только с первичным ключом | Связать существующую запись без обновления её полей, дат и авторства |\n| Объект с первичным ключом и другими полями | PATCH обновляет переданные поля, PUT заменяет связанную запись |\n| Объект без первичного ключа | Создать запись со значениями по умолчанию и сгенерированным ключом |\n\nИмя и тип ключа берутся из целевой модели. Объект только с этим ключом считается ссылкой в POST, PUT и PATCH; остальные обязательные поля целевой модели ему не нужны.\n\nЕсли добавить другие поля, это уже обновление: PUT требует обязательные поля, доступные для записи и не имеющие значений по умолчанию, удаляет пропущенные необязательные или задаёт им значения по умолчанию; POST/PATCH обновляют переданные поля. При замене сохраняются первичный ключ, генерируемые значения и поля `readOnly`.\n\nЕсли запись по ключу не найдена, операция завершится ошибкой. Для создания вложенной записи без ключа нужна его автоматическая генерация. Объявленные хранимые ключи, например `countryId`, тоже позволяют менять ссылки напрямую.\n\nПереданный список заменяет состав связи. PATCH сохраняет пропущенные связи. PUT заменяет доступные для записи поля текущей записи, включая её собственные ключи связей, но сохраняет пропущенные связи `keyOn: \"related\"`, чьи ключи хранятся в других записях. `[]` очищает список, `null` — одиночную связь с разрешённым `nullable`. Разрыв связи не удаляет связанную запись. Обязательная одиночная связь должна сохраняться; обязательная связь-список может быть пустой.\n\nЕсли хранимый ключ объявлен в `fields`, в одном объекте указывайте либо связь, либо её ключ: например, `genres` или `genreIds`. Одновременная передача обоих полей возвращает REST `400` или GraphQL `INVALID_INPUT`, даже если наборы ключей совпадают:\n\n```json\n{\n  \"genreIds\": [\"1\", \"2\"],\n  \"genres\": [{ \"id\": \"1\" }, { \"id\": \"2\" }]\n}\n```\n\nСервер отклоняет запрос с обоими полями и отменяет всю операцию. Поле связи принимает только объекты; чтобы изменить ссылки без создания и обновления связанных записей, используйте объявленный ключ, например `genreIds`. Для обратной связи сервер меняет целевой ключ. Если путь проходит через массив и нельзя однозначно выбрать элемент для связи, передайте массив с нужными ключами явно. Защищённые ключи изменять нельзя.\n\nВсе вложенные изменения входят в транзакцию основной записи. Ошибка проверки или отсутствующая целевая запись отменяет все изменения. В REST неверный выбор полей ответа тоже приводит к откату. GraphQL проверяет выбор полей до записи, но ошибка при построении результата уже сохранённой мутации не отменяет её; подробнее в разделе [GraphQL](#graphql). Изменения общей записи видны всем, кто с ней связан.\n\nGraphQL принимает в полях связей типизированные объекты. Чтобы изменить только ссылки, в том числе при замене, передайте объекты только с первичными ключами либо объявленные поля ключей, например `genreIds`. Обязательные поля вложенного создания или замены с дополнительными полями проверяются при выполнении. Пример:\n\n```graphql\nmutation {\n  movieUpdate(id: \"1\", data: {\n    actors: [{\n      userId: \"1\"\n      genres: [{ id: \"2\", name: \"Updated genre\" }, { name: \"New genre\" }]\n    }]\n  }) {\n    actors { data { genres { data { id name } } } }\n  }\n}\n```\n\n### GraphQL\n\nУкажите `database.schema`, включите `graphql` в корневой `api` схемы и добавьте в конфигурацию `graphql: {}`:\n\n```sh\nnpx deep-json-server server.config.mjs\n```\n\nОтправляйте запросы на `/graphql` методом POST с `Content-Type: application/json` и телом `{ \"query\": \"…\", \"variables\": {} }`. Путь можно изменить через `graphql.endpoint`.\n\n<!-- tested-example: graphql-user-list -->\n```graphql\nquery {\n  userList(\n    where: { fullName: { contains: \"Mira\" } }\n    order: [{ field: fullName, direction: ASC }]\n    pager: { page: 1, pageSize: 20 }\n  ) {\n    total\n    data {\n      id\n      fullName\n      movies(\n        where: { title: { contains: \"Shadows\" } }\n        order: [{ field: title, direction: ASC }]\n        pager: { pageSize: 5 }\n      ) {\n        total\n        data { id title }\n      }\n    }\n  }\n}\n```\n\nЗапрос `user(id: ...)` возвращает одну запись или `null`, если она отсутствует. Мутации: `userCreate(data: ...)`, `userReplace(id: ..., data: ...)`, `userUpdate(id: ..., data: ...)`, `userDelete(id: ...)`. Для модели, состоящей из генерируемых полей, мутация создания вызывается без аргумента `data`. Правила записи и валидации совпадают с REST. Связи, выбранные в результате мутации, определяют содержимое ответа.\n\nЕсли первичный ключ называется `data`, мутации Update/Replace принимают его значение в аргументе `key`, а объект изменений — в `data`, например `entryUpdate(key: \"one\", data: { name: \"Updated\" })`. В Find/Delete аргумент ключа по-прежнему называется `data`.\n\nСтроковый первичный ключ представлен типом GraphQL `ID`, обычные строки — `String`, числа — `Float`, параметры пагинации — `Int`. Enum сохраняет допустимые строковые имена; остальные значения получают имена `VALUE_0`, `VALUE_1` и т. д. Длины строк, форматы и другие ограничения модели проверяются сервером при выполнении запроса. Для просмотра схемы доступна интроспекция. Параметры выбранных списков проверяются до выполнения мутаций.\n\nОшибки содержат `extensions.code`: `INVALID_INPUT`, `INVALID_QUERY`, `NOT_FOUND`, `CONFLICT`, `UNAUTHENTICATED`, `FORBIDDEN` или `INTERNAL_ERROR`. Ошибки синтаксиса и типов GraphQL возвращаются в стандартном массиве `errors`. Максимальная глубина запроса — 32 уровня. Лимиты запросов, описанные для REST, действуют и в GraphQL. Число элементов выбора полей и аргументы списков проверяются до выполнения мутаций. Ошибки при построении результата, в том числе превышение лимита запроса, не отменяют уже сохранённую мутацию; перед повтором проверьте состояние записи.\n\nОперация GraphQL с несколькими полями мутаций не является одной транзакцией: поля выполняются по порядку, а ранее сохранённые изменения остаются при ошибке последующего результата. Превышение лимита во время выполнения возвращает `data: null` и останавливает следующие поля мутаций. Перед повтором проверьте сохранённое состояние запросом с меньшей выборкой: `data: null` не означает откат, а повторное создание записи с генерируемым ключом может привести к дубликату.\n\n## OpenAPI и экспорт схем\n\nСпецификация соответствует OpenAPI 3.0.3. Добавьте `openapi: {}`, `database.schema` и `package.source`, чтобы получать её по адресу `/openapi.json`. Путь меняется через `openapi.endpoint`. Маршруты базы включаются только для REST-моделей; если база доступна только через GraphQL, документ всё равно может описывать настроенные маршруты аутентификации и файлов. Поля OpenAPI `info.title`, `info.version` и необязательное `info.description` берутся из настроенного `package.json`. Спецификацию можно открыть в Swagger UI или импортировать в API-клиент.\n\nДля сохранения схем задайте пути экспорта:\n\n```js\nexport default {\n  storage: 'file',\n  database: { source: './database.json', schema: './schema.json' },\n  openapi: { target: './generated/openapi.yaml' },\n  graphql: { target: './generated/schema.graphql' },\n  package: { source: './package.json' },\n};\n```\n\n```bash\nnpx deep-json-server server.config.mjs --generate-only\nnpx deep-json-server server.config.mjs --generate\n```\n\n`--generate-only` экспортирует и завершает работу, `--generate` после экспорта запускает сервер. Форматы определяются наличием секций. Для каждого выбранного формата обязателен свой `target`. HTTP-маршрут OpenAPI возвращает JSON; `writeOpenapi()` и CLI записывают YAML. Если секций нет, отсутствует `target` или генерация завершилась ошибкой, команда возвращает ошибку и сервер не запускается.\n\nГенерация не читает записи базы, учётные записи и загруженные файлы. Перед записью проверяются все выбранные `target`: они не могут перезаписать конфигурацию, базу, схему, пользователей, блокировки, счётчики или метаданные файлов.\n\n## Аутентификация\n\nСекция `auth` включает регистрацию, вход и проверку прав на изменение записей в REST и GraphQL. Чтение и все операции с файлами остаются открытыми.\n\nПервого администратора задайте в исходных данных. Например, создайте `auth.json` с помощью `setup-auth.mjs`:\n\n```js\nimport { writeFile } from 'node:fs/promises';\nimport { hashPassword } from '@kollors/deep-json-server/auth';\n\nconst password = process.env.DJS_PASSWORD;\nif (!password) throw new Error('Set DJS_PASSWORD');\nawait writeFile(\n  './auth.json',\n  JSON.stringify(\n    [{ id: '1', username: 'admin', passwordHash: await hashPassword(password), isAdmin: true, sessions: [] }],\n    null,\n    2,\n  ),\n  { flag: 'wx', mode: 0o600 },\n);\n```\n\nЗадайте `DJS_PASSWORD` и выполните `node setup-auth.mjs`. Добавьте файл в конфигурацию сервера:\n\n```js\nexport default {\n  storage: 'file',\n  database: { source: './database.json' },\n  auth: { source: './auth.json', expiresIn: 3600 },\n};\n```\n\nЗапустите `npx deep-json-server server.config.mjs`. Каждой исходной учётной записи нужны уникальный строковый `id`, уникальный `username` и `passwordHash`, созданный функцией выше. `isAdmin` по умолчанию равен `false`, а `sessions` — `[]`, поэтому существующие файлы пользователей остаются допустимыми. Пароли хешируются через scrypt со случайной солью.\n\nПри `storage: 'memory'` передайте массив в `auth.source`:\n\n```js\nimport { hashPassword } from '@kollors/deep-json-server/auth';\n\nconst password = process.env.DJS_PASSWORD;\nif (!password) throw new Error('Set DJS_PASSWORD');\n\nexport default {\n  storage: 'memory',\n  database: { source: { items: [] } },\n  auth: {\n    source: [\n      { id: '1', username: 'admin', passwordHash: await hashPassword(password), isAdmin: true, sessions: [] },\n    ],\n  },\n};\n```\n\nУчётные записи и сессии хранятся вместе в `auth.source`, отдельно от базы. Каждый элемент массива `sessions` содержит `{ tokenHash, expiresAt }`. `tokenHash` — хеш токена SHA-256: строка из 64 шестнадцатеричных символов в нижнем регистре. `expiresAt` — время окончания сессии, выраженное числом миллисекунд с 1 января 1970 года, 00:00 UTC. Сами токены не сохраняются, а ответы методов аутентификации не раскрывают хеши паролей и данные сессий. Хеши токенов должны быть уникальны среди всех пользователей.\n\nПри `storage: 'file'` изменения учётных записей и сессий сохраняются в JSON-файл до отправки успешного ответа. Действующие сессии сохраняются после перезапуска сервера: клиент может продолжать использовать прежний токен. Новый пароль и удаление всех сессий пользователя записываются вместе. При ошибке записи пользователи и сессии остаются без изменений. Для ручного редактирования файла остановите сервер; если меняете хеш пароля, также очистите `sessions` этого пользователя, затем запустите сервер снова.\n\nПри `storage: 'memory'` переданный массив пользователей не изменяется. Каждый запуск заново загружает исходных пользователей и сессии. Сессии, созданные во время работы, после перезапуска исчезают. Действующие сессии из исходных данных восстанавливаются, даже если при предыдущем запуске пользователь вышел через `/auth/logout`. Клиенту по-прежнему нужен сам токен: восстановить его из `tokenHash` нельзя.\n\n`auth.expiresIn` задаёт срок новых сессий и по умолчанию равен 3600 секундам. У существующих сессий сохраняется записанное время истечения, в том числе после перезапуска. Истёкшие сессии игнорируются при загрузке, отклоняются при каждом запросе и удаляются у всех пользователей при следующем успешном изменении данных пользователей или сессий, например при входе или выходе. Срок сессии автоматически не продлевается.\n\n| REST-запрос | JSON тела | Ответ |\n|---|---|---|\n| `POST /auth/register` | `{ \"username\": \"anna\", \"password\": \"…\" }` | `201`: `{ id, username, isAdmin: false }` |\n| `POST /auth/login` | `{ \"username\": \"anna\", \"password\": \"…\" }` | `{ accessToken, expiresIn, user: { id, username, isAdmin } }` |\n| `GET /auth/me` | — | `{ id, username, isAdmin }` |\n| `POST /auth/logout` | — | `{ success: true }` |\n| `PATCH /auth/users/:id/password` | `{ \"currentPassword\": \"…\", \"newPassword\": \"…\" }` | `{ success: true }` |\n| `PATCH /auth/users/:id/admin` | `{ \"isAdmin\": true }` | `{ id, username, isAdmin }` |\n\nРегистрация и вход доступны без токена. Для остальных методов передавайте `Authorization: Bearer <accessToken>`. Регистрация создаёт обычного пользователя с новым `id`; поля `id`, `passwordHash`, `isAdmin` и `sessions` в запросе запрещены. Имена пользователей уникальны с учётом регистра; повторная регистрация того же имени возвращает `409`. Имя должно содержать хотя бы один непробельный символ и не более 256 символов, пароль — от 1 до 1024 символов. Пробелы по краям не удаляются. Регистрация не создаёт сессию: после неё выполните вход.\n\nПользователь меняет только свой пароль, передавая `currentPassword` и `newPassword`. Для администратора при смене своего пароля действует то же правило. Администратор может сменить пароль обычному пользователю, передав только `newPassword`. Изменение пароля другого администратора возвращает `403`. После успешной смены завершаются все сессии этого пользователя, включая текущую при смене своего пароля; требуется новый вход. Неверный текущий пароль возвращает `401` без изменения сессий.\n\nСтатус `isAdmin` меняет только администратор. Можно назначать других администраторов и снимать с них статус. Снять статус с себя можно, только если остаётся другой администратор; иначе возвращается `409`. Проверка учитывает параллельные запросы. Новые права действуют с прежними токенами сразу после сохранения, в том числе для мутаций GraphQL. Администратор может снять статус с другого администратора, а затем сменить ему пароль как обычному пользователю.\n\nНедействительный или истёкший токен возвращает `401`, недостаток прав — `403`, отсутствующий пользователь при разрешённой операции — `404`. Ошибки тела запроса возвращают `400`. Вход, регистрация и смена пароля могут вернуть `429` при превышении числа одновременных вычислений паролей; вход также возвращает `429`, если уже есть 10 000 активных сессий среди всех пользователей, включая загруженные из источника. Выход завершает только сессию переданного токена.\n\nПри включённой аутентификации у каждой записи модели доступен виртуальный объект `actions`. Он вычисляется для текущего пользователя и не сохраняется в базе. В REST его нужно явно запросить через `scope`:\n\n```json\n[\n  {\n    \"id\": true,\n    \"actions\": [{ \"*\": true }]\n  }\n]\n```\n\nОбъект содержит `update`, `replace` и `delete`. Владелец или администратор получает `true`, а анонимный или посторонний пользователь — `false`. Записи без `createdById` изменяет только администратор. Без токена чтение остаётся открытым, а флаги равны `false`. Переданный недействительный токен возвращает `401` в REST или `UNAUTHENTICATED` в GraphQL.\n\nВ GraphQL то же поле выбирается обычным способом:\n\n```graphql\nquery {\n  itemList {\n    data {\n      id\n      actions {\n        update\n        replace\n        delete\n      }\n    }\n  }\n}\n```\n\n`actions` доступен у корневых и связанных записей моделей, включая результаты мутаций. Его нельзя записывать, фильтровать или сортировать. Обычные вложенные объекты и ответы методов аутентификации это поле не получают.\n\nКогда настроен `openapi`, его документ описывает маршруты аутентификации, необязательную Bearer-аутентификацию при чтении записей, обязательную при изменениях и поле ответа `actions`. В Swagger UI токен из ответа на вход можно вставить в **Authorize**. Для экспорта схем включите аутентификацию в конфигурации и выполните `npx deep-json-server server.config.mjs --generate-only`; файл учётных записей при генерации не читается. Методы аутентификации доступны через REST. В GraphQL тот же токен проверяется при чтении прав и изменении записей. Для GraphQL и OpenAPI нужна `database.schema`.\n\n## Даты записей, удаление и владельцы\n\nОбщие настройки задаются в корне схемы. В этом примере модель `Note` наследует мягкое удаление и отключает даты:\n\n```json\n{\n  \"timestamps\": true,\n  \"softDelete\": true,\n  \"models\": {\n    \"Note\": {\n      \"collection\": \"notes\",\n      \"timestamps\": false,\n      \"fields\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"primary\": true,\n          \"generated\": \"uuid\"\n        },\n        \"text\": {\n          \"type\": \"string\",\n          \"required\": true\n        }\n      }\n    }\n  }\n}\n```\n\nПриоритет: модель → корень схемы → `false`. Явное `false` отключает унаследованную настройку. Без схемы даты и мягкое удаление выключены.\n\n| Поле | Когда включено | Значение |\n|---|---|---|\n| `createdAt`, `updatedAt` | `timestamps` | Даты создания и последнего изменения |\n| `deletedAt` | `softDelete` | Дата удаления или `null` для активной записи |\n| `createdById`, `updatedById` | `auth` | Создатель/владелец и последний редактор |\n| `deletedById` | `auth` + `softDelete` | Пользователь, удаливший запись, или `null` |\n\nДаты записываются строками ISO 8601 в UTC. У новой записи даты создания и изменения совпадают; при включённой аутентификации создателем и последним редактором становится текущий пользователь. PUT/PATCH сохраняют создателя и дату создания. DELETE обновляет поля удаления, а также дату и автора последнего изменения, если соответствующие функции включены. Для старых записей с неизвестными датами или авторами возвращается `null`. Эти поля доступны только для чтения в REST и GraphQL; обычные вложенные объекты собственных полей дат и авторства не получают. Отключение функции не удаляет её ранее сохранённые значения.\n\nПри мягком удалении DELETE оставляет запись в базе. Повторный DELETE уже удалённой записи сохраняет прежние сведения об удалении. Получение по первичному ключу возвращает и удалённые записи. Успешный PUT/PATCH восстанавливает запись, обнуляя `deletedAt` и `deletedById`. Пустой PATCH восстанавливает без замены остальных полей; PUT следует обычным правилам замены.\n\nСписки по умолчанию возвращают активные записи. Для получения удалённых задайте условие по `deletedAt`:\n\n```json\n[\n  { \"id\": true, \"deletedAt\": true },\n  { \"where\": { \"deletedAt\": { \"ne\": null } } }\n]\n```\n\n`eq: null` выбирает активные записи, `ne: null` — удалённые, объединение обоих условий через `or` — все записи. Те же фильтры работают в GraphQL. Явное условие по `deletedAt`, в том числе внутри `and`, `or` или `not`, заменяет автоматическую фильтрацию на этом уровне. Фильтры связей и списки связей применяют правило независимо. Одиночные связи скрывают удалённые цели; запрос по первичному ключу позволяет получить их напрямую.\n\nКаскадное удаление учитывает `onDelete` и настройку `softDelete` каждой затронутой модели. Восстановление записи, начавшей каскад, возвращает записи, удалённые той же операцией, не затрагивая удалённые ранее. Физически удалённые записи восстановить нельзя. Если каскад удалил вложенный объект, восстановление возможно, пока соответствующее поле объекта не менялось после удаления. Конфликт или отсутствие обязательной связи отменяет всю операцию.\n\nСлужебные данные для восстановления хранятся вместе с записями и сохраняются после перезапуска; включайте их в резервную копию базы. Внутреннее поле `djsDeletion` зарезервировано и не выдаётся через API.\n\nПри включённой аутентификации создавать записи может любой вошедший пользователь. Изменять, удалять и восстанавливать — владелец по `createdById` или пользователь с `isAdmin: true`. Записи без владельца изменяет только администратор. Его правки не меняют владельца. Правила действуют на вложенные записи, изменение ключей связей, каскады и восстановление.\n\nСсылка через объект только с первичным ключом или объявленный хранимый ключ не требует владения неизменяемой целевой записью. Вложенный объект с дополнительными полями требует права изменять её. При изменении обратных связей нужны права на каждую запись, чей хранимый ключ меняется.\n\nИзменение записи вместе с вложенными изменениями атомарно: отказ в правах сохраняет прежнее состояние всех записей, затронутых этим изменением. В GraphQL это относится к отдельному полю мутации; выполнение операций с несколькими полями описано в разделе [GraphQL](#graphql).\n\nREST возвращает 401 при отсутствии действительного токена и 403 при недостатке прав. GraphQL проверяет мутации по тем же правилам и возвращает коды `UNAUTHENTICATED` или `FORBIDDEN`; токен получают через REST-вход и передают в `Authorization: Bearer <token>`. GraphQL-запросы чтения, OPTIONS и все операции с файлами остаются открытыми.\n\n## Файлы\n\nФайлы доступны через REST и появляются в документе OpenAPI, если настроена секция `openapi`. Добавьте хранилище в конфигурацию:\n\n```js\nexport default {\n  storage: 'file',\n  database: { source: './database.json' },\n  files: { source: './uploads' },\n};\n```\n\nЗапустите сервер:\n\n```bash\nnpx deep-json-server server.config.mjs\n```\n\nДля временных тестов выберите `storage: 'memory'` и передайте массив в `files.source`. Каждая начальная запись содержит `name`, `mimeType`, бинарное `content` в виде `Uint8Array` и необязательный `directory`. Загруженные файлы в таком режиме остаются в памяти до завершения процесса.\n\nОдин файл отправляется непосредственно в теле запроса. `Content-Name` содержит URI-кодированное имя файла, `Content-Type` — его MIME-тип, а необязательный `Content-Directory` — URI-кодированный относительный путь к директории:\n\n```http\nPOST /_files/storage\nContent-Name: shadows-of-ardenia.jpg\nContent-Directory: posters\nContent-Type: image/jpeg\n\n<binary body>\n```\n\nНовый файл возвращает статус `201` и вычисленные метаданные:\n\n```json\n{\n  \"directory\": \"posters\",\n  \"downloadUrl\": \"/_files/download/posters/shadows-of-ardenia.jpg\",\n  \"metadataUrl\": \"/_files/metadata/posters/shadows-of-ardenia.jpg\",\n  \"mimeType\": \"image/jpeg\",\n  \"name\": \"shadows-of-ardenia.jpg\",\n  \"size\": 182340,\n  \"url\": \"/_files/storage/posters/shadows-of-ardenia.jpg\"\n}\n```\n\nИмена файлов и каждый сегмент каталога проверяются одинаково: запрещены управляющие символы, `<>:\"/\\\\|?*`, точка или пробел в конце и зарезервированные имена Windows, например `CON` и `NUL`. Сегменты каталога разделяются `/`.\n\nСочетание `directory` и `name` идентифицирует файл. Повторная загрузка по существующему пути возвращает `409`. Чтобы заменить файл, передайте `Content-Override: true`; успешная перезапись возвращает `200`. Сервер поддерживает следующие файловые маршруты:\n\n```text\nPOST   /_files/storage      Загрузить или заменить файл\nGET    /_files/storage/*    Получить содержимое файла\nPATCH  /_files/storage/*    Переименовать или переместить файл\nDELETE /_files/storage/*    Удалить файл\n\nGET    /_files/metadata/*   Получить метаданные в JSON\nGET    /_files/download/*   Скачать файл как вложение\n```\n\nДля переименования, перемещения либо обеих операций отправьте JSON-объект. Нужно указать хотя бы одно поле:\n\n```http\nPATCH /_files/storage/posters/shadows-of-ardenia.jpg\nContent-Type: application/json\n\n{\n  \"directory\": \"archive/posters\",\n  \"name\": \"ardenia-shadows.jpg\"\n}\n```\n\n`PATCH` возвращает обновлённые метаданные со статусом `200`; если по новому пути уже существует файл, сервер возвращает `409`. `DELETE` отвечает статусом `204` без тела. Если файл не найден, любая операция по пути возвращает `404`. Пути в URL задаются относительно `files.source`, а все возвращаемые URL — относительно адреса сервера.\n\nПри хранении на диске бинарный файл находится по пути `<files.source>/<directory>/<name>`. Метаданные по умолчанию хранятся в `<files.source>/.files.json`; другой путь можно задать через `files.metadata`. Директории и файл метаданных создаются по мере необходимости.\n\nПути внутри каталога файлового хранилища не могут содержать символические ссылки. Загрузка и переименование не могут перезаписать базу, её блокировку, счётчики, схему, учётные записи, загруженную конфигурацию или файл метаданных. Для ручного изменения файлов или метаданных остановите сервер. Общие дисковые источники защищены блокировками, описанными в разделе [хранение данных](#хранение-данных).\n\nОтправляйте файл как бинарное тело запроса. В браузере для этого можно использовать `xhr.send(file)`, а прогресс отслеживать через `XMLHttpRequest.upload.onprogress`. Максимальный размер по умолчанию равен 100 МиБ и настраивается через `server.maxFileSize`. Отсутствующие или небезопасные заголовки и пути возвращают `400`, превышение лимита — `413`, а отсутствующий, некорректный или не поддерживаемый Fastify `Content-Type` — `400` либо `415` в зависимости от этапа проверки.\n\n## Программный API\n\n```js\nimport { createServer } from '@kollors/deep-json-server/server';\nimport config from './server.config.mjs';\n\nconst facade = await createServer(config);\nconst server = facade.fastify();\nawait server.listen();\n// await server.close();\n```\n\n`fastify()` возвращает экземпляр сервера для настройки и запуска. База и включённые сервисы инициализируются при `ready()`, `listen()` или первом `inject()`; ошибка инициализации останавливает запуск.\n\n`createServer(config)` принимает тот же объект конфигурации, что и CLI. Для методов `openapi()` и `graphql()` нужны `database.schema` и соответствующая секция конфигурации. OpenAPI также требует `package.source`. Оба метода возвращают документы схем и не записывают файлы.\n\nПолученный экземпляр Fastify принимает обычные параметры `listen()`, включая путь Unix-сокета. Вызов `listen()` без параметров использует `server.host` и `server.port`.\n\nЭти функции доступны и через общий импорт `@kollors/deep-json-server`. Адаптеры сервера загружаются при включении. Генераторы можно использовать отдельно:\n\n```js\nimport { generateOpenapi, writeOpenapi } from '@kollors/deep-json-server/openapi';\nimport { generateGraphql, writeGraphql } from '@kollors/deep-json-server/graphql';\n\nconst document = await generateOpenapi('./schema.json', { files: true, packagePath: './package.json' });\nconst sdl = await generateGraphql('./schema.json');\nawait writeOpenapi(document, './generated/openapi.yaml');\nawait writeGraphql(sdl, './generated/schema.graphql');\n```\n\nОтдельные генераторы принимают путь или объект схемы и не требуют конфигурации сервера. Если корневой `api` не задан, `generateOpenapi()` использует REST по умолчанию, а `generateGraphql()` — GraphQL. Явные значения `api` в корне и у моделей сохраняют силу; для выбранного формата нужна хотя бы одна доступная модель. `timestamps` и `softDelete` берутся из схемы. Опция `{ auth: true }` добавляет поля владельца и `actions`; OpenAPI также описывает маршруты аутентификации и требования токена. `hashPassword()` доступна и через общий импорт пакета.\n\nДля `generateOpenapi()` обязателен `packagePath`; дополнительно доступны `host`, `port`, `pageSize` и `maxPageSize`. Метаданные OpenAPI читаются из указанного пакета. Сервер и генераторы работают с собственной копией модели. Размеры страниц должны быть положительными целыми числами; `pageSize` не может превышать `maxPageSize`.\n\n## Хранение данных\n\nИзменения выполняются последовательно внутри экземпляра сервера и проверяются на копии данных до сохранения. Счётчики `increment` хранятся рядом с базой в `<database path>.counters.json`; сохраняйте этот файл вместе с базой. Номера резервируются до записи данных: сбой может оставить пропуск, но не приводит к повторной выдаче номера.\n\nДля каждого записываемого дискового источника используйте один процесс сервера. Второй сервер с общей базой, файлом пользователей, каталогом файлового хранилища или метаданными не запустится. Для блокировки рядом с источником создаётся JSON-файл: например, для `database.json` — `database-lock.json`. Последнее расширение имени источника заменяется на `-lock.json`. Файл содержит тип блокировки, PID процесса и токен владельца.\n\nПри закрытии сервера файлы блокировок удаляются. После аварии ОС освобождает блокировки, а следующий сервер использует оставшиеся файлы. Дисковые блокировки работают через нативную зависимость `fs-native-extensions`; хранение в памяти и генерация схем её не загружают. Если источник задан символической ссылкой, сервер блокирует и путь ссылки, и целевой путь. Перед ручным изменением любого хранилища остановите сервер.\n\n## Разработка\n\nИсходники разделены на `rest`, `graphql`, `openapi`, `auth`, `files`, `cli` и `server`. Общая модель, хранение, запросы и правила изменения записей находятся в `core`. Модуль `server` подключает остальные; генераторы схем загружаются независимо от HTTP-сервера.\n\n```sh\nnpm ci\nnpm run verify\n```\n\n`npm run verify` сначала проверяет рабочие зависимости через `npm audit`, затем запускает проверку типов, линтер, тесты с порогами покрытия и проверку установки пакета из архива. Для установленного пакета проверяются публичные типы, запуск CLI с HTTP-запросами и восстановление после аварийного завершения процесса.\n\nДля предварительной версии обновите номер в `package.json` и `package-lock.json`, затем отправьте коммит в `main`. Для стабильного релиза дополнительно отправьте тег `v<version>`, например `v1.0.0`. Сервер и CLI читают номер версии из метаданных пакета.\n\nGitHub Actions выполняет полную проверку на Linux, Windows и macOS с Node.js 22, 24 и 26. Публикация начинается только после успеха всех девяти запусков. Для предварительных версий тег создаётся автоматически, а пакет публикуется в канал `alpha`, `beta` или `rc`; стабильные версии попадают в `latest`. npm проверяет подлинность запуска через trusted publishing, поэтому хранить npm-токен в секретах не требуется.\n\nЛицензия: MIT.\n","readmeFilename":"README.ru.md"}