@nikovirtala/projen-bundle-lambda-function-code 0.0.5 → 0.0.7

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/.projenrc.ts CHANGED
@@ -3,12 +3,11 @@ import { NpmAccess } from "projen/lib/javascript";
3
3
  const project = new typescript.TypeScriptProject({
4
4
  copyrightOwner: "Niko Virtala",
5
5
  defaultReleaseBranch: "main",
6
- deps: ["projen", "@mrgrain/cdk-esbuild"],
6
+ deps: ["case", "projen"],
7
7
  jest: false,
8
8
  license: "MIT",
9
9
  name: "@nikovirtala/projen-bundle-lambda-function-code",
10
10
  npmAccess: NpmAccess.PUBLIC,
11
- peerDeps: ["aws-cdk-lib@^2.51.0"],
12
11
  prettier: true,
13
12
  projenrcTs: true,
14
13
  releaseToNpm: true,
package/lib/index.d.ts CHANGED
@@ -1,25 +1,18 @@
1
- import { Component, Project, awscdk, cdk } from "projen";
2
- /**
3
- * Suffix for AWS Lambda handlers.
4
- */
5
- export declare const TYPESCRIPT_LAMBDA_EXT = ".lambda.ts";
1
+ import { Component, Project, cdk } from "projen";
2
+ import { LambdaFunctionCommonOptions } from "./lambda-function";
6
3
  /**
7
4
  * Common options for auto discovering project subcomponents.
8
5
  */
9
- export interface FunctionCodeBundlerCommonOptions {
6
+ export interface AutoDiscoverCommonOptions {
10
7
  /**
11
8
  * Path to the tsconfig file to use for integration tests.
12
9
  */
13
10
  readonly tsconfigPath: string;
14
- /**
15
- * AWS CDK dependency manager.
16
- */
17
- readonly cdkDeps: awscdk.AwsCdkDeps;
18
11
  }
19
12
  /**
20
- * Options for `LambdaFunctionCodeBundler`
13
+ * Options for `LambdaAutoDiscover`
21
14
  */
22
- export interface LambdaFunctionCodeBundlerOptions extends FunctionCodeBundlerCommonOptions {
15
+ export interface LambdaAutoDiscoverOptions extends AutoDiscoverCommonOptions {
23
16
  /**
24
17
  * Project source tree (relative to project output directory).
25
18
  */
@@ -27,29 +20,29 @@ export interface LambdaFunctionCodeBundlerOptions extends FunctionCodeBundlerCom
27
20
  /**
28
21
  * Options for AWS Lambda functions.
29
22
  */
30
- readonly lambdaOptions?: awscdk.LambdaFunctionCommonOptions;
23
+ readonly lambdaOptions?: LambdaFunctionCommonOptions;
31
24
  }
32
25
  /**
33
26
  * Creates lambdas from entry points discovered in the project's source tree.
34
27
  */
35
- export declare class LambdaFunctionCodeBundler extends cdk.AutoDiscoverBase {
36
- constructor(project: Project, options: LambdaFunctionCodeBundlerOptions);
28
+ export declare class LambdaAutoDiscover extends cdk.AutoDiscoverBase {
29
+ constructor(project: Project, options: LambdaAutoDiscoverOptions);
37
30
  }
38
31
  /**
39
- * Options for `FunctionCodeBundler`
32
+ * Options for `AutoDiscover`
40
33
  */
41
- export interface FunctionCodeBundlerOptions extends LambdaFunctionCodeBundlerOptions {
34
+ export interface AutoDiscoverOptions extends LambdaAutoDiscoverOptions {
42
35
  /**
43
36
  * Auto-discover lambda functions.
44
37
  *
45
38
  * @default true
46
39
  */
47
- readonly lambdaFunctionCodeBundler?: boolean;
40
+ readonly lambdaAutoDiscover?: boolean;
48
41
  }
49
42
  /**
50
43
  * Discovers and creates integration tests and lambdas from code in the
51
44
  * project's source and test trees.
52
45
  */
53
- export declare class FunctionCodeBundler extends Component {
54
- constructor(project: Project, options: FunctionCodeBundlerOptions);
46
+ export declare class AutoDiscover extends Component {
47
+ constructor(project: Project, options: AutoDiscoverOptions);
55
48
  }
package/lib/index.js CHANGED
@@ -1,43 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FunctionCodeBundler = exports.LambdaFunctionCodeBundler = exports.TYPESCRIPT_LAMBDA_EXT = void 0;
4
- const cdk_esbuild_1 = require("@mrgrain/cdk-esbuild");
3
+ exports.AutoDiscover = exports.LambdaAutoDiscover = void 0;
5
4
  const projen_1 = require("projen");
6
- /**
7
- * Suffix for AWS Lambda handlers.
8
- */
9
- exports.TYPESCRIPT_LAMBDA_EXT = ".lambda.ts";
5
+ const internal_1 = require("./internal");
6
+ const lambda_function_1 = require("./lambda-function");
10
7
  /**
11
8
  * Creates lambdas from entry points discovered in the project's source tree.
12
9
  */
13
- class LambdaFunctionCodeBundler extends projen_1.cdk.AutoDiscoverBase {
10
+ class LambdaAutoDiscover extends projen_1.cdk.AutoDiscoverBase {
14
11
  constructor(project, options) {
15
12
  super(project, {
16
13
  projectdir: options.srcdir,
17
- extension: exports.TYPESCRIPT_LAMBDA_EXT,
14
+ extension: internal_1.TYPESCRIPT_LAMBDA_EXT,
18
15
  });
19
16
  for (const entrypoint of this.entrypoints) {
20
- new cdk_esbuild_1.TypeScriptCode(entrypoint);
21
- /* new awscdk.LambdaFunction(this.project, {
22
- entrypoint,
23
- cdkDeps: options.cdkDeps,
24
- ...options.lambdaOptions,
25
- }); */
17
+ new lambda_function_1.LambdaFunction(this.project, {
18
+ entrypoint,
19
+ ...options.lambdaOptions,
20
+ });
26
21
  }
27
22
  }
28
23
  }
29
- exports.LambdaFunctionCodeBundler = LambdaFunctionCodeBundler;
24
+ exports.LambdaAutoDiscover = LambdaAutoDiscover;
30
25
  /**
31
26
  * Discovers and creates integration tests and lambdas from code in the
32
27
  * project's source and test trees.
33
28
  */
34
- class FunctionCodeBundler extends projen_1.Component {
29
+ class AutoDiscover extends projen_1.Component {
35
30
  constructor(project, options) {
36
31
  var _a;
37
32
  super(project);
38
- if ((_a = options.lambdaFunctionCodeBundler) !== null && _a !== void 0 ? _a : true) {
39
- new LambdaFunctionCodeBundler(this.project, {
40
- cdkDeps: options.cdkDeps,
33
+ if ((_a = options.lambdaAutoDiscover) !== null && _a !== void 0 ? _a : true) {
34
+ new LambdaAutoDiscover(this.project, {
41
35
  tsconfigPath: options.tsconfigPath,
42
36
  srcdir: options.srcdir,
43
37
  lambdaOptions: options.lambdaOptions,
@@ -45,5 +39,5 @@ class FunctionCodeBundler extends projen_1.Component {
45
39
  }
46
40
  }
47
41
  }
48
- exports.FunctionCodeBundler = FunctionCodeBundler;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQXNEO0FBQ3RELG1DQUF5RDtBQUV6RDs7R0FFRztBQUNVLFFBQUEscUJBQXFCLEdBQUcsWUFBWSxDQUFDO0FBaUNsRDs7R0FFRztBQUNILE1BQWEseUJBQTBCLFNBQVEsWUFBRyxDQUFDLGdCQUFnQjtJQUNqRSxZQUFZLE9BQWdCLEVBQUUsT0FBeUM7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNiLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTTtZQUMxQixTQUFTLEVBQUUsNkJBQXFCO1NBQ2pDLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFDLElBQUksNEJBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQjs7OztrQkFJTTtRQUNSLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFoQkQsOERBZ0JDO0FBZUQ7OztHQUdHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxrQkFBUztJQUNoRCxZQUFZLE9BQWdCLEVBQUUsT0FBbUM7O1FBQy9ELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksTUFBQSxPQUFPLENBQUMseUJBQXlCLG1DQUFJLElBQUksRUFBRSxDQUFDO1lBQzlDLElBQUkseUJBQXlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDMUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2dCQUN4QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2xDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO2FBQ3JDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFiRCxrREFhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGVTY3JpcHRDb2RlIH0gZnJvbSBcIkBtcmdyYWluL2Nkay1lc2J1aWxkXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIFByb2plY3QsIGF3c2NkaywgY2RrIH0gZnJvbSBcInByb2plblwiO1xuXG4vKipcbiAqIFN1ZmZpeCBmb3IgQVdTIExhbWJkYSBoYW5kbGVycy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCA9IFwiLmxhbWJkYS50c1wiO1xuXG4vKipcbiAqIENvbW1vbiBvcHRpb25zIGZvciBhdXRvIGRpc2NvdmVyaW5nIHByb2plY3Qgc3ViY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkNvZGVCdW5kbGVyQ29tbW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSB0c2NvbmZpZyBmaWxlIHRvIHVzZSBmb3IgaW50ZWdyYXRpb24gdGVzdHMuXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZ1BhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogQVdTIENESyBkZXBlbmRlbmN5IG1hbmFnZXIuXG4gICAqL1xuICByZWFkb25seSBjZGtEZXBzOiBhd3NjZGsuQXdzQ2RrRGVwcztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlcmBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVyT3B0aW9uc1xuICBleHRlbmRzIEZ1bmN0aW9uQ29kZUJ1bmRsZXJDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFByb2plY3Qgc291cmNlIHRyZWUgKHJlbGF0aXZlIHRvIHByb2plY3Qgb3V0cHV0IGRpcmVjdG9yeSkuXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgQVdTIExhbWJkYSBmdW5jdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFPcHRpb25zPzogYXdzY2RrLkxhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGxhbWJkYXMgZnJvbSBlbnRyeSBwb2ludHMgZGlzY292ZXJlZCBpbiB0aGUgcHJvamVjdCdzIHNvdXJjZSB0cmVlLlxuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlciBleHRlbmRzIGNkay5BdXRvRGlzY292ZXJCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlck9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCB7XG4gICAgICBwcm9qZWN0ZGlyOiBvcHRpb25zLnNyY2RpcixcbiAgICAgIGV4dGVuc2lvbjogVFlQRVNDUklQVF9MQU1CREFfRVhULFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBlbnRyeXBvaW50IG9mIHRoaXMuZW50cnlwb2ludHMpIHtcbiAgICAgIG5ldyBUeXBlU2NyaXB0Q29kZShlbnRyeXBvaW50KTtcbiAgICAgIC8qICAgICAgIG5ldyBhd3NjZGsuTGFtYmRhRnVuY3Rpb24odGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgIGNka0RlcHM6IG9wdGlvbnMuY2RrRGVwcyxcbiAgICAgICAgLi4ub3B0aW9ucy5sYW1iZGFPcHRpb25zLFxuICAgICAgfSk7ICovXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEZ1bmN0aW9uQ29kZUJ1bmRsZXJgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25Db2RlQnVuZGxlck9wdGlvbnNcbiAgZXh0ZW5kcyBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvLWRpc2NvdmVyIGxhbWJkYSBmdW5jdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERpc2NvdmVycyBhbmQgY3JlYXRlcyBpbnRlZ3JhdGlvbiB0ZXN0cyBhbmQgbGFtYmRhcyBmcm9tIGNvZGUgaW4gdGhlXG4gKiBwcm9qZWN0J3Mgc291cmNlIGFuZCB0ZXN0IHRyZWVzLlxuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25Db2RlQnVuZGxlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEZ1bmN0aW9uQ29kZUJ1bmRsZXJPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBpZiAob3B0aW9ucy5sYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVyID8/IHRydWUpIHtcbiAgICAgIG5ldyBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVyKHRoaXMucHJvamVjdCwge1xuICAgICAgICBjZGtEZXBzOiBvcHRpb25zLmNka0RlcHMsXG4gICAgICAgIHRzY29uZmlnUGF0aDogb3B0aW9ucy50c2NvbmZpZ1BhdGgsXG4gICAgICAgIHNyY2Rpcjogb3B0aW9ucy5zcmNkaXIsXG4gICAgICAgIGxhbWJkYU9wdGlvbnM6IG9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
42
+ exports.AutoDiscover = AutoDiscover;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlEO0FBQ2pELHlDQUFtRDtBQUNuRCx1REFBZ0Y7QUEyQmhGOztHQUVHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxZQUFHLENBQUMsZ0JBQWdCO0lBQzFELFlBQVksT0FBZ0IsRUFBRSxPQUFrQztRQUM5RCxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ2IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQzFCLFNBQVMsRUFBRSxnQ0FBcUI7U0FDakMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUMsSUFBSSxnQ0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLFVBQVU7Z0JBQ1YsR0FBRyxPQUFPLENBQUMsYUFBYTthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBZEQsZ0RBY0M7QUFjRDs7O0dBR0c7QUFDSCxNQUFhLFlBQWEsU0FBUSxrQkFBUztJQUN6QyxZQUFZLE9BQWdCLEVBQUUsT0FBNEI7O1FBQ3hELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksTUFBQSxPQUFPLENBQUMsa0JBQWtCLG1DQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZDLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbkMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2dCQUNsQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JBQ3RCLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTthQUNyQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBWkQsb0NBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFByb2plY3QsIGNkayB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCB9IGZyb20gXCIuL2ludGVybmFsXCI7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiwgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIH0gZnJvbSBcIi4vbGFtYmRhLWZ1bmN0aW9uXCI7XG5cbi8qKlxuICogQ29tbW9uIG9wdGlvbnMgZm9yIGF1dG8gZGlzY292ZXJpbmcgcHJvamVjdCBzdWJjb21wb25lbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9EaXNjb3ZlckNvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgdHNjb25maWcgZmlsZSB0byB1c2UgZm9yIGludGVncmF0aW9uIHRlc3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWdQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYExhbWJkYUF1dG9EaXNjb3ZlcmBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFBdXRvRGlzY292ZXJPcHRpb25zIGV4dGVuZHMgQXV0b0Rpc2NvdmVyQ29tbW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQcm9qZWN0IHNvdXJjZSB0cmVlIChyZWxhdGl2ZSB0byBwcm9qZWN0IG91dHB1dCBkaXJlY3RvcnkpLlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIEFXUyBMYW1iZGEgZnVuY3Rpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhT3B0aW9ucz86IExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGxhbWJkYXMgZnJvbSBlbnRyeSBwb2ludHMgZGlzY292ZXJlZCBpbiB0aGUgcHJvamVjdCdzIHNvdXJjZSB0cmVlLlxuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhQXV0b0Rpc2NvdmVyIGV4dGVuZHMgY2RrLkF1dG9EaXNjb3ZlckJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBMYW1iZGFBdXRvRGlzY292ZXJPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwge1xuICAgICAgcHJvamVjdGRpcjogb3B0aW9ucy5zcmNkaXIsXG4gICAgICBleHRlbnNpb246IFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgZW50cnlwb2ludCBvZiB0aGlzLmVudHJ5cG9pbnRzKSB7XG4gICAgICBuZXcgTGFtYmRhRnVuY3Rpb24odGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgIC4uLm9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBBdXRvRGlzY292ZXJgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0Rpc2NvdmVyT3B0aW9ucyBleHRlbmRzIExhbWJkYUF1dG9EaXNjb3Zlck9wdGlvbnMge1xuICAvKipcbiAgICogQXV0by1kaXNjb3ZlciBsYW1iZGEgZnVuY3Rpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFBdXRvRGlzY292ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERpc2NvdmVycyBhbmQgY3JlYXRlcyBpbnRlZ3JhdGlvbiB0ZXN0cyBhbmQgbGFtYmRhcyBmcm9tIGNvZGUgaW4gdGhlXG4gKiBwcm9qZWN0J3Mgc291cmNlIGFuZCB0ZXN0IHRyZWVzLlxuICovXG5leHBvcnQgY2xhc3MgQXV0b0Rpc2NvdmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogQXV0b0Rpc2NvdmVyT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgaWYgKG9wdGlvbnMubGFtYmRhQXV0b0Rpc2NvdmVyID8/IHRydWUpIHtcbiAgICAgIG5ldyBMYW1iZGFBdXRvRGlzY292ZXIodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIHRzY29uZmlnUGF0aDogb3B0aW9ucy50c2NvbmZpZ1BhdGgsXG4gICAgICAgIHNyY2Rpcjogb3B0aW9ucy5zcmNkaXIsXG4gICAgICAgIGxhbWJkYU9wdGlvbnM6IG9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Suffix for AWS Lambda handlers.
3
+ */
4
+ export declare const TYPESCRIPT_LAMBDA_EXT = ".lambda.ts";
5
+ /**
6
+ * Converts the given path string to posix if it wasn't already.
7
+ */
8
+ export declare function convertToPosixPath(p: string): string;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertToPosixPath = exports.TYPESCRIPT_LAMBDA_EXT = void 0;
4
+ const path_1 = require("path");
5
+ /**
6
+ * Suffix for AWS Lambda handlers.
7
+ */
8
+ exports.TYPESCRIPT_LAMBDA_EXT = ".lambda.ts";
9
+ /**
10
+ * Converts the given path string to posix if it wasn't already.
11
+ */
12
+ function convertToPosixPath(p) {
13
+ return p.split(path_1.sep).join(path_1.posix.sep);
14
+ }
15
+ exports.convertToPosixPath = convertToPosixPath;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW50ZXJuYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQWtDO0FBRWxDOztHQUVHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxZQUFZLENBQUM7QUFFbEQ7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxDQUFTO0lBQzFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFGRCxnREFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlcCwgcG9zaXggfSBmcm9tIFwicGF0aFwiO1xuXG4vKipcbiAqIFN1ZmZpeCBmb3IgQVdTIExhbWJkYSBoYW5kbGVycy5cbiAqL1xuZXhwb3J0IGNvbnN0IFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCA9IFwiLmxhbWJkYS50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBnaXZlbiBwYXRoIHN0cmluZyB0byBwb3NpeCBpZiBpdCB3YXNuJ3QgYWxyZWFkeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1Bvc2l4UGF0aChwOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHAuc3BsaXQoc2VwKS5qb2luKHBvc2l4LnNlcCk7XG59XG4iXX0=
@@ -0,0 +1,142 @@
1
+ import { Component, Project, javascript } from "projen";
2
+ /**
3
+ * Common options for `LambdaFunction`. Applies to all functions in
4
+ * auto-discovery.
5
+ */
6
+ export interface LambdaFunctionCommonOptions {
7
+ /**
8
+ * The node.js version to target.
9
+ *
10
+ * @default Runtime.NODEJS_18_X
11
+ */
12
+ readonly runtime?: LambdaRuntime;
13
+ /**
14
+ * Bundling options for this AWS Lambda function.
15
+ *
16
+ * If not specified the default bundling options specified for the project
17
+ * `Bundler` instance will be used.
18
+ *
19
+ * @default - defaults
20
+ */
21
+ readonly bundlingOptions?: javascript.BundlingOptions;
22
+ /**
23
+ * Whether to automatically reuse TCP connections when working with the AWS
24
+ * SDK for JavaScript.
25
+ *
26
+ * This sets the `AWS_NODEJS_CONNECTION_REUSE_ENABLED` environment variable
27
+ * to `1`.
28
+ *
29
+ * Not applicable when `edgeLambda` is set to `true` because environment
30
+ * variables are not supported in Lambda@Edge.
31
+ *
32
+ * @see https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
33
+ *
34
+ * @default true
35
+ */
36
+ readonly awsSdkConnectionReuse?: boolean;
37
+ }
38
+ /**
39
+ * Options for `Function`.
40
+ */
41
+ export interface LambdaFunctionOptions extends LambdaFunctionCommonOptions {
42
+ /**
43
+ * A path from the project root directory to a TypeScript file which contains
44
+ * the AWS Lambda handler entrypoint (exports a `handler` function).
45
+ *
46
+ * This is relative to the root directory of the project.
47
+ *
48
+ * @example "src/subdir/foo.lambda.ts"
49
+ */
50
+ readonly entrypoint: string;
51
+ /**
52
+ * The name of the generated TypeScript source file. This file should also be
53
+ * under the source tree.
54
+ *
55
+ * @default - The name of the entrypoint file, with the `-function.ts` suffix
56
+ * instead of `.lambda.ts`.
57
+ */
58
+ readonly constructFile?: string;
59
+ /**
60
+ * The name of the generated `lambda.Function` subclass.
61
+ *
62
+ * @default - A pascal cased version of the name of the entrypoint file, with
63
+ * the extension `Function` (e.g. `ResizeImageFunction`).
64
+ */
65
+ readonly constructName?: string;
66
+ }
67
+ /**
68
+ * Generates a pre-bundled AWS Lambda function construct from handler code.
69
+ *
70
+ * To use this, create an AWS Lambda handler file under your source tree with
71
+ * the `.lambda.ts` extension and add a `LambdaFunction` component to your
72
+ * typescript project pointing to this entrypoint.
73
+ *
74
+ * This will add a task to your "compile" step which will use `esbuild` to
75
+ * bundle the handler code into the build directory. It will also generate a
76
+ * file `src/foo-function.ts` with a custom AWS construct called `FooFunction`
77
+ * which extends `@aws-cdk/aws-lambda.Function` which is bound to the bundled
78
+ * handle through an asset.
79
+ *
80
+ * @example
81
+ *
82
+ * new LambdaFunction(myProject, {
83
+ * srcdir: myProject.srcdir,
84
+ * entrypoint: 'src/foo.lambda.ts',
85
+ * });
86
+ */
87
+ export declare class LambdaFunction extends Component {
88
+ /**
89
+ * Defines a pre-bundled AWS Lambda function construct from handler code.
90
+ *
91
+ * @param project The project to use
92
+ * @param options Options
93
+ */
94
+ constructor(project: Project, options: LambdaFunctionOptions);
95
+ }
96
+ /**
97
+ * Options for the AWS Lambda function runtime
98
+ */
99
+ export interface LambdaRuntimeOptions {
100
+ /**
101
+ * Packages that are considered externals by default when bundling
102
+ *
103
+ * @default ['@aws-sdk/*']
104
+ */
105
+ readonly defaultExternals?: string[];
106
+ }
107
+ /**
108
+ * The runtime for the AWS Lambda function.
109
+ */
110
+ export declare class LambdaRuntime {
111
+ /**
112
+ * The Node.js runtime to use
113
+ */
114
+ readonly functionRuntime: string;
115
+ /**
116
+ * The esbuild setting to use.
117
+ */
118
+ readonly esbuildTarget: string;
119
+ /**
120
+ * Node.js 18.x
121
+ */
122
+ static readonly NODEJS_18_X: LambdaRuntime;
123
+ /**
124
+ * Node.js 20.x
125
+ */
126
+ static readonly NODEJS_20_X: LambdaRuntime;
127
+ readonly esbuildPlatform = "node";
128
+ readonly defaultExternals: string[];
129
+ constructor(
130
+ /**
131
+ * The Node.js runtime to use
132
+ */
133
+ functionRuntime: string,
134
+ /**
135
+ * The esbuild setting to use.
136
+ */
137
+ esbuildTarget: string,
138
+ /**
139
+ * Options for this runtime.
140
+ */
141
+ options?: LambdaRuntimeOptions);
142
+ }
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.LambdaRuntime = exports.LambdaFunction = void 0;
27
+ const path = __importStar(require("path"));
28
+ const case_1 = require("case");
29
+ const projen_1 = require("projen");
30
+ const internal_1 = require("./internal");
31
+ /**
32
+ * Generates a pre-bundled AWS Lambda function construct from handler code.
33
+ *
34
+ * To use this, create an AWS Lambda handler file under your source tree with
35
+ * the `.lambda.ts` extension and add a `LambdaFunction` component to your
36
+ * typescript project pointing to this entrypoint.
37
+ *
38
+ * This will add a task to your "compile" step which will use `esbuild` to
39
+ * bundle the handler code into the build directory. It will also generate a
40
+ * file `src/foo-function.ts` with a custom AWS construct called `FooFunction`
41
+ * which extends `@aws-cdk/aws-lambda.Function` which is bound to the bundled
42
+ * handle through an asset.
43
+ *
44
+ * @example
45
+ *
46
+ * new LambdaFunction(myProject, {
47
+ * srcdir: myProject.srcdir,
48
+ * entrypoint: 'src/foo.lambda.ts',
49
+ * });
50
+ */
51
+ class LambdaFunction extends projen_1.Component {
52
+ /**
53
+ * Defines a pre-bundled AWS Lambda function construct from handler code.
54
+ *
55
+ * @param project The project to use
56
+ * @param options Options
57
+ */
58
+ constructor(project, options) {
59
+ var _a, _b, _c, _d;
60
+ super(project);
61
+ const bundler = projen_1.javascript.Bundler.of(project);
62
+ if (!bundler) {
63
+ throw new Error("No bundler found. Please add a Bundler component to your project.");
64
+ }
65
+ const runtime = (_a = options.runtime) !== null && _a !== void 0 ? _a : LambdaRuntime.NODEJS_18_X;
66
+ // allow Lambda handler code to import dev-deps since they are only needed
67
+ // during bundling
68
+ const eslint = projen_1.javascript.Eslint.of(project);
69
+ eslint === null || eslint === void 0 ? void 0 : eslint.allowDevDeps(options.entrypoint);
70
+ const entrypoint = options.entrypoint;
71
+ if (!entrypoint.endsWith(internal_1.TYPESCRIPT_LAMBDA_EXT)) {
72
+ throw new Error(`${entrypoint} must have a ${internal_1.TYPESCRIPT_LAMBDA_EXT} extension`);
73
+ }
74
+ const basePath = path.posix.join(path.dirname(entrypoint), path.basename(entrypoint, internal_1.TYPESCRIPT_LAMBDA_EXT));
75
+ const constructFile = (_b = options.constructFile) !== null && _b !== void 0 ? _b : `${basePath}-code.ts`;
76
+ if (path.extname(constructFile) !== ".ts") {
77
+ throw new Error(`Construct file name "${constructFile}" must have a .ts extension`);
78
+ }
79
+ // type names
80
+ const constructName = (_c = options.constructName) !== null && _c !== void 0 ? _c : (0, case_1.pascal)(path.basename(basePath)) + "FunctionCode";
81
+ const bundle = bundler.addBundle(entrypoint, {
82
+ target: runtime.esbuildTarget,
83
+ platform: runtime.esbuildPlatform,
84
+ externals: runtime.defaultExternals,
85
+ ...options.bundlingOptions,
86
+ tsconfigPath: (_d = project === null || project === void 0 ? void 0 : project.tsconfigDev) === null || _d === void 0 ? void 0 : _d.fileName,
87
+ });
88
+ // calculate the relative path between the directory containing the
89
+ // generated construct source file to the directory containing the bundle
90
+ // index.js by resolving them as absolute paths first.
91
+ // e.g:
92
+ // - outfileAbs => `/project-outdir/assets/foo/bar/baz/foo-function/index.js`
93
+ // - constructAbs => `/project-outdir/src/foo/bar/baz/foo-function.ts`
94
+ const outfileAbs = path.join(project.outdir, bundle.outfile);
95
+ const constructAbs = path.join(project.outdir, constructFile);
96
+ const relativeOutfile = path.relative(path.dirname(constructAbs), path.dirname(outfileAbs));
97
+ const src = new projen_1.SourceCode(project, constructFile);
98
+ if (src.marker) {
99
+ src.line(`// ${src.marker}`);
100
+ }
101
+ src.line("import * as path from 'path';");
102
+ src.line("import { aws_lambda } from 'aws-cdk-lib';");
103
+ src.line();
104
+ src.open(`export const ${constructName} = aws_lambda.Code.fromAsset(`);
105
+ src.line(`path.join(__dirname, '${(0, internal_1.convertToPosixPath)(relativeOutfile)}'),`);
106
+ src.close(");");
107
+ this.project.logger.verbose(`${basePath}: construct "${constructName}" generated under "${constructFile}"`);
108
+ this.project.logger.verbose(`${basePath}: bundle task "${bundle.bundleTask.name}"`);
109
+ if (bundle.watchTask) {
110
+ this.project.logger.verbose(`${basePath}: bundle watch task "${bundle.watchTask.name}"`);
111
+ }
112
+ }
113
+ }
114
+ exports.LambdaFunction = LambdaFunction;
115
+ /**
116
+ * The runtime for the AWS Lambda function.
117
+ */
118
+ class LambdaRuntime {
119
+ constructor(
120
+ /**
121
+ * The Node.js runtime to use
122
+ */
123
+ functionRuntime,
124
+ /**
125
+ * The esbuild setting to use.
126
+ */
127
+ esbuildTarget,
128
+ /**
129
+ * Options for this runtime.
130
+ */
131
+ options) {
132
+ var _a;
133
+ this.functionRuntime = functionRuntime;
134
+ this.esbuildTarget = esbuildTarget;
135
+ this.esbuildPlatform = "node";
136
+ this.defaultExternals = (_a = options === null || options === void 0 ? void 0 : options.defaultExternals) !== null && _a !== void 0 ? _a : ["@aws-sdk/*"];
137
+ }
138
+ }
139
+ exports.LambdaRuntime = LambdaRuntime;
140
+ /**
141
+ * Node.js 18.x
142
+ */
143
+ LambdaRuntime.NODEJS_18_X = new LambdaRuntime("nodejs18.x", "node18");
144
+ /**
145
+ * Node.js 20.x
146
+ */
147
+ LambdaRuntime.NODEJS_20_X = new LambdaRuntime("nodejs20.x", "node20");
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xhbWJkYS1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QiwrQkFBOEI7QUFDOUIsbUNBQWdGO0FBQ2hGLHlDQUF1RTtBQXlFdkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFhLGNBQWUsU0FBUSxrQkFBUztJQUMzQzs7Ozs7T0FLRztJQUNILFlBQVksT0FBZ0IsRUFBRSxPQUE4Qjs7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxPQUFPLEdBQUcsbUJBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUVBQW1FLENBQ3BFLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBQSxPQUFPLENBQUMsT0FBTyxtQ0FBSSxhQUFhLENBQUMsV0FBVyxDQUFDO1FBRTdELDBFQUEwRTtRQUMxRSxrQkFBa0I7UUFDbEIsTUFBTSxNQUFNLEdBQUcsbUJBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFFdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0NBQXFCLENBQUMsRUFBRSxDQUFDO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxVQUFVLGdCQUFnQixnQ0FBcUIsWUFBWSxDQUMvRCxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sUUFBUSxH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d0JBQXdCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQzVELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBN0ZELHdDQTZGQztBQWNEOztHQUVHO0FBQ0gsTUFBYSxhQUFhO0lBcUJ4QjtJQUNFOztPQUVHO0lBQ2EsZUFBdUI7SUFFdkM7O09BRUc7SUFDYSxhQUFxQjtJQUVyQzs7T0FFRztJQUNILE9BQThCOztRQVZkLG9CQUFlLEdBQWYsZUFBZSxDQUFRO1FBS3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBYnZCLG9CQUFlLEdBQUcsTUFBTSxDQUFDO1FBb0J2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLG1DQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7QUF0Q0gsc0NBdUNDO0FBdENDOztHQUVHO0FBQ29CLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELFlBQVksRUFDWixRQUFRLENBQ1QsQUFIaUMsQ0FHaEM7QUFFRjs7R0FFRztBQUNvQix5QkFBVyxHQUFHLElBQUksYUFBYSxDQUNwRCxZQUFZLEVBQ1osUUFBUSxDQUNULEFBSGlDLENBR2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgcGFzY2FsIH0gZnJvbSBcImNhc2VcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgUHJvamVjdCwgU291cmNlQ29kZSwgamF2YXNjcmlwdCwgdHlwZXNjcmlwdCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IGNvbnZlcnRUb1Bvc2l4UGF0aCwgVFlQRVNDUklQVF9MQU1CREFfRVhUIH0gZnJvbSBcIi4vaW50ZXJuYWxcIjtcblxuLyoqXG4gKiBDb21tb24gb3B0aW9ucyBmb3IgYExhbWJkYUZ1bmN0aW9uYC4gQXBwbGllcyB0byBhbGwgZnVuY3Rpb25zIGluXG4gKiBhdXRvLWRpc2NvdmVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5vZGUuanMgdmVyc2lvbiB0byB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJ1bnRpbWUuTk9ERUpTXzE4X1hcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWU/OiBMYW1iZGFSdW50aW1lO1xuXG4gIC8qKlxuICAgKiBCdW5kbGluZyBvcHRpb25zIGZvciB0aGlzIEFXUyBMYW1iZGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIElmIG5vdCBzcGVjaWZpZWQgdGhlIGRlZmF1bHQgYnVuZGxpbmcgb3B0aW9ucyBzcGVjaWZpZWQgZm9yIHRoZSBwcm9qZWN0XG4gICAqIGBCdW5kbGVyYCBpbnN0YW5jZSB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdHNcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsaW5nT3B0aW9ucz86IGphdmFzY3JpcHQuQnVuZGxpbmdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgcmV1c2UgVENQIGNvbm5lY3Rpb25zIHdoZW4gd29ya2luZyB3aXRoIHRoZSBBV1NcbiAgICogU0RLIGZvciBKYXZhU2NyaXB0LlxuICAgKlxuICAgKiBUaGlzIHNldHMgdGhlIGBBV1NfTk9ERUpTX0NPTk5FQ1RJT05fUkVVU0VfRU5BQkxFRGAgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICogdG8gYDFgLlxuICAgKlxuICAgKiBOb3QgYXBwbGljYWJsZSB3aGVuIGBlZGdlTGFtYmRhYCBpcyBzZXQgdG8gYHRydWVgIGJlY2F1c2UgZW52aXJvbm1lbnRcbiAgICogdmFyaWFibGVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIExhbWJkYUBFZGdlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZGstZm9yLWphdmFzY3JpcHQvdjIvZGV2ZWxvcGVyLWd1aWRlL25vZGUtcmV1c2luZy1jb25uZWN0aW9ucy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGF3c1Nka0Nvbm5lY3Rpb25SZXVzZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEZ1bmN0aW9uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbk9wdGlvbnMgZXh0ZW5kcyBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogQSBwYXRoIGZyb20gdGhlIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgdG8gYSBUeXBlU2NyaXB0IGZpbGUgd2hpY2ggY29udGFpbnNcbiAgICogdGhlIEFXUyBMYW1iZGEgaGFuZGxlciBlbnRyeXBvaW50IChleHBvcnRzIGEgYGhhbmRsZXJgIGZ1bmN0aW9uKS5cbiAgICpcbiAgICogVGhpcyBpcyByZWxhdGl2ZSB0byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QuXG4gICAqXG4gICAqIEBleGFtcGxlIFwic3JjL3N1YmRpci9mb28ubGFtYmRhLnRzXCJcbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBUeXBlU2NyaXB0IHNvdXJjZSBmaWxlLiBUaGlzIGZpbGUgc2hvdWxkIGFsc28gYmVcbiAgICogdW5kZXIgdGhlIHNvdXJjZSB0cmVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBuYW1lIG9mIHRoZSBlbnRyeXBvaW50IGZpbGUsIHdpdGggdGhlIGAtZnVuY3Rpb24udHNgIHN1ZmZpeFxuICAgKiBpbnN0ZWFkIG9mIGAubGFtYmRhLnRzYC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdEZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgYGxhbWJkYS5GdW5jdGlvbmAgc3ViY2xhc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSBwYXNjYWwgY2FzZWQgdmVyc2lvbiBvZiB0aGUgbmFtZSBvZiB0aGUgZW50cnlwb2ludCBmaWxlLCB3aXRoXG4gICAqIHRoZSBleHRlbnNpb24gYEZ1bmN0aW9uYCAoZS5nLiBgUmVzaXplSW1hZ2VGdW5jdGlvbmApLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uc3RydWN0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBwcmUtYnVuZGxlZCBBV1MgTGFtYmRhIGZ1bmN0aW9uIGNvbnN0cnVjdCBmcm9tIGhhbmRsZXIgY29kZS5cbiAqXG4gKiBUbyB1c2UgdGhpcywgY3JlYXRlIGFuIEFXUyBMYW1iZGEgaGFuZGxlciBmaWxlIHVuZGVyIHlvdXIgc291cmNlIHRyZWUgd2l0aFxuICogdGhlIGAubGFtYmRhLnRzYCBleHRlbnNpb24gYW5kIGFkZCBhIGBMYW1iZGFGdW5jdGlvbmAgY29tcG9uZW50IHRvIHlvdXJcbiAqIHR5cGVzY3JpcHQgcHJvamVjdCBwb2ludGluZyB0byB0aGlzIGVudHJ5cG9pbnQuXG4gKlxuICogVGhpcyB3aWxsIGFkZCBhIHRhc2sgdG8geW91ciBcImNvbXBpbGVcIiBzdGVwIHdoaWNoIHdpbGwgdXNlIGBlc2J1aWxkYCB0b1xuICogYnVuZGxlIHRoZSBoYW5kbGVyIGNvZGUgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5LiBJdCB3aWxsIGFsc28gZ2VuZXJhdGUgYVxuICogZmlsZSBgc3JjL2Zvby1mdW5jdGlvbi50c2Agd2l0aCBhIGN1c3RvbSBBV1MgY29uc3RydWN0IGNhbGxlZCBgRm9vRnVuY3Rpb25gXG4gKiB3aGljaCBleHRlbmRzIGBAYXdzLWNkay9hd3MtbGFtYmRhLkZ1bmN0aW9uYCB3aGljaCBpcyBib3VuZCB0byB0aGUgYnVuZGxlZFxuICogaGFuZGxlIHRocm91Z2ggYW4gYXNzZXQuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBuZXcgTGFtYmRhRnVuY3Rpb24obXlQcm9qZWN0LCB7XG4gKiAgIHNyY2RpcjogbXlQcm9qZWN0LnNyY2RpcixcbiAqICAgZW50cnlwb2ludDogJ3NyYy9mb28ubGFtYmRhLnRzJyxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhRnVuY3Rpb24gZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogRGVmaW5lcyBhIHByZS1idW5kbGVkIEFXUyBMYW1iZGEgZnVuY3Rpb24gY29uc3RydWN0IGZyb20gaGFuZGxlciBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdCB0byB1c2VcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogTGFtYmRhRnVuY3Rpb25PcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBidW5kbGVyID0gamF2YXNjcmlwdC5CdW5kbGVyLm9mKHByb2plY3QpO1xuICAgIGlmICghYnVuZGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk5vIGJ1bmRsZXIgZm91bmQuIFBsZWFzZSBhZGQgYSBCdW5kbGVyIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bnRpbWUgPSBvcHRpb25zLnJ1bnRpbWUgPz8gTGFtYmRhUnVudGltZS5OT0RFSlNfMThfWDtcblxuICAgIC8vIGFsbG93IExhbWJkYSBoYW5kbGVyIGNvZGUgdG8gaW1wb3J0IGRldi1kZXBzIHNpbmNlIHRoZXkgYXJlIG9ubHkgbmVlZGVkXG4gICAgLy8gZHVyaW5nIGJ1bmRsaW5nXG4gICAgY29uc3QgZXNsaW50ID0gamF2YXNjcmlwdC5Fc2xpbnQub2YocHJvamVjdCk7XG4gICAgZXNsaW50Py5hbGxvd0RldkRlcHMob3B0aW9ucy5lbnRyeXBvaW50KTtcblxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBvcHRpb25zLmVudHJ5cG9pbnQ7XG5cbiAgICBpZiAoIWVudHJ5cG9pbnQuZW5kc1dpdGgoVFlQRVNDUklQVF9MQU1CREFfRVhUKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHtlbnRyeXBvaW50fSBtdXN0IGhhdmUgYSAke1RZUEVTQ1JJUFRfTEFNQkRBX0VYVH0gZXh0ZW5zaW9uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVBhdGggPSBwYXRoLnBvc2l4LmpvaW4oXG4gICAgICBwYXRoLmRpcm5hbWUoZW50cnlwb2ludCksXG4gICAgICBwYXRoLmJhc2VuYW1lKGVudHJ5cG9pbnQsIFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCksXG4gICAgKTtcbiAgICBjb25zdCBjb25zdHJ1Y3RGaWxlID0gb3B0aW9ucy5jb25zdHJ1Y3RGaWxlID8/IGAke2Jhc2VQYXRofS1jb2RlLnRzYDtcblxuICAgIGlmIChwYXRoLmV4dG5hbWUoY29uc3RydWN0RmlsZSkgIT09IFwiLnRzXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvbnN0cnVjdCBmaWxlIG5hbWUgXCIke2NvbnN0cnVjdEZpbGV9XCIgbXVzdCBoYXZlIGEgLnRzIGV4dGVuc2lvbmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHR5cGUgbmFtZXNcbiAgICBjb25zdCBjb25zdHJ1Y3ROYW1lID1cbiAgICAgIG9wdGlvbnMuY29uc3RydWN0TmFtZSA/PyBwYXNjYWwocGF0aC5iYXNlbmFtZShiYXNlUGF0aCkpICsgXCJGdW5jdGlvbkNvZGVcIjtcblxuICAgIGNvbnN0IGJ1bmRsZSA9IGJ1bmRsZXIuYWRkQnVuZGxlKGVudHJ5cG9pbnQsIHtcbiAgICAgIHRhcmdldDogcnVudGltZS5lc2J1aWxkVGFyZ2V0LFxuICAgICAgcGxhdGZvcm06IHJ1bnRpbWUuZXNidWlsZFBsYXRmb3JtLFxuICAgICAgZXh0ZXJuYWxzOiBydW50aW1lLmRlZmF1bHRFeHRlcm5hbHMsXG4gICAgICAuLi5vcHRpb25zLmJ1bmRsaW5nT3B0aW9ucyxcbiAgICAgIHRzY29uZmlnUGF0aDogKHByb2plY3QgYXMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdCk/LnRzY29uZmlnRGV2XG4gICAgICAgID8uZmlsZU5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyBjYWxjdWxhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmV0d2VlbiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlXG4gICAgLy8gZ2VuZXJhdGVkIGNvbnN0cnVjdCBzb3VyY2UgZmlsZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGJ1bmRsZVxuICAgIC8vIGluZGV4LmpzIGJ5IHJlc29sdmluZyB0aGVtIGFzIGFic29sdXRlIHBhdGhzIGZpcnN0LlxuICAgIC8vIGUuZzpcbiAgICAvLyAgLSBvdXRmaWxlQWJzID0+IGAvcHJvamVjdC1vdXRkaXIvYXNzZXRzL2Zvby9iYXIvYmF6L2Zvby1mdW5jdGlvbi9pbmRleC5qc2BcbiAgICAvLyAgLSBjb25zdHJ1Y3RBYnMgPT4gYC9wcm9qZWN0LW91dGRpci9zcmMvZm9vL2Jhci9iYXovZm9vLWZ1bmN0aW9uLnRzYFxuICAgIGNvbnN0IG91dGZpbGVBYnMgPSBwYXRoLmpvaW4ocHJvamVjdC5vdXRkaXIsIGJ1bmRsZS5vdXRmaWxlKTtcbiAgICBjb25zdCBjb25zdHJ1Y3RBYnMgPSBwYXRoLmpvaW4ocHJvamVjdC5vdXRkaXIsIGNvbnN0cnVjdEZpbGUpO1xuICAgIGNvbnN0IHJlbGF0aXZlT3V0ZmlsZSA9IHBhdGgucmVsYXRpdmUoXG4gICAgICBwYXRoLmRpcm5hbWUoY29uc3RydWN0QWJzKSxcbiAgICAgIHBhdGguZGlybmFtZShvdXRmaWxlQWJzKSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3JjID0gbmV3IFNvdXJjZUNvZGUocHJvamVjdCwgY29uc3RydWN0RmlsZSk7XG4gICAgaWYgKHNyYy5tYXJrZXIpIHtcbiAgICAgIHNyYy5saW5lKGAvLyAke3NyYy5tYXJrZXJ9YCk7XG4gICAgfVxuICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcIik7XG4gICAgc3JjLmxpbmUoXCJpbXBvcnQgeyBhd3NfbGFtYmRhIH0gZnJvbSAnYXdzLWNkay1saWInO1wiKTtcbiAgICBzcmMubGluZSgpO1xuICAgIHNyYy5vcGVuKGBleHBvcnQgY29uc3QgJHtjb25zdHJ1Y3ROYW1lfSA9IGF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQoYCk7XG4gICAgc3JjLmxpbmUoYHBhdGguam9pbihfX2Rpcm5hbWUsICcke2NvbnZlcnRUb1Bvc2l4UGF0aChyZWxhdGl2ZU91dGZpbGUpfScpLGApO1xuICAgIHNyYy5jbG9zZShcIik7XCIpO1xuXG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci52ZXJib3NlKFxuICAgICAgYCR7YmFzZVBhdGh9OiBjb25zdHJ1Y3QgXCIke2NvbnN0cnVjdE5hbWV9XCIgZ2VuZXJhdGVkIHVuZGVyIFwiJHtjb25zdHJ1Y3RGaWxlfVwiYCxcbiAgICApO1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShcbiAgICAgIGAke2Jhc2VQYXRofTogYnVuZGxlIHRhc2sgXCIke2J1bmRsZS5idW5kbGVUYXNrLm5hbWV9XCJgLFxuICAgICk7XG4gICAgaWYgKGJ1bmRsZS53YXRjaFRhc2spIHtcbiAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShcbiAgICAgICAgYCR7YmFzZVBhdGh9OiBidW5kbGUgd2F0Y2ggdGFzayBcIiR7YnVuZGxlLndhdGNoVGFzay5uYW1lfVwiYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIEFXUyBMYW1iZGEgZnVuY3Rpb24gcnVudGltZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYVJ1bnRpbWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFBhY2thZ2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgZXh0ZXJuYWxzIGJ5IGRlZmF1bHQgd2hlbiBidW5kbGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBbJ0Bhd3Mtc2RrLyonXVxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEV4dGVybmFscz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBydW50aW1lIGZvciB0aGUgQVdTIExhbWJkYSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIExhbWJkYVJ1bnRpbWUge1xuICAvKipcbiAgICogTm9kZS5qcyAxOC54XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18xOF9YID0gbmV3IExhbWJkYVJ1bnRpbWUoXG4gICAgXCJub2RlanMxOC54XCIsXG4gICAgXCJub2RlMThcIixcbiAgKTtcblxuICAvKipcbiAgICogTm9kZS5qcyAyMC54XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18yMF9YID0gbmV3IExhbWJkYVJ1bnRpbWUoXG4gICAgXCJub2RlanMyMC54XCIsXG4gICAgXCJub2RlMjBcIixcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZXNidWlsZFBsYXRmb3JtID0gXCJub2RlXCI7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRFeHRlcm5hbHM6IHN0cmluZ1tdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICAgKiBUaGUgTm9kZS5qcyBydW50aW1lIHRvIHVzZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmdW5jdGlvblJ1bnRpbWU6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIFRoZSBlc2J1aWxkIHNldHRpbmcgdG8gdXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlc2J1aWxkVGFyZ2V0OiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25zIGZvciB0aGlzIHJ1bnRpbWUuXG4gICAgICovXG4gICAgb3B0aW9ucz86IExhbWJkYVJ1bnRpbWVPcHRpb25zLFxuICApIHtcbiAgICB0aGlzLmRlZmF1bHRFeHRlcm5hbHMgPSBvcHRpb25zPy5kZWZhdWx0RXh0ZXJuYWxzID8/IFtcIkBhd3Mtc2RrLypcIl07XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -23,7 +23,6 @@
23
23
  "@types/node": "^18",
24
24
  "@typescript-eslint/eslint-plugin": "^6",
25
25
  "@typescript-eslint/parser": "^6",
26
- "aws-cdk-lib": "2.51.0",
27
26
  "constructs": "^10.0.0",
28
27
  "eslint": "^8",
29
28
  "eslint-config-prettier": "^9.0.0",
@@ -37,11 +36,8 @@
37
36
  "ts-node": "^10.9.1",
38
37
  "typescript": "^5.3.2"
39
38
  },
40
- "peerDependencies": {
41
- "aws-cdk-lib": "^2.51.0"
42
- },
43
39
  "dependencies": {
44
- "@mrgrain/cdk-esbuild": "^5.0.5",
40
+ "case": "^1.6.3",
45
41
  "projen": "^0.77.1"
46
42
  },
47
43
  "main": "lib/index.js",
@@ -49,7 +45,7 @@
49
45
  "publishConfig": {
50
46
  "access": "public"
51
47
  },
52
- "version": "0.0.5",
48
+ "version": "0.0.7",
53
49
  "types": "lib/index.d.ts",
54
50
  "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
55
51
  }