{"_id":"@arfedulov/koa-jsonapi-controllers","_rev":"1-d1a4cd83c49ab57ebffd0315fd122312","name":"@arfedulov/koa-jsonapi-controllers","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@arfedulov/koa-jsonapi-controllers","version":"0.1.0","main":"dist/index.js","author":{"name":"Artem Fedulov","email":"arfedulov@gmail.com"},"description":"jsonapi controllers for koa","license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/arfedulov/koa-jsonapi-controllers.git"},"bugs":{"url":"https://github.com/arfedulov/koa-jsonapi-controllers/issues","email":"arfedulov@gmail.com"},"keywords":["koa","jsonapi","controller","typescript"],"peerDependencies":{"koa":"^2.11.0"},"dependencies":{"@arfedulov/json-api-url-parser":"^0.1.1","@arfedulov/koa-jsonapi-errors":"^0.1.2"},"devDependencies":{"@types/jest":"^24","@types/koa":"^2.0.52","@types/node":"^12","jest":"^24","ts-jest":"^24","ts-node":"^8","tslint":"^5","typescript":"^3"},"scripts":{"test":"jest --passWithNoTests","check":"tsc --noEmit","prebuild":"rm -rf dist && yarn test","build":"npx tsc -p tsconfig.build.json --declaration","prepublish":"yarn build"},"gitHead":"ca2b20c6c0960b87029382aa1a5f4c80b3ae8844","homepage":"https://github.com/arfedulov/koa-jsonapi-controllers#readme","_id":"@arfedulov/koa-jsonapi-controllers@0.1.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-OFpk5Wi4+5iyAoOAaw0jj4dAqnTUbdMzkyy64RCQ1waL3d1Gmo5BhMaVr0hL6EUwKaPzAdY1060IKW3zx/veRw==","shasum":"39b574a691e79ead7d3583acc6d01c03dd232374","tarball":"https://registry.npmjs.org/@arfedulov/koa-jsonapi-controllers/-/koa-jsonapi-controllers-0.1.0.tgz","fileCount":25,"unpackedSize":52769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxpomCRA9TVsSAnZWagAAvAEP/0AvvEyNyqZUh4gYTVj3\nsUMOFc28z06mLK9HFhT09UqZ6DEL/eZMV1gsp6sxJ1qLWvaPlnvZXpkKsaDI\nhEmqF4bQgFh0JRrT6RAeQNhINEP9fB+k4x8dDiqLdaImXDbw9hLNijw+7KEg\n0hNxBvuJmsw35boe4NySs6F+niEx4T0Yn9G2PUY/L7qaSnZZL6opmNRbtpOg\n8lp3VIu8WLCA7zXBsA2tcpvSyNfJw9FMcoWm3+6mvG7ZHbNi5AL1RfOtkvl1\nk9/LfX63wVlC3BKFtu65eUzEegLf1uS/vbsHKjXEou5Ijd7t+CmcmY73HcJn\n5USbkjBF76cDHLYqexFvNiqnURVKIFAsqkh1spJSPJBRlGTb4LEgaK8zC494\n1urvE9oPXOCb5B2GCiUpiysohUceFs9sCjhmFEHYrTPEmNzKZOgcJzy/esfn\nmrOjJ+gNa332XHNfqYW/mUxHxwi9yAkOAlme4QY+D7yf3reBNsM8pW6cy/nU\n6B0kTZeLgzjuqXrXCbVwXSa+KwA1Rv49GT/QbDwtVR8IbuE2W6Exbln4oJZP\nx+nr8bHF9WEt8ykR5o1lG95yLd1pS/LJG9h9F285pSpaw2TKsrHJ+GkLYISH\nCLX564iCFue+fWegKIMO+wmbJCShgiRZ96d3gSZ8X/skWGO350kW72AHw5hO\ntpC6\r\n=h6mF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5hXkEu9ZLthOm7ZucR5iYlc3wB2G6NJoN0t8dFPvNZgIgdRxxOCQpx5l7IPM3Tz0uNw2ZpYgsm08NqprYcY2tyfM="}]},"maintainers":[{"name":"arfedulov","email":"arfedulov@gmail.com"}],"_npmUser":{"name":"arfedulov","email":"arfedulov@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/koa-jsonapi-controllers_0.1.0_1573296677975_0.19777189565170605"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-09T10:51:17.730Z","0.1.0":"2019-11-09T10:51:18.116Z","modified":"2022-04-04T15:24:09.479Z"},"maintainers":[{"name":"arfedulov","email":"arfedulov@gmail.com"}],"description":"jsonapi controllers for koa","homepage":"https://github.com/arfedulov/koa-jsonapi-controllers#readme","keywords":["koa","jsonapi","controller","typescript"],"repository":{"type":"git","url":"git+https://github.com/arfedulov/koa-jsonapi-controllers.git"},"author":{"name":"Artem Fedulov","email":"arfedulov@gmail.com"},"bugs":{"url":"https://github.com/arfedulov/koa-jsonapi-controllers/issues","email":"arfedulov@gmail.com"},"license":"MIT","readme":"# koa-jsonapi-controllers\n\njsonapi controllers for koa.\n\n## Installation\n\n```\nyarn add @arfedulov/koa-jsonapi-controllers\n```\n\n## Usage\n\n```ts\nimport Koa, { Context } from 'koa';\n// jsonapi error-handling middleware\nimport { jsonApiErrors } from '@arfedulov/koa-jsonapi-errors';\n\nimport {\n  BaseController,\n  createMainRequestHandler,\n  JsonapiContext,\n} from '@arfedulov/koa-jsonapi-controllers';\n\nconst app = new Koa();\n\n// Each your controller should extend BaseController\nclass UserController extends BaseController {\n  // jsonapi resource type\n  name = 'users';\n\n  // overwrite any method you want\n  // the default implementation throws NotFound error\n  getSingleResource = async (ctx: JsonapiContext) => {\n    //\n  }\n}\n\nclass PostController extends BaseController {\n  name = 'posts';\n\n  getSingleResource = async (ctx: JsonapiContext) => {\n    //\n  }\n}\n\nconst userController = new UserController();\nconst postController = new PostController();\n\nconst requestHandler = createMainRequestHandler([ userController, postController ]);\n\napp.use(jsonApiErrors);\napp.use(requestHandler);\n```\n\nAs this module throws errors, it is recommended to use it with *@arfedulov/koa-jsonapi-errors*\nmiddleware. In this case you'll get automatically generated valid jsonapi error responses.\n\n```ts\napp.use(jsonApiErrors);\napp.use(requestHandler);\n```\n\nLook at `BaseController` source code for the rest of possible request handlers.\n\nYou will probably need an access to jsonapi url parameters and url-queries.\nThose are exposed on `ctx` argument passed to each request handler. *@arfedulov/json-api-url-parser*\nmodule is used for parsing url into `ctx.[JSON_API_URL_PARAMS_KEY]`. Look the docs for [json-api-url-parser](https://github.com/arfedulov/json-api-url-parser#readme) for the list of available parameters.\n\n```ts\nimport {\n  BaseController,\n  createMainRequestHandler,\n  JsonapiContext,\n  JSON_API_URL_PARAMS_KEY,\n} from '@arfedulov/koa-jsonapi-controllers';\n\nclass PostController extends BaseController {\n  name = 'posts';\n\n  getSingleResource = async (ctx: JsonapiContext) => {\n    const jsonapiParams = ctx[JSON_API_URL_PARAMS_KEY];\n    // ......\n  }\n}\n","readmeFilename":"README.md"}