Current collected state Current
Observed since 20 Oct, 22:15 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0stv0/endlang
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
npm i @0stv0/endlangroot/
├── endpoints/
│ └── user.endpoint
├── src/
│ ├── handlers/
│ │ └── testHandler.ts
│ ├── middlewares/
│ │ └── testMiddle.ts
│ └── index.ts
├── package.json
└── tsconfig.json
GROUP /user/v1; # parent path (Optional)
PATH /test; # last part of path or full if group not setted
METHOD POST; # GET | POST | PUT | DELETE
HANDLER testHandler.handler; # file in handlers directory and exported handler function name (file.function)
MIDDLE testMiddle.middle1 & testMiddle.middle2; # middlewares in the same format as handler (add as many you want) (Optional)
BODY { name, lastname, email }; # verify wheter the payload contains all these specific fields (no less, no more) (Optional)
Test only in build, because endpoints and handlers are loaded from dist directory.
import { Server } from '@0stv0/endlang';
let sv: Server = new Server(4000, async() =>
{
console.log('API listening on http://localhost:4000/');
});
await sv.listen();
import { Handler } from "@0stv0/endlang";
const handler: Handler = async(req, res) =>
{
res.status(200).setJson({message: '123'});
};
export { handler };
import { Middle } from "@0stv0/endlang";
const middle: Middle = async(req) =>
{
if (1 > 2)
return [false, {error: 'check math'}];
return [true, {}];
};
export { middle };
path: string // request path
method: string // request method
headers: Record<string, string | string[] | undefined> // request headers
query: Record<string, string> // All params after ?
body: Record<string, any> // request payload
status: (code: number) => Response; // response code
setJson: (body: Record<string, any>) => Response; // responde body
setHeader: (name: string, value: string | string[]) => Response; // set header
setResponse: (code: number, body: Record<string, any>) => Response; // set code and body
setNoCache: () => Response; // set no cache in return
setAuthHeader: (token: string) => Response; // set token in Bearer {token}
import { Server } from '@0stv0/endlang';
let sv: Server = new Server(4000, async() =>
{
console.log('API listening on http://localhost:4000/');
}, {
generateDocs: true, // default false
cors: 'http://localhost:3000' // default none
});
await sv.listen();
// generateDocs: boolean -> auto generates all endpoints descriptions in docs directory (Directory is auto-created)
// cors: string -> set cors url
GROUP /user/v1;
PATH /test;
METHOD GET;
HANDLER testHandler.handler;
MIDDLE testMiddle.middle1 & testMiddle.middle2;
DESC Some description of route; # Description is exported in autodocs generator.
QUERY { id, someKey }; # Same as body but this is checker for query params. Works with every method.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | ^25.3.5 | runtime |
Source distribution
{
"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
}Observed since 20 Oct, 22:15 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:431e42e2bcc5412b51e8d53f1bd01173136f93439bb2d683b3f33d087c7d0ff6