@powership/server
Version:
1 lines • 4.08 kB
Source Map (JSON)
{"version":3,"file":"ServerRequest.cjs","names":["_httpErrors","_interopRequireDefault","require","_BaseRequestHandler","_ServerLogs","e","__esModule","default","Unauthorized","httpErrors","__LOCAL_DEV_USERID__","exports","process","env","NODE_ENV","ServerRequest","BaseRequestHandler","constructor","input","locals","userId","permissions","_userId","_permissions","Set","getPermissions","values","userIdOptional","undefined","assertPermission","permission","hasPermission","ServerLogs","error","has","strict","create"],"sources":["../src/ServerRequest.ts"],"sourcesContent":["import httpErrors from 'http-errors';\n\nimport {\n BaseRequestHandler,\n HeaderRecordInit,\n RequestBody,\n} from './BaseRequestHandler';\nimport { ServerLogs } from './ServerLogs';\n\nconst { Unauthorized } = httpErrors;\n\nexport type ServerRequestInit = {\n locals?: Record<string, unknown>;\n url: string | undefined;\n headers: HeaderRecordInit | Headers;\n body: RequestBody;\n method: string;\n userId?: string;\n permissions?: string[];\n};\n\nexport let __LOCAL_DEV_USERID__ =\n process.env.NODE_ENV === 'development' ? '__LOCAL_DEV_USERID__' : null;\n\nexport class ServerRequest extends BaseRequestHandler {\n private _userId?: string;\n private _permissions: Set<string>;\n input: ServerRequestInit;\n\n constructor(input: ServerRequestInit) {\n super(input);\n this.input = input;\n const { locals = {}, userId, permissions = [] } = input;\n this.locals = locals;\n this._userId = userId;\n this._permissions = new Set<string>(permissions);\n }\n\n getPermissions = () => {\n return [...this._permissions.values()];\n };\n\n locals: Record<string, unknown>;\n\n userIdOptional(): string | undefined {\n return this._userId || __LOCAL_DEV_USERID__ || undefined;\n }\n\n assertPermission(permission: string): boolean {\n const userId = this.userId();\n if (this.hasPermission(permission)) return true;\n ServerLogs.error('Unauthorized', { userId, permission });\n throw new Unauthorized();\n }\n\n hasPermission(permission: string): boolean {\n if (__LOCAL_DEV_USERID__) return true;\n return this._permissions.has(permission);\n }\n\n userId(strict = true): string {\n const userId = this.userIdOptional();\n if (userId) return userId;\n if (strict) {\n throw new Unauthorized();\n }\n return '';\n }\n\n static create = (input: ServerRequestInit): ServerRequest => {\n return new ServerRequest(input);\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqC,IAAAC,mBAAA,GAAAD,OAAA;AAAA,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AASrC,MAAM;EAAEG;AAAa,CAAC,GAAGC,mBAAU;AAY5B,IAAIC,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAC7BE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,GAAG,sBAAsB,GAAG,IAAI;AAEjE,MAAMC,aAAa,SAASC,sCAAkB,CAAC;EAKpDC,WAAWA,CAACC,KAAwB,EAAE;IACpC,KAAK,CAACA,KAAK,CAAC;IACZ,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,MAAM;MAAEC,MAAM,GAAG,CAAC,CAAC;MAAEC,MAAM;MAAEC,WAAW,GAAG;IAAG,CAAC,GAAGH,KAAK;IACvD,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACG,OAAO,GAAGF,MAAM;IACrB,IAAI,CAACG,YAAY,GAAG,IAAIC,GAAG,CAASH,WAAW,CAAC;EAClD;EAEAI,cAAc,GAAGA,CAAA,KAAM;IACrB,OAAO,CAAC,GAAG,IAAI,CAACF,YAAY,CAACG,MAAM,CAAC,CAAC,CAAC;EACxC,CAAC;EAIDC,cAAcA,CAAA,EAAuB;IACnC,OAAO,IAAI,CAACL,OAAO,IAAIZ,oBAAoB,IAAIkB,SAAS;EAC1D;EAEAC,gBAAgBA,CAACC,UAAkB,EAAW;IAC5C,MAAMV,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC,CAAC;IAC5B,IAAI,IAAI,CAACW,aAAa,CAACD,UAAU,CAAC,EAAE,OAAO,IAAI;IAC/CE,sBAAU,CAACC,KAAK,CAAC,cAAc,EAAE;MAAEb,MAAM;MAAEU;IAAW,CAAC,CAAC;IACxD,MAAM,IAAItB,YAAY,CAAC,CAAC;EAC1B;EAEAuB,aAAaA,CAACD,UAAkB,EAAW;IACzC,IAAIpB,oBAAoB,EAAE,OAAO,IAAI;IACrC,OAAO,IAAI,CAACa,YAAY,CAACW,GAAG,CAACJ,UAAU,CAAC;EAC1C;EAEAV,MAAMA,CAACe,MAAM,GAAG,IAAI,EAAU;IAC5B,MAAMf,MAAM,GAAG,IAAI,CAACO,cAAc,CAAC,CAAC;IACpC,IAAIP,MAAM,EAAE,OAAOA,MAAM;IACzB,IAAIe,MAAM,EAAE;MACV,MAAM,IAAI3B,YAAY,CAAC,CAAC;IAC1B;IACA,OAAO,EAAE;EACX;EAEA,OAAO4B,MAAM,GAAIlB,KAAwB,IAAoB;IAC3D,OAAO,IAAIH,aAAa,CAACG,KAAK,CAAC;EACjC,CAAC;AACH;AAACP,OAAA,CAAAI,aAAA,GAAAA,aAAA","ignoreList":[]}