UNPKG

@kikiutils/nitro-session

Version:
1 lines 3.82 kB
{"version":3,"file":"cookie-or-header.mjs","sources":["../../../src/handlers/data/cookie-or-header.ts"],"sourcesContent":["import { Buffer } from 'node:buffer';\n\nimport type { H3Event } from 'h3';\nimport { AesCiphers } from 'node-ciphers';\n\nimport type { DataStorageOptions } from '../../types/options';\n\nimport type { StoredData } from './';\n\nexport class CookieOrHeaderDataHandler {\n #cipher: AesCiphers.Cbc | AesCiphers.Cfb | AesCiphers.Cfb1 | AesCiphers.Cfb8 | AesCiphers.Ctr | AesCiphers.Ofb;\n\n constructor(options?: DataStorageOptions.CookieOrHeader['options']) {\n const aesModeToCipherClassMap = {\n cbc: AesCiphers.Cbc,\n cfb: AesCiphers.Cfb,\n cfb1: AesCiphers.Cfb1,\n cfb8: AesCiphers.Cfb8,\n ctr: AesCiphers.Ctr,\n ofb: AesCiphers.Ofb,\n } as const;\n\n if (options?.encryptionMode && !aesModeToCipherClassMap[options.encryptionMode]) {\n throw new Error(`Invalid cookie/header data encryption mode: ${options.encryptionMode}`);\n }\n\n if (!options?.key) throw new Error('No cookie/header data encryption key provided');\n const isKeyLengthValid = [\n 16,\n 24,\n 32,\n ].includes(Buffer.from(options.key, options.encodingOptions?.key).byteLength);\n if (!isKeyLengthValid) throw new Error('Invalid cookie/header data encryption key length');\n this.#cipher = new aesModeToCipherClassMap[options.encryptionMode || 'ctr'](\n options.key,\n Object.assign(\n {\n decryptInput: 'base64',\n encryptOutput: 'base64',\n iv: 'base64',\n },\n options.encodingOptions,\n ),\n );\n }\n\n delete(_: string) {}\n\n get(_: H3Event, token: string) {\n const separatorIndex = token.lastIndexOf(':');\n if (separatorIndex === -1) return;\n return this.#cipher.decryptToJson<StoredData>(token.slice(0, separatorIndex), token.slice(separatorIndex + 1));\n }\n\n setOrProcessAndGetToken(_: H3Event, data: StoredData) {\n const encryptResult = this.#cipher.encryptJson(data);\n if (encryptResult) return `${encryptResult.data}:${encryptResult.iv}`;\n }\n}\n"],"names":[],"mappings":";;;MASa,yBAAyB,CAAA;AAClC,IAAA,OAAO;AAEP,IAAA,WAAA,CAAY,OAAsD,EAAA;AAC9D,QAAA,MAAM,uBAAuB,GAAG;YAC5B,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,GAAG,EAAE,UAAU,CAAC,GAAG;SACb;AAEV,QAAA,IAAI,OAAO,EAAE,cAAc,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;YAC7E,MAAM,IAAI,KAAK,CAAC,CAAA,4CAAA,EAA+C,OAAO,CAAC,cAAc,CAAE,CAAA,CAAC;;QAG5F,IAAI,CAAC,OAAO,EAAE,GAAG;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;AACnF,QAAA,MAAM,gBAAgB,GAAG;YACrB,EAAE;YACF,EAAE;YACF,EAAE;AACL,SAAA,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC;AAC7E,QAAA,IAAI,CAAC,gBAAgB;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;QAC1F,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,CACvE,OAAO,CAAC,GAAG,EACX,MAAM,CAAC,MAAM,CACT;AACI,YAAA,YAAY,EAAE,QAAQ;AACtB,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,EAAE,EAAE,QAAQ;AACf,SAAA,EACD,OAAO,CAAC,eAAe,CAC1B,CACJ;;IAGL,MAAM,CAAC,CAAS,EAAA;IAEhB,GAAG,CAAC,CAAU,EAAE,KAAa,EAAA;QACzB,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;QAC7C,IAAI,cAAc,KAAK,EAAE;YAAE;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAa,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;;IAGlH,uBAAuB,CAAC,CAAU,EAAE,IAAgB,EAAA;QAChD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;AACpD,QAAA,IAAI,aAAa;YAAE,OAAO,CAAA,EAAG,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,EAAE,CAAA,CAAE;;AAE5E;;;;"}