@spytecgps/lambda-utils 2.3.3 → 2.3.5
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/config/index.d.ts +14 -14
- package/dist/errors/BadRequestError.d.ts +6 -6
- package/dist/errors/BaseError.d.ts +4 -4
- package/dist/errors/ConflictError.d.ts +6 -6
- package/dist/errors/ForbiddenError.d.ts +6 -6
- package/dist/errors/HttpError.d.ts +8 -8
- package/dist/errors/NotFoundError.d.ts +6 -6
- package/dist/errors/UnauthorizedError.d.ts +6 -6
- package/dist/errors/index.d.ts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +1 -1
- package/dist/logger/index.d.ts +2 -2
- package/dist/middleware/contextualLogger.d.ts +12 -12
- package/dist/middleware/index.d.ts +23 -23
- package/dist/middleware/ioLogger.d.ts +1 -1
- package/dist/middleware/middleware.test.d.ts +1 -1
- package/dist/middleware/responseWrapper.d.ts +4 -4
- package/dist/middleware/types.d.ts +7 -7
- package/dist/middleware/validation.d.ts +9 -9
- package/dist/middleware/warmup.d.ts +3 -3
- package/dist/types.d.ts +73 -73
- package/dist/utils/cache.d.ts +23 -23
- package/dist/utils/cacheWrapper.d.ts +2 -2
- package/dist/utils/index.d.ts +5 -5
- package/dist/utils/timeOut.d.ts +1 -1
- package/dist/validation/custom.d.ts +18 -18
- package/dist/validation/index.d.ts +6 -6
- package/dist/validation/requestContext.d.ts +14 -14
- package/dist/validation/validateEvent.d.ts +3 -3
- package/dist/wrappers/apiGatewayEventWrapper.d.ts +4 -4
- package/dist/wrappers/index.d.ts +5 -5
- package/dist/wrappers/response.d.ts +8 -8
- package/dist/wrappers/sqsEventWrapper.d.ts +3 -3
- package/dist/wrappers/sqsEventWrapperWithReturn.d.ts +3 -3
- package/package.json +10 -7
package/dist/config/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export type Env = 'base' | 'local' | 'dev' | 'test' | 'prod';
|
|
2
|
-
export type DeepPartial<T> = {
|
|
3
|
-
[P in keyof T]?: DeepPartial<T[P]>;
|
|
4
|
-
};
|
|
5
|
-
export type EnvConfigsParam<T> = {
|
|
6
|
-
base: DeepPartial<T>;
|
|
7
|
-
[k: string]: DeepPartial<T>;
|
|
8
|
-
};
|
|
9
|
-
export declare const getEnvKey: () => Env;
|
|
10
|
-
export declare const isLocal: () => boolean;
|
|
11
|
-
export declare const isTest: () => boolean;
|
|
12
|
-
export declare const isDev: () => boolean;
|
|
13
|
-
export declare const isProduction: () => boolean;
|
|
14
|
-
export declare const setupEnvConfig: <T>(envConfigs: EnvConfigsParam<T>) => T;
|
|
1
|
+
export type Env = 'base' | 'local' | 'dev' | 'test' | 'prod';
|
|
2
|
+
export type DeepPartial<T> = {
|
|
3
|
+
[P in keyof T]?: DeepPartial<T[P]>;
|
|
4
|
+
};
|
|
5
|
+
export type EnvConfigsParam<T> = {
|
|
6
|
+
base: DeepPartial<T>;
|
|
7
|
+
[k: string]: DeepPartial<T>;
|
|
8
|
+
};
|
|
9
|
+
export declare const getEnvKey: () => Env;
|
|
10
|
+
export declare const isLocal: () => boolean;
|
|
11
|
+
export declare const isTest: () => boolean;
|
|
12
|
+
export declare const isDev: () => boolean;
|
|
13
|
+
export declare const isProduction: () => boolean;
|
|
14
|
+
export declare const setupEnvConfig: <T>(envConfigs: EnvConfigsParam<T>) => T;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import HttpError from './HttpError';
|
|
2
|
-
export default class BadRequestError extends HttpError {
|
|
3
|
-
code: number;
|
|
4
|
-
statusCode: number;
|
|
5
|
-
name: string;
|
|
6
|
-
}
|
|
1
|
+
import HttpError from './HttpError';
|
|
2
|
+
export default class BadRequestError extends HttpError {
|
|
3
|
+
code: number;
|
|
4
|
+
statusCode: number;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export default class BaseError extends Error {
|
|
2
|
-
code: 500;
|
|
3
|
-
statusCode: 500;
|
|
4
|
-
}
|
|
1
|
+
export default class BaseError extends Error {
|
|
2
|
+
code: 500;
|
|
3
|
+
statusCode: 500;
|
|
4
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import HttpError from './HttpError';
|
|
2
|
-
export default class ConflictError extends HttpError {
|
|
3
|
-
code: number;
|
|
4
|
-
statusCode: number;
|
|
5
|
-
name: string;
|
|
6
|
-
}
|
|
1
|
+
import HttpError from './HttpError';
|
|
2
|
+
export default class ConflictError extends HttpError {
|
|
3
|
+
code: number;
|
|
4
|
+
statusCode: number;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import HttpError from './HttpError';
|
|
2
|
-
export default class ForbiddenError extends HttpError {
|
|
3
|
-
code: number;
|
|
4
|
-
statusCode: number;
|
|
5
|
-
name: string;
|
|
6
|
-
}
|
|
1
|
+
import HttpError from './HttpError';
|
|
2
|
+
export default class ForbiddenError extends HttpError {
|
|
3
|
+
code: number;
|
|
4
|
+
statusCode: number;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export default abstract class HttpError extends Error {
|
|
2
|
-
abstract code: number;
|
|
3
|
-
abstract statusCode: number;
|
|
4
|
-
}
|
|
5
|
-
export declare class BaseError extends Error {
|
|
6
|
-
code: 500;
|
|
7
|
-
statusCode: 500;
|
|
8
|
-
}
|
|
1
|
+
export default abstract class HttpError extends Error {
|
|
2
|
+
abstract code: number;
|
|
3
|
+
abstract statusCode: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class BaseError extends Error {
|
|
6
|
+
code: 500;
|
|
7
|
+
statusCode: 500;
|
|
8
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import HttpError from './HttpError';
|
|
2
|
-
export default class NotFoundError extends HttpError {
|
|
3
|
-
code: number;
|
|
4
|
-
statusCode: number;
|
|
5
|
-
name: string;
|
|
6
|
-
}
|
|
1
|
+
import HttpError from './HttpError';
|
|
2
|
+
export default class NotFoundError extends HttpError {
|
|
3
|
+
code: number;
|
|
4
|
+
statusCode: number;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import HttpError from './HttpError';
|
|
2
|
-
export default class UnauthorizedError extends HttpError {
|
|
3
|
-
code: number;
|
|
4
|
-
statusCode: number;
|
|
5
|
-
name: string;
|
|
6
|
-
}
|
|
1
|
+
import HttpError from './HttpError';
|
|
2
|
+
export default class UnauthorizedError extends HttpError {
|
|
3
|
+
code: number;
|
|
4
|
+
statusCode: number;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import BadRequestError from './BadRequestError';
|
|
2
|
-
import BaseError from './BaseError';
|
|
3
|
-
import ConflictError from './ConflictError';
|
|
4
|
-
import ForbiddenError from './ForbiddenError';
|
|
5
|
-
import HttpError from './HttpError';
|
|
6
|
-
import NotFoundError from './NotFoundError';
|
|
7
|
-
import UnauthorizedError from './UnauthorizedError';
|
|
8
|
-
export { BadRequestError, NotFoundError, UnauthorizedError, ForbiddenError, ConflictError, HttpError, BaseError };
|
|
1
|
+
import BadRequestError from './BadRequestError';
|
|
2
|
+
import BaseError from './BaseError';
|
|
3
|
+
import ConflictError from './ConflictError';
|
|
4
|
+
import ForbiddenError from './ForbiddenError';
|
|
5
|
+
import HttpError from './HttpError';
|
|
6
|
+
import NotFoundError from './NotFoundError';
|
|
7
|
+
import UnauthorizedError from './UnauthorizedError';
|
|
8
|
+
export { BadRequestError, NotFoundError, UnauthorizedError, ForbiddenError, ConflictError, HttpError, BaseError };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './wrappers';
|
|
2
|
-
export * from './errors';
|
|
3
|
-
export * from './validation';
|
|
4
|
-
export * from './types';
|
|
5
|
-
export * from './middleware';
|
|
6
|
-
export * from './logger';
|
|
7
|
-
export * from './utils';
|
|
8
|
-
export * from './config';
|
|
1
|
+
export * from './wrappers';
|
|
2
|
+
export * from './errors';
|
|
3
|
+
export * from './validation';
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './middleware';
|
|
6
|
+
export * from './logger';
|
|
7
|
+
export * from './utils';
|
|
8
|
+
export * from './config';
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";var e=require("@spytecgps/sdk-logger"),r=require("dayjs"),t=require("dayjs/plugin/timezone"),s=require("dayjs/plugin/utc"),o=require("joi"),a=require("qs"),n=require("@middy/core"),i=require("@middy/http-error-handler"),l=require("@middy/http-response-serializer"),c=require("@middy/sqs-json-body-parser"),d=require("@middy/input-output-logger"),u=require("deepmerge");function p(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var g=p(o),m=p(a);r.extend(s),r.extend(t);const y=g.extend((e=>({type:"object",base:e.object(),messages:{"json.valid":"must be valid JSON"},coerce(e){try{return{value:JSON.parse(e)}}catch(e){return null}},validate:(e,r)=>e?{value:e}:{value:e,errors:r.error("json.valid")}}))),v=g.extend((e=>({type:"object",base:e.object(),coerce:e=>({value:m.parse(e)})}))),b=g.string().regex(/^\d{15,16}$/).message("Invalid IMEI"),x=g.string().regex(/^[0-9A-Za-z]{18,22}$/).message("Invalid ICCID"),h=g.extend((e=>({type:"imei",messages:"Invalid IMEI",base:e.string().regex(/^\d{15,16}$/)})),(e=>({type:"iccid",messages:"Invalid ICCID",base:e.string().regex(/^[0-9A-Za-z]{18,22}$/)})),(e=>({type:"urlEncodedObject",base:e.object(),coerce:e=>({value:m.parse(e)})})),(e=>({type:"jsonObject",base:e.object(),coerce(e){try{return{value:JSON.parse(e)}}catch(e){return null}},validate:(e,r)=>e?{value:e}:{value:e,errors:r.error("json.valid")}})),(e=>({type:"delimitedArray",base:e.array().default([]),coerce:e=>({value:e.split?e.split(","):e})})),(e=>({type:"queryStringParameters",messages:"Missing query parameters",base:e.object().required()})),(e=>({type:"date",base:e.date(),prepare(e,t){try{const t=r.tz(e,"UTC");if(t.isValid())return{value:t.toDate()}}catch(e){return t.error("any.invalid")}}})),(e=>({type:"jsonArray",base:e.array(),coerce(e){try{return{value:JSON.parse(e)}}catch(e){return{value:null}}},validate:(e,r)=>Array.isArray(e)?{value:e}:{value:e,errors:r.error("jsonArray.schema")}})),(e=>({type:"base64ThenUriEncodedObject",base:e.object(),coerce(e){try{const r=decodeURIComponent(Buffer.from(e,"base64").toString());return{value:JSON.parse(r)}}catch(e){return null}},validate:(e,r)=>e?{value:e}:{value:e,errors:r.error("json.valid")}})));class w extends Error{}class E extends w{code=400;statusCode=400;name="BadRequestError"}class f extends Error{code;statusCode}class C extends w{code=401;statusCode=401;name="UnauthorizedError"}const A=({scope:e,type:r}={})=>g.object({clientId:g.number(),resources:y.object({}),scope:e?g.string().pattern(new RegExp(`${e}`)).error((()=>new C(`missing scope ${e}`))):g.optional(),type:r?g.any().valid(r).error((()=>new C(`missing user type ${r}`))):g.optional(),enterprise:g.boolean().default(!1),maintenanceModule:g.boolean().default(!1),billingMethod:g.string().optional(),customerSegment:g.string().optional(),securityGroupTagId:g.number().optional().allow(null)}),q=g.object({authorizer:A()}),j=(e={})=>g.object({authorizer:A(e)}),O=(r,t,s)=>{if(!t)return e.logger.warn("skipping validation"),r;const{error:o,value:a}=t.validate(r,{allowUnknown:s?.allowUnknown||!0,errors:{label:"key",wrap:{label:!1}}});if(o)throw e.logger.error({error:o},"Validation error"),o.isJoi?new E(o.message):o;return a},R=h.object({requestContext:j()}),S={"Content-Type":"application/json","Access-Control-Allow-Origin":"*","Access-Control-Allow-Credentials":!0},I=(e,r,t)=>({success:e<400,message:r,result:t||void 0}),N=({statusCode:e=200,message:r="ok",data:t,headers:s={},rawResult:o=!1,stringifyBody:a=!0})=>{const n=o?t:I(e,r,t),i=a?n&&JSON.stringify(n):t;return{headers:{...S,...s},statusCode:e,body:i}};const _="_X_AMZN_TRACE_ID",T="x-correlation-",P=`${T}id`,M=`${T}trace-id`,z={before:async({event:r,context:t})=>{const s={awsRequestId:t.awsRequestId},o=r.requestContext?.requestId;o&&(s.apiRequestId=o),r.headers&&Object.keys(r.headers).forEach((e=>{e.toLowerCase().startsWith(T)&&(s[e]=r.headers[e])})),process.env[_]&&(s[M]=process.env[_]),s[P]||(s[P]=t.awsRequestId),e.logger.setHapnContext(s)}},H=d({omitPaths:["event.multiValueHeaders","event.multiValueQueryStringParameters"],logger:r=>{const t=r?.event?"event":"response";e.logger.info(r.event??r.response,t)}}),G={isWarmingUp:e=>"serverless-plugin-warmup"===e.source},$=(e={})=>{const r={...G,...e};return{before:e=>{if(r.isWarmingUp(e.event))return"warmup"}}},W=[$(),z,H],U=[l({serializers:[{regex:/^application\/xml$/,serializer:({body:e})=>`<message>${e}</message>`},{regex:/^application\/json$/,serializer:({body:e})=>JSON.stringify(e)},{regex:/^text\/plain$/,serializer:({body:e})=>e}],default:"application/json"}),{after:e=>{e.response=N(e.response)},onError:r=>{e.logger.error(r.error,"Request failed"),r.response=N({statusCode:r.error.code||500,message:r.error.message||"Error"})}}];const k=()=>"test"===process.env.NODE_ENV?"test":process.env.IS_OFFLINE&&"dev"===process.env.STAGE?"local":process.env.STAGE??process.env.NODE_ENV??"dev";Object.defineProperty(exports,"logger",{enumerable:!0,get:function(){return e.logger}}),Object.defineProperty(exports,"withRequest",{enumerable:!0,get:function(){return e.withRequest}}),exports.httpErrorHandler=i,exports.httpResponseSerializer=l,exports.sqsJsonBodyParser=c,exports.merge=u,exports.BadRequestError=E,exports.BaseError=f,exports.ConflictError=class extends w{code=409;statusCode=409;name="ConflictError"},exports.ForbiddenError=class extends w{code=403;statusCode=403;name="ForbiddenError"},exports.HttpError=w,exports.LambdaCache=class{collectionName;constructor(e){this.collectionName=e??`${process.env.AWS_LAMBDA_FUNCTION_NAME}-${process.env.AWS_LAMBDA_FUNCTION_VERSION}`,global.CACHE_STORAGE||(global.CACHE_STORAGE={}),global.CACHE_STORAGE[this.collectionName]||(global.CACHE_STORAGE[this.collectionName]=new Map)}set(e,r,t){const s=1e3*t+Date.now();global.CACHE_STORAGE[this.collectionName].set(e,{value:r,expire:s})}get(e){if(!e)throw new Error("key is required!");const r=global.CACHE_STORAGE[this.collectionName].get(e);return r?!r.expire||r.expire>Date.now()?r.value:this.remove(e):null}remove(e){global.CACHE_STORAGE[this.collectionName].get(e)&&global.CACHE_STORAGE[this.collectionName].delete(e)}},exports.NotFoundError=class extends w{code=404;statusCode=404;name="NotFoundError"},exports.SpytecJoi=h,exports.UnauthorizedError=C,exports.apiGatewayEventWrapper=async({event:r,context:t,schema:s,handler:o})=>{r&&t&&e.withRequest(r,t);try{const e=O(r,s),t=await o(e);return N(t)}catch(t){return e.logger.error({err:t,event:(a=r,{resource:a.resource,httpMethod:a.httpMethod,queryStringParameters:a.queryStringParameters,pathParameters:a.pathParameters,body:a.body})},"apiGatewayWrapper - caught error"),N({statusCode:t.code||500,message:t.message||"Error"})}var a},exports.apiGatewayMiddlewares=U,exports.apiGatewayMiddy=e=>n(e).use([...W,...U]),exports.baseMiddlewares=W,exports.buildProxyResult=N,exports.buildResponseBody=I,exports.defaultApiSchema=R,exports.getAuthorizerValidator=A,exports.getEnvKey=k,exports.getRequestContextValidator=j,exports.iccidSchema=x,exports.imeiSchema=b,exports.isDev=()=>"dev"===k(),exports.isLocal=()=>"local"===k(),exports.isProduction=()=>"prod"===k(),exports.isTest=()=>"test"===k(),exports.json=y,exports.middy=e=>n(e).use([...W]),exports.promiseWithCache=async(e,r,t,s)=>{let o=r.get(t);return o||(o=await e(),r.set(t,o,s)),o},exports.promiseWithTimeout=(e,r,t=new Error("Promise timed out"))=>{const s=new Promise(((e,s)=>{setTimeout((()=>{s(t)}),r)}));return Promise.race([e,s])},exports.requestContextValidator=q,exports.setupEnvConfig=e=>{const r=e.base,t=e[k()]??{};return u(r,t)},exports.sqsEventWrapper=async({event:r,context:t,schema:s,handler:o,singleHandler:a,mode:n="serial"})=>{r&&t&&e.withRequest(r,t);try{const e=O(r,s);await async function(e,r,t,s){if(!r&&!t)throw new Error("handler or singleHandler not defined");if(r)await r(e);else if(t){const r=e.Records;if("serial"===s)for(const e of r)await t(e);else"parallel"===s&&await Promise.all(r.map((e=>t(e))))}}(e,o,a,n)}catch(t){throw e.logger.error({err:t,event:(i=r,(i.Records||[]).map((e=>({messageId:e.messageId,body:e.body,messageAttributes:e.messageAttributes}))))},"sqsEventWrapper - caught error"),t}var i},exports.sqsEventWrapperWithReturn=async({event:r,context:t,schema:s,handler:o,singleHandler:a,mode:n="serial"})=>{r&&t&&e.withRequest(r,t);try{const e=O(r,s);return await(async(e,r,t,s)=>{if(!r&&!t)throw new Error("handler or singleHandler not defined");if(r)return await r(e);if(t){const r=e.Records;if("serial"===s){const e=[];for(const s of r){const r=await t(s);e.push(r)}return e}if("parallel"===s)return await Promise.all(r.map((e=>t(e))))}})(e,o,a,n)}catch(t){throw e.logger.error({err:t,event:(i=r,(i.Records||[]).map((e=>({messageId:e.messageId,body:e.body,messageAttributes:e.messageAttributes}))))},"sqsEventWrapper - caught error"),t}var i},exports.urlEncoded=v,exports.validateEvent=O,exports.validatorMiddleware=({schema:r,allowUnknown:t=!0})=>({before:s=>{const{error:o,value:a}=r.validate(s.event,{allowUnknown:t,errors:{label:"key",wrap:{label:!1}}});if(o)throw e.logger.error("Validation error",{error:o}),o.isJoi?new E(o.message):o;s.event=a}}),exports.warmupMiddleware=$;
|
package/dist/logger/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { logger, withRequest } from '@spytecgps/sdk-logger';
|
|
2
|
-
export { logger, withRequest };
|
|
1
|
+
import { logger, withRequest } from '@spytecgps/sdk-logger';
|
|
2
|
+
export { logger, withRequest };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export declare const contextualLogger: () => {
|
|
2
|
-
before: ({ event, context }: {
|
|
3
|
-
event: any;
|
|
4
|
-
context: any;
|
|
5
|
-
}) => Promise<void>;
|
|
6
|
-
};
|
|
7
|
-
export declare const contextualLoggerMiddleware: {
|
|
8
|
-
before: ({ event, context }: {
|
|
9
|
-
event: any;
|
|
10
|
-
context: any;
|
|
11
|
-
}) => Promise<void>;
|
|
12
|
-
};
|
|
1
|
+
export declare const contextualLogger: () => {
|
|
2
|
+
before: ({ event, context }: {
|
|
3
|
+
event: any;
|
|
4
|
+
context: any;
|
|
5
|
+
}) => Promise<void>;
|
|
6
|
+
};
|
|
7
|
+
export declare const contextualLoggerMiddleware: {
|
|
8
|
+
before: ({ event, context }: {
|
|
9
|
+
event: any;
|
|
10
|
+
context: any;
|
|
11
|
+
}) => Promise<void>;
|
|
12
|
+
};
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import rawMiddy from '@middy/core';
|
|
2
|
-
import httpErrorHandler from '@middy/http-error-handler';
|
|
3
|
-
import httpResponseSerializer from '@middy/http-response-serializer';
|
|
4
|
-
import sqsJsonBodyParser from '@middy/sqs-json-body-parser';
|
|
5
|
-
import { Context as LambdaContext } from 'aws-lambda/handler';
|
|
6
|
-
import { MiddyInputHandler } from './types';
|
|
7
|
-
import { validatorMiddleware } from './validation';
|
|
8
|
-
import { warmupMiddleware } from './warmup';
|
|
9
|
-
declare const baseMiddlewares: ({
|
|
10
|
-
before: (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
declare const apiGatewayMiddlewares: (rawMiddy.MiddlewareObj<any, any, Error, LambdaContext> | {
|
|
18
|
-
after: (req: any) => void;
|
|
19
|
-
onError: (req: any) => void;
|
|
20
|
-
})[];
|
|
21
|
-
declare const middy: <TEvent, TResult, TContext extends LambdaContext>(handler: MiddyInputHandler<TEvent, TResult, TContext>) => rawMiddy.MiddyfiedHandler<TEvent, TResult, Error, TContext>;
|
|
22
|
-
declare const apiGatewayMiddy: <TEvent, TResult, TContext extends LambdaContext>(handler: MiddyInputHandler<TEvent, TResult, TContext>) => rawMiddy.MiddyfiedHandler<TEvent, TResult, Error, TContext>;
|
|
23
|
-
export { apiGatewayMiddlewares, apiGatewayMiddy, baseMiddlewares, httpErrorHandler, httpResponseSerializer, middy, sqsJsonBodyParser, validatorMiddleware, warmupMiddleware, };
|
|
1
|
+
import rawMiddy from '@middy/core';
|
|
2
|
+
import httpErrorHandler from '@middy/http-error-handler';
|
|
3
|
+
import httpResponseSerializer from '@middy/http-response-serializer';
|
|
4
|
+
import sqsJsonBodyParser from '@middy/sqs-json-body-parser';
|
|
5
|
+
import { Context as LambdaContext } from 'aws-lambda/handler';
|
|
6
|
+
import { MiddyInputHandler } from './types';
|
|
7
|
+
import { validatorMiddleware } from './validation';
|
|
8
|
+
import { warmupMiddleware } from './warmup';
|
|
9
|
+
declare const baseMiddlewares: ({
|
|
10
|
+
before: ({ event, context }: {
|
|
11
|
+
event: any;
|
|
12
|
+
context: any;
|
|
13
|
+
}) => Promise<void>;
|
|
14
|
+
} | rawMiddy.MiddlewareObj<any, any, Error, LambdaContext> | {
|
|
15
|
+
before: (request: any) => string;
|
|
16
|
+
})[];
|
|
17
|
+
declare const apiGatewayMiddlewares: (rawMiddy.MiddlewareObj<any, any, Error, LambdaContext> | {
|
|
18
|
+
after: (req: any) => void;
|
|
19
|
+
onError: (req: any) => void;
|
|
20
|
+
})[];
|
|
21
|
+
declare const middy: <TEvent, TResult, TContext extends LambdaContext>(handler: MiddyInputHandler<TEvent, TResult, TContext>) => rawMiddy.MiddyfiedHandler<TEvent, TResult, Error, TContext>;
|
|
22
|
+
declare const apiGatewayMiddy: <TEvent, TResult, TContext extends LambdaContext>(handler: MiddyInputHandler<TEvent, TResult, TContext>) => rawMiddy.MiddyfiedHandler<TEvent, TResult, Error, TContext>;
|
|
23
|
+
export { apiGatewayMiddlewares, apiGatewayMiddy, baseMiddlewares, httpErrorHandler, httpResponseSerializer, middy, sqsJsonBodyParser, validatorMiddleware, warmupMiddleware, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const ioLoggerMiddleware: import("@middy/core").MiddlewareObj<any, any, Error, import("aws-lambda").Context>;
|
|
1
|
+
export declare const ioLoggerMiddleware: import("@middy/core").MiddlewareObj<any, any, Error, import("aws-lambda").Context>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const responseWrapperMiddleware: () => {
|
|
2
|
-
after: (req: any) => void;
|
|
3
|
-
onError: (req: any) => void;
|
|
4
|
-
};
|
|
1
|
+
export declare const responseWrapperMiddleware: () => {
|
|
2
|
+
after: (req: any) => void;
|
|
3
|
+
onError: (req: any) => void;
|
|
4
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { APIGatewayProxyResult, Context as LambdaContext } from 'aws-lambda';
|
|
2
|
-
import { Callback as LambdaCallback } from 'aws-lambda/handler';
|
|
3
|
-
export type MiddyInputPromiseHandler<TEvent, TResult, TContext extends LambdaContext = LambdaContext> = (event: TEvent, context: TContext) => Promise<TResult>;
|
|
4
|
-
export interface APIResult<T = any> extends Omit<APIGatewayProxyResult, 'body'> {
|
|
5
|
-
body: T;
|
|
6
|
-
}
|
|
7
|
-
export type MiddyInputHandler<TEvent, TResult, TContext extends LambdaContext = LambdaContext> = (event: TEvent, context: TContext, callback: LambdaCallback<TResult>) => Promise<TResult>;
|
|
1
|
+
import { APIGatewayProxyResult, Context as LambdaContext } from 'aws-lambda';
|
|
2
|
+
import { Callback as LambdaCallback } from 'aws-lambda/handler';
|
|
3
|
+
export type MiddyInputPromiseHandler<TEvent, TResult, TContext extends LambdaContext = LambdaContext> = (event: TEvent, context: TContext) => Promise<TResult>;
|
|
4
|
+
export interface APIResult<T = any> extends Omit<APIGatewayProxyResult, 'body'> {
|
|
5
|
+
body: T;
|
|
6
|
+
}
|
|
7
|
+
export type MiddyInputHandler<TEvent, TResult, TContext extends LambdaContext = LambdaContext> = (event: TEvent, context: TContext, callback: LambdaCallback<TResult>) => Promise<TResult>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import Joi from 'joi';
|
|
2
|
-
interface ValidatorOpts {
|
|
3
|
-
schema: Joi.Schema;
|
|
4
|
-
allowUnknown?: boolean;
|
|
5
|
-
}
|
|
6
|
-
export declare const validatorMiddleware: ({ schema, allowUnknown }: ValidatorOpts) => {
|
|
7
|
-
before: (request: any) => void;
|
|
8
|
-
};
|
|
9
|
-
export {};
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
interface ValidatorOpts {
|
|
3
|
+
schema: Joi.Schema;
|
|
4
|
+
allowUnknown?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const validatorMiddleware: ({ schema, allowUnknown }: ValidatorOpts) => {
|
|
7
|
+
before: (request: any) => void;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const warmupMiddleware: (opt?: any) => {
|
|
2
|
-
before: (request: any) => string;
|
|
3
|
-
};
|
|
1
|
+
export declare const warmupMiddleware: (opt?: any) => {
|
|
2
|
+
before: (request: any) => string;
|
|
3
|
+
};
|
package/dist/types.d.ts
CHANGED
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
import { APIGatewayEventRequestContext, APIGatewayProxyEvent, APIGatewayProxyWithCognitoAuthorizerEvent, APIGatewayProxyWithLambdaAuthorizerEvent, Context, SQSEvent, SQSRecord } from 'aws-lambda';
|
|
2
|
-
import { Callback } from 'aws-lambda/handler';
|
|
3
|
-
import { APIGatewayProxyEventBase } from 'aws-lambda/trigger/api-gateway-proxy';
|
|
4
|
-
import { ObjectSchema } from 'joi';
|
|
5
|
-
import * as Joi from 'joi';
|
|
6
|
-
export interface SpytecAuthorizedResources {
|
|
7
|
-
devices: string[];
|
|
8
|
-
boundaries: number[];
|
|
9
|
-
}
|
|
10
|
-
export type AuthClass = 'user' | 'client' | 'system';
|
|
11
|
-
export type DevicesAccess = 'full' | 'limited';
|
|
12
|
-
export type BoundariesAccess = 'full' | 'limited';
|
|
13
|
-
export type TasksAccess = 'full' | 'can_complete' | 'read_only' | 'no_access';
|
|
14
|
-
export type BillingMethod = 'credit-card-hubspot' | 'ach-hubspot' | 'credit-card-braintree' | 'ach-braintree' | 'ach-wire' | 'check' | 'dib-sap';
|
|
15
|
-
export type CustomerSegment = 'whale' | 'bass' | 'guppy' | 'guppy-self-serve';
|
|
16
|
-
export interface SpytecAuthContext {
|
|
17
|
-
type: AuthClass;
|
|
18
|
-
userId?: string;
|
|
19
|
-
clientId: number;
|
|
20
|
-
devicesAccess: DevicesAccess;
|
|
21
|
-
boundariesAccess: BoundariesAccess;
|
|
22
|
-
minAccessDate?: string;
|
|
23
|
-
resources: SpytecAuthorizedResources;
|
|
24
|
-
principalId: string;
|
|
25
|
-
scope?: string;
|
|
26
|
-
enterprise?: boolean;
|
|
27
|
-
maintenanceModule?: boolean;
|
|
28
|
-
tasksAccess?: TasksAccess;
|
|
29
|
-
billingMethod?: BillingMethod;
|
|
30
|
-
customerSegment?: CustomerSegment;
|
|
31
|
-
securityGroupTagId?: number;
|
|
32
|
-
}
|
|
33
|
-
export type BaseAPIGatewayEvent = Omit<APIGatewayProxyEventBase<SpytecAuthContext>, 'pathParameters' | 'queryStringParameters' | 'body'>;
|
|
34
|
-
export interface WrapperArgs<E, R> {
|
|
35
|
-
event: APIGatewayProxyEvent;
|
|
36
|
-
context?: APIGatewayEventRequestContext;
|
|
37
|
-
schema?: ObjectSchema<E>;
|
|
38
|
-
handler: Handler<E, R>;
|
|
39
|
-
}
|
|
40
|
-
export type UserAPIHandler<TEvent = APIGatewayProxyWithLambdaAuthorizerEvent<SpytecAuthContext>, TResult = any> = (event: TEvent, context: APIGatewayEventRequestContext, callback: Callback<TResult>) => void | Promise<TResult>;
|
|
41
|
-
export type ServerAPIHandler<TResult = any> = (event: APIGatewayProxyWithCognitoAuthorizerEvent, context: APIGatewayEventRequestContext, callback: Callback<TResult>) => void | Promise<TResult>;
|
|
42
|
-
export type Handler<E, R> = (event: E) => Promise<HandlerResponse<R>>;
|
|
43
|
-
export interface HandlerResponse<R> {
|
|
44
|
-
statusCode?: number;
|
|
45
|
-
headers?: {
|
|
46
|
-
[header: string]: boolean | number | string;
|
|
47
|
-
};
|
|
48
|
-
isBase64Encoded?: boolean;
|
|
49
|
-
message?: string;
|
|
50
|
-
data?: R;
|
|
51
|
-
rawResult?: boolean;
|
|
52
|
-
stringifyBody?: boolean;
|
|
53
|
-
}
|
|
54
|
-
export type BaseRecord = Omit<SQSRecord, 'body' | 'messageAttributes'>;
|
|
55
|
-
export interface MessageEvent<RecordType extends BaseRecord> {
|
|
56
|
-
Records: RecordType[];
|
|
57
|
-
}
|
|
58
|
-
export type SQSWrapperArgs<RecordType extends BaseRecord> = {
|
|
59
|
-
event: SQSEvent;
|
|
60
|
-
context?: Context;
|
|
61
|
-
schema?: Joi.ObjectSchema<MessageEvent<RecordType>>;
|
|
62
|
-
handler?: (e: MessageEvent<RecordType>) => void | Promise<void>;
|
|
63
|
-
singleHandler?: (record: RecordType) => void | Promise<void>;
|
|
64
|
-
mode?: 'serial' | 'parallel';
|
|
65
|
-
};
|
|
66
|
-
export type SQSWrapperArgsWithReturn<RecordType extends BaseRecord, T> = {
|
|
67
|
-
event: SQSEvent;
|
|
68
|
-
context?: Context;
|
|
69
|
-
schema?: Joi.ObjectSchema<MessageEvent<RecordType>>;
|
|
70
|
-
handler?: (e: MessageEvent<RecordType>) => T | Promise<T>;
|
|
71
|
-
singleHandler?: (record: RecordType) => T | Promise<T>;
|
|
72
|
-
mode?: 'serial' | 'parallel';
|
|
73
|
-
};
|
|
1
|
+
import { APIGatewayEventRequestContext, APIGatewayProxyEvent, APIGatewayProxyWithCognitoAuthorizerEvent, APIGatewayProxyWithLambdaAuthorizerEvent, Context, SQSEvent, SQSRecord } from 'aws-lambda';
|
|
2
|
+
import { Callback } from 'aws-lambda/handler';
|
|
3
|
+
import { APIGatewayProxyEventBase } from 'aws-lambda/trigger/api-gateway-proxy';
|
|
4
|
+
import { ObjectSchema } from 'joi';
|
|
5
|
+
import * as Joi from 'joi';
|
|
6
|
+
export interface SpytecAuthorizedResources {
|
|
7
|
+
devices: string[];
|
|
8
|
+
boundaries: number[];
|
|
9
|
+
}
|
|
10
|
+
export type AuthClass = 'user' | 'client' | 'system';
|
|
11
|
+
export type DevicesAccess = 'full' | 'limited';
|
|
12
|
+
export type BoundariesAccess = 'full' | 'limited';
|
|
13
|
+
export type TasksAccess = 'full' | 'can_complete' | 'read_only' | 'no_access';
|
|
14
|
+
export type BillingMethod = 'credit-card-hubspot' | 'ach-hubspot' | 'credit-card-braintree' | 'ach-braintree' | 'ach-wire' | 'check' | 'dib-sap';
|
|
15
|
+
export type CustomerSegment = 'whale' | 'bass' | 'guppy' | 'guppy-self-serve';
|
|
16
|
+
export interface SpytecAuthContext {
|
|
17
|
+
type: AuthClass;
|
|
18
|
+
userId?: string;
|
|
19
|
+
clientId: number;
|
|
20
|
+
devicesAccess: DevicesAccess;
|
|
21
|
+
boundariesAccess: BoundariesAccess;
|
|
22
|
+
minAccessDate?: string;
|
|
23
|
+
resources: SpytecAuthorizedResources;
|
|
24
|
+
principalId: string;
|
|
25
|
+
scope?: string;
|
|
26
|
+
enterprise?: boolean;
|
|
27
|
+
maintenanceModule?: boolean;
|
|
28
|
+
tasksAccess?: TasksAccess;
|
|
29
|
+
billingMethod?: BillingMethod;
|
|
30
|
+
customerSegment?: CustomerSegment;
|
|
31
|
+
securityGroupTagId?: number;
|
|
32
|
+
}
|
|
33
|
+
export type BaseAPIGatewayEvent = Omit<APIGatewayProxyEventBase<SpytecAuthContext>, 'pathParameters' | 'queryStringParameters' | 'body'>;
|
|
34
|
+
export interface WrapperArgs<E, R> {
|
|
35
|
+
event: APIGatewayProxyEvent;
|
|
36
|
+
context?: APIGatewayEventRequestContext;
|
|
37
|
+
schema?: ObjectSchema<E>;
|
|
38
|
+
handler: Handler<E, R>;
|
|
39
|
+
}
|
|
40
|
+
export type UserAPIHandler<TEvent = APIGatewayProxyWithLambdaAuthorizerEvent<SpytecAuthContext>, TResult = any> = (event: TEvent, context: APIGatewayEventRequestContext, callback: Callback<TResult>) => void | Promise<TResult>;
|
|
41
|
+
export type ServerAPIHandler<TResult = any> = (event: APIGatewayProxyWithCognitoAuthorizerEvent, context: APIGatewayEventRequestContext, callback: Callback<TResult>) => void | Promise<TResult>;
|
|
42
|
+
export type Handler<E, R> = (event: E) => Promise<HandlerResponse<R>>;
|
|
43
|
+
export interface HandlerResponse<R> {
|
|
44
|
+
statusCode?: number;
|
|
45
|
+
headers?: {
|
|
46
|
+
[header: string]: boolean | number | string;
|
|
47
|
+
};
|
|
48
|
+
isBase64Encoded?: boolean;
|
|
49
|
+
message?: string;
|
|
50
|
+
data?: R;
|
|
51
|
+
rawResult?: boolean;
|
|
52
|
+
stringifyBody?: boolean;
|
|
53
|
+
}
|
|
54
|
+
export type BaseRecord = Omit<SQSRecord, 'body' | 'messageAttributes'>;
|
|
55
|
+
export interface MessageEvent<RecordType extends BaseRecord> {
|
|
56
|
+
Records: RecordType[];
|
|
57
|
+
}
|
|
58
|
+
export type SQSWrapperArgs<RecordType extends BaseRecord> = {
|
|
59
|
+
event: SQSEvent;
|
|
60
|
+
context?: Context;
|
|
61
|
+
schema?: Joi.ObjectSchema<MessageEvent<RecordType>>;
|
|
62
|
+
handler?: (e: MessageEvent<RecordType>) => void | Promise<void>;
|
|
63
|
+
singleHandler?: (record: RecordType) => void | Promise<void>;
|
|
64
|
+
mode?: 'serial' | 'parallel';
|
|
65
|
+
};
|
|
66
|
+
export type SQSWrapperArgsWithReturn<RecordType extends BaseRecord, T> = {
|
|
67
|
+
event: SQSEvent;
|
|
68
|
+
context?: Context;
|
|
69
|
+
schema?: Joi.ObjectSchema<MessageEvent<RecordType>>;
|
|
70
|
+
handler?: (e: MessageEvent<RecordType>) => T | Promise<T>;
|
|
71
|
+
singleHandler?: (record: RecordType) => T | Promise<T>;
|
|
72
|
+
mode?: 'serial' | 'parallel';
|
|
73
|
+
};
|
package/dist/utils/cache.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
export declare class LambdaCache {
|
|
2
|
-
private collectionName;
|
|
3
|
-
/**
|
|
4
|
-
* @param {String} collectionName (not required) - The collection key used to store the cache values.
|
|
5
|
-
* If not provide default collection name uses :
|
|
6
|
-
* ${process.env.AWS_LAMBDA_FUNCTION_NAME}-${process.env.AWS_LAMBDA_FUNCTION_VERSION}
|
|
7
|
-
* */
|
|
8
|
-
constructor(collectionName?: string);
|
|
9
|
-
/**
|
|
10
|
-
* @param {String} key (required) - cache key
|
|
11
|
-
* @param {Object} value (required) - cache value
|
|
12
|
-
* @param {Number} expire (required) - cache expiration time (seconds)
|
|
13
|
-
* */
|
|
14
|
-
set(key: string, value: unknown, ttl: number): void;
|
|
15
|
-
/**
|
|
16
|
-
* @param {String} key (required) - cache key to get
|
|
17
|
-
* */
|
|
18
|
-
get(key: string): unknown;
|
|
19
|
-
/**
|
|
20
|
-
* @param {String} key (required) - cache key to remove
|
|
21
|
-
* */
|
|
22
|
-
remove(key: any): void;
|
|
23
|
-
}
|
|
1
|
+
export declare class LambdaCache {
|
|
2
|
+
private collectionName;
|
|
3
|
+
/**
|
|
4
|
+
* @param {String} collectionName (not required) - The collection key used to store the cache values.
|
|
5
|
+
* If not provide default collection name uses :
|
|
6
|
+
* ${process.env.AWS_LAMBDA_FUNCTION_NAME}-${process.env.AWS_LAMBDA_FUNCTION_VERSION}
|
|
7
|
+
* */
|
|
8
|
+
constructor(collectionName?: string);
|
|
9
|
+
/**
|
|
10
|
+
* @param {String} key (required) - cache key
|
|
11
|
+
* @param {Object} value (required) - cache value
|
|
12
|
+
* @param {Number} expire (required) - cache expiration time (seconds)
|
|
13
|
+
* */
|
|
14
|
+
set(key: string, value: unknown, ttl: number): void;
|
|
15
|
+
/**
|
|
16
|
+
* @param {String} key (required) - cache key to get
|
|
17
|
+
* */
|
|
18
|
+
get(key: string): unknown;
|
|
19
|
+
/**
|
|
20
|
+
* @param {String} key (required) - cache key to remove
|
|
21
|
+
* */
|
|
22
|
+
remove(key: any): void;
|
|
23
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { LambdaCache } from './cache';
|
|
2
|
-
export declare const promiseWithCache: <T>(promise: () => Promise<T>, cacheInstance: LambdaCache, cacheKey: string, ttl: number) => Promise<T>;
|
|
1
|
+
import { LambdaCache } from './cache';
|
|
2
|
+
export declare const promiseWithCache: <T>(promise: () => Promise<T>, cacheInstance: LambdaCache, cacheKey: string, ttl: number) => Promise<T>;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import merge from 'deepmerge';
|
|
2
|
-
import { LambdaCache } from './cache';
|
|
3
|
-
export * from './cacheWrapper';
|
|
4
|
-
export * from './timeOut';
|
|
5
|
-
export { LambdaCache, merge };
|
|
1
|
+
import merge from 'deepmerge';
|
|
2
|
+
import { LambdaCache } from './cache';
|
|
3
|
+
export * from './cacheWrapper';
|
|
4
|
+
export * from './timeOut';
|
|
5
|
+
export { LambdaCache, merge };
|
package/dist/utils/timeOut.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const promiseWithTimeout: <T>(promise: Promise<T>, ms: number, timeoutError?: Error) => Promise<T>;
|
|
1
|
+
export declare const promiseWithTimeout: <T>(promise: Promise<T>, ms: number, timeoutError?: Error) => Promise<T>;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import * as Joi from 'joi';
|
|
2
|
-
import { ArraySchema, ObjectSchema, SchemaMap, StringSchema } from 'joi';
|
|
3
|
-
export declare const json: any;
|
|
4
|
-
export declare const urlEncoded: any;
|
|
5
|
-
export declare const imeiSchema: Joi.StringSchema<string>;
|
|
6
|
-
export declare const iccidSchema: Joi.StringSchema<string>;
|
|
7
|
-
interface SpytecJoi extends Joi.Root {
|
|
8
|
-
urlEncodedObject<TSchema = any, T = TSchema>(schema?: SchemaMap<T>): ObjectSchema<TSchema>;
|
|
9
|
-
jsonObject<TSchema = any, T = TSchema>(schema?: SchemaMap<T>): ObjectSchema<TSchema>;
|
|
10
|
-
imei(): StringSchema;
|
|
11
|
-
iccid(): StringSchema;
|
|
12
|
-
delimitedArray(): ArraySchema;
|
|
13
|
-
dateString(): StringSchema;
|
|
14
|
-
jsonArray<TSchema = any, T = TSchema>(schema?: Joi.SchemaMap<T>): ArraySchema<TSchema>;
|
|
15
|
-
base64ThenUriEncodedObject<TSchema = any, T = TSchema>(schema?: SchemaMap<T>): ObjectSchema<TSchema>;
|
|
16
|
-
}
|
|
17
|
-
export declare const SpytecJoi: SpytecJoi;
|
|
18
|
-
export {};
|
|
1
|
+
import * as Joi from 'joi';
|
|
2
|
+
import { ArraySchema, ObjectSchema, SchemaMap, StringSchema } from 'joi';
|
|
3
|
+
export declare const json: any;
|
|
4
|
+
export declare const urlEncoded: any;
|
|
5
|
+
export declare const imeiSchema: Joi.StringSchema<string>;
|
|
6
|
+
export declare const iccidSchema: Joi.StringSchema<string>;
|
|
7
|
+
interface SpytecJoi extends Joi.Root {
|
|
8
|
+
urlEncodedObject<TSchema = any, T = TSchema>(schema?: SchemaMap<T>): ObjectSchema<TSchema>;
|
|
9
|
+
jsonObject<TSchema = any, T = TSchema>(schema?: SchemaMap<T>): ObjectSchema<TSchema>;
|
|
10
|
+
imei(): StringSchema;
|
|
11
|
+
iccid(): StringSchema;
|
|
12
|
+
delimitedArray(): ArraySchema;
|
|
13
|
+
dateString(): StringSchema;
|
|
14
|
+
jsonArray<TSchema = any, T = TSchema>(schema?: Joi.SchemaMap<T>): ArraySchema<TSchema>;
|
|
15
|
+
base64ThenUriEncodedObject<TSchema = any, T = TSchema>(schema?: SchemaMap<T>): ObjectSchema<TSchema>;
|
|
16
|
+
}
|
|
17
|
+
export declare const SpytecJoi: SpytecJoi;
|
|
18
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseAPIGatewayEvent } from '../types';
|
|
2
|
-
import validateEvent from './validateEvent';
|
|
3
|
-
export { validateEvent };
|
|
4
|
-
export * from './custom';
|
|
5
|
-
export * from './requestContext';
|
|
6
|
-
export declare const defaultApiSchema: import("joi").ObjectSchema<BaseAPIGatewayEvent>;
|
|
1
|
+
import { BaseAPIGatewayEvent } from '../types';
|
|
2
|
+
import validateEvent from './validateEvent';
|
|
3
|
+
export { validateEvent };
|
|
4
|
+
export * from './custom';
|
|
5
|
+
export * from './requestContext';
|
|
6
|
+
export declare const defaultApiSchema: import("joi").ObjectSchema<BaseAPIGatewayEvent>;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { APIGatewayEventRequestContextWithAuthorizer } from 'aws-lambda/common/api-gateway';
|
|
2
|
-
import * as Joi from 'joi';
|
|
3
|
-
import { AuthClass, SpytecAuthContext } from '../types';
|
|
4
|
-
interface GetAuthorizerValidatorParams {
|
|
5
|
-
scope?: string;
|
|
6
|
-
type?: AuthClass;
|
|
7
|
-
}
|
|
8
|
-
export declare const getAuthorizerValidator: ({ scope, type }?: GetAuthorizerValidatorParams) => Joi.ObjectSchema<SpytecAuthContext>;
|
|
9
|
-
/**
|
|
10
|
-
* @deprecated
|
|
11
|
-
*/
|
|
12
|
-
export declare const requestContextValidator: Joi.ObjectSchema<any>;
|
|
13
|
-
export declare const getRequestContextValidator: (params?: GetAuthorizerValidatorParams) => Joi.ObjectSchema<APIGatewayEventRequestContextWithAuthorizer<SpytecAuthContext>>;
|
|
14
|
-
export {};
|
|
1
|
+
import { APIGatewayEventRequestContextWithAuthorizer } from 'aws-lambda/common/api-gateway';
|
|
2
|
+
import * as Joi from 'joi';
|
|
3
|
+
import { AuthClass, SpytecAuthContext } from '../types';
|
|
4
|
+
interface GetAuthorizerValidatorParams {
|
|
5
|
+
scope?: string;
|
|
6
|
+
type?: AuthClass;
|
|
7
|
+
}
|
|
8
|
+
export declare const getAuthorizerValidator: ({ scope, type }?: GetAuthorizerValidatorParams) => Joi.ObjectSchema<SpytecAuthContext>;
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated
|
|
11
|
+
*/
|
|
12
|
+
export declare const requestContextValidator: Joi.ObjectSchema<any>;
|
|
13
|
+
export declare const getRequestContextValidator: (params?: GetAuthorizerValidatorParams) => Joi.ObjectSchema<APIGatewayEventRequestContextWithAuthorizer<SpytecAuthContext>>;
|
|
14
|
+
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ObjectSchema, ValidationOptions } from 'joi';
|
|
2
|
-
declare const validateEvent: <T>(event: any, schema?: ObjectSchema<T>, validateOptions?: ValidationOptions) => T;
|
|
3
|
-
export default validateEvent;
|
|
1
|
+
import { ObjectSchema, ValidationOptions } from 'joi';
|
|
2
|
+
declare const validateEvent: <T>(event: any, schema?: ObjectSchema<T>, validateOptions?: ValidationOptions) => T;
|
|
3
|
+
export default validateEvent;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APIGatewayProxyResult } from 'aws-lambda';
|
|
2
|
-
import { WrapperArgs } from '../types';
|
|
3
|
-
declare const apiGatewayEventWrapper: <E, R>({ event, context, schema, handler, }: WrapperArgs<E, R>) => Promise<APIGatewayProxyResult>;
|
|
4
|
-
export default apiGatewayEventWrapper;
|
|
1
|
+
import { APIGatewayProxyResult } from 'aws-lambda';
|
|
2
|
+
import { WrapperArgs } from '../types';
|
|
3
|
+
declare const apiGatewayEventWrapper: <E, R>({ event, context, schema, handler, }: WrapperArgs<E, R>) => Promise<APIGatewayProxyResult>;
|
|
4
|
+
export default apiGatewayEventWrapper;
|
package/dist/wrappers/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import apiGatewayEventWrapper from './apiGatewayEventWrapper';
|
|
2
|
-
import sqsEventWrapper from './sqsEventWrapper';
|
|
3
|
-
import sqsEventWrapperWithReturn from './sqsEventWrapperWithReturn';
|
|
4
|
-
export { apiGatewayEventWrapper, sqsEventWrapper, sqsEventWrapperWithReturn };
|
|
5
|
-
export * from './response';
|
|
1
|
+
import apiGatewayEventWrapper from './apiGatewayEventWrapper';
|
|
2
|
+
import sqsEventWrapper from './sqsEventWrapper';
|
|
3
|
+
import sqsEventWrapperWithReturn from './sqsEventWrapperWithReturn';
|
|
4
|
+
export { apiGatewayEventWrapper, sqsEventWrapper, sqsEventWrapperWithReturn };
|
|
5
|
+
export * from './response';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { APIGatewayProxyResult } from 'aws-lambda';
|
|
2
|
-
import { HandlerResponse } from '../types';
|
|
3
|
-
export declare const buildResponseBody: <T>(statusCode: number, message: string, data?: T) => {
|
|
4
|
-
success: boolean;
|
|
5
|
-
message: string;
|
|
6
|
-
result: T;
|
|
7
|
-
};
|
|
8
|
-
export declare const buildProxyResult: <R>({ statusCode, message, data, headers, rawResult, stringifyBody, }: HandlerResponse<R>) => APIGatewayProxyResult;
|
|
1
|
+
import { APIGatewayProxyResult } from 'aws-lambda';
|
|
2
|
+
import { HandlerResponse } from '../types';
|
|
3
|
+
export declare const buildResponseBody: <T>(statusCode: number, message: string, data?: T) => {
|
|
4
|
+
success: boolean;
|
|
5
|
+
message: string;
|
|
6
|
+
result: T | undefined;
|
|
7
|
+
};
|
|
8
|
+
export declare const buildProxyResult: <R>({ statusCode, message, data, headers, rawResult, stringifyBody, }: HandlerResponse<R>) => APIGatewayProxyResult;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { BaseRecord, SQSWrapperArgs } from '../types';
|
|
2
|
-
declare const sqsEventWrapper: <RecordType extends BaseRecord>({ event, context, schema, handler, singleHandler, mode, }: SQSWrapperArgs<RecordType>) => Promise<void>;
|
|
3
|
-
export default sqsEventWrapper;
|
|
1
|
+
import { BaseRecord, SQSWrapperArgs } from '../types';
|
|
2
|
+
declare const sqsEventWrapper: <RecordType extends BaseRecord>({ event, context, schema, handler, singleHandler, mode, }: SQSWrapperArgs<RecordType>) => Promise<void>;
|
|
3
|
+
export default sqsEventWrapper;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { BaseRecord, SQSWrapperArgsWithReturn } from '../types';
|
|
2
|
-
declare const sqsEventWrapper: <RecordType extends BaseRecord, T>({ event, context, schema, handler, singleHandler, mode, }: SQSWrapperArgsWithReturn<RecordType, T>) => Promise<T | T[]>;
|
|
3
|
-
export default sqsEventWrapper;
|
|
1
|
+
import { BaseRecord, SQSWrapperArgsWithReturn } from '../types';
|
|
2
|
+
declare const sqsEventWrapper: <RecordType extends BaseRecord, T>({ event, context, schema, handler, singleHandler, mode, }: SQSWrapperArgsWithReturn<RecordType, T>) => Promise<T | T[]>;
|
|
3
|
+
export default sqsEventWrapper;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spytecgps/lambda-utils",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.5",
|
|
4
4
|
"description": "Lambda Utils",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
"postversion": "git push && git push --tags",
|
|
13
13
|
"prepublishOnly": "npm run lint",
|
|
14
14
|
"prepare": "npm run build",
|
|
15
|
-
"build
|
|
16
|
-
"build": "webpack --mode=production",
|
|
15
|
+
"build": "rollup -c",
|
|
17
16
|
"format": "prettier --write \"**/*.ts\"",
|
|
18
17
|
"copydistfolder": "./scripts/copyDistFolder.sh",
|
|
19
18
|
"version-publish": "npm version patch && npm publish"
|
|
@@ -41,6 +40,11 @@
|
|
|
41
40
|
"qs": "^6.10.1"
|
|
42
41
|
},
|
|
43
42
|
"devDependencies": {
|
|
43
|
+
"@rollup/plugin-commonjs": "^23.0.2",
|
|
44
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
45
|
+
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
46
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
47
|
+
"@rollup/plugin-typescript": "^9.0.2",
|
|
44
48
|
"@types/aws-lambda": "^8.10.76",
|
|
45
49
|
"@types/jest": "^29.5.12",
|
|
46
50
|
"@types/joi": "^17.2.3",
|
|
@@ -56,12 +60,11 @@
|
|
|
56
60
|
"jest-junit": "^16",
|
|
57
61
|
"prettier": "^2.8.8",
|
|
58
62
|
"prettier-eslint": "^16.3.0",
|
|
63
|
+
"rollup": "^4.24.0",
|
|
64
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
59
65
|
"ts-jest": "^29.0.3",
|
|
60
66
|
"ts-loader": "^9.5.1",
|
|
61
|
-
"typescript": "^
|
|
62
|
-
"webpack": "^5.72.0",
|
|
63
|
-
"webpack-cli": "^4.9.2",
|
|
64
|
-
"webpack-node-externals": "^3.0.0"
|
|
67
|
+
"typescript": "^5.6.3"
|
|
65
68
|
},
|
|
66
69
|
"files": [
|
|
67
70
|
"dist/**/*"
|