lambder 1.0.55 → 1.0.56

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
@@ -26,10 +26,9 @@ type RenderContext = {
26
26
  type ConditionFunction = (ctx: RenderContext) => boolean;
27
27
  type ActionFunction = (ctx: RenderContext, resolver: Resolver) => ResolverResponse | Promise<ResolverResponse>;
28
28
  type HookCreatedFunction = (lambderInstance: Lambder) => Promise<void>;
29
- type HookBeforeRenderFunction = (ctx: RenderContext, resolver: Resolver) => RenderContext | Promise<RenderContext>;
30
- type HookAfterRenderFunction = (ctx: RenderContext, resolver: Resolver, response: ResolverResponse) => ResolverResponse | Promise<ResolverResponse>;
31
- type HookFallbackFunction = (ctx: RenderContext, resolver: Resolver) => ResolverResponse | Promise<ResolverResponse>;
32
- type HookCompletedFunction = (response: ResolverResponse) => ResolverResponse | Promise<ResolverResponse>;
29
+ type HookBeforeRenderFunction = (ctx: RenderContext, resolver: Resolver) => RenderContext | Error | Promise<RenderContext | Error>;
30
+ type HookAfterRenderFunction = (ctx: RenderContext, resolver: Resolver, response: ResolverResponse) => ResolverResponse | Error | Promise<ResolverResponse | Error>;
31
+ type HookFallbackFunction = (ctx: RenderContext, resolver: Resolver) => void | Promise<void>;
33
32
  type GlobalErrorHandlerFunction = (err: Error, ctx: RenderContext | null, response: ResponseBuilder) => ResolverResponse | Promise<ResolverResponse>;
34
33
  type RouteFallbackHandlerFunction = (ctx: RenderContext, resolver: Resolver) => ResolverResponse;
35
34
  type ApiFallbackHandlerFunction = (ctx: RenderContext, resolver: Resolver) => ResolverResponse;
@@ -66,7 +65,6 @@ export default class Lambder {
66
65
  addHook(hookEvent: 'beforeRender', hookFn: HookBeforeRenderFunction, priority?: number): Promise<void>;
67
66
  addHook(hookEvent: 'afterRender', hookFn: HookAfterRenderFunction, priority?: number): Promise<void>;
68
67
  addHook(hookEvent: 'fallback', hookFn: HookFallbackFunction, priority?: number): Promise<void>;
69
- addHook(hookEvent: 'completed', hookFn: HookCompletedFunction, priority?: number): Promise<void>;
70
68
  getResponseBuilder(): ResponseBuilder;
71
69
  private getResolver;
72
70
  render(event: APIGatewayProxyEvent, lambdaContext: Context): Promise<ResolverResponse>;
package/dist/Lambder.js CHANGED
@@ -48,7 +48,6 @@ export default class Lambder {
48
48
  "beforeRender": [],
49
49
  "afterRender": [],
50
50
  "fallback": [],
51
- "completed": []
52
51
  };
53
52
  }
54
53
  setRouteFallbackHandler(routeFallbackHandler) {
@@ -206,11 +205,19 @@ export default class Lambder {
206
205
  const firstMatchedAction = this.actionList.find(action => action.conditionFn(ctx));
207
206
  if (firstMatchedAction) {
208
207
  for (const hook of this.hookList["beforeRender"]) {
209
- ctx = await hook.hookFn(ctx, resolver);
208
+ const hookCtx = await hook.hookFn(ctx, resolver);
209
+ if (hookCtx instanceof Error) {
210
+ throw hookCtx;
211
+ }
212
+ ctx = hookCtx;
210
213
  }
211
214
  let response = await firstMatchedAction.actionFn(ctx, resolver);
212
215
  for (const hook of this.hookList["afterRender"]) {
213
- response = await hook.hookFn(ctx, resolver, response);
216
+ const hookResponse = await hook.hookFn(ctx, resolver, response);
217
+ if (hookResponse instanceof Error) {
218
+ throw hookResponse;
219
+ }
220
+ response = hookResponse;
214
221
  }
215
222
  resolve(response);
216
223
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lambder",
3
- "version": "1.0.55",
3
+ "version": "1.0.56",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/Lambder.ts CHANGED
@@ -36,19 +36,18 @@ type ActionFunction = (ctx: RenderContext, resolver: Resolver) => ResolverRespon
36
36
  type ActionObject = { conditionFn: ConditionFunction, actionFn: ActionFunction };
37
37
 
38
38
  type HookCreatedFunction = (lambderInstance: Lambder) => Promise<void>;
39
- type HookBeforeRenderFunction = (ctx: RenderContext, resolver: Resolver) => RenderContext|Promise<RenderContext>;
40
- type HookAfterRenderFunction = (ctx: RenderContext, resolver: Resolver, response: ResolverResponse) => ResolverResponse|Promise<ResolverResponse>;
41
- type HookFallbackFunction = (ctx: RenderContext, resolver: Resolver) => ResolverResponse|Promise<ResolverResponse>;
42
- type HookCompletedFunction = (response: ResolverResponse) => ResolverResponse|Promise<ResolverResponse>;
39
+ type HookBeforeRenderFunction = (ctx: RenderContext, resolver: Resolver) => RenderContext|Error|Promise<RenderContext|Error>;
40
+ type HookAfterRenderFunction = (ctx: RenderContext, resolver: Resolver, response: ResolverResponse) => ResolverResponse|Error|Promise<ResolverResponse|Error>;
41
+ type HookFallbackFunction = (ctx: RenderContext, resolver: Resolver) => void|Promise<void>;
43
42
 
44
43
  type GlobalErrorHandlerFunction = (err: Error, ctx: RenderContext|null, response: ResponseBuilder) => ResolverResponse|Promise<ResolverResponse>;
45
44
  type RouteFallbackHandlerFunction = (ctx:RenderContext, resolver: Resolver) => ResolverResponse;
46
45
  type ApiFallbackHandlerFunction = (ctx:RenderContext, resolver: Resolver) => ResolverResponse;
47
46
 
48
- type HookEventType = "created"|"beforeRender"|"afterRender"|"fallback"|"completed";
47
+ type HookEventType = "created"|"beforeRender"|"afterRender"|"fallback";
49
48
  type HookListType = {
50
49
  priority: number,
51
- hookFn: HookCreatedFunction|HookBeforeRenderFunction|HookAfterRenderFunction|HookFallbackFunction|HookCompletedFunction,
50
+ hookFn: HookCreatedFunction|HookBeforeRenderFunction|HookAfterRenderFunction|HookFallbackFunction,
52
51
  }[];
53
52
 
54
53
  export const createContext = (
@@ -85,7 +84,6 @@ export default class Lambder {
85
84
  "beforeRender": { priority: number, hookFn: HookBeforeRenderFunction }[],
86
85
  "afterRender": { priority: number, hookFn: HookAfterRenderFunction }[],
87
86
  "fallback": { priority: number, hookFn: HookFallbackFunction }[],
88
- "completed": { priority: number, hookFn: HookCompletedFunction }[]
89
87
  };
90
88
  private globalErrorHandler: GlobalErrorHandlerFunction|null = null;
91
89
  private routeFallbackHandler: RouteFallbackHandlerFunction|null = null;
@@ -105,7 +103,6 @@ export default class Lambder {
105
103
  "beforeRender": [],
106
104
  "afterRender": [],
107
105
  "fallback": [],
108
- "completed": []
109
106
  };
110
107
  }
111
108
 
@@ -137,7 +134,7 @@ export default class Lambder {
137
134
  };
138
135
 
139
136
  private async handleNoMatchedAction(ctx: RenderContext, resolver: Resolver){
140
- for(const hook of this.hookList["fallback"]){ await hook.hookFn(ctx, resolver); }
137
+ for(const hook of this.hookList["fallback"]){ await hook.hookFn(ctx, resolver); }
141
138
 
142
139
  const isAPI = ctx.path === this.apiPath;
143
140
  if(isAPI && this.apiFallbackHandler){
@@ -170,6 +167,7 @@ export default class Lambder {
170
167
  }else if(condition?.constructor == RegExp){
171
168
  ctx.pathParams = ctx.path.match(condition);
172
169
  }
170
+
173
171
  return await actionFn(ctx, resolver);
174
172
  }
175
173
  });
@@ -230,15 +228,13 @@ export default class Lambder {
230
228
  });
231
229
  };
232
230
 
233
-
234
231
  async addHook(hookEvent: 'created', hookFn: HookCreatedFunction, priority?: number): Promise<void>;
235
232
  async addHook(hookEvent: 'beforeRender', hookFn: HookBeforeRenderFunction, priority?: number): Promise<void>;
236
233
  async addHook(hookEvent: 'afterRender', hookFn: HookAfterRenderFunction, priority?: number): Promise<void>;
237
234
  async addHook(hookEvent: 'fallback', hookFn: HookFallbackFunction, priority?: number): Promise<void>;
238
- async addHook(hookEvent: 'completed', hookFn: HookCompletedFunction, priority?: number): Promise<void>;
239
235
  async addHook(
240
236
  hookEvent:HookEventType,
241
- hookFn: HookCreatedFunction & HookBeforeRenderFunction & HookAfterRenderFunction & HookFallbackFunction & HookCompletedFunction,
237
+ hookFn: HookCreatedFunction & HookBeforeRenderFunction & HookAfterRenderFunction & HookFallbackFunction,
242
238
  priority = 0
243
239
  ): Promise<void> {
244
240
  if(hookEvent === "created"){
@@ -286,9 +282,17 @@ export default class Lambder {
286
282
 
287
283
  const firstMatchedAction = this.actionList.find(action => action.conditionFn(ctx));
288
284
  if(firstMatchedAction){
289
- for(const hook of this.hookList["beforeRender"]){ ctx = await hook.hookFn(ctx, resolver); }
285
+ for(const hook of this.hookList["beforeRender"]){
286
+ const hookCtx = await hook.hookFn(ctx, resolver);
287
+ if(hookCtx instanceof Error){ throw hookCtx; }
288
+ ctx = hookCtx;
289
+ }
290
290
  let response = await firstMatchedAction.actionFn(ctx, resolver);
291
- for(const hook of this.hookList["afterRender"]){ response = await hook.hookFn(ctx, resolver, response); }
291
+ for(const hook of this.hookList["afterRender"]){
292
+ const hookResponse = await hook.hookFn(ctx, resolver, response);
293
+ if(hookResponse instanceof Error){ throw hookResponse; }
294
+ response = hookResponse;
295
+ }
292
296
  resolve(response);
293
297
  }else{
294
298
  return this.handleNoMatchedAction(ctx, resolver);