{"_id":"@0stv0/endlang","_rev":"7-5b527ca2060931859561d64d6e512d3f","name":"@0stv0/endlang","dist-tags":{"latest":"1.1.5"},"versions":{"1.0.0":{"name":"@0stv0/endlang","version":"1.0.0","keywords":[],"author":{"name":"stevku"},"license":"ISC","_id":"@0stv0/endlang@1.0.0","maintainers":[{"name":"0stv0","email":"stevku.mejster@gmail.com"}],"dist":{"shasum":"296b3aa10ed68d9befa35d16e0148f49f853dd9f","tarball":"https://registry.npmjs.org/@0stv0/endlang/-/endlang-1.0.0.tgz","fileCount":39,"integrity":"sha512-W089vKvPS10kFC0JOeqZ20X+XuWnYxBHftzeh0qGU8fqz14LKpW6xmJZZSrvAR5v+HFHQKRGtWj6bo2ChPNCYw==","signatures":[{"sig":"MEUCICYu5zsuTE/ZmLg+3iSbOPfqZSVJj7wzP5FxqG0/JfrXAiEAljlJEnmB2KOzvouzkI562zjihvV10wMXD4DHjBd/93I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42568},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js"},"gitHead":"10b28cc1b73b820a30176b00b404c3f62876a4a0","_npmUser":{"name":"0stv0","email":"stevku.mejster@gmail.com"},"_npmVersion":"11.9.0","description":"1. Setup TypeScript project 2. ``npm i @0stv0/endlang`` 3. Setup project with this scheme: ``` root/ ├── endpoints/ │   └── user.endpoint ├── src/ │   ├── handlers/ │   │   └── testHandler.ts │   ├── middlewares/ │   │   └── testMiddle.ts │   └── index.ts","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@types/node":"^25.3.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/endlang_1.0.0_1773021466432_0.537317145679495","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@0stv0/endlang","version":"1.1.0","keywords":[],"author":{"name":"stevku"},"license":"ISC","_id":"@0stv0/endlang@1.1.0","maintainers":[{"name":"0stv0","email":"stevku.mejster@gmail.com"}],"dist":{"shasum":"0e566d2d8026ff9148eae60aeeeb65089f781382","tarball":"https://registry.npmjs.org/@0stv0/endlang/-/endlang-1.1.0.tgz","fileCount":43,"integrity":"sha512-RArk12w3vrvOR/0lLSCdr7WoN7jiS8husFuX3WZAaev5BGQogV/0OqrFPgBMuyPDzIVm9uVNUiRj8JtI/TN13g==","signatures":[{"sig":"MEQCIA+RXg79ZwltYYq6sk14XRBlgqvkfgic+0rUrJgxv7/HAiBcBDEUWpJ3G4IdYzbF9XuVf+5EjiPcC2BnGJZaqHoQDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54419},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js"},"gitHead":"3d83f2614505d4dd54dee794995356104b65a766","_npmUser":{"name":"0stv0","email":"stevku.mejster@gmail.com"},"_npmVersion":"11.9.0","description":"1. Setup TypeScript project 2. ``npm i @0stv0/endlang`` 3. Setup project with this scheme: ``` root/ ├── endpoints/ │   └── user.endpoint ├── src/ │   ├── handlers/ │   │   └── testHandler.ts │   ├── middlewares/ │   │   └── testMiddle.ts │   └── index.ts","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@types/node":"^25.3.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/endlang_1.1.0_1773071019493_0.5487490062693066","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@0stv0/endlang","version":"1.1.1","keywords":[],"author":{"name":"stevku"},"license":"ISC","_id":"@0stv0/endlang@1.1.1","maintainers":[{"name":"0stv0","email":"stevku.mejster@gmail.com"}],"dist":{"shasum":"a514e956c4b9e5bde91cf0c590b00038581102f6","tarball":"https://registry.npmjs.org/@0stv0/endlang/-/endlang-1.1.1.tgz","fileCount":43,"integrity":"sha512-26jfB/LvcNDyqt2Dg7EfGZG2qVov8vcsjnf9wNTgkH66WzV23ZCfHrxamoXlgs3RvpcwQo0qUCQiVHioZYXHDA==","signatures":[{"sig":"MEQCIAif0P/KRklejmhiNH/02KdlRcrGjFnT84bOHRccC7j6AiBJYPSCg6uB9l8LKk2a4DUi/3s4b0Jd/ZB81hsjsjfx0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54419},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js"},"gitHead":"8ee5e0fd00ae2f463fb4241a77db9fc77c3c7d29","_npmUser":{"name":"0stv0","email":"stevku.mejster@gmail.com"},"_npmVersion":"11.9.0","description":"1. Setup TypeScript project 2. ``npm i @0stv0/endlang`` 3. Setup project with this scheme: ``` root/ ├── endpoints/ │   └── user.endpoint ├── src/ │   ├── handlers/ │   │   └── testHandler.ts │   ├── middlewares/ │   │   └── testMiddle.ts │   └── index.ts","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@types/node":"^25.3.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/endlang_1.1.1_1775410669635_0.7212904308883328","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@0stv0/endlang","version":"1.1.2","keywords":[],"author":{"name":"stevku"},"license":"ISC","_id":"@0stv0/endlang@1.1.2","maintainers":[{"name":"0stv0","email":"stevku.mejster@gmail.com"}],"dist":{"shasum":"871abb5dab0d86f284ab433ca0aad978ed95d2aa","tarball":"https://registry.npmjs.org/@0stv0/endlang/-/endlang-1.1.2.tgz","fileCount":43,"integrity":"sha512-QIooQZd/t8GtEq+o4cY/IfA+FBvz2PqTd/M2GYYAagwQ3WdaTzXeGZljhA1oc2BAi19h2ckrvdFppSb9kF5UTg==","signatures":[{"sig":"MEUCIQCI9dKxSW1DC8yq0+/zx+fYX1J7MuiQNDSFTQKaXAHzJQIgGszJ1g5n5A83niQI7YX1OozqNnwpiBA3hBNTG0f1BsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58571},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js"},"gitHead":"8ee5e0fd00ae2f463fb4241a77db9fc77c3c7d29","_npmUser":{"name":"0stv0","email":"stevku.mejster@gmail.com"},"_npmVersion":"11.9.0","description":"1. Setup TypeScript project 2. ``npm i @0stv0/endlang`` 3. Setup project with this scheme: ``` root/ ├── endpoints/ │   └── user.endpoint ├── src/ │   ├── handlers/ │   │   └── testHandler.ts │   ├── middlewares/ │   │   └── testMiddle.ts │   └── index.ts","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@types/node":"^25.3.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/endlang_1.1.2_1775410851935_0.6556851780247026","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@0stv0/endlang","version":"1.1.3","keywords":[],"author":{"name":"stevku"},"license":"ISC","_id":"@0stv0/endlang@1.1.3","maintainers":[{"name":"0stv0","email":"stevku.mejster@gmail.com"}],"dist":{"shasum":"0364aedaf2bc4d33397dd54f3ccc5afa9e737469","tarball":"https://registry.npmjs.org/@0stv0/endlang/-/endlang-1.1.3.tgz","fileCount":43,"integrity":"sha512-58eWO/l/inIji6qq7JYZzihSRBQ0P16B5gxvXYz4QFlo6HssyFgrOyCrOKp0Ev7k/OUTe8uhxei4LbF8TSwqEA==","signatures":[{"sig":"MEQCIFQ7g+CseBYMAC6PmfGMoL2Bm/adsBj1+583hpQaEPQyAiB1UkrshcArHA8lySAI/XSGnb4pS8As7Hk13i5ZKe4twg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js"},"gitHead":"8ee5e0fd00ae2f463fb4241a77db9fc77c3c7d29","_npmUser":{"name":"0stv0","email":"stevku.mejster@gmail.com"},"_npmVersion":"11.9.0","description":"1. Setup TypeScript project 2. ``npm i @0stv0/endlang`` 3. Setup project with this scheme: ``` root/ ├── endpoints/ │   └── user.endpoint ├── src/ │   ├── handlers/ │   │   └── testHandler.ts │   ├── middlewares/ │   │   └── testMiddle.ts │   └── index.ts","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@types/node":"^25.3.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/endlang_1.1.3_1775411633572_0.2594279450882109","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@0stv0/endlang","version":"1.1.4","keywords":[],"author":{"name":"stevku"},"license":"ISC","_id":"@0stv0/endlang@1.1.4","maintainers":[{"name":"0stv0","email":"stevku.mejster@gmail.com"}],"dist":{"shasum":"1aa6aa99ec90fa446f8b66562ecf5ecd93a8a2d5","tarball":"https://registry.npmjs.org/@0stv0/endlang/-/endlang-1.1.4.tgz","fileCount":43,"integrity":"sha512-9iRA26YZd/ay30RuWZan0XKE04IEt+tnm7pnRZVVbGbUxe7YdoMRTjv35cf2I3nweZYvXJ+o7VOptzlU8UKWIg==","signatures":[{"sig":"MEUCIQCHxkoH+aDA6jmE3CUGLCN5MK5iAQZJfSAumZpEWwUvuQIge93VSn0JM7m8IJuD6TV/76IdY0m8Mc8f93eARKarc9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54795},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js"},"gitHead":"fdc14ab8bb21ac334ac435f5308ab6b85d5ce1a1","_npmUser":{"name":"0stv0","email":"stevku.mejster@gmail.com"},"_npmVersion":"11.9.0","description":"1. Setup TypeScript project 2. ``npm i @0stv0/endlang`` 3. Setup project with this scheme: ``` root/ ├── endpoints/ │   └── user.endpoint ├── src/ │   ├── handlers/ │   │   └── testHandler.ts │   ├── middlewares/ │   │   └── testMiddle.ts │   └── index.ts","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@types/node":"^25.3.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/endlang_1.1.4_1775411859565_0.3306301606396922","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@0stv0/endlang","version":"1.1.5","keywords":[],"author":{"name":"stevku"},"license":"ISC","type":"module","dependencies":{"@types/node":"^25.3.5"},"exports":{".":"./dist/index.js"},"types":"./dist/index.d.ts","module":"./dist/index.js","main":"./dist/index.js","gitHead":"c9ae2db294dde0a5ffd85193c84b989771ccb822","_id":"@0stv0/endlang@1.1.5","description":"1. Setup TypeScript project 2. ``npm i @0stv0/endlang`` 3. Setup project with this scheme: ``` root/ ├── endpoints/ │   └── user.endpoint ├── src/ │   ├── handlers/ │   │   └── testHandler.ts │   ├── middlewares/ │   │   └── testMiddle.ts │   └── index.ts","_nodeVersion":"25.6.1","_npmVersion":"11.9.0","dist":{"integrity":"sha512-L3H/kwYPrlwxW17mVgmMhu4HDBkNJLDNEJiKaAoNwJHDA/EvIKAHbOY54XnFPZ/L8JyGEgdjeAtoZcsvEjULlQ==","shasum":"c43a62564d0417aefdc5a98d8d0a62fd4139f709","tarball":"https://registry.npmjs.org/@0stv0/endlang/-/endlang-1.1.5.tgz","fileCount":43,"unpackedSize":54830,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBJnOe7mdP4j4in10JRNnCOozxtRBMSeidzVO6XKU39rAiAE6VMoo+nelRH3IoBXQE0Tu4qD8e+VkV8kbaR0GSqfdQ=="}]},"_npmUser":{"name":"0stv0","email":"stevku.mejster@gmail.com"},"directories":{},"maintainers":[{"name":"0stv0","email":"stevku.mejster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/endlang_1.1.5_1775474775574_0.5736884025757687"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-09T01:57:46.331Z","modified":"2026-04-06T11:26:15.840Z","1.0.0":"2026-03-09T01:57:46.591Z","1.1.0":"2026-03-09T15:43:39.650Z","1.1.1":"2026-04-05T17:37:49.797Z","1.1.2":"2026-04-05T17:40:52.096Z","1.1.3":"2026-04-05T17:53:53.722Z","1.1.4":"2026-04-05T17:57:39.714Z","1.1.5":"2026-04-06T11:26:15.724Z"},"author":{"name":"stevku"},"license":"ISC","keywords":[],"description":"1. Setup TypeScript project 2. ``npm i @0stv0/endlang`` 3. Setup project with this scheme: ``` root/ ├── endpoints/ │   └── user.endpoint ├── src/ │   ├── handlers/ │   │   └── testHandler.ts │   ├── middlewares/ │   │   └── testMiddle.ts │   └── index.ts","maintainers":[{"name":"0stv0","email":"stevku.mejster@gmail.com"}],"readme":"## Project Setup\n1. Setup TypeScript project\n2. ``npm i @0stv0/endlang``\n3. Setup project with this scheme:\n```\nroot/\n├── endpoints/\n│   └── user.endpoint\n├── src/\n│   ├── handlers/\n│   │   └── testHandler.ts\n│   ├── middlewares/\n│   │   └── testMiddle.ts\n│   └── index.ts\n├── package.json\n└── tsconfig.json\n```\n\n## Example .endpoint file\n```bash\nGROUP /user/v1; # parent path (Optional)\n\nPATH /test; # last part of path or full if group not setted\nMETHOD POST; # GET | POST | PUT | DELETE\n\nHANDLER testHandler.handler; # file in handlers directory and exported handler function name (file.function)\nMIDDLE testMiddle.middle1 & testMiddle.middle2; # middlewares in the same format as handler (add as many you want) (Optional)\n\nBODY { name, lastname, email }; # verify wheter the payload contains all these specific fields (no less, no more) (Optional)\n```\n\n## Dev Mode\nTest only in build, because endpoints and handlers are loaded from dist directory.\n\n## Server Startup\n```ts\nimport { Server } from '@0stv0/endlang';\n\nlet sv: Server = new Server(4000, async() =>\n{\n    console.log('API listening on http://localhost:4000/');\n});\nawait sv.listen();\n```\n\n## First Handler\n```ts\nimport { Handler } from \"@0stv0/endlang\";\n\nconst handler: Handler = async(req, res) =>\n{\n    res.status(200).setJson({message: '123'});\n};\nexport { handler };\n```\n\n## First Middleware\n```ts\nimport { Middle } from \"@0stv0/endlang\";\n\nconst middle: Middle = async(req) =>\n{\n    if (1 > 2)\n        return [false, {error: 'check math'}];\n    return [true, {}];  \n};\nexport { middle };\n```\n\n## Request Interface\n```ts\npath: string // request path\nmethod: string // request method\nheaders: Record<string, string | string[] | undefined> // request headers\nquery: Record<string, string> // All params after ?\nbody: Record<string, any> // request payload\n```\n\n## Response Interface\n```ts\nstatus: (code: number) => Response; // response code\nsetJson: (body: Record<string, any>) => Response; // responde body\nsetHeader: (name: string, value: string | string[]) => Response; // set header\nsetResponse: (code: number, body: Record<string, any>) => Response; // set code and body\nsetNoCache: () => Response; // set no cache in return\nsetAuthHeader: (token: string) => Response; // set token in Bearer {token}\n```\n\n## Server Config (Update v1.1.0)\n```ts\nimport { Server } from '@0stv0/endlang';\n\nlet sv: Server = new Server(4000, async() =>\n{\n    console.log('API listening on http://localhost:4000/');\n}, {\n    generateDocs: true, // default false\n    cors: 'http://localhost:3000' // default none\n});\nawait sv.listen();\n\n// generateDocs: boolean -> auto generates all endpoints descriptions in docs directory (Directory is auto-created)\n// cors: string -> set cors url\n```\n\n## Query Checker & Description (Update v1.1.0)\n```bash\nGROUP /user/v1;\n\nPATH /test;\nMETHOD GET;\n\nHANDLER testHandler.handler;\nMIDDLE testMiddle.middle1 & testMiddle.middle2;\n\nDESC Some description of route; # Description is exported in autodocs generator.\n\nQUERY { id, someKey }; # Same as body but this is checker for query params. Works with every method.\n```","readmeFilename":"README.md"}