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 +3 -5
- package/dist/Lambder.js +10 -3
- package/package.json +1 -1
- package/src/Lambder.ts +18 -14
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) =>
|
|
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
|
-
|
|
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
|
-
|
|
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
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) =>
|
|
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"
|
|
47
|
+
type HookEventType = "created"|"beforeRender"|"afterRender"|"fallback";
|
|
49
48
|
type HookListType = {
|
|
50
49
|
priority: number,
|
|
51
|
-
hookFn: HookCreatedFunction|HookBeforeRenderFunction|HookAfterRenderFunction|HookFallbackFunction
|
|
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"]){
|
|
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
|
|
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"]){
|
|
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"]){
|
|
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);
|