{"_id":"@trapi/query","_rev":"23-8d18b49a62354ee258d1793787595020","name":"@trapi/query","dist-tags":{"latest":"2.1.5"},"versions":{"0.0.1":{"name":"@trapi/query","version":"0.0.1","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"_id":"@trapi/query@0.0.1","_nodeVersion":"16.7.0","_npmVersion":"7.19.0","dist":{"integrity":"sha512-Q+k1X/5pBWiFqkmw20cSe2adfnQxfsVbWwbJfXenvxnz71FPLpPWU+s/HDCFeUF50UlQ0RDaC02u2VhNGJ6puQ==","shasum":"da63e021e4ecd113c7554b85a4912a113467eea0","tarball":"https://registry.npmjs.org/@trapi/query/-/query-0.0.1.tgz","fileCount":26,"unpackedSize":23998,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCO5ImBOMicl7eVL80NAtK2JyBPA+fXccG+a5eXsiTnqAIgPDcy8s61EmPPcoiEnEsyExDtuvCGyipRTrzZryr+acI="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_0.0.1_1633075332442_0.529575862951978"},"_hasShrinkwrap":false},"0.0.2":{"name":"@trapi/query","version":"0.0.2","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"f931516f93b31fa0fc3c04926713a6cc91680f39","_id":"@trapi/query@0.0.2","_nodeVersion":"16.7.0","_npmVersion":"7.19.0","dist":{"integrity":"sha512-wsx+2G4InizASvgMxsyNIHoiOMCyrTNSH1PHAtS64hKOkPsAiy/7AdonJPYgVQm8bkAUqDs3alYJTvnHiQUooQ==","shasum":"791ba74f1f121d66754cc4871ffa3837ad1d1861","tarball":"https://registry.npmjs.org/@trapi/query/-/query-0.0.2.tgz","fileCount":26,"unpackedSize":24043,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDl7S6zTtWmGBQtfgNz6hq6+ZYL0nU01mzYFyNWx4VYogIgZjJN7q/dAbM8j6LDqxXgG8TDNdzN0YuqVL2vEibQmXw="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_0.0.2_1633075956565_0.5997871431104556"},"_hasShrinkwrap":false},"1.0.0":{"name":"@trapi/query","version":"1.0.0","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"4355a7f0d19c3df26929981011a621e7f70590e6","_id":"@trapi/query@1.0.0","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-8MAFgHOKjjKFfKJ/FB36+Yb7h92Vefzvbn002wKh57AhnkTKGb90Uw7gaqUbxAgbfhECkiIAtawCNG5p99w4vw==","shasum":"6c5dabaf0ba637cdfff8e2d887c8c6e962f8b70f","tarball":"https://registry.npmjs.org/@trapi/query/-/query-1.0.0.tgz","fileCount":118,"unpackedSize":100831,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGaV84a2bzCoG9vykmRMi5sXNFm/XpoijP0bOqraHesyAiAZOCgnIGG2ea1Si/iMASVG+40z1lRoizQqVNRF1kwcSg=="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_1.0.0_1633098307058_0.8624422052657137"},"_hasShrinkwrap":false},"1.0.1":{"name":"@trapi/query","version":"1.0.1","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"4355a7f0d19c3df26929981011a621e7f70590e6","_id":"@trapi/query@1.0.1","_nodeVersion":"16.7.0","_npmVersion":"7.19.0","dist":{"integrity":"sha512-NxfhvPN2b+MlKcbqs+yJJ9YxPjKabLxDvSAHjRCK64uNOziEVgrRyfLiNwgfYLwsF3itp3xssPOkEk7/sFaRRg==","shasum":"1bb3035889047c426816c87ea1b28f4810815d03","tarball":"https://registry.npmjs.org/@trapi/query/-/query-1.0.1.tgz","fileCount":118,"unpackedSize":100831,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAkRpe5HmRIGkc0KpsCwxu5ZNZp3/7OHlOhkrTjocAskAiEA0dBqKGQBAD6/zSotmjxuChjRThD8yTi4UQDyHA8Y4f4="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_1.0.1_1633098432995_0.57032740548011"},"_hasShrinkwrap":false},"1.0.2":{"name":"@trapi/query","version":"1.0.2","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"fbabb84192fbfbf8744f0e17d109ecb23992ef9c","_id":"@trapi/query@1.0.2","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-xxT+UnDwDjn+kcoEHxCvTDufs1aQ5rZco+Rli0W8gWG6s58hLWZBRXXYWxd0wLSGZxweNcyKEfrz4vdFE51Oiw==","shasum":"a6c75714cea06975b73b1713c669eba23cd77ffa","tarball":"https://registry.npmjs.org/@trapi/query/-/query-1.0.2.tgz","fileCount":118,"unpackedSize":101878,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyDXhlgY8uBrveV5363Llf+bupoqijREj9pMJU2trudgIhAL3suUh0kikgug+6RPw5+N5cVaX/C6JCGyBjcbqZoxTO"}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_1.0.2_1633100483456_0.47480492184992995"},"_hasShrinkwrap":false},"1.1.0":{"name":"@trapi/query","version":"1.1.0","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"91fda58914c6ec3337fada8afa4b3f0cbe331a1e","_id":"@trapi/query@1.1.0","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-bWqdIb+AxLs//MHyAynYwtHeJGkYeFuN/M3A/U4v1jh5Q8HS3yb5j1eiQdRBhwQ5XLGib+FeBT1AXDeDwCGkBw==","shasum":"45fc815993af09d1232c04b36a2b9f20695db841","tarball":"https://registry.npmjs.org/@trapi/query/-/query-1.1.0.tgz","fileCount":126,"unpackedSize":123441,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2ddEzEo57ifSv7hJVA+D4UpxeZdwQRLDGAspWePxP7wIgLfq6rc2FaOclM9PqTM9Ejca5/uH+T15g4OilgCM7hrc="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_1.1.0_1633203886266_0.013047956703509112"},"_hasShrinkwrap":false},"1.1.1":{"name":"@trapi/query","version":"1.1.1","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"9cfbe2c6cd88204e5905170be27f8a368d93836f","_id":"@trapi/query@1.1.1","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-fMDqa2N9b83Gb4WRC+YWifMAIpNC38l9s88nOXq1lqYV4CcscKZVDHvmlmGzsRqhNBuhF0oeq5UxheV7/cE9gQ==","shasum":"1664e5ceb6686cd8f621a4bf3c2ce4623199c892","tarball":"https://registry.npmjs.org/@trapi/query/-/query-1.1.1.tgz","fileCount":126,"unpackedSize":123455,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID8W6aPdEhd5+4R6x6D0Co7I9HnFdpbllwWa13DuVi4XAiA3F6vfiR/nkOEREE5y2E9FNGpB4SCXW24xzfpdn2EmxA=="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_1.1.1_1633204186693_0.22665141000539735"},"_hasShrinkwrap":false},"1.2.0":{"name":"@trapi/query","version":"1.2.0","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"53d75cb70b5318468097755a5f08e92e36997fcf","_id":"@trapi/query@1.2.0","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-J9UtYr/VWIwflvCNQ8XWRpLbWhUaPu6nh1TW6wGASI/Dq/r/4TBifw/Xi8zo7Mus8SEzyCSCOLgaLMBjok//wA==","shasum":"6b43f9b10de4c21bb27dd1c961558079c12480c3","tarball":"https://registry.npmjs.org/@trapi/query/-/query-1.2.0.tgz","fileCount":142,"unpackedSize":132080,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNuQJgNX/bLVjklQ1M37+6RIUwW9EcesOTAKnOb0TO3AIhAKfw1AKGY0MswXR/DFkF/LghJOPfRsnyUoacPvrn+1Rr"}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_1.2.0_1633258893797_0.6506535532583169"},"_hasShrinkwrap":false},"1.2.1":{"name":"@trapi/query","version":"1.2.1","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"e350a426c8e039f50766de9a896beac44433d827","_id":"@trapi/query@1.2.1","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-SXmaVCxRG0xM5+DXeb0JEa9uo+DGTIP/giXFE7Qc81QuWSvY4Yf8etIgKwYFhs4fEzWAesMT3BCY80CwKJNonQ==","shasum":"185875b4ce20f0a13775721e4432e5725569faa6","tarball":"https://registry.npmjs.org/@trapi/query/-/query-1.2.1.tgz","fileCount":142,"unpackedSize":132100,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG2a1Qcd2QIOjfU4jt6L8MEoPrhDxUUYpnOHENkXELxyAiACUzjuOmVVtGmgET3PJHzYHiwqtpwuv8z42N4UIvMgeg=="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_1.2.1_1633266015935_0.2894902970717259"},"_hasShrinkwrap":false},"2.0.0-alpha.0":{"name":"@trapi/query","version":"2.0.0-alpha.0","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","minimatch":"^3.0.4","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"303ee7a8f681e252c4a746860013b68e2b432b3a","_id":"@trapi/query@2.0.0-alpha.0","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-KuCkzutTi3CAZveVfOMCTKYssADfocBtuiYoeo53fWZskhnifOM8PSV8M5BTn/eH7NtLCNNgpE1K3joXcF2d0g==","shasum":"14329ffbc41785886598f94704cf87f0185a92b0","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.0.0-alpha.0.tgz","fileCount":166,"unpackedSize":146423,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTVHwVAYAvEHU0aAn0gINE72zMnvNvVDymjzIPecnaqAIgQnbaz6er80XyHM0Fvdy4eFuzVxnLz/uaqqsfGRqSOFo="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.0.0-alpha.0_1633348998309_0.5757044917947718"},"_hasShrinkwrap":false},"2.0.0-alpha.2":{"name":"@trapi/query","version":"2.0.0-alpha.2","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","minimatch":"^3.0.4","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"04d3af193f81064c22578697b978a50563934cc4","_id":"@trapi/query@2.0.0-alpha.2","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-Zgviq84CII7wg4zqH/otqpw/J9UX0qjR7wjWhx6KHceBJIeVc7v8Yl4C3/AyU3RrpAt0PpStl7W9ffp/MLATVg==","shasum":"fed729730da01b8db7b60ad9b258f3f35514de9e","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.0.0-alpha.2.tgz","fileCount":166,"unpackedSize":148012,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF22UrNHV87hBoyaK8WStHyCGJEstWbEV+gWO4G0DZGvAiADGj4gwxuW4YHu/vDaD16VXPIx6ZVDYTzinFdBS/eD9Q=="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.0.0-alpha.2_1633357803145_0.906873772126735"},"_hasShrinkwrap":false},"2.0.0-alpha.3":{"name":"@trapi/query","version":"2.0.0-alpha.3","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","minimatch":"^3.0.4","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"2fe4c08d420bfd423ce87eb1a978478772d9730e","_id":"@trapi/query@2.0.0-alpha.3","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-CYTnJo8JpoQaUSE16eYQhkcbPMGBTQGF7U0aFmGSTS1fSOcBu1AnPKx37P12Q8UNGlehpy1ZwGPEaqcZP9UxfA==","shasum":"01929af285acf425f76836843676f3303db8734c","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.0.0-alpha.3.tgz","fileCount":166,"unpackedSize":149451,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB1z9eWzxIHWXLafFiAwOd3z2C5ikADu5MA3gyX6NqHTAiBOyZ4SMIPyafNOyGyWptLsPUkGECu69+sJdJhNv0v+8g=="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.0.0-alpha.3_1633358640800_0.3966603075104149"},"_hasShrinkwrap":false},"2.0.0":{"name":"@trapi/query","version":"2.0.0","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","minimatch":"^3.0.4","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"4f2bc542708ccfd55d64efa0cc55a5eafea14f63","_id":"@trapi/query@2.0.0","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-VleQYwASTnkow+i3dN8aXr4ajNOfGgUOX2BWWrZCdc79uT/iKtZaysDgUffcz+nZCzvA2pdCPTcowf+0JFl5yw==","shasum":"7437020b3fc7ac15ef11a055b9417b40382eea20","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.0.0.tgz","fileCount":166,"unpackedSize":149480,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICIl+TVyI4Qd7LBI5TbsmQZxZieYOXqpK2q7lws7lRcxAiEAoiDV+gh5VCu6lolkJGv9PESuDrZfCIJLH25QK6GIrBg="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.0.0_1635062389353_0.8865819961867534"},"_hasShrinkwrap":false},"2.0.1":{"name":"@trapi/query","version":"2.0.1","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"tadashi@animesu.net","url":"https:/github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.2","@types/node":"^16.0.1","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.0.5","minimatch":"^3.0.4","ts-jest":"^27.0.3","ts-node":"^10.0.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.4.3"},"gitHead":"d56eb2f242b01454a8aa04f5bb9e61e947adb004","_id":"@trapi/query@2.0.1","_nodeVersion":"16.7.0","_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (win32)","dist":{"integrity":"sha512-hP6Dj2boFPmpGOZGMBu1qRYxhW7OfnfKHW9A0fhWp9nCHb2tsVIOaX2nJuKOc5ZEx+G6Wo/B3idSpSGSfaSg2w==","shasum":"0807c6ee7251d2b9744d37dd8c94bd757e9b0aa0","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.0.1.tgz","fileCount":166,"unpackedSize":149652,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOkXTfno7U2kPW/HoTscEobw8r7rT2mtyExYGQMhUTvAiEA7hW2nCDlEcy7joXgmCUdPtvfCpdXMUcsPwPnsaz2aps="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.0.1_1635090920424_0.2605507796154971"},"_hasShrinkwrap":false},"2.0.2":{"name":"@trapi/query","version":"2.0.2","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.3","@types/node":"^16.11.12","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.4.5","minimatch":"^3.0.4","ts-jest":"^27.1.2","ts-node":"^10.4.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.5.4"},"publishConfig":{"access":"public"},"gitHead":"7f9df1564b6d986915fa819ae172e983d734df9b","_id":"@trapi/query@2.0.2","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (win32)","dist":{"integrity":"sha512-ooDVNM0ESAY7LrcNa7FaopQ/FGLFxBhTVGuO1OYAe+9W9heRY/jdL2hX4gJ3U2tMYeZhPcl3oV1KwnbDVNbgPg==","shasum":"690a150b43fb5a8c004c14bfa89d8239c33dbe76","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.0.2.tgz","fileCount":167,"unpackedSize":152137,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvy3mCRA9TVsSAnZWagAAblwP+wXTX3pjOw3RwR94dSs1\n81DDJ4hToBoumdYkvVIsr5N9eQ2MU9mCLihsQAMZ822shwviERoCXAr2q/wV\ntUueGtIZIgqP2KYQOyYMwLsqBGZZEVngMguZcOn+Z0gyYPltnjQXxukBmiWk\nHP7IMlG7vR9S/21YOYVPdcCikTSiNelXsX9Ne5p02eoUpi5+Y9xL9PxuW5LK\nwcQYnSMe+5pM+5C0o/x/J2N1nG2fmdspBTt3s310flMyA+Dw0AlLFVOMLvB9\nHulXK6qqyTFIot7eMwyru41bgVq2OD/qwb7Y14c3XBbGhpaOWMXAIDs0itWH\n54oWMOM5A6XgXFi8tqWfdkLhgrsjlpS32N9/4cLKsna403T5KK0qWxV/R+JZ\nplZMSShraBVi6WNcnCB6fS/WmX4Y39GqEkGNHhI7S2iUrZDHe3+yvjdvEWyj\nwLVEZwgS9dfTFDcw50VxCxgrVg1Y1cUCLPCX9V3GiYm9QytYkVGJgIWHDMaT\nWAfTFcjeSmZja7xmx+XcteGOJ2yaYk214r1Rt/BMwa16y9K9bUWhzCQrirTz\nDclFheWXJo27Kz1KYHYwv+pmgltpMzdpIDeyDKl3+rQLTEGRpQ8SxnZb91oY\nfW4tQ4n1a+uZL+EswM6bI+75q3yeq2pUrXU/Ts5xuE1cOI1/6S41oflS10JN\nUiS+\r\n=M5v5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDka0lk2LuITKbYXL8/PApLLhTuApam+zViyqUxi83iBAIhANCuP5T5+bQbkHy5p6k08oU4vfSDSl71/4G+0x3+em7m"}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.0.2_1639919078453_0.9369838550669669"},"_hasShrinkwrap":false},"2.0.3":{"name":"@trapi/query","version":"2.0.3","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.0.3","@types/node":"^16.11.12","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.4.5","minimatch":"^3.0.4","ts-jest":"^27.1.2","ts-node":"^10.4.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.5.4"},"publishConfig":{"access":"public"},"gitHead":"e10babc473afc65c969d9b8323e4524e26164480","_id":"@trapi/query@2.0.3","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (win32)","dist":{"integrity":"sha512-4N7pQyCPQfkd/LyKhowNVdgQMkhTdxPO9Yb4qrl0AGlPL3Duhu8vexZaQeBRSiPxQ/3giHM1OYRYHDk6hGtLGg==","shasum":"7e0679afc7f513145ed220a4826680c749f518d2","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.0.3.tgz","fileCount":167,"unpackedSize":152623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvzfOCRA9TVsSAnZWagAAdJcQAJkC+hyxRJo70VgLEByq\nKLs6SgrNKIAdjIzpKlssbAdHZ0wAtcySgfpWPPhBU5IkWYAewQ9wCs7V41RV\nvcAflVn/T4++e5F2yIgjzfVbxWdKb2+lX9Wg2lmJrh9pwIRF7fa0G4p9BezB\nlZ1Bm4J4ehOMDc62QpAIWAvunEjXYzYHmS3uPdJp4SsBj8G8cGEzRv0DOi66\neJzDxIvsdmUDwhDZEIDlLsp8zQPKgrl1nCzctwAKlw+5qCIwyd050X9OPlcD\n9E2rjk022w8whWwNyGGA9Wk2Box+KfNxrv8vYp9adQsuzagMgNAypJWnqU7L\nX9z9kPxDHWN1/V6aPJbIN+rcQjfJK96/jpzXmal436BOMldH+pQG9WSBExf3\nyFG/9uxGxsneZmuPp+Rs+tVRd5lQt8xVrCjQEJMddVkSn5hiRt09TQd+TCfA\nKVYokk+4lsDcZFCWM3sx/pbCpN7OMEvme9z/0LPYdDoid2klhmhLA9sNPeFy\ntmFkIxyoZVlTEXVrBHeYxaDQl7N3iGu+qaQDQ8o1/juU9KpAfevVWhwF7ATX\nfwSRkVDqKIXXFOq1jS+r9fd2zop0YhW+Cl2w9dfRZNaIEYlld/7Ff7bCftks\nJkH0pFyzsyrTP3D/LW0tVpIgl7I8h/ar1sBiVb18q+ig3nou1fpgE5GaFqUh\nFsEa\r\n=8KfE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQLYUFCW3AdMOb/YMPfZHNy7Z/FK1NOkTEwgAk1JnyWgIgXSlXap8VG1NmyGx7Ok5iITVf9m6T5V1jKABUQqcqcaA="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.0.3_1639921613994_0.5951312227948868"},"_hasShrinkwrap":false},"2.0.4":{"name":"@trapi/query","version":"2.0.4","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.4.0","@types/node":"^17.0.14","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.4.7","minimatch":"^3.0.4","ts-jest":"^27.1.3","ts-node":"^10.4.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.5.5"},"publishConfig":{"access":"public"},"gitHead":"f8ebabe5794093769ba5bf9fa4542544c06a0179","_id":"@trapi/query@2.0.4","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (win32)","dist":{"integrity":"sha512-ZpBGbF4RqQSWcUvuF4bTvcwbeDnk5jF5bIZorA5Lep9jNXwseE0BU03F8T6iLA5UiU/ET/JyoAter1IxCdbxqQ==","shasum":"7a8702b94865fb1c554bbec21e4527ce956a17eb","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.0.4.tgz","fileCount":167,"unpackedSize":153028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/qEvCRA9TVsSAnZWagAA154QAJ3FJuAy5F0/yUPM/2do\nTRRMGkpLGWs4alvdui/M6H51tk4o84ionzu1fC0RX5dubtFnhihxU9fO/te0\nUnjuwPQvNINDsAFOovNoVAZ5YlETkMt3/DpAdHLzZr9QTPuWRsy3ucMrWQvP\nB1+Z5DEGv34b9hLF78flFKNu5CDgctiH8Q4dGzBpo4h1sx7G+mTrBcZvlKtC\nTSloTW6mCOGHitC58q3Ls+q3Wv84Omn6KMsIsOmzfspqnFmkNMN+eH5MuFxE\nl0I59vJuy5mX3LQRC8sZLxy6ClQV/m9rgjATsn2nGHlniApRveIlplXn9dVE\n8lfV4Ndj9ELKsk2E+WEuKid855sMEDS9lftJNhS8e0dNera1pMGGHRkUJKu7\narK7gpxuNxeFj/c6eh6CNV3jXPiplM0oy8/UGH3/35M3JDAs85+RsVZdkm2n\n2MBQlabGz3ma6tJF60Gtegti+h6+Oxt2bo4s5dm+4S4+TkEYKIbJ7FSFpF69\ntobiXQQQO25Y5BUvqr5/2bhww6JcBwC+UDTWmiqX3ovGzbFg8m3mzpUSoJcO\nlU1/TyvVqerg7EApA+sd6xUS+fZsnNv3BmAMMo45jk1xzpXp8p6MSf4bDbiS\nhYPUW6pHls6lu5LONAbkckxErf18la08g91c8UQPaxEzbZ6e8/EiEJ16KvJV\nrvw8\r\n=z2uE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGlHJGBDzchAu4eQTFRP1eRssFytcQ6d51FO0LD/EIp0AiAmDBajWNZIYaACY4qM+vpP6hoY0g91yT1PKAVMv/M7tg=="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.0.4_1644077359639_0.5696722328224986"},"_hasShrinkwrap":false},"2.0.5":{"name":"@trapi/query","version":"2.0.5","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.4.0","@types/node":"^17.0.15","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.5.0","minimatch":"^3.0.4","ts-jest":"^27.1.3","ts-node":"^10.4.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.5.5"},"publishConfig":{"access":"public"},"gitHead":"9b5fb1a7dabaaa4c4ec2e5f6e8f44cb648451045","_id":"@trapi/query@2.0.5","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (win32)","dist":{"integrity":"sha512-SFEufj9+5uxjCCRVUwGMKJrLNKqCDAFOKVZVxo6a45oeMPMrF/ax/CNVJfFfSO3wRQZvnes50GcBJgtaE7fQgw==","shasum":"725257ce4e683625b093b5c84a3372f12472bd90","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.0.5.tgz","fileCount":171,"unpackedSize":153877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/9NmCRA9TVsSAnZWagAAbYIQAIIAc5DC8T4YqJ/Amd/G\ncX2+a55wSnNDHWqleLhUzMC1nJ/eWwdK1U9PDpqBetssDTVrSJHefxmIDJx4\nEjQXMi3bhYvY/MYSLHdA1iWYGweePsxBR6VbT4T8NPB9ZbJzC65/JkcG3gVu\nfPYh4Q9Ctl+AUjWA+ugAhtMGfWlz47LHlz6FPO+g7E00lk3O0b0T+tQjgYf5\nJzooAryoexTxwBR7qh7gxsi7oAtHINK0l/Jmbt+XkOFM4yLoGkwDwV3+d6MB\nnkZq6rHTqZ9Z8ctTSZlGdUFujKVh3YXbGRf4KMa4zNK/T1vQiVEqkyXhYuJh\nhbYtuxah2UGGObHQrIOp8qaX0yO/zC29yblaKMjMEG1yCKGk8pchPdRV7LFm\naHGu2SZ1QjDFawz7W0EoB4VJPEh94q/+YD9kyeu3dH4H97Tn4su8xNu5/AKx\nWuELiDEa2Z9PE9osQPdgRaCFavZ5i/vLTpOxrKYM2PnHlkesskkDRkcs1P34\ns5FnHyVPaIUZoCe7uvWTDtsz41+xMseSzQqohlIbkaQQrMPj9DhgTvn4m/fd\n6SLjCTw9kkpCT6FYBSRyQDq6Gsl5PZ48IJYtV9XSSWR7TM7cGaFR2dwHlHLz\neW4wero4na05CdOU+fZvhEunz37c0VTdTVC4CxpCOzMb1T68Bt6KelW2REdd\n++/s\r\n=9FE4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDK5GFuCpF+tfQYQ0T1/uByVTZi8yxq4AA6ZecqcqYSkAIgIdsrXODpLk1+j2wGFBfybrSNZZSGYw4qbrNR3KDC6zk="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.0.5_1644155750279_0.5778076877133758"},"_hasShrinkwrap":false},"2.1.0":{"name":"@trapi/query","version":"2.1.0","description":"An tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.4.1","@types/node":"^17.0.21","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.5.1","minimatch":"^5.0.1","ts-jest":"^27.1.3","ts-node":"^10.7.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.6.2"},"publishConfig":{"access":"public"},"gitHead":"d17ff94037efee8f2eac5bfab176da50de284d56","_id":"@trapi/query@2.1.0","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (win32)","dist":{"integrity":"sha512-7c8Ss8wHFNLEMizT6CtaY7bpSUx2sOYLLQ7PLcuxWBLGh09wxOfc+yZ/vdh9idzPND06Gr427++zYbzd0FayaA==","shasum":"1556cac79d25931942efa240f7293b42ef2776d5","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.1.0.tgz","fileCount":183,"unpackedSize":164086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMbIfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqKERAAi+s2odydOv7jVD5u0ijE0M9nU+7rjDrJ+t/xN8pJ657Pa43s\r\ntLT0nong62ucho4RudhZ+a3yV5PFJhXYncfuj0frB0FxSkIixqi4rSdOVcMr\r\nb5ym7bifGEnIUkDYds4ytIPYk2wIEuqV44dxwpo5wWD+EKHRl2DsLEt7ENgQ\r\nTI/fyJHuSdW9ePT/8jruvFPuCdeJVb99xYmea6OpnN/uvpcmUlSAeS0npWsV\r\naLygJGYPZN702j3eYLw9yBZ3dsy3jyzzICtXSQz4t81l1EnHwvrhFdQ6umfw\r\nEH2Q72j5zrlwWEy/eRK5m9v5ybfJ3oxRmLAun8awi5xwMGu+g3y8vBW6CWop\r\nM9LnBHDQ7Or59z9xWpCH2MZVZ9D2e3aj8QxKDgTR5Rx0V7DB6tyldODwxqy4\r\nTM2vh4idvhtf4elOeK/69X92TU6+Inc/7p6OOeQ6zro2Yw84gTrIJ4nzuQxR\r\nG1ZyJ+mKS6gFEnMB9bKPdX2LRtoOEtMrsrJX1TyxSZpmYWqzrMqXCQY4VNe4\r\nIBL+gmO122749qh+J34IHnoXc1ioa0ddmVk9qr8AmaOjMi5VCtdk2+W2ZCLk\r\n1nVTCzbKW+Qn5j5jNhPZ9yIPB8W3F5OUeXJRyK5FcnyrHMBOnIREcWGbKvHq\r\nOGEKb57E/8arWDLwenM9tnhmNpticvEK/b8=\r\n=Vyt0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDl6H5Myu50bpwrIr9w5BhiQzJsTqb9p/nSyViMb+RfMwIhAM9ZK2aqS3a4SRatJU9oZtTs4HWANFinoFzRMFkabw9/"}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.1.0_1647424031426_0.8070137445242056"},"_hasShrinkwrap":false},"2.1.1":{"name":"@trapi/query","version":"2.1.1","description":"A tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","devDependencies":{"@types/jest":"^27.4.1","@types/node":"^17.0.21","codecov":"^3.8.3","cross-env":"^7.0.3","jest":"^27.5.1","minimatch":"^5.0.1","ts-jest":"^27.1.3","ts-node":"^10.7.0","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.6.2"},"dependencies":{"minimatch":"^5.0.1"},"publishConfig":{"access":"public"},"gitHead":"502f3d8795041a84fbdac49851cc7b6166a92aa4","_id":"@trapi/query@2.1.1","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (win32)","dist":{"integrity":"sha512-AjtLhMkxL040r/gFPxJMYqffNsbf4glEnUsYEJ9S4B66saRcjPIY1uNQDxiqvBUrlMpXcorvq3gKvFgoLB3T6A==","shasum":"1948a415ef4c37ada17a73d401eddf67d6c6347d","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.1.1.tgz","fileCount":183,"unpackedSize":166544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMhfOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/zA/+IIUXhBc4ZbAqnZb6McW6HPgjOMwrKkZVPLcPYXwyUj/Qcjdy\r\nz22PafYkxVaZUCShw2aY9c7KnjjTLhP4SS+gLUJQjXb1za2FP9E6vrNWHgWG\r\noszMtadX8HM370YVUq6RSO5j8o9R4McNiHD5igo6Di3I933oAD/xkYDBvqbO\r\nt91aVDRcDte4t2gDw5fOHlzfb5Q+O1jN263bkoEx/hghWL7cfrmnXtTxhBrw\r\n6K/bjuO5ZV0T8N4tzpr977/HqmXxLdhXXSI7BaoyWMPomsd9N35/wyuGVETa\r\nyBOZ391KEVRHrCel41xiWoQZVLVZlWjbBnjCLb8LKJuB4OP0/prl+ExOQO76\r\nOmjGdP0wZe49/wkY6+guOjyGF9js+zz5FI7989SKN9LG523VvxJwiIzRpSa4\r\nYxIij/ikhGsHEb38y2gOOVrzXzataGAgr27aF9KBsuQB+x4RJrA+FUoQYGaD\r\n/qwdpm3IBhz1TYeBznFBZF6UuWkmXyZYVD2N72TaYewys9j5TxGDu5OYrvpP\r\n12X8YkPPftPC4smxhbQEKUPNnlm90CZ5mLbVBp3UQxfD2SnYH947dwe2Z7we\r\nn43s0jk1KBtCV89w0sMk6i1XGuTfd6ZwdkYZiP3iEgFGK0CbuRN78TiFPCaF\r\nG+RiMeNdXzLbMfVMp8tGxdX/Q6D878Q7eNA=\r\n=vPDN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDRl8dRdnni0wNf/YeFqxkSezTEZvxMOhWdfiObzt52AAiAYQ2vIyuao65Jn18kmnlXmnPT06fEe89AevQFQcsaCMw=="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.1.1_1647450061889_0.33101808461660087"},"_hasShrinkwrap":false},"2.1.2":{"name":"@trapi/query","version":"2.1.2","description":"A tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/typescript-rest-api.git"},"bugs":{"url":"https://github.com/Tada5hi/typescript-rest-api/issues"},"homepage":"https://github.com/Tada5hi/typescript-rest-api#readme","dependencies":{"minimatch":"^5.0.1"},"publishConfig":{"access":"public"},"gitHead":"81b7c352dd1dd988e922adb377d3ff70e3098be7","_id":"@trapi/query@2.1.2","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (win32)","dist":{"integrity":"sha512-dKODAFL7qkIHaf6wgpSzVL8XVVe5aFJ2vrBPl5uI8tUdPUYeFwLZegdNeIyq7mbUIH7t5Iw6KADLiPsBB6KPog==","shasum":"de6672ad5e623acdac7fbc7c4612ebc093f3e0b7","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.1.2.tgz","fileCount":191,"unpackedSize":177371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQXvAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBDg//bbblQ9YWzeAyKUHTTBI9HpOumAf7J+Dd8VoOz2piTKH2DGgf\r\nusE27NORlZSgvcAUEhMuYyMV38fm0GQagB33JCDhmT874uJYSBpso9o+k79Q\r\nP4sTVj7F9/VRDcNIBpZXMyV0slnX7jzOVUoaiI+4j8a6gVlb6i9q5QVyXXJR\r\nyaPS8EE7QCDb8vuKr97K6xe+iFl740FG2ZcOaF07twP4AiZaQa+St4rYdW0e\r\nflxP1ulnkbSUUMl3LT45eqsodrDwiwpjsc2U0MItY8ZgN4eh+YM71CtFvggH\r\n+zZynGxhELsTumw+Y9JEA34O7UgKDDB905QjAT12uShTOvKs1bUHvevlQQOs\r\no9nKePRTVk700IDssp3D53qcliDCzaqro1VvbbVsfSB18McwtyNdRnvtflF0\r\nD+LVxRA2UqlbwSTeKaNqmYFw3Zy0cf5iIHKVTlPC34SIIsUA4Ttq9RF6cvUh\r\n9PIE/zaTzD9gwJuHuV4ho2xFnPvp20SAkQ8sBcI5xK2gmv9v1WJBajOSrW/P\r\nYzhU4eg8104GgcSQqZEbs0zGuXFo80JhzbjF8dn9VTvACeIQ5sDi6EZ4ZUVD\r\nrHUcdkfNeS763mxbXtzRc8tnUIjhlW8fKWhgWNQG2Bvks1pSJ7HpPTm9Twyn\r\nPd/kiOUE4rg3MetFRTEWwQuxlyfiWR+rrdo=\r\n=wqzI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGt1OlH6trCptjSRRgDwV3l1ZNdAuOD80z2kgA7EF+WzAiEAsMuwsHX5kW/JxkCsLvBWBngpVCjbBo5TypjSf8jlt2Q="}]},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.1.2_1648458688710_0.061342171897101005"},"_hasShrinkwrap":false},"2.1.3":{"name":"@trapi/query","version":"2.1.3","description":"A tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/trapi.git"},"bugs":{"url":"https://github.com/Tada5hi/trapi/issues"},"homepage":"https://github.com/Tada5hi/trapi#readme","dependencies":{"minimatch":"^5.0.1"},"publishConfig":{"access":"public"},"gitHead":"12fc7cc4be787779fee81bedb9a4cff0e2f5055d","_id":"@trapi/query@2.1.3","_nodeVersion":"16.14.2","_npmVersion":"lerna/4.0.0/node@v16.14.2+x64 (win32)","dist":{"integrity":"sha512-qOG7X1BUlxJ339lsmA8voTCHzLEz0JPmBobXDzseg/nAeNMbkvRAAPq1itAM6yqqhEGFxuuYxsWM1Cn6qIwEMA==","shasum":"de5cfcde05e734adeab56061eb5a8aadbc705a69","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.1.3.tgz","fileCount":191,"unpackedSize":177245,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjpwdG6BauSUTccxZZ12U9LbAUU833GrQ0DRbjHPA4owIhAObpMLD6SG19yh5ynVsKExG3sYTgw5v6aui1mr/Q0Gtc"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZ5gOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrPVw//Rj5DaGhH9wQnS76DJs3r5+IOkIOWVpx0zEaiLOU4ffp9MjTv\r\nkcoN4Gr0vFwSZx/fqFzRJuEh2RcsRnog9LlRnwfAoIS+aqUE3rAqyChxZg7k\r\nGWrM6hgpif6C/TlMtX77k5BONpNPBhBrsU9iBOkzdf5lU3L/67RdrAil8SdL\r\nPb5qaTZCl42MlLfP0Sj88gnW8k3zupN0goCM9Mz8P/EBXNLcoYyFfXGk7s+d\r\n682LqZkau8u5W4ETSkh7XRAiuZhruVJFCOMhygboVprJbKtafWOuDncW8+TD\r\nQmNAKPchBnHeKa8FbjRmxWoXK6OHu2QPJqUapTcthhBgwhs7K2Un42MvIibk\r\nnzb21pxQt548JkLYUxIfeLML3Zr81de65RDnMe0zXSNtDZbAZ8tTecDHwQxO\r\nCQ/+HEmTN3hdIWX/p/K7OootlSlKQfc7CmC5EjeIgymIU19dT2y87t7Pbuk8\r\nmEWdkVCUgCl3JLWMjeyM4k9kg+kSLT5sOe86LTlVvh2mkTWE607xYqoa8yBX\r\niG/+DX1gS6WMlp56vL8gyRhO5U4bXsWmXymuLTDgAda+3+9tVhktdgG8rGra\r\nqOYy0KJq5wAeK6ma93q3ThRZ//67SJyTk56z2u/5Nr1ezSXMhXocyzzcjUoX\r\n4lFfWy3MZ7XB2yZKX1P2vo/Tey0Tv76oO3U=\r\n=5WbA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.1.3_1650956302344_0.9943217313236963"},"_hasShrinkwrap":false},"2.1.5":{"name":"@trapi/query","version":"2.1.5","description":"A tiny library which provides utility types/functions for request and response query handling.","main":"./dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"rm -rf ./dist && tsc -p tsconfig.build.json","test":"cross-env NODE_ENV=test jest --config ./test/jest.config.js","test:coverage":"cross-env NODE_ENV=test jest --config ./test/jest.config.js --coverage","prepublishOnly":"npm run build"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"license":"MIT","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/trapi.git"},"bugs":{"url":"https://github.com/Tada5hi/trapi/issues"},"homepage":"https://github.com/Tada5hi/trapi#readme","dependencies":{"minimatch":"^5.1.0"},"publishConfig":{"access":"public"},"gitHead":"2db0dd50542e1984c62c7aa5c0712c7380beb1a5","_id":"@trapi/query@2.1.5","_nodeVersion":"16.16.0","_npmVersion":"lerna/5.1.6/node@v16.16.0+x64 (win32)","dist":{"integrity":"sha512-F5koTN69RP6UgwXtHGUILkj14eAo6C/L5ZtoUwbIG0H9jba097Rr7btohwOgolaEV4nx384j0R/cNNxxmHomzw==","shasum":"7515c58fa8c64fd8d7346d72b4b4fcd8efef98ef","tarball":"https://registry.npmjs.org/@trapi/query/-/query-2.1.5.tgz","fileCount":191,"unpackedSize":177492,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIApg3OfXrchkLOwgVow1l7NYXgLPG1vZMSmD+q0O5Zl9AiEA7TAohQNkN071ACz3kdadpbGPQKCO4oKi562EjFCgpKQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9msaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqczg/+MXyo8seqnMXfAiKl4T9M1IKrhTssP42wezIM4a8vgUcAyNce\r\n4LpXZxMr6tWmSx7ft+hmjQIAR5qZ6VQcFcfKlMr6IkkwIFa0c+8snM1u1crS\r\nrEuWXv4Dcco2YqI+WRcKgXZt5IGNfEEUfhEtvRYsp8umPIWg2lgMKLGc5vk6\r\n0t9pj+yF8rJyVJcve8PwRCnkLhMX9RsVONoKd3wivamCP/beu+C/24fsc5tO\r\nBuej3qICyXMywByG554V4Yw+U62X0ceuLqcrKxvq7GOG82ie4A3YvMlvrWxF\r\nMfRHpr6d5GJS+F9nu1oNLJ4a3AqO2yAC1lylVYRYfI/RcnpO87tQ/VgesQZ5\r\nfQW1kDyb05INTEbrE5P33MAVyP8wiiFJq/aD3edisBOfFQTyj02r1bM46tAE\r\nAvlx1wRDKDjlpfr6IOxPVpZSIQIQ4M2tBWZ+VsfWLyDS3kO5TALGAUiA7g4C\r\nyjK2awd909H9IVEhP5pl7fG2C+F0SjkgBvvjG8XhciRSrSbKF+OmarDzrYOf\r\nCG1wqgBzx9YnF89io6IuShrxoBVqbiI7luT/it9JEM7jLTFwOIr/ARCLSlpW\r\n//cbk3uEZwST69NASWWMG1E7OWVRwS6gEAjUYf60UppQqyYH6QNr/Ht24GHw\r\nBOhbWKwK4ZxNxhO1dFswazLSrft9q3IQ/vw=\r\n=bmIK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"tada5hi","email":"peter.placzek1996@gmail.com"},"directories":{},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query_2.1.5_1660316441780_0.9021410284170894"},"_hasShrinkwrap":false}},"time":{"created":"2021-10-01T08:02:12.267Z","0.0.1":"2021-10-01T08:02:12.559Z","modified":"2022-08-12T15:00:42.129Z","0.0.2":"2021-10-01T08:12:36.732Z","1.0.0":"2021-10-01T14:25:07.216Z","1.0.1":"2021-10-01T14:27:13.187Z","1.0.2":"2021-10-01T15:01:23.589Z","1.1.0":"2021-10-02T19:44:46.377Z","1.1.1":"2021-10-02T19:49:46.863Z","1.2.0":"2021-10-03T11:01:33.936Z","1.2.1":"2021-10-03T13:00:16.107Z","2.0.0-alpha.0":"2021-10-04T12:03:18.457Z","2.0.0-alpha.2":"2021-10-04T14:30:03.379Z","2.0.0-alpha.3":"2021-10-04T14:44:01.001Z","2.0.0":"2021-10-24T07:59:49.507Z","2.0.1":"2021-10-24T15:55:20.591Z","2.0.2":"2021-12-19T13:04:38.612Z","2.0.3":"2021-12-19T13:46:54.146Z","2.0.4":"2022-02-05T16:09:19.797Z","2.0.5":"2022-02-06T13:55:50.526Z","2.1.0":"2022-03-16T09:47:11.627Z","2.1.1":"2022-03-16T17:01:02.150Z","2.1.2":"2022-03-28T09:11:28.896Z","2.1.3":"2022-04-26T06:58:22.500Z","2.1.5":"2022-08-12T15:00:42.053Z"},"maintainers":[{"name":"tada5hi","email":"peter.placzek1996@gmail.com"}],"description":"A tiny library which provides utility types/functions for request and response query handling.","homepage":"https://github.com/Tada5hi/trapi#readme","keywords":["query","json","json-api","api","rest","api-utils","include","pagination","sort","fields","relations","typescript"],"repository":{"type":"git","url":"git+https://github.com/Tada5hi/trapi.git"},"author":{"name":"Peter Placzek","email":"contact@tada5hi.net","url":"https://github.com/tada5hi"},"bugs":{"url":"https://github.com/Tada5hi/trapi/issues"},"license":"MIT","readme":"# @trapi/query 🌈\n\n[![main](https://github.com/Tada5hi/trapi/actions/workflows/main.yml/badge.svg)](https://github.com/Tada5hi/trapi/actions/workflows/main.yml)\n[![codecov](https://codecov.io/gh/Tada5hi/trapi/branch/main/graph/badge.svg?token=ZUJ8F5TTSX)](https://codecov.io/gh/Tada5hi/trapi)\n[![Known Vulnerabilities](https://snyk.io/test/github/Tada5hi/trapi/badge.svg)](https://snyk.io/test/github/Tada5hi/trapi)\n[![npm version](https://badge.fury.io/js/@trapi%2Fquery.svg)](https://badge.fury.io/js/@trapi%2Fquery)\n\n---\n**Important NOTE**\n\nThis package has been replaced by another package, called: [rapiq](https://www.npmjs.com/package/rapiq).\n\n---\n\nThis is a library to build efficient and `JSON:API` like REST-APIs.\n\nIt extends the specification format between request- & response-handling based on the following parameters:\n- `fields`\n  - Description: Return only specific fields or extend the default selection.\n  - URL-Parameter: **fields**\n- `filters`\n  - Description: Filter the data set, according to specific criteria.\n  - URL-Parameter: **filter**\n- `relations`\n  - Description: Include related resources of the primary data.\n  - URL-Parameter: **include**\n- `pagination`\n  - Description: Limit the number of resources returned from the entire collection.\n  - URL-Parameter: **page**\n- `sort`\n  - Description: Sort the resources according to one or more keys in asc/desc direction.\n  - URL-Parameter: **sort**\n\n**Table of Contents**\n\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Build](#build-)\n  - [Parsing](#parsing-)\n- [Functions](#functions)\n  - [buildQuery](#buildquery)\n  - [parseQuery](#parsequery)\n  - [parseQueryParameter](#parsequeryparameter)\n- [Types](#types)\n  - [Build](#build)\n    - [Options](#buildoptions)\n    - [Input](#buildinput)\n  - [Parse](#parse)\n    - [Options](#parseoptions)\n    - [Input](#parseinput)\n    - [Output](#parseoutput)\n  - [Parameter](#parameter)\n    - [Fields](#fields)\n    - [Filter[s]](#filters)\n    - [Pagination/Page](#pagination)\n    - [Relations/Include](#relations)\n    - [Sort](#sort)\n\n## Installation\n\n```bash\nnpm install @trapi/query --save\n```\n\n## Usage\n\n### Build 🏗\n\nThe general idea is to construct a [BuildInput](#buildinput) object and convert it to a string\nrepresentation with the [buildQuery](#buildquery) method on the frontend side.\nThe result should then be provided as a URL query string to the backend application.\nThe backend application is then able to process the request, by parsing and interpreting the query string.\n\nThe following example should give an insight on how to use this library on the frontend side.\nTherefore, a type which will represent a `User` and a method `getAPIUsers` are defined.\nThe method should perform a request to the resource API to receive a collection of entities.\n\n```typescript\nimport axios from \"axios\";\nimport {\n    buildQuery,\n    BuildInput\n} from \"@trapi/query\";\n\ntype Profile = {\n    id: number;\n    avatar: string;\n    cover: string;\n}\n\ntype User = {\n    id: number;\n    name: string;\n    age?: number;\n    profile: Profile;\n}\n\ntype ResponsePayload = {\n    data: User[],\n    meta: {\n        limit: number,\n        offset: number,\n        total: number\n    }\n}\n\nexport async function getAPIUsers(\n    record: BuildInput<User>\n): Promise<ResponsePayload> {\n    const response = await axios.get('users' + buildQuery(record));\n\n    return response.data;\n}\n\n(async () => {\n    const record: BuildInput<User> = {\n        pagination: {\n            limit: 20,\n            offset: 10\n        },\n        filters: {\n            id: 1 // some possible values:\n            // 1 | [1,2,3] | '!1' | '~1' | ['!1',2,3] | {profile: {avatar: 'xxx.jpg'}}\n        },\n        fields: ['id', 'name'], // some possible values:\n        // 'id' | ['id', 'name'] | '+id' | {user: ['id', 'name'], profile: ['avatar']}\n        sort: '-id', // some possible values:\n        // 'id' | ['id', 'name'] | '-id' | {id: 'DESC', profile: {avatar: 'ASC'}}\n        relations: {\n            profile: true\n        }\n    };\n\n    const query = buildQuery(record);\n\n    // console.log(query);\n    // ?filter[id]=1&fields=id,name&page[limit]=20&page[offset]=10&sort=-id&include=profile\n\n    let response = await getAPIUsers(record);\n\n    // do something with the response :)\n})();\n```\n\nThe next section will describe, on how to parse and interpret the query string on the backend side.\n\n### Parsing 🔎\nFor explanation purposes, two simple entities with a basic relation between them are declared to demonstrate the usage on the backend side:\n\n**`entities.ts`**\n```typescript\nimport {\n    Entity,\n    PrimaryGeneratedColumn,\n    Column,\n    OneToOne,\n    JoinColumn\n} from \"typeorm\";\n\n@Entity()\nexport class User {\n    @PrimaryGeneratedColumn({unsigned: true})\n    id: number;\n\n    @Column({type: 'varchar', length: 30})\n    @Index({unique: true})\n    name: string;\n\n    @Column({type: 'varchar', length: 255, default: null, nullable: true})\n    email: string;\n\n    @OneToOne(() => Profile)\n    profile: Profile;\n}\n\n@Entity()\nexport class Profile {\n    @PrimaryGeneratedColumn({unsigned: true})\n    id: number;\n\n    @Column({type: 'varchar', length: 255, default: null, nullable: true})\n    avatar: string;\n\n    @Column({type: 'varchar', length: 255, default: null, nullable: true})\n    cover: string;\n\n    @OneToOne(() => User)\n    @JoinColumn()\n    user: User;\n}\n```\n\n#### Parse - Detailed\n\nIn the following code snippet, all query parameter parse functions (`parseQueryFields`, `parseQueryFilters`, ...)\nwill be imported separately, to show the usage in detail.\n\n```typescript\nimport {Request, Response} from 'express';\n\nimport {\n    parseQueryFields,\n    parseQueryFilters,\n    parseQueryRelations,\n    parseQueryPagination,\n    parseQuerySort,\n    Parameter\n} from \"@trapi/query\";\n\nimport {\n    applyQueryParseOutput,\n    useDataSource\n} from 'typeorm-extension';\n\nimport { User } from './entities';\n\n/**\n * Get many users.\n *\n * Request example\n * - url: /users?page[limit]=10&page[offset]=0&include=profile&filter[id]=1&fields[user]=id,name\n *\n * Return Example:\n * {\n *     data: [\n *         {id: 1, name: 'tada5hi', profile: {avatar: 'avatar.jpg', cover: 'cover.jpg'}}\n *      ],\n *     meta: {\n *        total: 1,\n *        limit: 20,\n *        offset: 0\n *    }\n * }\n * @param req\n * @param res\n */\nexport async function getUsers(req: Request, res: Response) {\n    const {fields, filter, include, page, sort} = req.query;\n\n    const dataSource = await useDataSource();\n    const repository = dataSource.getRepository(User);\n    const query = repository.createQueryBuilder('user');\n\n    // -----------------------------------------------------\n\n    const relationsParsed = parseQueryRelations(include, {\n        allowed: 'profile'\n    });\n\n    const fieldsParsed = parseQueryFields(fields, {\n        defaultAlias: 'user',\n        // profile.id can only be used as sorting key, if the relation 'profile' is included.\n        allowed: ['id', 'name', 'profile.id', 'profile.avatar'],\n        relations: relationsParsed\n    });\n\n    const filterParsed = parseQueryFilters(filter, {\n        defaultAlias: 'user',\n        // profile.id can only be used as sorting key, if the relation 'profile' is included.\n        allowed: ['id', 'name', 'profile.id'],\n        relations: relationsParsed\n    });\n\n    const pageParsed = parseQueryPagination(page, {\n        maxLimit: 20\n    });\n\n    const sortParsed = parseQuerySort(sort, {\n        defaultAlias: 'user',\n        // profile.id can only be used as sorting key, if the relation 'profile' is included.\n        allowed: ['id', 'name', 'profile.id'],\n        relations: relationsParsed\n    });\n\n    // -----------------------------------------------------\n\n    // group back parsed parameter back,\n    // so they can applied on the db query.\n    const parsed = applyQueryParseOutput(query, {\n        fields: fieldsParsed,\n        // only allow filtering users by id & name\n        filters: filterParsed,\n        relations: relationsParsed,\n        // only allow to select 20 items at maximum.\n        pagination: pageParsed,\n        sort: sortParsed\n    });\n\n    // -----------------------------------------------------\n\n    const [entities, total] = await query.getManyAndCount();\n\n    return res.json({\n        data: {\n            data: entities,\n            meta: {\n                total,\n                ...parsed.pagination\n            }\n        }\n    });\n}\n```\n\n#### Parse - Short\nAnother way is to directly import the [parseQuery](#parsequery) method, which will handle a group of query parameter values & options.\nThe [ParseInput](#parseinput) argument of the `parseQuery` method accepts multiple (alias-) property keys.\n\n```typescript\nimport { Request, Response } from 'express';\n\nimport {\n    parseQuery,\n    Parameter,\n    ParseOutput\n} from '@trapi/query';\n\nimport {\n    applyQueryParseOutput,\n    useDataSource\n} from 'typeorm-extension';\n\n/**\n * Get many users.\n *\n * ...\n *\n * @param req\n * @param res\n */\nexport async function getUsers(req: Request, res: Response) {\n    // const {fields, filter, include, page, sort} = req.query;\n\n    const output: ParseOutput = parseQuery(req.query, {\n        fields: {\n            defaultAlias: 'user',\n            allowed: ['id', 'name', 'profile.id', 'profile.avatar']\n        },\n        filters: {\n            defaultAlias: 'user',\n            allowed: ['id', 'name', 'profile.id']\n        },\n        relations: {\n            allowed: ['profile']\n        },\n        pagination: {\n            maxLimit: 20\n        },\n        sort: {\n            defaultAlias: 'user',\n            allowed: ['id', 'name', 'profile.id']\n        }\n    });\n\n    const dataSource = await useDataSource();\n    const repository = dataSource.getRepository(User);\n    const query = repository.createQueryBuilder('user');\n\n    // -----------------------------------------------------\n\n    // apply parsed data on the db query.\n    const parsed = applyQueryParseOutput(query, output);\n\n    // -----------------------------------------------------\n\n    const [entities, total] = await query.getManyAndCount();\n\n    return res.json({\n        data: {\n            data: entities,\n            meta: {\n                total,\n                ...output.pagination\n            }\n        }\n    });\n}\n```\n\n#### Parse - Third Party Library\n\nIt can even be much simpler to parse the query key-value pairs with the `typeorm-extension` library, because it\nuses this library under the hood ⚡.\nThis is much shorter than the previous example and has less explicit dependencies 😁.\n\n[read more](https://www.npmjs.com/package/typeorm-extension)\n\n## Functions\n\n## buildQuery\n\n▸ `function` **buildQuery**<`T`>(`record: BuildInput<T>`, `options?: BuildOptions`): `string`\n\nBuild a query string from a provided [BuildInput](#buildinput).\n\n#### Example\n**`Simple`**\n\n```typescript\nimport {\n    buildQuery,\n    Parameter\n} from \"@trapi/query\";\n\ntype User = {\n    id: number,\n    name: string,\n    age?: number\n}\n\nconst query: string = buildQuery<User>({\n    fields: ['+age'],\n    relations: {\n        name: '~pe'\n    }\n});\n\nconsole.log(query);\n// ?fields=+age&filter[name]=~pe\n```\n\n#### Type parameters\n\n| Name   | Description                                                     |\n|:-------|:----------------------------------------------------------------|\n| `T`    | A type, interface, or class which represent the data structure. |\n\n\n#### Parameters\n\n| Name      | Type              | Description                                       |\n|:----------|:------------------|:--------------------------------------------------|\n| `input`   | `BuildInput`<`T`> | Input specification [more](#buildinput).          |\n| `options` | `BuildOptions`    | Options for building fields, filter, include, ... |\n\n#### Returns\n\n`string`\n\nThe function returns a string, which can be parsed with the [parseQuery](#parsequery) function.\n\nI.e. `/users?page[limit]=10&page[offset]=0&include=profile&filter[id]=1&fields[user]=id,name`\n\n## parseQuery\n\n▸ `function` **parseQuery**(`input: ParseInput`, `options?: ParseOptions`): `ParseOutput`\n\nParse a query string to an efficient data structure ⚡. The output will\nbe an object with each possible value of the [Parameter](#parameter) enum as property key and the\nparsed data as value.\n\n#### Example\n**`Simple`**\n\n```typescript\nimport {\n    FieldOperator,\n    FilterOperator,\n    parseQuery,\n    ParseOutput,\n    URLParameter\n} from \"@trapi/query\";\n\nconst output: ParseOutput = parseQuery({\n    fields: ['+age'],\n    filters: {\n        name: '~pe'\n    }\n});\n\nconsole.log(output);\n//{\n//    fields: [\n//        {key: 'age', operator: FieldOperator.INCLUDE}\n//    ],\n//    filters: [\n//        {key: 'name', value: 'pe', operator: FilterOperator.LIKE}\n//   ]\n//}\n```\n\n#### Type parameters\n\n| Name  | Description |\n|:------|:------------|\n\n\n#### Parameters\n\n| Name      | Type           | Description                                                            |\n|:----------|:---------------|:-----------------------------------------------------------------------|\n| `input`   | `ParseInput`   | Query input data passed e.g. via URL [more](#parseinput).              |\n| `options` | `ParseOptions` | Options for parsing fields, filter, include, ... [more](#parseoptions) |\n\n#### Returns\n\n[ParseOutput](#parseoutput)\n\nThe function returns an object.\n\n## parseQueryParameter\n\n▸ `function` **parseQueryParameter**<`T extends Parameter`>(\n`key: T`,\n`input: unknown`,\n`options?: ParseParameterOptions<T>`\n): `ParseParameterOutput<T>`\n\nParse a specific query [Parameter](#parameter) value to an efficient data structure ⚡.\n\n#### Example\n**`fields`**\n\n```typescript\nimport {\n    FieldOperator,\n    FieldsParseOutput,\n    Parameter,\n    parseQueryParameter,\n    URLParameter\n} from \"@trapi/query\";\n\nconst output: FieldsParseOutput = parseQueryParameter(\n    // 'fields' ||\n    // Parameter.FIELDS | URLParameter.FIELDS\n    'fields',\n    ['+name'],\n    {\n        allowed: ['id', 'name'],\n        defaultAlias: 'user'\n    }\n);\n\nconsole.log(output);\n// [{key: 'id', value: FieldOperator.INCLUDE}] ||\n// [{key: 'id', value: '+'}]\n```\n\n**`filters`**\n\n```typescript\nimport {\n    FiltersParseOutput,\n    Parameter,\n    parseQueryParameter,\n    URLParameter\n} from \"@trapi/query\";\n\nconst output: FiltersParseOutput = parseQueryParameter(\n    // 'filters' | 'filter' |\n    // Parameter.FILTERS | URLParameter.FILTERS\n    'filters',\n    {id: 1},\n    {\n        allowed: ['id', 'name'],\n        defaultAlias: 'user'\n    }\n);\n\nconsole.log(output);\n// [{alias: 'user', key: 'id', value: 1, }]\n```\n\n**`pagination`**\n\n```typescript\nimport {\n    PaginationParseOutput,\n    Parameter,\n    parseQueryParameter,\n    URLParameter\n} from \"@trapi/query\";\n\nconst output: PaginationParseOutput = parseQueryParameter(\n    // 'pagination' | 'page' |\n    // Parameter.PAGINATION | URLParameter.PAGINATION\n    'pagination',\n    {limit: 100},\n    {\n        maxLimit: 50\n    }\n);\n\nconsole.log(output);\n// {limit: 50}\n```\n\n**`relations`**\n\n```typescript\nimport {\n    RelationsParseOutput,\n    Parameter,\n    parseQueryParameter,\n    URLParameter\n} from \"@trapi/query\";\n\nconst output: RelationsParseOutput = parseQueryParameter(\n    // 'relations' || 'include' ||\n    // Parameter.RELATIONS | URLParameter.RELATIONS\n    'relations',\n    ['roles'],\n    {\n        allowed: ['roles', 'photos'],\n        defaultAlias: 'user'\n    }\n);\n\nconsole.log(output);\n// [{key: 'user.roles', value: 'roles'}]\n```\n\n**`sort`**\n\n```typescript\nimport {\n    SortParseOutput,\n    Parameter,\n    parseQueryParameter,\n    URLParameter\n} from \"@trapi/query\";\n\nconst output: SortParseOutput = parseQueryParameter(\n    // 'sort' ||\n    // Parameter.SORT || URLParameter.SORT\n    'sort',\n    ['-name'],\n    {\n        allowed: ['id', 'name'],\n        defaultAlias: 'user'\n    }\n);\n\nconsole.log(output);\n// [{alias: 'user', key: 'name', value: 'DESC'}]\n```\n#### Type parameters\n\n| Name  | Description |\n|:------|:------------|\n\n\n#### Parameters\n\n| Name      | Type                               | Description                                                            |\n|:----------|:-----------------------------------|:-----------------------------------------------------------------------|\n| `input`   | `unknown`                          | Query input data passed e.g. via URL [more](#parseinput).              |\n| `options` | `ParseParameterOptions<Parameter>` | Options for parsing fields, filter, include, ... [more](#parseoptions) |\n\n#### Returns\n\n[ParseOutput](#parseoutput)\n\nThe function returns an object.\n## Types\n\n### Build\n#### BuildOptions\n```typescript\nexport type BuildOptions = {\n    // empty type for now :)\n}\n```\n#### BuildInput\n```typescript\nexport type BuildInput<\n    V extends Record<string, any>\n> = {\n    [T in Parameter | URLParameter]?: BuildParameterInput<T, V>\n}\n```\n\n### Parse\n\n#### ParseOptions\n\n```typescript\nexport type ParseOptions = {\n    /**\n     * On default all query keys are enabled.\n     */\n    [K in Parameter]?: ParseParameterOptions<K> | boolean\n}\n```\n[ParseParameterOptions](#parseparameter)\n\n#### ParseInput\n\n````typescript\nexport type ParseInput = {\n    [K in Parameter | URLParameter]?: any\n}\n````\n[Parameter/URLParameter](#parameter)\n\n#### ParseOutput\n\n```typescript\nexport type ParseOutput = {\n    [K in Parameter]?: ParseParameterOutput<K>\n}\n```\n[ParseParameterOutput](#parseparameter)\n\n#### ParseParameter\n- `ParseParameterOptions<T extends ParameterType | URLParameterType>`\nis a generic type and returns the available options for a given parameter type, e.g.\n  - [FieldsParseOptions](#fields),\n  - [FiltersParseOptions](#filters)\n  - ...\n- `ParseParameterOutput<T extends ParameterType | URLParameterType>`\nis a generic type and returns the parsed output data for a given parameter type, e.g.\n  - [FieldsParseOutput](#fields)\n  - [FiltersParseOutput](#filters)\n  - ...\n\n\n### Parameter\n\n`Parameter`\n```typescript\nexport enum Parameter {\n    FILTERS = 'filters',\n    FIELDS = 'fields',\n    PAGINATION = 'pagination',\n    RELATIONS = 'relations',\n    SORT = 'sort'\n}\n\nexport type ParameterType = `${Parameter}`;\n```\n\n`URLParameter`\n```typescript\nexport enum URLParameter {\n    FILTERS = 'filter',\n    FIELDS = 'fields',\n    PAGINATION = 'page',\n    RELATIONS = 'include',\n    SORT = 'sort'\n}\n\nexport type URLParameterType = `${Parameter}`;\n```\n\n#### Fields\n\n`FieldsParseOptions`\n```typescript\nexport type FieldsParseOptions =\n    ParseOptionsBase<Parameter.FIELDS, Record<string, string[]> | string[]>;\n```\nThe type structure looks like this:\n```text\n{\n    aliasMapping?: Record<string, string>,\n    allowed?: Record<string, string[]> | string[],\n    relations?: RelationsParseOutput,\n    defaultAlias?: string\n}\n```\n\n`FieldsParseOutput`\n```typescript\nexport enum FieldOperator {\n    INCLUDE = '+',\n    EXCLUDE = '-'\n}\n\nexport type FieldsParseOutputElement =\n    ParseOutputElementBase<Parameter.FIELDS, FieldOperator>;\nexport type FieldsParseOutput =\n    FieldsParseOutputElement[];\n```\nThe type structure looks like this:\n```text\n{\n    // relation/resource alias\n    alias?: string,\n\n    // field name\n    key: string,\n\n    // '+' | '-'\n    value?: FieldOperator\n}\n```\n\n#### Filters\n\n`FiltersParseOptions`\n```typescript\nexport type FiltersParseOptions =\n    ParseOptionsBase<Parameter.FILTERS>\n```\nThe type structure looks like this:\n```text\n{\n    aliasMapping?: Record<string, string>,\n    allowed?: string[],\n    relations?: RelationsParseOutput,\n    defaultAlias?: string\n}\n```\n\n`FiltersParseOutput`\n```typescript\nexport enum FilterOperatorLabel {\n    NEGATION = 'negation',\n    LIKE = 'like',\n    IN = 'in'\n}\n\nexport type FiltersParseOutputElement =\n    ParseOutputElementBase<\n        Parameter.FILTERS,\n        FilterValue<string | number | boolean | null>\n    > & {\n        operator?: {\n            [K in FilterOperatorLabel]?: boolean\n        }\n    };\nexport type FiltersParseOutput = FiltersParseOutputElement[];\n```\n```text\n{\n    // relation/resource alias\n    alias?: string,\n\n    // filter name\n    key: string,\n\n    // {in: ..., ...}\n    operator?: {\n        [K in FilterOperatorLabel]?: boolean\n    },\n\n    value: FilterValue<string | number | boolean | null>\n}\n```\n#### Pagination\n\n`PaginationParseOptions`\n```typescript\nexport type PaginationParseOptions =\n    ParseOptionsBase<Parameter.PAGINATION> & {\n        maxLimit?: number\n    };\n```\nThe type structure looks like this:\n```text\n{\n    maxLimit?: number\n}\n```\n\n`PaginationParseOutput`\n```typescript\nexport type PaginationParseOutput = {\n    limit?: number,\n    offset?: number\n};\n```\n\n#### Relations\n\n`RelationsParseOptions`\n\n```typescript\nexport type RelationsParseOptions =\n    ParseOptionsBase<Parameter.SORT, string[] | string[][]>;\n```\nThe type structure looks like this:\n```text\n{\n    aliasMapping?: Record<string, string>,\n    allowed?: string[],\n    defaultAlias?: string,\n    includeParents?: boolean | string[] | string\n}\n```\n\n`RelationsParseOutput`\n```typescript\nexport type RelationsParseOutputElement =\n    ParseOutputElementBase<Parameter.RELATIONS, string>;\nexport type RelationsParseOutput = RelationsParseOutputElement[];\n```\nThe type structure looks like this:\n```text\n{\n    // relation relative depth path\n    key: string,\n\n    // relation alias\n    value: string\n}\n```\n\n#### Sort\n`SortParseOptions`\n```typescript\nexport type SortParseOptions = ParseOptionsBase<Parameter.SORT, string[] | string[][]>;\n```\n\nThe type structure looks like this:\n```text\n{\n    aliasMapping?: Record<string, string>,\n    allowed?: string[] | string[][],\n    defaultAlias?: string\n    relations?: RelationsParseOutput\n}\n```\n\n`SortParseOutput`\n```typescript\nexport enum SortDirection {\n    ASC = 'ASC',\n    DESC = 'DESC'\n}\n\nexport type SortParseOutputElement =\n    ParseOutputElementBase<Parameter.SORT, SortDirection>;\nexport type SortParseOutput = SortParseOutputElement[];\n```\nThe type structure looks like this:\n```text\n{\n    // resource/relation alias\n    alias?: string,\n\n    // field name\n    key: string,\n\n    // 'ASC' | 'DESC'\n    value: SortDirection\n}\n```\n","readmeFilename":"README.MD"}