{"bugs":{"url":"https://github.com/clerkinc/javascript/issues"},"dist":{"shasum":"5a82fcb39fb1e172132a95f74e04e5d8d9dd5399","tarball":"https://registry.npmjs.org/@clerk/backend-core/-/backend-core-0.4.1-staging.0.tgz","fileCount":417,"integrity":"sha512-xenIbSzkNnMjy87t1bI34+Jc6CCq08jrF6iBxRSW+r8JlvjtWlvSVDhH7y8Hum5Str4/qACVyp2KQ39f4nX+5A==","signatures":[{"sig":"MEUCIQD4o0oVjEGQbkgxHishP6JEdClKjgu/RI9g/DO9RwD9YQIgZZ/a7So0Sfnec/20qNruPMjgRi+ue06LHBZPK73g15c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":510289,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBlIgCRA9TVsSAnZWagAA8G0QAIIo3GaLIgFsqPbB+ApC\nQeBEWsImkR3/xP7QfFPVHNBUAaPsmXpjRVcx6ocZERRga0XRrymfSQ9PpFhS\nq59qG9zdy2G4P9967IIJUbqEE/d+ek0qvn6hnxDR1uPXpIagEpy9xAcxtLES\nd6jv+kZB00rufDLUAymDIuJzGXT8ZBhjf+5hbOj1gy/Hl7hzIqMQJ59jLIWD\n9NW9hvik0S4vrrA2Tbjv0+rgf3lJkLccBE4KnOiKKH2ysi86jYcGRJPyXl5P\n6usUwUbCNQNiPPENqgfnoB1xZq9em//Y1ixtaNccTFmUjIY1ueerK8ok16mL\nHs6LnyS4VPyOQ44Vp17OFyLUNezbfn6YdvuUWbf9WxXeBINRVkB8aJnVyFz3\nhcS3lKUqqXrCDoTNnf2O5zsg0vNd+kRlw+1TvqB7epxy/HgMcvGVaLE4Qta9\nRXoEYyfIFV2hbE3wFKiPLl/+UqirVb/wOvIt964GhxV0BfV8ZaXykfw3XjOl\n0zqw1QUzFOlt5WlWvIPeurnjglNUcvK7J47X4nk1kZpI2Z5C/ehUzOLdbMrY\nzTb46BzSquv6HKCbM8yX2ZOBjmGULY+bn2sEKrtBkKJxeRHCoYKe8RL3qq5Q\nbzeGppSlLYgtOGGTAR8K5VjVu1HzerIjmyOHRKBR/jJl6W9qpXNqM1/Ytzhx\nUZx0\r\n=sN5K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cjs/index.js","name":"@clerk/backend-core","type":"module","module":"dist/mjs/index.js","readme":"<p align=\"center\">\n  <a href=\"https://clerk.dev/\" target=\"_blank\" align=\"center\">\n    <img src=\"https://images.clerk.dev/static/clerk.svg\" height=\"50\">\n  </a>\n  <br />\n</p>\n\n# Clerk Backend Core SDK\n\n_Core Clerk API resources and authentication utilities for JavaScript environments._\n\n```diff\n! This package provides low-level utilities and is mostly used as the base for other Clerk SDKs.\n```\n\n## Usage\n\n```sh\nnpm install @clerk/backend-core\n# or\nyarn add @clerk/backend-core\n```\n\n## Architecture\n\n`@clerk/backend-core` contains all the logic for basic Clerk functionalities such as:\n\n- Determining the authentication state of a session.\n- Validating a Clerk token state.\n- Clerk API resource management.\n\nwithout being platform/environment specific.\n\n### How it works\n\nThis package is used as the base building block for Clerk JavaScript SDKs and environments. This is achieved by providing all the required business logic if only a few environment-specific utilities are implemented by the client.\n\n<p align=\"center\">\n  <a href=\"https://clerk.dev/\" target=\"_blank\" align=\"center\">\n    <img src=\"https://images.clerk.dev/static/backend_api_architecture.png\" height=\"350\">\n  </a>\n  <br />\n</p>\n\nIn essence, the client should supply these key functions in the Clerk [Base](./src/Base.ts#47) and [ClerkBackendAPI](./src/api/ClerkBackendAPI.ts) classes:\n\n1. Public key import `importKeyFunction`.\n2. JWT signature verification `verifySignatureFunction`.\n3. Base64 decoding `decodeBase64Function`.\n4. HTTP fetching utility for the API resource management `ClerkFetcher`.\n\nAfter supplying those in the `Base` and `ClerkBackendAPI` classes, you can use all the Clerk utilities required for the SDK business logic.\n\n### Creating a Base for a new SDK\n\n```ts\nconst importKey = async (jwk: JsonWebKey, algorithm: Algorithm) => {\n  //  ...\n};\n\nconst verifySignature = async (\n  algorithm: Algorithm,\n  key: CryptoKey,\n  signature: Uint8Array,\n  data: Uint8Array\n) => {\n  // ...\n};\n\nconst decodeBase64 = (base64: string) => {\n  // ...\n};\n\n/** Base initialization */\n\nconst examplePlatformBase = new Base(importKey, verifySignature, decodeBase64);\n```\n\nAfter creating the `Base` instance you can use core functions such as:\n\n```ts\nexamplePlatformBase.verifySessionToken(...);\n\nexamplePlatformBase.getAuthState(...);\n```\n\nThe `Base` utilities include the building blocks for developing any extra logic and middleware required for the target platform.\n\n### Validate the Authorized Party of a session token\nClerk's JWT session token, contains the azp claim, which equals the Origin of the request during token generation. You can provide a list of whitelisted origins to verify against, during every token verification, to protect your application of the subdomain cookie leaking attack. You can find an example below:\n\n```ts\nconst authorizedParties = ['http://localhost:3000', 'https://example.com']\n\nexamplePlatformBase.verifySessionToken(token> { authorizedParties });\n```\n\n### Clerk API Resources\n\nAPI resource management is also provided by this package through the [ClerkBackendAPI](./src/api/ClerkBackendAPI.ts) class. For more information on the API resources you can checkout the [resource documentation page](https://docs.clerk.dev/reference/backend-api-reference).\n\nTo use the Clerk Backend API wrapper in any JavaScript platform, you would need to provide some specific SDK information and an HTTP fetching utility. See more at the [ClerkBackendAPIProps](./src/api/ClerkBackendAPI.ts#17) implementation.\n","gitHead":"31563a57cce5e8ae3173923e7a8d3289bddf9928","license":"MIT","scripts":{"test":"jest","build":"tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && ./moduleTypeFix"},"_npmUser":{"name":"sokratis","email":"sokratis.vidros@gmail.com"},"homepage":"https://clerk.dev/","deprecated":"This package has been deprecated - use @clerk/backend instead","repository":{"url":"git+https://github.com/clerkinc/javascript.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (darwin)","description":"<p align=\"center\">   <a href=\"https://clerk.dev/\" target=\"_blank\" align=\"center\">     <img src=\"https://images.clerk.dev/static/clerk.svg\" height=\"50\">   </a>   <br /> </p>","directories":{},"maintainers":[{"name":"giannis-clerk","email":"giannis@clerk.dev"},{"name":"igneel64","email":"p.perlepes@gmail.com"},{"name":"chanioxaris","email":"haris@clerk.dev"},{"name":"agis-clerk","email":"agis@clerk.dev"},{"name":"colinclerk","email":"colin@clerk.dev"},{"name":"bradenclerk","email":"braden@clerk.dev"},{"name":"sokratis","email":"sokratis.vidros@gmail.com"},{"name":"yourtallness","email":"mark@clerk.dev"},{"name":"nikosdouvlis","email":"nikosdouvlis@gmail.com"}],"_nodeVersion":"16.13.0","dependencies":{"query-string":"^7.0.1","camelcase-keys":"^7.0.1","snakecase-keys":"^5.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"got":"^11.0.0","jest":"^27.4.7","nock":"^13.2.1","ts-jest":"^27.1.3","node-fetch":"^2.6.0","typescript":"4.5.5","@types/jest":"^27.4.0","@types/node":"^16.11.12","@types/node-fetch":"^2","@peculiar/webcrypto":"^1.2.3"},"_npmOperationalInternal":{"tmp":"tmp/backend-core_0.4.1-staging.0_1644581408256_0.6053721298527697","host":"s3://npm-registry-packages"},"_id":"@clerk/backend-core@0.4.1-staging.0","version":"0.4.1-staging.0"}