@lafken/common 0.11.1 → 0.11.3

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.
@@ -2,6 +2,6 @@ import 'reflect-metadata';
2
2
  import { type AllowedTypes } from '../field';
3
3
  import { type CreateEventDecoratorProps, type CreateLambdaDecoratorProps, LambdaArgumentTypes } from './lambda.types';
4
4
  export declare const reflectArgumentMethod: (target: Function, methodName: string, type: LambdaArgumentTypes) => void;
5
- export declare const createLambdaDecorator: <T, M>({ getLambdaMetadata, descriptorValue, argumentParser, }: CreateLambdaDecoratorProps<T, M>) => (props?: T) => (target: any, methodName: string, descriptor: PropertyDescriptor) => any;
5
+ export declare const createLambdaDecorator: <T, M>({ getLambdaMetadata, descriptorValue, validateEvent, argumentParser, }: CreateLambdaDecoratorProps<T, M>) => (props?: T) => (target: any, methodName: string, descriptor: PropertyDescriptor) => any;
6
6
  export declare const createEventDecorator: ({ enableInLambdaInvocation, prefix }: CreateEventDecoratorProps) => (eventField: AllowedTypes) => (target: any, methodName: string, _number: number) => void;
7
7
  export declare const Context: () => (target: any, methodName: string, _number: number) => void;
@@ -15,7 +15,7 @@ const reflectArgumentMethod = (target, methodName, type) => {
15
15
  Reflect.defineMetadata(lambda_types_1.LambdaReflectKeys.arguments, properties, target);
16
16
  };
17
17
  exports.reflectArgumentMethod = reflectArgumentMethod;
18
- const createLambdaDecorator = ({ getLambdaMetadata, descriptorValue, argumentParser, }) => (props) => (target, methodName, descriptor) => {
18
+ const createLambdaDecorator = ({ getLambdaMetadata, descriptorValue, validateEvent, argumentParser, }) => (props) => (target, methodName, descriptor) => {
19
19
  if ((0, utils_1.isBuildEnvironment)()) {
20
20
  const handlersMetadata = Reflect.getMetadata(lambda_types_1.LambdaReflectKeys.handlers, target) || [];
21
21
  Reflect.defineMetadata(lambda_types_1.LambdaReflectKeys.handlers, [...handlersMetadata, getLambdaMetadata(props || {}, methodName)], target);
@@ -30,6 +30,9 @@ const createLambdaDecorator = ({ getLambdaMetadata, descriptorValue, argumentPar
30
30
  ...argumentParser,
31
31
  };
32
32
  descriptor.value = async function (event, context) {
33
+ if (!(0, utils_1.isBuildEnvironment)() && event && validateEvent) {
34
+ validateEvent(target, methodName, event);
35
+ }
33
36
  const methodArguments = (lambdaArguments?.[methodName] || []).map((argumentType) => mapArgumentMethod[argumentType]({ event, context, methodName, target }));
34
37
  const response = await originalValue.apply(this, methodArguments);
35
38
  return response;
@@ -46,6 +49,9 @@ const reflectEventMetadata = (target, methodName, key, data) => {
46
49
  const createEventDecorator = ({ enableInLambdaInvocation = false, prefix }) => (eventField) => (target, methodName, _number) => {
47
50
  (0, exports.reflectArgumentMethod)(target, methodName, lambda_types_1.LambdaArgumentTypes.event);
48
51
  if (!eventField || (!enableInLambdaInvocation && !(0, utils_1.isBuildEnvironment)())) {
52
+ if (eventField) {
53
+ reflectEventMetadata(target, methodName, lambda_types_1.LambdaReflectKeys.event_class, eventField);
54
+ }
49
55
  return;
50
56
  }
51
57
  const field = (0, field_1.getEventFields)(prefix, eventField);
@@ -179,7 +179,8 @@ export interface LambdaMetadata {
179
179
  export declare enum LambdaReflectKeys {
180
180
  handlers = "lambda:handlers",
181
181
  arguments = "lambda:arguments",
182
- event_param = "lambda:event_params"
182
+ event_param = "lambda:event_params",
183
+ event_class = "lambda:event_class"
183
184
  }
184
185
  export declare enum LambdaArgumentTypes {
185
186
  event = "event",
@@ -196,6 +197,7 @@ export type LambdaArgumentsType = Record<LambdaArgumentTypes, ({ event, context,
196
197
  export interface CreateLambdaDecoratorProps<T, M> {
197
198
  getLambdaMetadata: (params: T, methodName: string) => M;
198
199
  descriptorValue?: (descriptor: PropertyDescriptor) => any;
200
+ validateEvent?: (target: any, methodName: string, event: any) => void;
199
201
  argumentParser?: Partial<LambdaArgumentsType | (string & {})>;
200
202
  }
201
203
  export interface CreateEventDecoratorProps {
@@ -6,6 +6,7 @@ var LambdaReflectKeys;
6
6
  LambdaReflectKeys["handlers"] = "lambda:handlers";
7
7
  LambdaReflectKeys["arguments"] = "lambda:arguments";
8
8
  LambdaReflectKeys["event_param"] = "lambda:event_params";
9
+ LambdaReflectKeys["event_class"] = "lambda:event_class";
9
10
  })(LambdaReflectKeys || (exports.LambdaReflectKeys = LambdaReflectKeys = {}));
10
11
  var LambdaArgumentTypes;
11
12
  (function (LambdaArgumentTypes) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lafken/common",
3
- "version": "0.11.1",
3
+ "version": "0.11.3",
4
4
  "private": false,
5
5
  "description": "Lafken utilities - TypeScript decorator factories and metadata reflection for infrastructure-as-code decorators",
6
6
  "keywords": [