lambder 1.0.29 → 1.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Lambder.d.ts CHANGED
@@ -35,6 +35,9 @@ type HookBeforeRenderFunction = (renderContext: RenderContext, resolver: Resolve
35
35
  type HookAfterRenderFunction = (renderContext: RenderContext, resolver: Resolver, renderResult: ResolverResponse) => ResolverResponse | Promise<ResolverResponse>;
36
36
  type HookFallbackFunction = (renderContext: RenderContext, resolver: Resolver) => ResolverResponse | Promise<ResolverResponse>;
37
37
  type HookCompletedFunction = (renderResult: ResolverResponse) => ResolverResponse | Promise<ResolverResponse>;
38
+ type GlobalErrorHandlerFunction = (err: Error, renderContext: RenderContext | null) => ResolverResponse | Promise<ResolverResponse>;
39
+ type RouteFallbackHandlerFunction = (renderContext: RenderContext, resolver: Resolver) => ResolverResponse;
40
+ type ApiFallbackHandlerFunction = (renderContext: RenderContext, resolver: Resolver) => ResolverResponse;
38
41
  export declare const createContext: (event: APIGatewayProxyEvent, lambdaContext: Context) => RenderContext;
39
42
  export default class Lambder {
40
43
  private apiPath;
@@ -52,9 +55,9 @@ export default class Lambder {
52
55
  apiVersion?: string;
53
56
  isCorsEnabled?: boolean;
54
57
  });
55
- setRouteFallbackHandler(routeFallbackHandler: (renderContext: RenderContext, resolver: Resolver) => ResolverResponse): void;
56
- setApiFallbackHandler(apiFallbackHandler: (renderContext: RenderContext, resolver: Resolver) => ResolverResponse): void;
57
- setGlobalErrorHandler(globalErrorHandler: (err: Error) => ResolverResponse): void;
58
+ setRouteFallbackHandler(routeFallbackHandler: RouteFallbackHandlerFunction): void;
59
+ setApiFallbackHandler(apiFallbackHandler: ApiFallbackHandlerFunction): void;
60
+ setGlobalErrorHandler(globalErrorHandler: GlobalErrorHandlerFunction): void;
58
61
  private validateSession;
59
62
  private handleNoMatchedAction;
60
63
  addModule(moduleFn: Function): Promise<void>;
package/dist/Lambder.js CHANGED
@@ -147,8 +147,10 @@ export default class Lambder {
147
147
  }
148
148
  }
149
149
  async render(event, lambdaContext) {
150
+ let eventRenderContext = null;
150
151
  try {
151
152
  let renderContext = createContext(event, lambdaContext);
153
+ eventRenderContext = renderContext;
152
154
  return await new Promise(async (resolve, reject) => {
153
155
  const resolver = new Resolver({
154
156
  isCorsEnabled: this.isCorsEnabled,
@@ -187,7 +189,7 @@ export default class Lambder {
187
189
  catch (err) {
188
190
  const wrappedError = err instanceof Error ? err : new Error("Error: " + String(err));
189
191
  if (this.globalErrorHandler) {
190
- return this.globalErrorHandler(wrappedError);
192
+ return this.globalErrorHandler(wrappedError, eventRenderContext);
191
193
  }
192
194
  return { statusCode: 500, body: "Internal Server Error.", };
193
195
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lambder",
3
- "version": "1.0.29",
3
+ "version": "1.0.31",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/Lambder.ts CHANGED
@@ -36,6 +36,10 @@ type HookAfterRenderFunction = (renderContext: RenderContext, resolver: Resolver
36
36
  type HookFallbackFunction = (renderContext: RenderContext, resolver: Resolver) => ResolverResponse|Promise<ResolverResponse>;
37
37
  type HookCompletedFunction = (renderResult: ResolverResponse) => ResolverResponse|Promise<ResolverResponse>;
38
38
 
39
+ type GlobalErrorHandlerFunction = (err: Error, renderContext: RenderContext|null) => ResolverResponse|Promise<ResolverResponse>;
40
+ type RouteFallbackHandlerFunction = (renderContext:RenderContext, resolver: Resolver) => ResolverResponse;
41
+ type ApiFallbackHandlerFunction = (renderContext:RenderContext, resolver: Resolver) => ResolverResponse;
42
+
39
43
  type HookEventType = "created"|"beforeRender"|"afterRender"|"fallback"|"completed";
40
44
  type HookListType = {
41
45
  priority: number,
@@ -77,9 +81,9 @@ export default class Lambder {
77
81
  "fallback": { priority: number, hookFn: HookFallbackFunction }[],
78
82
  "completed": { priority: number, hookFn: HookCompletedFunction }[]
79
83
  };
80
- private globalErrorHandler: Function|null = null;
81
- private routeFallbackHandler: Function|null = null;
82
- private apiFallbackHandler: Function|null = null;
84
+ private globalErrorHandler: GlobalErrorHandlerFunction|null = null;
85
+ private routeFallbackHandler: RouteFallbackHandlerFunction|null = null;
86
+ private apiFallbackHandler: ApiFallbackHandlerFunction|null = null;
83
87
 
84
88
  constructor(
85
89
  { publicPath, apiPath, apiVersion, isCorsEnabled, }:
@@ -99,13 +103,13 @@ export default class Lambder {
99
103
  };
100
104
  }
101
105
 
102
- setRouteFallbackHandler(routeFallbackHandler: (renderContext:RenderContext, resolver: Resolver)=>ResolverResponse){
106
+ setRouteFallbackHandler(routeFallbackHandler: RouteFallbackHandlerFunction){
103
107
  this.routeFallbackHandler = routeFallbackHandler;
104
108
  }
105
- setApiFallbackHandler(apiFallbackHandler: (renderContext:RenderContext, resolver: Resolver)=>ResolverResponse){
109
+ setApiFallbackHandler(apiFallbackHandler: ApiFallbackHandlerFunction){
106
110
  this.apiFallbackHandler = apiFallbackHandler;
107
111
  }
108
- setGlobalErrorHandler(globalErrorHandler: (err: Error)=>ResolverResponse){
112
+ setGlobalErrorHandler(globalErrorHandler: GlobalErrorHandlerFunction){
109
113
  this.globalErrorHandler = globalErrorHandler;
110
114
  }
111
115
 
@@ -222,8 +226,11 @@ export default class Lambder {
222
226
  event: APIGatewayProxyEvent,
223
227
  lambdaContext: Context
224
228
  ): Promise<ResolverResponse>{
229
+ let eventRenderContext:RenderContext|null = null;
230
+
225
231
  try {
226
- let renderContext:RenderContext = createContext(event, lambdaContext)
232
+ let renderContext = createContext(event, lambdaContext);
233
+ eventRenderContext = renderContext;
227
234
 
228
235
  return await new Promise(async (
229
236
  resolve:(renderResult: ResolverResponse)=>void,
@@ -263,9 +270,8 @@ export default class Lambder {
263
270
  });
264
271
  }catch(err){
265
272
  const wrappedError = err instanceof Error ? err : new Error("Error: " + String(err));
266
-
267
273
  if(this.globalErrorHandler){
268
- return this.globalErrorHandler(wrappedError);
274
+ return this.globalErrorHandler(wrappedError, eventRenderContext);
269
275
  }
270
276
  return { statusCode: 500, body: "Internal Server Error.", }
271
277