lambder 1.0.27 → 1.0.29

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/deploy.sh CHANGED
@@ -4,6 +4,7 @@
4
4
  set -e
5
5
 
6
6
  # Update the version, build the project, and publish
7
+ rm -rf ./dist/*
7
8
  npm version patch
8
9
  npm run build
9
10
  npm publish
package/dist/Lambder.d.ts CHANGED
@@ -35,7 +35,7 @@ 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
- export declare const createContext: (event: APIGatewayProxyEvent, lambdaContext: Context, resolve: Function, reject: Function) => RenderContext;
38
+ export declare const createContext: (event: APIGatewayProxyEvent, lambdaContext: Context) => RenderContext;
39
39
  export default class Lambder {
40
40
  private apiPath;
41
41
  private apiVersion;
package/dist/Lambder.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import querystring from "querystring";
2
2
  import cookieParser from "cookie";
3
3
  import Resolver from "./Resolver.js";
4
- export const createContext = (event, lambdaContext, resolve, reject) => {
4
+ export const createContext = (event, lambdaContext) => {
5
5
  const host = event.headers.Host || event.headers.host || "";
6
6
  const url = event.path;
7
7
  const get = event.queryStringParameters || {};
@@ -21,7 +21,7 @@ export const createContext = (event, lambdaContext, resolve, reject) => {
21
21
  }
22
22
  catch (e) { }
23
23
  if (/^(((\d+\.)+\d+)|(([a-f\d]+:)+[a-f\d]+))$/.test(host)) {
24
- reject(new Error("[404] Host cannot be an ip address: " + host));
24
+ throw new Error("[404] Host cannot be an ip address: " + host);
25
25
  }
26
26
  return { host, url, method, get, post, cookie, headers, session, lambdaContext };
27
27
  };
@@ -147,45 +147,49 @@ export default class Lambder {
147
147
  }
148
148
  }
149
149
  async render(event, lambdaContext) {
150
- return await new Promise(async (resolve, reject) => {
151
- const resolver = new Resolver({
152
- isCorsEnabled: this.isCorsEnabled,
153
- publicPath: this.publicPath,
154
- apiVersion: this.apiVersion,
155
- resolve, reject,
156
- });
157
- let renderContext = createContext(event, lambdaContext, resolve, reject);
158
- if (renderContext.method === "OPTIONS")
159
- return resolver.cors();
160
- const firstMatchedAction = await (async () => {
161
- for (const action of this._actionList) {
162
- if (await action.conditionFn(renderContext))
163
- return action;
150
+ try {
151
+ let renderContext = createContext(event, lambdaContext);
152
+ return await new Promise(async (resolve, reject) => {
153
+ const resolver = new Resolver({
154
+ isCorsEnabled: this.isCorsEnabled,
155
+ publicPath: this.publicPath,
156
+ apiVersion: this.apiVersion,
157
+ resolve, reject,
158
+ });
159
+ if (renderContext.method === "OPTIONS")
160
+ return resolver.cors();
161
+ const firstMatchedAction = await (async () => {
162
+ for (const action of this._actionList) {
163
+ if (await action.conditionFn(renderContext))
164
+ return action;
165
+ }
166
+ })();
167
+ if (firstMatchedAction) {
168
+ for (const hook of this._hookList["beforeRender"]) {
169
+ renderContext = await hook.hookFn(renderContext, resolver);
170
+ }
171
+ let renderResult = await firstMatchedAction.actionFn(renderContext, resolver);
172
+ for (const hook of this._hookList["afterRender"]) {
173
+ renderResult = await hook.hookFn(renderContext, resolver, renderResult);
174
+ }
175
+ resolve(renderResult);
164
176
  }
165
- })();
166
- if (firstMatchedAction) {
167
- for (const hook of this._hookList["beforeRender"]) {
168
- renderContext = await hook.hookFn(renderContext, resolver);
177
+ else {
178
+ return this.handleNoMatchedAction(renderContext, resolver);
169
179
  }
170
- let renderResult = await firstMatchedAction.actionFn(renderContext, resolver);
171
- for (const hook of this._hookList["afterRender"]) {
172
- renderResult = await hook.hookFn(renderContext, resolver, renderResult);
180
+ }).then(async (renderResult) => {
181
+ for (const hook of this._hookList["completed"]) {
182
+ renderResult = await hook.hookFn(renderResult);
173
183
  }
174
- resolve(renderResult);
175
- }
176
- else {
177
- return this.handleNoMatchedAction(renderContext, resolver);
178
- }
179
- }).then(async (renderResult) => {
180
- for (const hook of this._hookList["completed"]) {
181
- renderResult = await hook.hookFn(renderResult);
182
- }
183
- return renderResult;
184
- }).catch(async (err) => {
184
+ return renderResult;
185
+ });
186
+ }
187
+ catch (err) {
188
+ const wrappedError = err instanceof Error ? err : new Error("Error: " + String(err));
185
189
  if (this.globalErrorHandler) {
186
- return this.globalErrorHandler(err);
190
+ return this.globalErrorHandler(wrappedError);
187
191
  }
188
192
  return { statusCode: 500, body: "Internal Server Error.", };
189
- });
193
+ }
190
194
  }
191
195
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lambder",
3
- "version": "1.0.27",
3
+ "version": "1.0.29",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/Lambder.ts CHANGED
@@ -45,8 +45,6 @@ type HookListType = {
45
45
  export const createContext = (
46
46
  event: APIGatewayProxyEvent,
47
47
  lambdaContext: Context,
48
- resolve: Function,
49
- reject: Function
50
48
  ):RenderContext => {
51
49
  const host = event.headers.Host || event.headers.host || "";
52
50
  const url = event.path;
@@ -61,7 +59,7 @@ export const createContext = (
61
59
  try { post = JSON.parse(decodedBody) || {}; }
62
60
  catch(e){ post = querystring.parse(decodedBody) || {}; }
63
61
  }catch(e){}
64
- if(/^(((\d+\.)+\d+)|(([a-f\d]+:)+[a-f\d]+))$/.test(host)){ reject(new Error("[404] Host cannot be an ip address: " + host)); }
62
+ if(/^(((\d+\.)+\d+)|(([a-f\d]+:)+[a-f\d]+))$/.test(host)){ throw new Error("[404] Host cannot be an ip address: " + host); }
65
63
  return { host, url, method, get, post, cookie, headers, session, lambdaContext };
66
64
  }
67
65
 
@@ -224,48 +222,54 @@ export default class Lambder {
224
222
  event: APIGatewayProxyEvent,
225
223
  lambdaContext: Context
226
224
  ): Promise<ResolverResponse>{
227
- return await new Promise(async (
228
- resolve:(renderResult: ResolverResponse)=>void,
229
- reject:(err: Error)=>void
230
- )=> {
231
- const resolver = new Resolver({
232
- isCorsEnabled: this.isCorsEnabled,
233
- publicPath: this.publicPath,
234
- apiVersion: this.apiVersion,
235
- resolve, reject,
236
- });
237
- let renderContext:RenderContext = createContext(event, lambdaContext, resolve, reject)
238
- if(renderContext.method === "OPTIONS") return resolver.cors();
239
-
240
- const firstMatchedAction = await (async () => {
241
- for(const action of this._actionList){
242
- if(await action.conditionFn(renderContext)) return action;
243
- }
244
- })();
225
+ try {
226
+ let renderContext:RenderContext = createContext(event, lambdaContext)
245
227
 
246
- if(firstMatchedAction){
247
- for(const hook of this._hookList["beforeRender"]){
248
- renderContext = await hook.hookFn(renderContext, resolver);
228
+ return await new Promise(async (
229
+ resolve:(renderResult: ResolverResponse)=>void,
230
+ reject:(err: Error)=>void
231
+ )=> {
232
+ const resolver = new Resolver({
233
+ isCorsEnabled: this.isCorsEnabled,
234
+ publicPath: this.publicPath,
235
+ apiVersion: this.apiVersion,
236
+ resolve, reject,
237
+ });
238
+ if(renderContext.method === "OPTIONS") return resolver.cors();
239
+
240
+ const firstMatchedAction = await (async () => {
241
+ for(const action of this._actionList){
242
+ if(await action.conditionFn(renderContext)) return action;
243
+ }
244
+ })();
245
+
246
+ if(firstMatchedAction){
247
+ for(const hook of this._hookList["beforeRender"]){
248
+ renderContext = await hook.hookFn(renderContext, resolver);
249
+ }
250
+ let renderResult = await firstMatchedAction.actionFn(renderContext, resolver);
251
+ for(const hook of this._hookList["afterRender"]){
252
+ renderResult = await hook.hookFn(renderContext, resolver, renderResult);
253
+ }
254
+ resolve(renderResult);
255
+ }else{
256
+ return this.handleNoMatchedAction(renderContext, resolver);
249
257
  }
250
- let renderResult = await firstMatchedAction.actionFn(renderContext, resolver);
251
- for(const hook of this._hookList["afterRender"]){
252
- renderResult = await hook.hookFn(renderContext, resolver, renderResult);
258
+ }).then(async (renderResult: ResolverResponse):Promise<ResolverResponse> => {
259
+ for(const hook of this._hookList["completed"]){
260
+ renderResult = await hook.hookFn(renderResult);
253
261
  }
254
- resolve(renderResult);
255
- }else{
256
- return this.handleNoMatchedAction(renderContext, resolver);
257
- }
258
- }).then(async (renderResult: ResolverResponse):Promise<ResolverResponse> => {
259
- for(const hook of this._hookList["completed"]){
260
- renderResult = await hook.hookFn(renderResult);
261
- }
262
- return renderResult;
263
- }).catch(async (err: Error):Promise<ResolverResponse> => {
262
+ return renderResult;
263
+ });
264
+ }catch(err){
265
+ const wrappedError = err instanceof Error ? err : new Error("Error: " + String(err));
266
+
264
267
  if(this.globalErrorHandler){
265
- return this.globalErrorHandler(err);
268
+ return this.globalErrorHandler(wrappedError);
266
269
  }
267
270
  return { statusCode: 500, body: "Internal Server Error.", }
268
- })
271
+
272
+ }
269
273
  }
270
274
 
271
275
  }