@nikovirtala/projen-constructs 0.0.2 → 0.0.4
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/.jsii +4114 -18
- package/API.md +257 -257
- package/README.md +137 -23
- package/lib/components/bundle-lambda-function-code.d.ts +62 -0
- package/lib/components/bundle-lambda-function-code.js +175 -0
- package/lib/components/colima.d.ts +5 -0
- package/lib/components/colima.js +22 -0
- package/lib/components/homebrew.d.ts +12 -0
- package/lib/components/homebrew.js +42 -0
- package/lib/components/index.d.ts +7 -0
- package/lib/components/index.js +24 -0
- package/lib/components/lambda-function-construct-generator.d.ts +30 -0
- package/lib/components/lambda-function-construct-generator.js +195 -0
- package/lib/components/localstack.d.ts +11 -0
- package/lib/components/localstack.js +42 -0
- package/lib/components/typedoc-config.d.ts +78 -0
- package/lib/components/typedoc-config.js +93 -0
- package/lib/components/typedoc.d.ts +18 -0
- package/lib/components/typedoc.js +58 -0
- package/lib/components/vitest-bundled-define-config.d.ts +1 -0
- package/lib/components/vitest-bundled-define-config.js +6 -0
- package/lib/components/vitest.d.ts +87 -0
- package/lib/components/vitest.js +204 -0
- package/lib/config.d.ts +61 -76
- package/lib/config.js +28 -7
- package/lib/index.d.ts +1 -4
- package/lib/index.js +2 -5
- package/lib/projects/awscdk-app.js +38 -0
- package/lib/{awscdk-construct-project.d.ts → projects/awscdk-construct.d.ts} +1 -1
- package/lib/projects/awscdk-construct.js +38 -0
- package/lib/projects/index.d.ts +4 -0
- package/lib/projects/index.js +21 -0
- package/lib/projects/jsii.js +38 -0
- package/lib/projects/typescript.js +39 -0
- package/node_modules/case/LICENSE +22 -0
- package/node_modules/case/README.md +139 -0
- package/node_modules/case/case.d.ts +43 -0
- package/node_modules/case/dist/Case.js +171 -0
- package/node_modules/case/dist/Case.min.js +5 -0
- package/node_modules/case/dist/Case.min.js.map +1 -0
- package/node_modules/case/dist/Case.plus.js +189 -0
- package/node_modules/case/dist/Case.plus.min.js +5 -0
- package/node_modules/case/dist/Case.plus.min.js.map +1 -0
- package/node_modules/case/package.json +58 -0
- package/package.json +10 -2
- package/lib/awscdk-app-project.js +0 -38
- package/lib/awscdk-construct-project.js +0 -38
- package/lib/jsii-project.js +0 -38
- package/lib/typescript-project.js +0 -39
- /package/lib/{awscdk-app-project.d.ts → projects/awscdk-app.d.ts} +0 -0
- /package/lib/{jsii-project.d.ts → projects/jsii.d.ts} +0 -0
- /package/lib/{typescript-project.d.ts → projects/typescript.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -32,23 +32,23 @@ Override any option by passing it to the constructor:
|
|
|
32
32
|
|
|
33
33
|
```typescript
|
|
34
34
|
const project = new JsiiProject({
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
},
|
|
35
|
+
name: "my-project",
|
|
36
|
+
repositoryUrl: "https://github.com/nikovirtala/my-project.git",
|
|
37
|
+
minNodeVersion: "20.0.0",
|
|
38
|
+
author: "Custom Author",
|
|
39
|
+
authorAddress: "custom@example.com",
|
|
40
|
+
tsconfig: {
|
|
41
|
+
compilerOptions: {
|
|
42
|
+
noUnusedLocals: false, // Override individual compiler options
|
|
44
43
|
},
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
},
|
|
45
|
+
biomeOptions: {
|
|
46
|
+
biomeConfig: {
|
|
47
|
+
formatter: {
|
|
48
|
+
lineWidth: 100, // Override individual formatter options
|
|
49
|
+
},
|
|
51
50
|
},
|
|
51
|
+
},
|
|
52
52
|
});
|
|
53
53
|
```
|
|
54
54
|
|
|
@@ -60,8 +60,8 @@ const project = new JsiiProject({
|
|
|
60
60
|
import { AwsCdkConstructLibraryProject } from "@nikovirtala/projen-constructs";
|
|
61
61
|
|
|
62
62
|
const project = new AwsCdkConstructLibraryProject({
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
name: "my-cdk-construct",
|
|
64
|
+
repositoryUrl: "https://github.com/nikovirtala/my-cdk-construct.git",
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
project.synth();
|
|
@@ -73,8 +73,8 @@ project.synth();
|
|
|
73
73
|
import { AwsCdkTypeScriptAppProject } from "@nikovirtala/projen-constructs";
|
|
74
74
|
|
|
75
75
|
const project = new AwsCdkTypeScriptAppProject({
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
name: "my-cdk-app",
|
|
77
|
+
repositoryUrl: "https://github.com/nikovirtala/my-cdk-app.git",
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
project.synth();
|
|
@@ -86,8 +86,8 @@ project.synth();
|
|
|
86
86
|
import { JsiiProject } from "@nikovirtala/projen-constructs";
|
|
87
87
|
|
|
88
88
|
const project = new JsiiProject({
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
name: "my-jsii-project",
|
|
90
|
+
repositoryUrl: "https://github.com/nikovirtala/my-jsii-project.git",
|
|
91
91
|
});
|
|
92
92
|
|
|
93
93
|
project.synth();
|
|
@@ -99,9 +99,123 @@ project.synth();
|
|
|
99
99
|
import { TypeScriptProject } from "@nikovirtala/projen-constructs";
|
|
100
100
|
|
|
101
101
|
const project = new TypeScriptProject({
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
name: "my-typescript-project",
|
|
103
|
+
repositoryUrl: "https://github.com/nikovirtala/my-typescript-project.git",
|
|
104
104
|
});
|
|
105
105
|
|
|
106
106
|
project.synth();
|
|
107
107
|
```
|
|
108
|
+
|
|
109
|
+
## Components
|
|
110
|
+
|
|
111
|
+
The package includes reusable components for common development tasks:
|
|
112
|
+
|
|
113
|
+
### Vitest
|
|
114
|
+
|
|
115
|
+
[Vitest](https://vitest.dev) testing framework component.
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
import { Vitest } from "@nikovirtala/projen-constructs";
|
|
119
|
+
|
|
120
|
+
new Vitest(project, {
|
|
121
|
+
vitestVersion: "^4",
|
|
122
|
+
config: {
|
|
123
|
+
coverageProvider: CoverageProvider.V8,
|
|
124
|
+
coverageReporters: [CoverageReporter.TEXT, CoverageReporter.LCOV],
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### TypeDoc
|
|
130
|
+
|
|
131
|
+
TypeDoc documentation generation component.
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
import { TypeDoc, EntryPointStrategy } from "@nikovirtala/projen-constructs";
|
|
135
|
+
|
|
136
|
+
new TypeDoc(project, {
|
|
137
|
+
version: "^0.28",
|
|
138
|
+
typeDocConfig: {
|
|
139
|
+
entryPointStrategy: EntryPointStrategy.EXPAND,
|
|
140
|
+
out: "docs/api",
|
|
141
|
+
exclude: ["**/*.test.ts"],
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Homebrew
|
|
147
|
+
|
|
148
|
+
Homebrew package management component.
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
import { Homebrew } from "@nikovirtala/projen-constructs";
|
|
152
|
+
|
|
153
|
+
const homebrew = new Homebrew(project, {
|
|
154
|
+
packages: ["jq", "yq"],
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
homebrew.addPackage("gh");
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Colima
|
|
161
|
+
|
|
162
|
+
Colima Docker runtime component.
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
import { Colima } from "@nikovirtala/projen-constructs";
|
|
166
|
+
|
|
167
|
+
new Colima(project);
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### LocalStack
|
|
171
|
+
|
|
172
|
+
LocalStack AWS emulation component.
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
import { LocalStack } from "@nikovirtala/projen-constructs";
|
|
176
|
+
|
|
177
|
+
new LocalStack(project, {
|
|
178
|
+
services: ["s3", "lambda", "dynamodb"],
|
|
179
|
+
port: 4566,
|
|
180
|
+
debug: true,
|
|
181
|
+
});
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### LambdaFunctionConstructGenerator
|
|
185
|
+
|
|
186
|
+
Generates AWS CDK Lambda Function constructs and bundles their code.
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
import { LambdaFunctionConstructGenerator } from "@nikovirtala/projen-constructs";
|
|
190
|
+
|
|
191
|
+
new LambdaFunctionConstructGenerator(project, {
|
|
192
|
+
sourceDir: "src/handlers",
|
|
193
|
+
outputDir: "src/constructs/lambda",
|
|
194
|
+
filePattern: "*.lambda.ts",
|
|
195
|
+
esbuildOptions: {
|
|
196
|
+
minify: true,
|
|
197
|
+
sourcemap: true,
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Bundler
|
|
203
|
+
|
|
204
|
+
Low-level bundling utilities for Lambda functions.
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
import {
|
|
208
|
+
Bundler,
|
|
209
|
+
LambdaFunctionCodeBundle,
|
|
210
|
+
} from "@nikovirtala/projen-constructs";
|
|
211
|
+
|
|
212
|
+
const bundler = new Bundler(project, {
|
|
213
|
+
assetsDir: "assets",
|
|
214
|
+
esbuildVersion: "^0.25",
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
new LambdaFunctionCodeBundle(project, {
|
|
218
|
+
entrypoint: "src/my-function.lambda.ts",
|
|
219
|
+
extension: ".lambda.ts",
|
|
220
|
+
});
|
|
221
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Component, type Project, type Task } from "projen";
|
|
2
|
+
export declare function renderBundleName(entrypoint: string): string;
|
|
3
|
+
export declare function convertToPosixPath(p: string): string;
|
|
4
|
+
export interface BundlerOptions {
|
|
5
|
+
readonly esbuildVersion?: string;
|
|
6
|
+
readonly assetsDir?: string;
|
|
7
|
+
readonly addToPreCompile?: boolean;
|
|
8
|
+
readonly loaders?: {
|
|
9
|
+
[key: string]: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare class Bundler extends Component {
|
|
13
|
+
static of(project: Project): Bundler | undefined;
|
|
14
|
+
readonly esbuildVersion: string | undefined;
|
|
15
|
+
readonly bundledir: string;
|
|
16
|
+
private _task;
|
|
17
|
+
private readonly addToPreCompile;
|
|
18
|
+
private readonly loaders?;
|
|
19
|
+
constructor(project: Project, options?: BundlerOptions);
|
|
20
|
+
get bundleTask(): Task;
|
|
21
|
+
addBundle(entrypoint: string, options: BundlingOptions): Bundle;
|
|
22
|
+
private addBundlingSupport;
|
|
23
|
+
}
|
|
24
|
+
export interface Bundle {
|
|
25
|
+
readonly bundleTask: Task;
|
|
26
|
+
readonly outfile: string;
|
|
27
|
+
readonly outdir: string;
|
|
28
|
+
}
|
|
29
|
+
export interface BundlingOptions {
|
|
30
|
+
readonly externals?: string[];
|
|
31
|
+
readonly sourcemap?: boolean;
|
|
32
|
+
readonly target?: string;
|
|
33
|
+
readonly platform?: string;
|
|
34
|
+
readonly outfile?: string;
|
|
35
|
+
readonly tsconfigPath?: string;
|
|
36
|
+
readonly loaders?: {
|
|
37
|
+
[key: string]: string;
|
|
38
|
+
};
|
|
39
|
+
readonly format?: string;
|
|
40
|
+
readonly minify?: boolean;
|
|
41
|
+
readonly sourcesContent?: boolean;
|
|
42
|
+
readonly mainFields?: string;
|
|
43
|
+
readonly banner?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface LambdaFunctionCodeBundleOptions {
|
|
46
|
+
readonly entrypoint: string;
|
|
47
|
+
readonly extension: string;
|
|
48
|
+
readonly constructFile?: string;
|
|
49
|
+
readonly constructName?: string;
|
|
50
|
+
readonly bundlingOptions?: BundlingOptions;
|
|
51
|
+
}
|
|
52
|
+
export declare class LambdaFunctionCodeBundle extends Component {
|
|
53
|
+
constructor(project: Project, options: LambdaFunctionCodeBundleOptions);
|
|
54
|
+
}
|
|
55
|
+
export interface LambdaFunctionCodeBundlerOptions {
|
|
56
|
+
readonly extension: string;
|
|
57
|
+
readonly srcdir: string;
|
|
58
|
+
readonly bundleOptions?: LambdaFunctionCodeBundleOptions;
|
|
59
|
+
}
|
|
60
|
+
export declare class LambdaFunctionCodeBundler extends Component {
|
|
61
|
+
constructor(project: Project, options: LambdaFunctionCodeBundlerOptions);
|
|
62
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LambdaFunctionCodeBundler = exports.LambdaFunctionCodeBundle = exports.Bundler = void 0;
|
|
4
|
+
exports.renderBundleName = renderBundleName;
|
|
5
|
+
exports.convertToPosixPath = convertToPosixPath;
|
|
6
|
+
const path = require("node:path");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const case_1 = require("case");
|
|
9
|
+
const projen_1 = require("projen");
|
|
10
|
+
function renderBundleName(entrypoint) {
|
|
11
|
+
const parts = (0, node_path_1.join)(entrypoint).split(node_path_1.sep);
|
|
12
|
+
if (parts[0] === "src") {
|
|
13
|
+
parts.shift();
|
|
14
|
+
}
|
|
15
|
+
const p = parts.join(node_path_1.sep);
|
|
16
|
+
const dir = (0, node_path_1.dirname)(p);
|
|
17
|
+
const base = (0, node_path_1.basename)(p, (0, node_path_1.extname)(p));
|
|
18
|
+
return (0, node_path_1.join)(dir, base);
|
|
19
|
+
}
|
|
20
|
+
function convertToPosixPath(p) {
|
|
21
|
+
return p.split(node_path_1.sep).join(node_path_1.posix.sep);
|
|
22
|
+
}
|
|
23
|
+
class Bundler extends projen_1.Component {
|
|
24
|
+
static of(project) {
|
|
25
|
+
const isBundler = (o) => o instanceof Bundler;
|
|
26
|
+
return project.components.find(isBundler);
|
|
27
|
+
}
|
|
28
|
+
constructor(project, options = {}) {
|
|
29
|
+
super(project);
|
|
30
|
+
this.esbuildVersion = options.esbuildVersion;
|
|
31
|
+
this.bundledir = options.assetsDir ?? "assets";
|
|
32
|
+
this.addToPreCompile = options.addToPreCompile ?? true;
|
|
33
|
+
this.loaders = options.loaders;
|
|
34
|
+
}
|
|
35
|
+
get bundleTask() {
|
|
36
|
+
if (!this._task) {
|
|
37
|
+
this.addBundlingSupport();
|
|
38
|
+
this._task = this.project.tasks.addTask("bundle", {
|
|
39
|
+
description: "Prepare assets",
|
|
40
|
+
});
|
|
41
|
+
if (this.addToPreCompile) {
|
|
42
|
+
this.project.preCompileTask.spawn(this._task);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return this._task;
|
|
46
|
+
}
|
|
47
|
+
addBundle(entrypoint, options) {
|
|
48
|
+
const name = renderBundleName(entrypoint);
|
|
49
|
+
const outdir = path.posix.join(this.bundledir, name);
|
|
50
|
+
const outfile = path.posix.join(outdir, options.outfile ?? "index.mjs");
|
|
51
|
+
const target = options.target ?? "esnext";
|
|
52
|
+
const platform = options.platform ?? "node";
|
|
53
|
+
const format = options.format ?? "esm";
|
|
54
|
+
const sourcemap = options.sourcemap ?? true;
|
|
55
|
+
const sourcesContent = options.sourcesContent ?? false;
|
|
56
|
+
const minify = options.minify ?? true;
|
|
57
|
+
const mainFields = options.mainFields ?? "module,main";
|
|
58
|
+
const banner = options.banner ??
|
|
59
|
+
":js=import { createRequire as topLevelCreateRequire } from 'module';const require = topLevelCreateRequire(import.meta.url)";
|
|
60
|
+
const args = [
|
|
61
|
+
"esbuild",
|
|
62
|
+
"--bundle",
|
|
63
|
+
entrypoint,
|
|
64
|
+
`--target="${target}"`,
|
|
65
|
+
`--platform="${platform}"`,
|
|
66
|
+
`--outfile="${outfile}"`,
|
|
67
|
+
];
|
|
68
|
+
const tsconfig = options.tsconfigPath ?? false;
|
|
69
|
+
if (tsconfig) {
|
|
70
|
+
args.push(`--tsconfig="${tsconfig}"`);
|
|
71
|
+
}
|
|
72
|
+
for (const x of options.externals ?? []) {
|
|
73
|
+
args.push(`--external:${x}`);
|
|
74
|
+
}
|
|
75
|
+
if (sourcemap) {
|
|
76
|
+
args.push("--sourcemap");
|
|
77
|
+
}
|
|
78
|
+
if (sourcesContent) {
|
|
79
|
+
args.push(`--sources-content=${sourcesContent}`);
|
|
80
|
+
}
|
|
81
|
+
if (minify) {
|
|
82
|
+
args.push("--minify");
|
|
83
|
+
}
|
|
84
|
+
if (format) {
|
|
85
|
+
args.push(`--format=${format}`);
|
|
86
|
+
}
|
|
87
|
+
if (mainFields) {
|
|
88
|
+
args.push(`--main-fields=${mainFields}`);
|
|
89
|
+
}
|
|
90
|
+
if (banner) {
|
|
91
|
+
args.push(`--banner${banner}`);
|
|
92
|
+
}
|
|
93
|
+
const loaders = (options.loaders ?? false) ? options.loaders : (this.loaders ?? false);
|
|
94
|
+
if (loaders) {
|
|
95
|
+
for (const [extension, loader] of Object.entries(loaders)) {
|
|
96
|
+
args.push(`--loader:.${extension}=${loader}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const bundleTask = this.project.addTask(`bundle:${name}`, {
|
|
100
|
+
description: `Create a JavaScript bundle from ${entrypoint}`,
|
|
101
|
+
exec: args.join(" "),
|
|
102
|
+
});
|
|
103
|
+
this.bundleTask.spawn(bundleTask);
|
|
104
|
+
return {
|
|
105
|
+
bundleTask: bundleTask,
|
|
106
|
+
outdir: outdir,
|
|
107
|
+
outfile: outfile,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
addBundlingSupport() {
|
|
111
|
+
const ignoreEntry = `/${this.bundledir}/`;
|
|
112
|
+
this.project.addGitIgnore(ignoreEntry);
|
|
113
|
+
this.project.addPackageIgnore(`!${ignoreEntry}`);
|
|
114
|
+
const dep = this.esbuildVersion ? `esbuild@${this.esbuildVersion}` : "esbuild";
|
|
115
|
+
this.project.deps.addDependency(dep, projen_1.DependencyType.BUILD);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.Bundler = Bundler;
|
|
119
|
+
class LambdaFunctionCodeBundle extends projen_1.Component {
|
|
120
|
+
constructor(project, options) {
|
|
121
|
+
super(project);
|
|
122
|
+
const bundler = Bundler.of(project);
|
|
123
|
+
if (!bundler) {
|
|
124
|
+
throw new Error("No bundler found. Please add a Bundler component to your project.");
|
|
125
|
+
}
|
|
126
|
+
const eslint = projen_1.javascript.Eslint.of(project);
|
|
127
|
+
eslint?.allowDevDeps(options.entrypoint);
|
|
128
|
+
const entrypoint = options.entrypoint;
|
|
129
|
+
const extension = options.extension ?? ".lambda.ts";
|
|
130
|
+
if (!entrypoint.endsWith(extension)) {
|
|
131
|
+
throw new Error(`${entrypoint} must have a ${extension} extension`);
|
|
132
|
+
}
|
|
133
|
+
const basePath = path.posix.join(path.dirname(entrypoint), path.basename(entrypoint, extension));
|
|
134
|
+
const constructFile = options.constructFile ?? `${basePath}-code.ts`;
|
|
135
|
+
if (path.extname(constructFile) !== ".ts") {
|
|
136
|
+
throw new Error(`Construct file name "${constructFile}" must have a .ts extension`);
|
|
137
|
+
}
|
|
138
|
+
const constructName = options.constructName ?? `${(0, case_1.pascal)(path.basename(basePath))}FunctionCode`;
|
|
139
|
+
const bundle = bundler.addBundle(entrypoint, {
|
|
140
|
+
...options.bundlingOptions,
|
|
141
|
+
tsconfigPath: project?.tsconfigDev?.fileName,
|
|
142
|
+
});
|
|
143
|
+
const outfileAbs = path.join(project.outdir, bundle.outfile);
|
|
144
|
+
const constructAbs = path.join(project.outdir, constructFile);
|
|
145
|
+
const relativeOutfile = path.relative(path.dirname(constructAbs), path.dirname(outfileAbs));
|
|
146
|
+
const src = new projen_1.SourceCode(project, constructFile);
|
|
147
|
+
if (src.marker) {
|
|
148
|
+
src.line(`// ${src.marker}`);
|
|
149
|
+
}
|
|
150
|
+
src.line("import * as path from 'path';");
|
|
151
|
+
src.line("import { aws_lambda } from 'aws-cdk-lib';");
|
|
152
|
+
src.line();
|
|
153
|
+
src.open(`export const ${constructName} = aws_lambda.Code.fromAsset(`);
|
|
154
|
+
src.line(`path.join(__dirname, '${convertToPosixPath(relativeOutfile)}'),`);
|
|
155
|
+
src.close(");");
|
|
156
|
+
this.project.logger.verbose(`${basePath}: construct "${constructName}" generated under "${constructFile}"`);
|
|
157
|
+
this.project.logger.verbose(`${basePath}: bundle task "${bundle.bundleTask.name}"`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.LambdaFunctionCodeBundle = LambdaFunctionCodeBundle;
|
|
161
|
+
class LambdaFunctionCodeBundler extends projen_1.Component {
|
|
162
|
+
constructor(project, options) {
|
|
163
|
+
super(project);
|
|
164
|
+
const entrypoints = [];
|
|
165
|
+
for (const entrypoint of entrypoints) {
|
|
166
|
+
new LambdaFunctionCodeBundle(this.project, {
|
|
167
|
+
entrypoint: entrypoint,
|
|
168
|
+
extension: options.extension,
|
|
169
|
+
...options.bundleOptions,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.LambdaFunctionCodeBundler = LambdaFunctionCodeBundler;
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLWxhbWJkYS1mdW5jdGlvbi1jb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvYnVuZGxlLWxhbWJkYS1mdW5jdGlvbi1jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLDRDQVNDO0FBRUQsZ0RBRUM7QUFsQkQsa0NBQWtDO0FBQ2xDLHlDQUF5RTtBQUN6RSwrQkFBOEI7QUFDOUIsbUNBQXFIO0FBRXJILFNBQWdCLGdCQUFnQixDQUFDLFVBQWtCO0lBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQUksRUFBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBRyxDQUFDLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDckIsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQUcsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUEsbUJBQU8sRUFBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixNQUFNLElBQUksR0FBRyxJQUFBLG9CQUFRLEVBQUMsQ0FBQyxFQUFFLElBQUEsbUJBQU8sRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sSUFBQSxnQkFBSSxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsQ0FBUztJQUN4QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQVNELE1BQWEsT0FBUSxTQUFRLGtCQUFTO0lBQzNCLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDN0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVB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QUM7Q0FDSjtBQW5ERCw0REFtREM7QUFRRCxNQUFhLHlCQUEwQixTQUFRLGtCQUFTO0lBQ3BELFlBQVksT0FBZ0IsRUFBRSxPQUF5QztRQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUM7UUFFakMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNuQyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3ZDLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7Z0JBQzVCLEdBQUcsT0FBTyxDQUFDLGFBQWE7YUFDM0IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQWRELDhEQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgZXh0bmFtZSwgam9pbiwgcG9zaXgsIHNlcCB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHBhc2NhbCB9IGZyb20gXCJjYXNlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIERlcGVuZGVuY3lUeXBlLCBqYXZhc2NyaXB0LCB0eXBlIFByb2plY3QsIFNvdXJjZUNvZGUsIHR5cGUgVGFzaywgdHlwZSB0eXBlc2NyaXB0IH0gZnJvbSBcInByb2plblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQnVuZGxlTmFtZShlbnRyeXBvaW50OiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJ0cyA9IGpvaW4oZW50cnlwb2ludCkuc3BsaXQoc2VwKTtcbiAgICBpZiAocGFydHNbMF0gPT09IFwic3JjXCIpIHtcbiAgICAgICAgcGFydHMuc2hpZnQoKTtcbiAgICB9XG4gICAgY29uc3QgcCA9IHBhcnRzLmpvaW4oc2VwKTtcbiAgICBjb25zdCBkaXIgPSBkaXJuYW1lKHApO1xuICAgIGNvbnN0IGJhc2UgPSBiYXNlbmFtZShwLCBleHRuYW1lKHApKTtcbiAgICByZXR1cm4gam9pbihkaXIsIGJhc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvUG9zaXhQYXRoKHA6IHN0cmluZykge1xuICAgIHJldHVybiBwLnNwbGl0KHNlcCkuam9pbihwb3NpeC5zZXApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZXJPcHRpb25zIHtcbiAgICByZWFkb25seSBlc2J1aWxkVmVyc2lvbj86IHN0cmluZztcbiAgICByZWFkb25seSBhc3NldHNEaXI/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYWRkVG9QcmVDb21waWxlPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBsb2FkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEJ1bmRsZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogUHJvamVjdCk6IEJ1bmRsZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBpc0J1bmRsZXIgPSAobzogQ29tcG9uZW50KTogbyBpcyBCdW5kbGVyID0+IG8gaW5zdGFuY2VvZiBCdW5kbGVyO1xuICAgICAgICByZXR1cm4gcHJvamVjdC5jb21wb25lbnRzLmZpbmQoaXNCdW5kbGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZXNidWlsZFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnVuZGxlZGlyOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF90YXNrOiBUYXNrIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWRkVG9QcmVDb21waWxlOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBCdW5kbGVyT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKHByb2plY3QpO1xuICAgICAgICB0aGlzLmVzYnVpbGRWZXJzaW9uID0gb3B0aW9ucy5lc2J1aWxkVmVyc2lvbjtcbiAgICAgICAgdGhpcy5idW5kbGVkaXIgPSBvcHRpb25zLmFzc2V0c0RpciA/PyBcImFzc2V0c1wiO1xuICAgICAgICB0aGlzLmFkZFRvUHJlQ29tcGlsZSA9IG9wdGlvbnMuYWRkVG9QcmVDb21waWxlID8/IHRydWU7XG4gICAgICAgIHRoaXMubG9hZGVycyA9IG9wdGlvbnMubG9hZGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJ1bmRsZVRhc2soKTogVGFzayB7XG4gICAgICAgIGlmICghdGhpcy5fdGFzaykge1xuICAgICAgICAgICAgdGhpcy5hZGRCdW5kbGluZ1N1cHBvcnQoKTtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2sgPSB0aGlzLnByb2plY3QudGFza3MuYWRkVGFzayhcImJ1bmRsZVwiLCB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUHJlcGFyZSBhc3NldHNcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMuYWRkVG9QcmVDb21waWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0LnByZUNvbXBpbGVUYXNrLnNwYXduKHRoaXMuX3Rhc2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl90YXNrO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRCdW5kbGUoZW50cnlwb2ludDogc3RyaW5nLCBvcHRpb25zOiBCdW5kbGluZ09wdGlvbnMpOiBCdW5kbGUge1xuICAgICAgICBjb25zdCBuYW1lID0gcmVuZGVyQnVuZGxlTmFtZShlbnRyeXBvaW50KTtcbiAgICAgICAgY29uc3Qgb3V0ZGlyID0gcGF0aC5wb3NpeC5qb2luKHRoaXMuYnVuZGxlZGlyLCBuYW1lKTtcbiAgICAgICAgY29uc3Qgb3V0ZmlsZSA9IHBhdGgucG9zaXguam9pbihvdXRkaXIsIG9wdGlvbnMub3V0ZmlsZSA/PyBcImluZGV4Lm1qc1wiKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gb3B0aW9ucy50YXJnZXQgPz8gXCJlc25leHRcIjtcbiAgICAgICAgY29uc3QgcGxhdGZvcm0gPSBvcHRpb25zLnBsYXRmb3JtID8/IFwibm9kZVwiO1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdCA/PyBcImVzbVwiO1xuICAgICAgICBjb25zdCBzb3VyY2VtYXAgPSBvcHRpb25zLnNvdXJjZW1hcCA/PyB0cnVlO1xuICAgICAgICBjb25zdCBzb3VyY2VzQ29udGVudCA9IG9wdGlvbnMuc291cmNlc0NvbnRlbnQgPz8gZmFsc2U7XG4gICAgICAgIGNvbnN0IG1pbmlmeSA9IG9wdGlvbnMubWluaWZ5ID8/IHRydWU7XG4gICAgICAgIGNvbnN0IG1haW5GaWVsZHMgPSBvcHRpb25zLm1haW5GaWVsZHMgPz8gXCJtb2R1bGUsbWFpblwiO1xuICAgICAgICBjb25zdCBiYW5uZXIgPVxuICAgICAgICAgICAgb3B0aW9ucy5iYW5uZXIgPz9cbiAgICAgICAgICAgIFwiOmpzPWltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgYXMgdG9wTGV2ZWxDcmVhdGVSZXF1aXJlIH0gZnJvbSAnbW9kdWxlJztjb25zdCByZXF1aXJlID0gdG9wTGV2ZWxDcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybClcIjtcblxuICAgICAgICBjb25zdCBhcmdzID0gW1xuICAgICAgICAgICAgXCJlc2J1aWxkXCIsXG4gICAgICAgICAgICBcIi0tYnVuZGxlXCIsXG4gICAgICAgICAgICBlbnRyeXBvaW50LFxuICAgICAgICAgICAgYC0tdGFyZ2V0PVwiJHt0YXJnZXR9XCJgLFxuICAgICAgICAgICAgYC0tcGxhdGZvcm09XCIke3BsYXRmb3JtfVwiYCxcbiAgICAgICAgICAgIGAtLW91dGZpbGU9XCIke291dGZpbGV9XCJgLFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHRzY29uZmlnID0gb3B0aW9ucy50c2NvbmZpZ1BhdGggPz8gZmFsc2U7XG4gICAgICAgIGlmICh0c2NvbmZpZykge1xuICAgICAgICAgICAgYXJncy5wdXNoKGAtLXRzY29uZmlnPVwiJHt0c2NvbmZpZ31cImApO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB4IG9mIG9wdGlvbnMuZXh0ZXJuYWxzID8/IFtdKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goYC0tZXh0ZXJuYWw6JHt4fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNvdXJjZW1hcCkge1xuICAgICAgICAgICAgYXJncy5wdXNoKFwiLS1zb3VyY2VtYXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc291cmNlc0NvbnRlbnQpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChgLS1zb3VyY2VzLWNvbnRlbnQ9JHtzb3VyY2VzQ29udGVudH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtaW5pZnkpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChcIi0tbWluaWZ5XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgYXJncy5wdXNoKGAtLWZvcm1hdD0ke2Zvcm1hdH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYWluRmllbGRzKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goYC0tbWFpbi1maWVsZHM9JHttYWluRmllbGRzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJhbm5lcikge1xuICAgICAgICAgICAgYXJncy5wdXNoKGAtLWJhbm5lciR7YmFubmVyfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9hZGVycyA9IChvcHRpb25zLmxvYWRlcnMgPz8gZmFsc2UpID8gb3B0aW9ucy5sb2FkZXJzIDogKHRoaXMubG9hZGVycyA/PyBmYWxzZSk7XG4gICAgICAgIGlmIChsb2FkZXJzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtleHRlbnNpb24sIGxvYWRlcl0gb2YgT2JqZWN0LmVudHJpZXMobG9hZGVycykpIHtcbiAgICAgICAgICAgICAgICBhcmdzLnB1c2goYC0tbG9hZGVyOi4ke2V4dGVuc2lvbn09JHtsb2FkZXJ9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidW5kbGVUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soYGJ1bmRsZToke25hbWV9YCwge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBDcmVhdGUgYSBKYXZhU2NyaXB0IGJ1bmRsZSBmcm9tICR7ZW50cnlwb2ludH1gLFxuICAgICAgICAgICAgZXhlYzogYXJncy5qb2luKFwiIFwiKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5idW5kbGVUYXNrLnNwYXduKGJ1bmRsZVRhc2spO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidW5kbGVUYXNrOiBidW5kbGVUYXNrLFxuICAgICAgICAgICAgb3V0ZGlyOiBvdXRkaXIsXG4gICAgICAgICAgICBvdXRmaWxlOiBvdXRmaWxlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQnVuZGxpbmdTdXBwb3J0KCkge1xuICAgICAgICBjb25zdCBpZ25vcmVFbnRyeSA9IGAvJHt0aGlzLmJ1bmRsZWRpcn0vYDtcbiAgICAgICAgdGhpcy5wcm9qZWN0LmFkZEdpdElnbm9yZShpZ25vcmVFbnRyeSk7XG4gICAgICAgIHRoaXMucHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGAhJHtpZ25vcmVFbnRyeX1gKTtcbiAgICAgICAgY29uc3QgZGVwID0gdGhpcy5lc2J1aWxkVmVyc2lvbiA/IGBlc2J1aWxkQCR7dGhpcy5lc2J1aWxkVmVyc2lvbn1gIDogXCJlc2J1aWxkXCI7XG4gICAgICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koZGVwLCBEZXBlbmRlbmN5VHlwZS5CVUlMRCk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZSB7XG4gICAgcmVhZG9ubHkgYnVuZGxlVGFzazogVGFzaztcbiAgICByZWFkb25seSBvdXRmaWxlOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgb3V0ZGlyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxpbmdPcHRpb25zIHtcbiAgICByZWFkb25seSBleHRlcm5hbHM/OiBzdHJpbmdbXTtcbiAgICByZWFkb25seSBzb3VyY2VtYXA/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcbiAgICByZWFkb25seSBwbGF0Zm9ybT86IHN0cmluZztcbiAgICByZWFkb25seSBvdXRmaWxlPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHRzY29uZmlnUGF0aD86IHN0cmluZztcbiAgICByZWFkb25seSBsb2FkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgbWluaWZ5PzogYm9vbGVhbjtcbiAgICByZWFkb25seSBzb3VyY2VzQ29udGVudD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgbWFpbkZpZWxkcz86IHN0cmluZztcbiAgICByZWFkb25seSBiYW5uZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlT3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGV4dGVuc2lvbjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGNvbnN0cnVjdEZpbGU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29uc3RydWN0TmFtZT86IHN0cmluZztcbiAgICByZWFkb25seSBidW5kbGluZ09wdGlvbnM/OiBCdW5kbGluZ09wdGlvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAgICAgY29uc3QgYnVuZGxlciA9IEJ1bmRsZXIub2YocHJvamVjdCk7XG4gICAgICAgIGlmICghYnVuZGxlcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gYnVuZGxlciBmb3VuZC4gUGxlYXNlIGFkZCBhIEJ1bmRsZXIgY29tcG9uZW50IHRvIHlvdXIgcHJvamVjdC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlc2xpbnQgPSBqYXZhc2NyaXB0LkVzbGludC5vZihwcm9qZWN0KTtcbiAgICAgICAgZXNsaW50Py5hbGxvd0RldkRlcHMob3B0aW9ucy5lbnRyeXBvaW50KTtcblxuICAgICAgICBjb25zdCBlbnRyeXBvaW50ID0gb3B0aW9ucy5lbnRyeXBvaW50O1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBvcHRpb25zLmV4dGVuc2lvbiA/PyBcIi5sYW1iZGEudHNcIjtcblxuICAgICAgICBpZiAoIWVudHJ5cG9pbnQuZW5kc1dpdGgoZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2VudHJ5cG9pbnR9IG11c3QgaGF2ZSBhICR7ZXh0ZW5zaW9ufSBleHRlbnNpb25gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2VQYXRoID0gcGF0aC5wb3NpeC5qb2luKHBhdGguZGlybmFtZShlbnRyeXBvaW50KSwgcGF0aC5iYXNlbmFtZShlbnRyeXBvaW50LCBleHRlbnNpb24pKTtcbiAgICAgICAgY29uc3QgY29uc3RydWN0RmlsZSA9IG9wdGlvbnMuY29uc3RydWN0RmlsZSA/PyBgJHtiYXNlUGF0aH0tY29kZS50c2A7XG5cbiAgICAgICAgaWYgKHBhdGguZXh0bmFtZShjb25zdHJ1Y3RGaWxlKSAhPT0gXCIudHNcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25zdHJ1Y3QgZmlsZSBuYW1lIFwiJHtjb25zdHJ1Y3RGaWxlfVwiIG11c3QgaGF2ZSBhIC50cyBleHRlbnNpb25gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdE5hbWUgPSBvcHRpb25zLmNvbnN0cnVjdE5hbWUgPz8gYCR7cGFzY2FsKHBhdGguYmFzZW5hbWUoYmFzZVBhdGgpKX1GdW5jdGlvbkNvZGVgO1xuXG4gICAgICAgIGNvbnN0IGJ1bmRsZSA9IGJ1bmRsZXIuYWRkQnVuZGxlKGVudHJ5cG9pbnQsIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMuYnVuZGxpbmdPcHRpb25zLFxuICAgICAgICAgICAgdHNjb25maWdQYXRoOiAocHJvamVjdCBhcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0KT8udHNjb25maWdEZXY/LmZpbGVOYW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBvdXRmaWxlQWJzID0gcGF0aC5qb2luKHByb2plY3Qub3V0ZGlyLCBidW5kbGUub3V0ZmlsZSk7XG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdEFicyA9IHBhdGguam9pbihwcm9qZWN0Lm91dGRpciwgY29uc3RydWN0RmlsZSk7XG4gICAgICAgIGNvbnN0IHJlbGF0aXZlT3V0ZmlsZSA9IHBhdGgucmVsYXRpdmUocGF0aC5kaXJuYW1lKGNvbnN0cnVjdEFicyksIHBhdGguZGlybmFtZShvdXRmaWxlQWJzKSk7XG5cbiAgICAgICAgY29uc3Qgc3JjID0gbmV3IFNvdXJjZUNvZGUocHJvamVjdCwgY29uc3RydWN0RmlsZSk7XG4gICAgICAgIGlmIChzcmMubWFya2VyKSB7XG4gICAgICAgICAgICBzcmMubGluZShgLy8gJHtzcmMubWFya2VyfWApO1xuICAgICAgICB9XG4gICAgICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcIik7XG4gICAgICAgIHNyYy5saW5lKFwiaW1wb3J0IHsgYXdzX2xhbWJkYSB9IGZyb20gJ2F3cy1jZGstbGliJztcIik7XG4gICAgICAgIHNyYy5saW5lKCk7XG4gICAgICAgIHNyYy5vcGVuKGBleHBvcnQgY29uc3QgJHtjb25zdHJ1Y3ROYW1lfSA9IGF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQoYCk7XG4gICAgICAgIHNyYy5saW5lKGBwYXRoLmpvaW4oX19kaXJuYW1lLCAnJHtjb252ZXJ0VG9Qb3NpeFBhdGgocmVsYXRpdmVPdXRmaWxlKX0nKSxgKTtcbiAgICAgICAgc3JjLmNsb3NlKFwiKTtcIik7XG5cbiAgICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci52ZXJib3NlKGAke2Jhc2VQYXRofTogY29uc3RydWN0IFwiJHtjb25zdHJ1Y3ROYW1lfVwiIGdlbmVyYXRlZCB1bmRlciBcIiR7Y29uc3RydWN0RmlsZX1cImApO1xuICAgICAgICB0aGlzLnByb2plY3QubG9nZ2VyLnZlcmJvc2UoYCR7YmFzZVBhdGh9OiBidW5kbGUgdGFzayBcIiR7YnVuZGxlLmJ1bmRsZVRhc2submFtZX1cImApO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVyT3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgZXh0ZW5zaW9uOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYnVuZGxlT3B0aW9ucz86IExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZU9wdGlvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVyT3B0aW9ucykge1xuICAgICAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgICAgICBjb25zdCBlbnRyeXBvaW50czogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5cG9pbnQgb2YgZW50cnlwb2ludHMpIHtcbiAgICAgICAgICAgIG5ldyBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGUodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgICAgICAgICAgZW50cnlwb2ludDogZW50cnlwb2ludCxcbiAgICAgICAgICAgICAgICBleHRlbnNpb246IG9wdGlvbnMuZXh0ZW5zaW9uLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMuYnVuZGxlT3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Colima = void 0;
|
|
4
|
+
const component_1 = require("projen/lib/component");
|
|
5
|
+
const homebrew_1 = require("./homebrew");
|
|
6
|
+
class Colima extends component_1.Component {
|
|
7
|
+
constructor(scope) {
|
|
8
|
+
super(scope);
|
|
9
|
+
const project = this.project;
|
|
10
|
+
let homebrew = homebrew_1.Homebrew.of(project);
|
|
11
|
+
if (!homebrew) {
|
|
12
|
+
homebrew = new homebrew_1.Homebrew(project);
|
|
13
|
+
}
|
|
14
|
+
homebrew.addPackage("colima");
|
|
15
|
+
homebrew.addPackage("docker");
|
|
16
|
+
project.addTask("colima", {
|
|
17
|
+
exec: "colima status >/dev/null 2>&1 || colima start",
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.Colima = Colima;
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29saW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvY29saW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG9EQUFpRDtBQUNqRCx5Q0FBc0M7QUFFdEMsTUFBYSxNQUFPLFNBQVEscUJBQVM7SUFDakMsWUFBWSxLQUFpQjtRQUN6QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBa0IsQ0FBQztRQUV4QyxJQUFJLFFBQVEsR0FBRyxtQkFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWixRQUFRLEdBQUcsSUFBSSxtQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDdEIsSUFBSSxFQUFFLCtDQUErQztTQUN4RCxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFsQkQsd0JBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJwcm9qZW4vbGliL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgSG9tZWJyZXcgfSBmcm9tIFwiLi9ob21lYnJld1wiO1xuXG5leHBvcnQgY2xhc3MgQ29saW1hIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihzY29wZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBzdXBlcihzY29wZSk7XG5cbiAgICAgICAgY29uc3QgcHJvamVjdCA9IHRoaXMucHJvamVjdCBhcyBQcm9qZWN0O1xuXG4gICAgICAgIGxldCBob21lYnJldyA9IEhvbWVicmV3Lm9mKHByb2plY3QpO1xuICAgICAgICBpZiAoIWhvbWVicmV3KSB7XG4gICAgICAgICAgICBob21lYnJldyA9IG5ldyBIb21lYnJldyhwcm9qZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGhvbWVicmV3LmFkZFBhY2thZ2UoXCJjb2xpbWFcIik7XG4gICAgICAgIGhvbWVicmV3LmFkZFBhY2thZ2UoXCJkb2NrZXJcIik7XG5cbiAgICAgICAgcHJvamVjdC5hZGRUYXNrKFwiY29saW1hXCIsIHtcbiAgICAgICAgICAgIGV4ZWM6IFwiY29saW1hIHN0YXR1cyA+L2Rldi9udWxsIDI+JjEgfHwgY29saW1hIHN0YXJ0XCIsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Component } from "projen/lib/component";
|
|
2
|
+
import type { Project } from "projen/lib/project";
|
|
3
|
+
export interface HomebrewOptions {
|
|
4
|
+
readonly packages?: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare class Homebrew extends Component {
|
|
7
|
+
static of(project: Project): Homebrew | undefined;
|
|
8
|
+
private readonly packages;
|
|
9
|
+
constructor(project: Project, options?: HomebrewOptions);
|
|
10
|
+
addPackage(packageName: string): void;
|
|
11
|
+
private synthesizeBrewfile;
|
|
12
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Homebrew = void 0;
|
|
4
|
+
const component_1 = require("projen/lib/component");
|
|
5
|
+
const textfile_1 = require("projen/lib/textfile");
|
|
6
|
+
class Homebrew extends component_1.Component {
|
|
7
|
+
static of(project) {
|
|
8
|
+
const isHomebrew = (c) => c instanceof Homebrew;
|
|
9
|
+
return project.components.find(isHomebrew);
|
|
10
|
+
}
|
|
11
|
+
constructor(project, options = {}) {
|
|
12
|
+
super(project);
|
|
13
|
+
this.packages = new Set(options.packages ?? []);
|
|
14
|
+
const brewInstallTask = project.addTask("install:homebrew", {
|
|
15
|
+
exec: 'command -v brew >/dev/null 2>&1 || NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"',
|
|
16
|
+
});
|
|
17
|
+
project.defaultTask?.spawn(brewInstallTask);
|
|
18
|
+
this.synthesizeBrewfile();
|
|
19
|
+
}
|
|
20
|
+
addPackage(packageName) {
|
|
21
|
+
this.packages.add(packageName);
|
|
22
|
+
this.synthesizeBrewfile();
|
|
23
|
+
}
|
|
24
|
+
synthesizeBrewfile() {
|
|
25
|
+
if (this.packages.size === 0)
|
|
26
|
+
return;
|
|
27
|
+
this.project.tryRemoveFile("Brewfile");
|
|
28
|
+
new textfile_1.TextFile(this, "Brewfile", {
|
|
29
|
+
lines: Array.from(this.packages).map((pkg) => `brew "${pkg}"`),
|
|
30
|
+
});
|
|
31
|
+
const brewBundleTask = this.project.tasks.tryFind("homebrew:bundle") ??
|
|
32
|
+
this.project.addTask("homebrew:bundle", {
|
|
33
|
+
exec: "brew bundle",
|
|
34
|
+
});
|
|
35
|
+
const brewInstallTask = this.project.tasks.tryFind("install:homebrew");
|
|
36
|
+
if (brewInstallTask && !brewInstallTask.steps.some((s) => s.spawn === "homebrew:bundle")) {
|
|
37
|
+
brewInstallTask.spawn(brewBundleTask);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.Homebrew = Homebrew;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWJyZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9ob21lYnJldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBaUQ7QUFFakQsa0RBQStDO0FBTS9DLE1BQWEsUUFBUyxTQUFRLHFCQUFTO0lBQzVCLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDN0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFZLEVBQWlCLEVBQUUsQ0FBQyxDQUFDLFlBQVksUUFBUSxDQUFDO1FBQzFFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUlELFlBQVksT0FBZ0IsRUFBRSxVQUEyQixFQUFFO1FBQ3ZELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVoRCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFO1lBQ3hELElBQUksRUFBRSxxSkFBcUo7U0FDOUosQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxXQUFtQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkMsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDM0IsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztTQUNqRSxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFO2dCQUNwQyxJQUFJLEVBQUUsYUFBYTthQUN0QixDQUFDLENBQUM7UUFFUCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RSxJQUFJLGVBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUN2RixlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUEvQ0QsNEJBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcInByb2plbi9saWIvY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBUZXh0RmlsZSB9IGZyb20gXCJwcm9qZW4vbGliL3RleHRmaWxlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9tZWJyZXdPcHRpb25zIHtcbiAgICByZWFkb25seSBwYWNrYWdlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgSG9tZWJyZXcgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogUHJvamVjdCk6IEhvbWVicmV3IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaXNIb21lYnJldyA9IChjOiBDb21wb25lbnQpOiBjIGlzIEhvbWVicmV3ID0+IGMgaW5zdGFuY2VvZiBIb21lYnJldztcbiAgICAgICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzSG9tZWJyZXcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZXM6IFNldDxzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogSG9tZWJyZXdPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAgICAgdGhpcy5wYWNrYWdlcyA9IG5ldyBTZXQob3B0aW9ucy5wYWNrYWdlcyA/PyBbXSk7XG5cbiAgICAgICAgY29uc3QgYnJld0luc3RhbGxUYXNrID0gcHJvamVjdC5hZGRUYXNrKFwiaW5zdGFsbDpob21lYnJld1wiLCB7XG4gICAgICAgICAgICBleGVjOiAnY29tbWFuZCAtdiBicmV3ID4vZGV2L251bGwgMj4mMSB8fCBOT05JTlRFUkFDVElWRT0xIC9iaW4vYmFzaCAtYyBcIiQoY3VybCAtZnNTTCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vSG9tZWJyZXcvaW5zdGFsbC9IRUFEL2luc3RhbGwuc2gpXCInLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcm9qZWN0LmRlZmF1bHRUYXNrPy5zcGF3bihicmV3SW5zdGFsbFRhc2spO1xuXG4gICAgICAgIHRoaXMuc3ludGhlc2l6ZUJyZXdmaWxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFBhY2thZ2UocGFja2FnZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhY2thZ2VzLmFkZChwYWNrYWdlTmFtZSk7XG4gICAgICAgIHRoaXMuc3ludGhlc2l6ZUJyZXdmaWxlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW50aGVzaXplQnJld2ZpbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhY2thZ2VzLnNpemUgPT09IDApIHJldHVybjtcblxuICAgICAgICB0aGlzLnByb2plY3QudHJ5UmVtb3ZlRmlsZShcIkJyZXdmaWxlXCIpO1xuXG4gICAgICAgIG5ldyBUZXh0RmlsZSh0aGlzLCBcIkJyZXdmaWxlXCIsIHtcbiAgICAgICAgICAgIGxpbmVzOiBBcnJheS5mcm9tKHRoaXMucGFja2FnZXMpLm1hcCgocGtnKSA9PiBgYnJldyBcIiR7cGtnfVwiYCksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGJyZXdCdW5kbGVUYXNrID1cbiAgICAgICAgICAgIHRoaXMucHJvamVjdC50YXNrcy50cnlGaW5kKFwiaG9tZWJyZXc6YnVuZGxlXCIpID8/XG4gICAgICAgICAgICB0aGlzLnByb2plY3QuYWRkVGFzayhcImhvbWVicmV3OmJ1bmRsZVwiLCB7XG4gICAgICAgICAgICAgICAgZXhlYzogXCJicmV3IGJ1bmRsZVwiLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYnJld0luc3RhbGxUYXNrID0gdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJpbnN0YWxsOmhvbWVicmV3XCIpO1xuICAgICAgICBpZiAoYnJld0luc3RhbGxUYXNrICYmICFicmV3SW5zdGFsbFRhc2suc3RlcHMuc29tZSgocykgPT4gcy5zcGF3biA9PT0gXCJob21lYnJldzpidW5kbGVcIikpIHtcbiAgICAgICAgICAgIGJyZXdJbnN0YWxsVGFzay5zcGF3bihicmV3QnVuZGxlVGFzayk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./bundle-lambda-function-code"), exports);
|
|
18
|
+
__exportStar(require("./colima"), exports);
|
|
19
|
+
__exportStar(require("./homebrew"), exports);
|
|
20
|
+
__exportStar(require("./lambda-function-construct-generator"), exports);
|
|
21
|
+
__exportStar(require("./localstack"), exports);
|
|
22
|
+
__exportStar(require("./typedoc"), exports);
|
|
23
|
+
__exportStar(require("./vitest"), exports);
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0VBQThDO0FBQzlDLDJDQUF5QjtBQUN6Qiw2Q0FBMkI7QUFDM0Isd0VBQXNEO0FBQ3RELCtDQUE2QjtBQUM3Qiw0Q0FBMEI7QUFDMUIsMkNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYnVuZGxlLWxhbWJkYS1mdW5jdGlvbi1jb2RlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb2xpbWFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2hvbWVicmV3XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sYW1iZGEtZnVuY3Rpb24tY29uc3RydWN0LWdlbmVyYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9jYWxzdGFja1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZWRvY1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdml0ZXN0XCI7XG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { BuildOptions } from "@mrgrain/cdk-esbuild";
|
|
2
|
+
import { Component } from "projen";
|
|
3
|
+
import type { NodeProject } from "projen/lib/javascript";
|
|
4
|
+
export interface LambdaFunctionConstructGeneratorOptions {
|
|
5
|
+
readonly sourceDir?: string;
|
|
6
|
+
readonly outputDir?: string;
|
|
7
|
+
readonly filePattern?: string;
|
|
8
|
+
readonly esbuildOptions?: BuildOptions;
|
|
9
|
+
readonly addDependencies?: boolean;
|
|
10
|
+
readonly baseConstructImport?: string;
|
|
11
|
+
readonly baseConstructClass?: string;
|
|
12
|
+
readonly baseConstructPackage?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class LambdaFunctionConstructGenerator extends Component {
|
|
15
|
+
readonly sourceDir: string;
|
|
16
|
+
readonly outputDir: string;
|
|
17
|
+
readonly filePattern: string;
|
|
18
|
+
readonly esbuildOptions: BuildOptions;
|
|
19
|
+
readonly baseConstructImport?: string;
|
|
20
|
+
readonly baseConstructClass?: string;
|
|
21
|
+
readonly baseConstructPackage?: string;
|
|
22
|
+
private readonly nodeProject;
|
|
23
|
+
private readonly bundlerScriptPath;
|
|
24
|
+
constructor(project: NodeProject, options?: LambdaFunctionConstructGeneratorOptions);
|
|
25
|
+
private addDependencies;
|
|
26
|
+
private createUniqueId;
|
|
27
|
+
private createBundleTask;
|
|
28
|
+
private createBundlerScript;
|
|
29
|
+
private addBundleTaskToWorkflow;
|
|
30
|
+
}
|