@mrgrain/cdk-esbuild 2.0.0-alpha.0 → 2.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/asset.d.ts CHANGED
@@ -1,28 +1,16 @@
1
1
  import { Asset as S3Asset } from '@aws-cdk/aws-s3-assets';
2
2
  import { Construct } from '@aws-cdk/core';
3
- import { BuildOptions } from './esbuild-types';
3
+ import { BundlerProps, EntryPoints } from './bundler';
4
4
  /**
5
- * @stability stable
5
+ * @internal
6
6
  */
7
- export interface EsbuildProps {
8
- /**
9
- * Relative path to a directory copied to the output BEFORE esbuild is run (i.e esbuild will overwrite existing files).
10
- *
11
- * @stability stable
12
- */
13
- readonly copyDir?: string;
14
- /**
15
- * Options passed on to esbuild.
16
- *
17
- * @stability stable
18
- */
19
- readonly buildOptions?: BuildOptions;
7
+ export interface AssetBaseProps extends BundlerProps {
20
8
  /**
21
9
  * A hash of this asset, which is available at construction time.
22
10
  *
23
- * As this is a plain string, it
24
- * can be used in construct IDs in order to enforce creation of a new resource when the content
25
- * hash has changed.
11
+ * As this is a plain string, it can be used in construct IDs in order to enforce creation of a new resource when the content hash has changed.
12
+ *
13
+ * Defaults to a hash of all files in the resulting bundle.
26
14
  *
27
15
  * @stability stable
28
16
  */
@@ -31,29 +19,42 @@ export interface EsbuildProps {
31
19
  /**
32
20
  * @stability stable
33
21
  */
34
- export interface EsbuildAssetProps extends EsbuildProps {
22
+ export interface AssetProps extends AssetBaseProps {
35
23
  /**
36
- * Relative paths to the entrypoints of your code, e.g. `src/index.ts`.
24
+ * A relative path or list or map of relative paths to the entry points of your code from the root of the project.
25
+ *
26
+ * E.g. `src/index.ts`.
37
27
  *
38
28
  * @stability stable
39
29
  */
40
- readonly entryPoints: string | string[] | Record<string, string>;
30
+ readonly entryPoints: EntryPoints;
41
31
  }
42
- export declare type JavaScriptAssetProps = EsbuildAssetProps;
43
- export declare type TypeScriptAssetProps = EsbuildAssetProps;
44
- declare abstract class Asset<Props extends EsbuildAssetProps> extends S3Asset {
32
+ declare type JavaScriptAssetProps = AssetProps;
33
+ declare type TypeScriptAssetProps = AssetProps;
34
+ /**
35
+ * @stability stable
36
+ */
37
+ declare abstract class Asset<Props extends AssetProps> extends S3Asset {
45
38
  /**
46
- * @experimental
39
+ * @stability stable
47
40
  */
48
- constructor(scope: Construct, id: string, { entryPoints: propEntryPoints, assetHash, copyDir, buildOptions: options, }: Props);
41
+ constructor(scope: Construct, id: string, props: Props);
49
42
  }
50
43
  /**
51
- * @experimental
44
+ * Bundles the entry points and creates a CDK asset which is uploaded to the bootstrapped CDK S3 bucket during deployment.
45
+ *
46
+ * The asset can be used by other constructs.
47
+ *
48
+ * @stability stable
52
49
  */
53
50
  export declare class JavaScriptAsset extends Asset<JavaScriptAssetProps> {
54
51
  }
55
52
  /**
56
- * @experimental
53
+ * Bundles the entry points and creates a CDK asset which is uploaded to the bootstrapped CDK S3 bucket during deployment.
54
+ *
55
+ * The asset can be used by other constructs.
56
+ *
57
+ * @stability stable
57
58
  */
58
59
  export declare class TypeScriptAsset extends Asset<TypeScriptAssetProps> {
59
60
  }
package/lib/asset.js CHANGED
@@ -6,14 +6,18 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const path_1 = require("path");
7
7
  const aws_s3_assets_1 = require("@aws-cdk/aws-s3-assets");
8
8
  const core_1 = require("@aws-cdk/core");
9
- const bundling_1 = require("./bundling");
9
+ const bundler_1 = require("./bundler");
10
+ /**
11
+ * @stability stable
12
+ */
10
13
  class Asset extends aws_s3_assets_1.Asset {
11
14
  /**
12
- * @experimental
15
+ * @stability stable
13
16
  */
14
- constructor(scope, id, { entryPoints: propEntryPoints, assetHash, copyDir, buildOptions: options = {}, }) {
17
+ constructor(scope, id, props) {
15
18
  var _c;
16
- const entryPoints = typeof propEntryPoints === 'string' ? [propEntryPoints] : propEntryPoints;
19
+ const { assetHash, copyDir, buildOptions: options = {}, } = props;
20
+ const entryPoints = typeof props.entryPoints === 'string' ? [props.entryPoints] : props.entryPoints;
17
21
  const name = scope.node.path + core_1.ConstructNode.PATH_SEP + id;
18
22
  Object.values(entryPoints).forEach((entryPoint) => {
19
23
  if (path_1.isAbsolute(entryPoint)) {
@@ -30,29 +34,35 @@ class Asset extends aws_s3_assets_1.Asset {
30
34
  path: absWorkingDir,
31
35
  assetHash,
32
36
  assetHashType: assetHash ? core_1.AssetHashType.CUSTOM : core_1.AssetHashType.OUTPUT,
33
- bundling: new bundling_1.EsbuildBundling({
34
- ...buildOptions,
35
- entryPoints,
36
- }, {
37
+ bundling: new bundler_1.EsbuildBundler(entryPoints, {
38
+ buildOptions,
37
39
  copyDir,
38
40
  }),
39
41
  });
40
42
  }
41
43
  }
42
44
  /**
43
- * @experimental
45
+ * Bundles the entry points and creates a CDK asset which is uploaded to the bootstrapped CDK S3 bucket during deployment.
46
+ *
47
+ * The asset can be used by other constructs.
48
+ *
49
+ * @stability stable
44
50
  */
45
51
  class JavaScriptAsset extends Asset {
46
52
  }
47
53
  exports.JavaScriptAsset = JavaScriptAsset;
48
54
  _a = JSII_RTTI_SYMBOL_1;
49
- JavaScriptAsset[_a] = { fqn: "@mrgrain/cdk-esbuild.JavaScriptAsset", version: "2.0.0-alpha.0" };
55
+ JavaScriptAsset[_a] = { fqn: "@mrgrain/cdk-esbuild.JavaScriptAsset", version: "2.0.0-alpha.5" };
50
56
  /**
51
- * @experimental
57
+ * Bundles the entry points and creates a CDK asset which is uploaded to the bootstrapped CDK S3 bucket during deployment.
58
+ *
59
+ * The asset can be used by other constructs.
60
+ *
61
+ * @stability stable
52
62
  */
53
63
  class TypeScriptAsset extends Asset {
54
64
  }
55
65
  exports.TypeScriptAsset = TypeScriptAsset;
56
66
  _b = JSII_RTTI_SYMBOL_1;
57
- TypeScriptAsset[_b] = { fqn: "@mrgrain/cdk-esbuild.TypeScriptAsset", version: "2.0.0-alpha.0" };
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBa0M7QUFDbEMsMERBQTBEO0FBQzFELHdDQUF3RTtBQUV4RSx5Q0FBNkM7QUFzQjdDLE1BQWUsS0FBdUMsU0FBUSxxQkFBTzs7OztJQUNuRSxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixFQUNFLFdBQVcsRUFBRSxlQUFlLEVBQzVCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsWUFBWSxFQUFFLE9BQU8sR0FBRyxFQUFFLEdBQ3BCOztRQUVSLE1BQU0sV0FBVyxHQUNmLE9BQU8sZUFBZSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1FBRTVFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFhLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUUzRCxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtZQUN4RCxJQUFJLGlCQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxJQUFJLHdJQUF3SSxDQUNoSixDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxTQUFHLE9BQU8sQ0FBQyxhQUFhLG1DQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU3RCxNQUFNLFlBQVksR0FBRztZQUNuQixNQUFNLEVBQUUsSUFBSTtZQUNaLEdBQUcsT0FBTztZQUNWLGFBQWE7U0FDZCxDQUFDO1FBRUYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixJQUFJLEVBQUUsYUFBYTtZQUNuQixTQUFTO1lBQ1QsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsb0JBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFhLENBQUMsTUFBTTtZQUN0RSxRQUFRLEVBQUUsSUFBSSwwQkFBZSxDQUMzQjtnQkFDRSxHQUFHLFlBQVk7Z0JBQ2YsV0FBVzthQUNaLEVBQ0Q7Z0JBQ0UsT0FBTzthQUNSLENBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7Ozs7QUFHRCxNQUFhLGVBQWdCLFNBQVEsS0FBMkI7O0FBQWhFLDBDQUFtRTs7Ozs7O0FBR25FLE1BQWEsZUFBZ0IsU0FBUSxLQUEyQjs7QUFBaEUsMENBQW1FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQXNzZXQgYXMgUzNBc3NldCB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgQXNzZXRIYXNoVHlwZSwgQ29uc3RydWN0LCBDb25zdHJ1Y3ROb2RlIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgeyBFc2J1aWxkT3B0aW9ucyB9IGZyb20gJy4vYnVuZGxlcnMnO1xuaW1wb3J0IHsgRXNidWlsZEJ1bmRsaW5nIH0gZnJvbSAnLi9idW5kbGluZyc7XG5pbXBvcnQgeyBCdWlsZE9wdGlvbnMgfSBmcm9tICcuL2VzYnVpbGQtdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVzYnVpbGRQcm9wcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvcHlEaXI/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYnVpbGRPcHRpb25zPzogQnVpbGRPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYXNzZXRIYXNoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVzYnVpbGRBc3NldFByb3BzIGV4dGVuZHMgRXNidWlsZFByb3BzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBlbnRyeVBvaW50czogc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgdHlwZSBKYXZhU2NyaXB0QXNzZXRQcm9wcyA9IEVzYnVpbGRBc3NldFByb3BzO1xuZXhwb3J0IHR5cGUgVHlwZVNjcmlwdEFzc2V0UHJvcHMgPSBFc2J1aWxkQXNzZXRQcm9wcztcblxuYWJzdHJhY3QgY2xhc3MgQXNzZXQ8UHJvcHMgZXh0ZW5kcyBFc2J1aWxkQXNzZXRQcm9wcz4gZXh0ZW5kcyBTM0Fzc2V0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB7XG4gICAgICBlbnRyeVBvaW50czogcHJvcEVudHJ5UG9pbnRzLFxuICAgICAgYXNzZXRIYXNoLFxuICAgICAgY29weURpcixcbiAgICAgIGJ1aWxkT3B0aW9uczogb3B0aW9ucyA9IHt9LFxuICAgIH06IFByb3BzLFxuICApIHtcbiAgICBjb25zdCBlbnRyeVBvaW50czogRXNidWlsZE9wdGlvbnNbJ2VudHJ5UG9pbnRzJ10gPVxuICAgICAgdHlwZW9mIHByb3BFbnRyeVBvaW50cyA9PT0gJ3N0cmluZycgPyBbcHJvcEVudHJ5UG9pbnRzXSA6IHByb3BFbnRyeVBvaW50cztcblxuICAgIGNvbnN0IG5hbWUgPSBzY29wZS5ub2RlLnBhdGggKyBDb25zdHJ1Y3ROb2RlLlBBVEhfU0VQICsgaWQ7XG5cbiAgICBPYmplY3QudmFsdWVzKGVudHJ5UG9pbnRzKS5mb3JFYWNoKChlbnRyeVBvaW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChpc0Fic29sdXRlKGVudHJ5UG9pbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtuYW1lfTogRW50cnkgcG9pbnRzIG11c3QgYmUgYSByZWxhdGl2ZSBwYXRoLiBJZiB5b3UgbmVlZCB0byBkZWZpbmUgYW4gYWJzb2x1dGUgcGF0aCwgcGxlYXNlIHVzZSBcXGBidWlsZE9wdGlvbnMuYWJzV29ya2luZ0RpclxcYCBhY2NvcmRpbmdseS5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgYWJzV29ya2luZ0RpciA9IG9wdGlvbnMuYWJzV29ya2luZ0RpciA/PyBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgY29uc3QgYnVpbGRPcHRpb25zID0ge1xuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGFic1dvcmtpbmdEaXIsXG4gICAgfTtcblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGF0aDogYWJzV29ya2luZ0RpcixcbiAgICAgIGFzc2V0SGFzaCxcbiAgICAgIGFzc2V0SGFzaFR5cGU6IGFzc2V0SGFzaCA/IEFzc2V0SGFzaFR5cGUuQ1VTVE9NIDogQXNzZXRIYXNoVHlwZS5PVVRQVVQsXG4gICAgICBidW5kbGluZzogbmV3IEVzYnVpbGRCdW5kbGluZyhcbiAgICAgICAge1xuICAgICAgICAgIC4uLmJ1aWxkT3B0aW9ucyxcbiAgICAgICAgICBlbnRyeVBvaW50cyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvcHlEaXIsXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgIH0pO1xuICB9XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIEphdmFTY3JpcHRBc3NldCBleHRlbmRzIEFzc2V0PEphdmFTY3JpcHRBc3NldFByb3BzPiB7fVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0QXNzZXQgZXh0ZW5kcyBBc3NldDxUeXBlU2NyaXB0QXNzZXRQcm9wcz4ge31cbiJdfQ==
67
+ TypeScriptAsset[_b] = { fqn: "@mrgrain/cdk-esbuild.TypeScriptAsset", version: "2.0.0-alpha.5" };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBa0M7QUFDbEMsMERBQTBEO0FBQzFELHdDQUF3RTtBQUN4RSx1Q0FBc0U7QUFrQnRFOztHQUVHO0FBQ0gsTUFBZSxLQUFnQyxTQUFRLHFCQUFPOzs7O0lBRTVELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQVk7O1FBRVosTUFBTSxFQUNKLFNBQVMsRUFDVCxPQUFPLEVBQ1AsWUFBWSxFQUFFLE9BQU8sR0FBRyxFQUFFLEdBQzNCLEdBQUcsS0FBSyxDQUFDO1FBQ1YsTUFBTSxXQUFXLEdBQ2YsT0FBTyxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFFbEYsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQWEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBRTNELE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBa0IsRUFBRSxFQUFFO1lBQ3hELElBQUksaUJBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLElBQUksd0lBQXdJLENBQ2hKLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxhQUFhLFNBQUcsT0FBTyxDQUFDLGFBQWEsbUNBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTdELE1BQU0sWUFBWSxHQUFHO1lBQ25CLE1BQU0sRUFBRSxJQUFJO1lBQ1osR0FBRyxPQUFPO1lBQ1YsYUFBYTtTQUNkLENBQUM7UUFFRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLElBQUksRUFBRSxhQUFhO1lBQ25CLFNBQVM7WUFDVCxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQkFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQWEsQ0FBQyxNQUFNO1lBQ3RFLFFBQVEsRUFBRSxJQUFJLHdCQUFjLENBQzFCLFdBQVcsRUFDWDtnQkFDRSxZQUFZO2dCQUNaLE9BQU87YUFDUixDQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGOzs7Ozs7OztBQUdELE1BQWEsZUFBZ0IsU0FBUSxLQUEyQjs7QUFBaEUsMENBQW1FOzs7Ozs7Ozs7O0FBR25FLE1BQWEsZUFBZ0IsU0FBUSxLQUEyQjs7QUFBaEUsMENBQW1FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQXNzZXQgYXMgUzNBc3NldCB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgQXNzZXRIYXNoVHlwZSwgQ29uc3RydWN0LCBDb25zdHJ1Y3ROb2RlIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgeyBFc2J1aWxkQnVuZGxlciwgQnVuZGxlclByb3BzLCBFbnRyeVBvaW50cyB9IGZyb20gJy4vYnVuZGxlcic7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRCYXNlUHJvcHMgZXh0ZW5kcyBCdW5kbGVyUHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhc3NldEhhc2g/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRQcm9wcyBleHRlbmRzIEFzc2V0QmFzZVByb3BzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBlbnRyeVBvaW50czogRW50cnlQb2ludHM7XG59XG5cbnR5cGUgSmF2YVNjcmlwdEFzc2V0UHJvcHMgPSBBc3NldFByb3BzO1xudHlwZSBUeXBlU2NyaXB0QXNzZXRQcm9wcyA9IEFzc2V0UHJvcHM7XG5cbi8qKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuYWJzdHJhY3QgY2xhc3MgQXNzZXQ8UHJvcHMgZXh0ZW5kcyBBc3NldFByb3BzPiBleHRlbmRzIFMzQXNzZXQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBQcm9wcyxcbiAgKSB7XG4gICAgY29uc3Qge1xuICAgICAgYXNzZXRIYXNoLFxuICAgICAgY29weURpcixcbiAgICAgIGJ1aWxkT3B0aW9uczogb3B0aW9ucyA9IHt9LFxuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBlbnRyeVBvaW50czogc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID1cbiAgICAgIHR5cGVvZiBwcm9wcy5lbnRyeVBvaW50cyA9PT0gJ3N0cmluZycgPyBbcHJvcHMuZW50cnlQb2ludHNdIDogcHJvcHMuZW50cnlQb2ludHM7XG5cbiAgICBjb25zdCBuYW1lID0gc2NvcGUubm9kZS5wYXRoICsgQ29uc3RydWN0Tm9kZS5QQVRIX1NFUCArIGlkO1xuXG4gICAgT2JqZWN0LnZhbHVlcyhlbnRyeVBvaW50cykuZm9yRWFjaCgoZW50cnlQb2ludDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoaXNBYnNvbHV0ZShlbnRyeVBvaW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYCR7bmFtZX06IEVudHJ5IHBvaW50cyBtdXN0IGJlIGEgcmVsYXRpdmUgcGF0aC4gSWYgeW91IG5lZWQgdG8gZGVmaW5lIGFuIGFic29sdXRlIHBhdGgsIHBsZWFzZSB1c2UgXFxgYnVpbGRPcHRpb25zLmFic1dvcmtpbmdEaXJcXGAgYWNjb3JkaW5nbHkuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGFic1dvcmtpbmdEaXIgPSBvcHRpb25zLmFic1dvcmtpbmdEaXIgPz8gcHJvY2Vzcy5jd2QoKTtcblxuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IHtcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhYnNXb3JraW5nRGlyLFxuICAgIH07XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBhdGg6IGFic1dvcmtpbmdEaXIsXG4gICAgICBhc3NldEhhc2gsXG4gICAgICBhc3NldEhhc2hUeXBlOiBhc3NldEhhc2ggPyBBc3NldEhhc2hUeXBlLkNVU1RPTSA6IEFzc2V0SGFzaFR5cGUuT1VUUFVULFxuICAgICAgYnVuZGxpbmc6IG5ldyBFc2J1aWxkQnVuZGxlcihcbiAgICAgICAgZW50cnlQb2ludHMsXG4gICAgICAgIHtcbiAgICAgICAgICBidWlsZE9wdGlvbnMsXG4gICAgICAgICAgY29weURpcixcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBKYXZhU2NyaXB0QXNzZXQgZXh0ZW5kcyBBc3NldDxKYXZhU2NyaXB0QXNzZXRQcm9wcz4ge31cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0QXNzZXQgZXh0ZW5kcyBBc3NldDxUeXBlU2NyaXB0QXNzZXRQcm9wcz4ge31cbiJdfQ==
@@ -0,0 +1,92 @@
1
+ import { DockerImage, ILocalBundling } from '@aws-cdk/core';
2
+ import { BuildOptions } from './esbuild-types';
3
+ /**
4
+ * A relative path or list or map of relative paths to the entry points of your code from the root of the project. E.g. `src/index.ts`.
5
+ *
6
+ * @stability stable
7
+ */
8
+ export declare type EntryPoints = string | string[] | Record<string, string>;
9
+ /**
10
+ * @stability stable
11
+ */
12
+ export interface BundlerProps {
13
+ /**
14
+ * Build options passed on to esbuild. Please refer to the esbuild Build API docs for details.
15
+ *
16
+ * - `buildOptions.outdir: string` \
17
+ * The actual path for the output directory is defined by CDK. However setting this option allows to write files into a subdirectory. \
18
+ * For example `{ outdir: 'js' }` will create an asset with a single directory called `js`, which contains all built files. This approach can be useful for static website deployments, where JavaScript code should be placed into a subdirectory. \
19
+ * *Cannot be used together with `outfile`*.
20
+ * - `buildOptions.outfile: string` \
21
+ * Relative path to a file inside the CDK asset output directory. \
22
+ * For example `{ outfile: 'js/index.js' }` will create an asset with a single directory called `js`, which contains a single file `index.js`. This can be useful to rename the entry point. \
23
+ * *Cannot be used with multiple entryPoints or together with `outdir`.*
24
+ * - `buildOptions.absWorkingDir: string` \
25
+ * Absolute path to the [esbuild working directory](https://esbuild.github.io/api/#working-directory) and defaults to the [current working directory](https://en.wikipedia.org/wiki/Working_directory). \
26
+ * If paths cannot be found, a good starting point is to look at the concatenation of `absWorkingDir + entryPoint`. It must always be a valid absolute path pointing to the entry point. When needed, the probably easiest way to set absWorkingDir is to use a combination of `resolve` and `__dirname` (see "Library authors" section in the documentation).
27
+ *
28
+ * @see https://esbuild.github.io/api/#build-api
29
+ * @stability stable
30
+ */
31
+ readonly buildOptions?: BuildOptions;
32
+ /**
33
+ * Copy additional files to the output directory, before the build runs.
34
+ *
35
+ * Files copied like this will be overwritten by esbuild if they share the same name as any of the outputs.
36
+ *
37
+ * @stability stable
38
+ */
39
+ readonly copyDir?: string;
40
+ }
41
+ /**
42
+ * (experimental) Low-level construct that can be used where `BundlingOptions` are required.
43
+ *
44
+ * This class directly interfaces with esbuild and provides almost no configuration safeguards.
45
+ *
46
+ * @experimental
47
+ */
48
+ export declare class EsbuildBundler {
49
+ /**
50
+ * A relative path or list or map of relative paths to the entry points of your code from the root of the project.
51
+ * E.g. `src/index.ts`.
52
+ *
53
+ * @stability experimental
54
+ */
55
+ readonly entryPoints: EntryPoints;
56
+ /**
57
+ * Props to change the behaviour of the bundler.
58
+ *
59
+ * @stability experimental
60
+ */
61
+ readonly props: BundlerProps;
62
+ /**
63
+ * (experimental) Implementation of `ILocalBundling` interface, responsible for calling esbuild functions.
64
+ *
65
+ * @experimental
66
+ */
67
+ readonly local: ILocalBundling;
68
+ /**
69
+ * @deprecated This value is ignored since the bundler is always using a locally installed version of esbuild. However the property is required to comply with the `BundlingOptions` interface.
70
+ */
71
+ readonly image: DockerImage;
72
+ /**
73
+ * @param entryPoints A relative path or list or map of relative paths to the entry points of your code from the root of the project.
74
+ * @param props Props to change the behaviour of the bundler.
75
+ * @experimental
76
+ */
77
+ constructor(
78
+ /**
79
+ * A relative path or list or map of relative paths to the entry points of your code from the root of the project.
80
+ * E.g. `src/index.ts`.
81
+ *
82
+ * @stability experimental
83
+ */
84
+ entryPoints: EntryPoints,
85
+ /**
86
+ * Props to change the behaviour of the bundler.
87
+ *
88
+ * @stability experimental
89
+ */
90
+ props: BundlerProps);
91
+ private getOutputOptions;
92
+ }
package/lib/bundler.js ADDED
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.EsbuildBundler = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const path_1 = require("path");
7
+ const core_1 = require("@aws-cdk/core");
8
+ const esbuild_wrapper_1 = require("./esbuild-wrapper");
9
+ const formatMessages_1 = require("./formatMessages");
10
+ /**
11
+ * (experimental) Low-level construct that can be used where `BundlingOptions` are required.
12
+ *
13
+ * This class directly interfaces with esbuild and provides almost no configuration safeguards.
14
+ *
15
+ * @experimental
16
+ */
17
+ class EsbuildBundler {
18
+ /**
19
+ * @param entryPoints A relative path or list or map of relative paths to the entry points of your code from the root of the project.
20
+ * @param props Props to change the behaviour of the bundler.
21
+ * @experimental
22
+ */
23
+ constructor(
24
+ /**
25
+ * A relative path or list or map of relative paths to the entry points of your code from the root of the project.
26
+ * E.g. `src/index.ts`.
27
+ *
28
+ * @stability experimental
29
+ */
30
+ entryPoints,
31
+ /**
32
+ * Props to change the behaviour of the bundler.
33
+ *
34
+ * @stability experimental
35
+ */
36
+ props) {
37
+ var _b, _c;
38
+ this.entryPoints = entryPoints;
39
+ this.props = props;
40
+ /**
41
+ * @deprecated This value is ignored since the bundler is always using a locally installed version of esbuild. However the property is required to comply with the `BundlingOptions` interface.
42
+ */
43
+ this.image = core_1.DockerImage.fromRegistry('scratch');
44
+ if (((_b = props === null || props === void 0 ? void 0 : props.buildOptions) === null || _b === void 0 ? void 0 : _b.outfile) && ((_c = props === null || props === void 0 ? void 0 : props.buildOptions) === null || _c === void 0 ? void 0 : _c.outdir)) {
45
+ throw new Error('Cannot use both "outfile" and "outdir"');
46
+ }
47
+ this.local = {
48
+ tryBundle: (outputDir, _options) => {
49
+ var _b, _c, _d, _e;
50
+ try {
51
+ if (this.props.copyDir) {
52
+ core_1.FileSystem.copyDirectory(path_1.resolve((_d = (_c = (_b = this.props) === null || _b === void 0 ? void 0 : _b.buildOptions) === null || _c === void 0 ? void 0 : _c.absWorkingDir) !== null && _d !== void 0 ? _d : process.cwd(), this.props.copyDir), outputDir);
53
+ }
54
+ const buildResult = esbuild_wrapper_1.buildSync({
55
+ entryPoints,
56
+ ...(((_e = this.props) === null || _e === void 0 ? void 0 : _e.buildOptions) || {}),
57
+ ...this.getOutputOptions(outputDir, { normalize: path_1.normalize, join: path_1.join }),
58
+ });
59
+ formatMessages_1.printBuildMessages(buildResult, { prefix: 'Build ' });
60
+ }
61
+ catch (error) {
62
+ formatMessages_1.printBuildMessages(error, { prefix: 'Build ' });
63
+ }
64
+ return true;
65
+ },
66
+ };
67
+ }
68
+ getOutputOptions(cdkOutputDir, path = path_1.posix) {
69
+ var _b, _c, _d, _e, _f, _g;
70
+ if ((_c = (_b = this.props) === null || _b === void 0 ? void 0 : _b.buildOptions) === null || _c === void 0 ? void 0 : _c.outfile) {
71
+ return {
72
+ outdir: undefined,
73
+ outfile: path.normalize(path.join(...[cdkOutputDir, (_e = (_d = this.props) === null || _d === void 0 ? void 0 : _d.buildOptions) === null || _e === void 0 ? void 0 : _e.outfile].filter(Boolean))),
74
+ };
75
+ }
76
+ return {
77
+ outdir: path.normalize(path.join(...[cdkOutputDir, (_g = (_f = this.props) === null || _f === void 0 ? void 0 : _f.buildOptions) === null || _g === void 0 ? void 0 : _g.outdir].filter(Boolean))),
78
+ outfile: undefined,
79
+ };
80
+ }
81
+ }
82
+ exports.EsbuildBundler = EsbuildBundler;
83
+ _a = JSII_RTTI_SYMBOL_1;
84
+ EsbuildBundler[_a] = { fqn: "@mrgrain/cdk-esbuild.EsbuildBundler", version: "2.0.0-alpha.5" };
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQXFFO0FBQ3JFLHdDQUt1QjtBQUV2Qix1REFBOEM7QUFDOUMscURBQXNEOzs7Ozs7OztBQW1CdEQsTUFBYSxjQUFjOzs7Ozs7SUFRekI7SUFDRTs7Ozs7T0FLRztJQUNhLFdBQXdCO0lBRXhDOzs7O09BSUc7SUFDYSxLQUFtQjs7UUFQbkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFPeEIsVUFBSyxHQUFMLEtBQUssQ0FBYzs7OztRQWpCckIsVUFBSyxHQUFHLGtCQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBbUIxRCxJQUFJLE9BQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFlBQVksMENBQUUsT0FBTyxZQUFJLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxZQUFZLDBDQUFFLE1BQU0sQ0FBQSxFQUFFO1lBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUMzRDtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWCxTQUFTLEVBQUUsQ0FBQyxTQUFpQixFQUFFLFFBQXlCLEVBQVcsRUFBRTs7Z0JBQ25FLElBQUk7b0JBQ0YsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTt3QkFDdEIsaUJBQVUsQ0FBQyxhQUFhLENBQ3RCLGNBQU8sbUJBQ0wsSUFBSSxDQUFDLEtBQUssMENBQUUsWUFBWSwwQ0FBRSxhQUFhLG1DQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ25CLEVBQ0QsU0FBUyxDQUNWLENBQUM7cUJBQ0g7b0JBRUQsTUFBTSxXQUFXLEdBQWdCLDJCQUFTLENBQUM7d0JBQ3pDLFdBQVc7d0JBQ1gsR0FBRyxDQUFDLE9BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsWUFBWSxLQUFJLEVBQUUsQ0FBQzt3QkFDbkMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFULGdCQUFTLEVBQUUsSUFBSSxFQUFKLFdBQUksRUFBRSxDQUFDO3FCQUN6RCxDQUFDLENBQUM7b0JBRUgsbUNBQWtCLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7aUJBQ3ZEO2dCQUFDLE9BQU8sS0FBSyxFQUFFO29CQUNkLG1DQUFrQixDQUFDLEtBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztpQkFDakU7Z0JBRUQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FDdEIsWUFBb0IsRUFDcEIsT0FBaUQsWUFBSzs7UUFFdEQsZ0JBQUksSUFBSSxDQUFDLEtBQUssMENBQUUsWUFBWSwwQ0FBRSxPQUFPLEVBQUU7WUFDckMsT0FBTztnQkFDTCxNQUFNLEVBQUUsU0FBUztnQkFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ3JCLElBQUksQ0FBQyxJQUFJLENBQ1AsR0FBSSxDQUFDLFlBQVksY0FBRSxJQUFJLENBQUMsS0FBSywwQ0FBRSxZQUFZLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDMUQsT0FBTyxDQUNLLENBQ2YsQ0FDRjthQUNGLENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FDcEIsSUFBSSxDQUFDLElBQUksQ0FDUCxHQUFJLENBQUMsWUFBWSxjQUFFLElBQUksQ0FBQyxLQUFLLDBDQUFFLFlBQVksMENBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUN6RCxPQUFPLENBQ0ssQ0FDZixDQUNGO1lBQ0QsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FBQztJQUNKLENBQUM7O0FBcEZILHdDQXFGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4sIG5vcm1hbGl6ZSwgcmVzb2x2ZSwgcG9zaXgsIFBsYXRmb3JtUGF0aCB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgQnVuZGxpbmdPcHRpb25zLFxuICBEb2NrZXJJbWFnZSxcbiAgRmlsZVN5c3RlbSxcbiAgSUxvY2FsQnVuZGxpbmcsXG59IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHsgQnVpbGRGYWlsdXJlLCBCdWlsZE9wdGlvbnMsIEJ1aWxkUmVzdWx0IH0gZnJvbSAnLi9lc2J1aWxkLXR5cGVzJztcbmltcG9ydCB7IGJ1aWxkU3luYyB9IGZyb20gJy4vZXNidWlsZC13cmFwcGVyJztcbmltcG9ydCB7IHByaW50QnVpbGRNZXNzYWdlcyB9IGZyb20gJy4vZm9ybWF0TWVzc2FnZXMnO1xuXG4vKipcbiAqIEEgcmVsYXRpdmUgcGF0aCBvciBsaXN0IG9yIG1hcCBvZiByZWxhdGl2ZSBwYXRocyB0byB0aGUgZW50cnkgcG9pbnRzIG9mIHlvdXIgY29kZSBmcm9tIHRoZSByb290IG9mIHRoZSBwcm9qZWN0LiBFLmcuIGBzcmMvaW5kZXgudHNgLlxuICpcbiAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gKi9cbmV4cG9ydCB0eXBlIEVudHJ5UG9pbnRzID0gc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZXJQcm9wcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGJ1aWxkT3B0aW9ucz86IEJ1aWxkT3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29weURpcj86IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIEVzYnVpbGRCdW5kbGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsOiBJTG9jYWxCdW5kbGluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZSA9IERvY2tlckltYWdlLmZyb21SZWdpc3RyeSgnc2NyYXRjaCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICAgKiBBIHJlbGF0aXZlIHBhdGggb3IgbGlzdCBvciBtYXAgb2YgcmVsYXRpdmUgcGF0aHMgdG8gdGhlIGVudHJ5IHBvaW50cyBvZiB5b3VyIGNvZGUgZnJvbSB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdC5cbiAgICAgKiBFLmcuIGBzcmMvaW5kZXgudHNgLlxuICAgICAqXG4gICAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZW50cnlQb2ludHM6IEVudHJ5UG9pbnRzLFxuXG4gICAgLyoqXG4gICAgICogUHJvcHMgdG8gY2hhbmdlIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGJ1bmRsZXIuXG4gICAgICpcbiAgICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBwcm9wczogQnVuZGxlclByb3BzLFxuICApIHtcbiAgICBpZiAocHJvcHM/LmJ1aWxkT3B0aW9ucz8ub3V0ZmlsZSAmJiBwcm9wcz8uYnVpbGRPcHRpb25zPy5vdXRkaXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBib3RoIFwib3V0ZmlsZVwiIGFuZCBcIm91dGRpclwiJyk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2NhbCA9IHtcbiAgICAgIHRyeUJ1bmRsZTogKG91dHB1dERpcjogc3RyaW5nLCBfb3B0aW9uczogQnVuZGxpbmdPcHRpb25zKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMuY29weURpcikge1xuICAgICAgICAgICAgRmlsZVN5c3RlbS5jb3B5RGlyZWN0b3J5KFxuICAgICAgICAgICAgICByZXNvbHZlKFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHM/LmJ1aWxkT3B0aW9ucz8uYWJzV29ya2luZ0RpciA/PyBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY29weURpcixcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgb3V0cHV0RGlyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBidWlsZFJlc3VsdDogQnVpbGRSZXN1bHQgPSBidWlsZFN5bmMoe1xuICAgICAgICAgICAgZW50cnlQb2ludHMsXG4gICAgICAgICAgICAuLi4odGhpcy5wcm9wcz8uYnVpbGRPcHRpb25zIHx8IHt9KSxcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0T3V0cHV0T3B0aW9ucyhvdXRwdXREaXIsIHsgbm9ybWFsaXplLCBqb2luIH0pLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcHJpbnRCdWlsZE1lc3NhZ2VzKGJ1aWxkUmVzdWx0LCB7IHByZWZpeDogJ0J1aWxkICcgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcHJpbnRCdWlsZE1lc3NhZ2VzKGVycm9yIGFzIEJ1aWxkRmFpbHVyZSwgeyBwcmVmaXg6ICdCdWlsZCAnIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldE91dHB1dE9wdGlvbnMoXG4gICAgY2RrT3V0cHV0RGlyOiBzdHJpbmcsXG4gICAgcGF0aDogUGljazxQbGF0Zm9ybVBhdGgsICdub3JtYWxpemUnIHwgJ2pvaW4nPiA9IHBvc2l4LFxuICApOiBCdWlsZE9wdGlvbnMge1xuICAgIGlmICh0aGlzLnByb3BzPy5idWlsZE9wdGlvbnM/Lm91dGZpbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG91dGRpcjogdW5kZWZpbmVkLFxuICAgICAgICBvdXRmaWxlOiBwYXRoLm5vcm1hbGl6ZShcbiAgICAgICAgICBwYXRoLmpvaW4oXG4gICAgICAgICAgICAuLi4oW2Nka091dHB1dERpciwgdGhpcy5wcm9wcz8uYnVpbGRPcHRpb25zPy5vdXRmaWxlXS5maWx0ZXIoXG4gICAgICAgICAgICAgIEJvb2xlYW4sXG4gICAgICAgICAgICApIGFzIHN0cmluZ1tdKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3V0ZGlyOiBwYXRoLm5vcm1hbGl6ZShcbiAgICAgICAgcGF0aC5qb2luKFxuICAgICAgICAgIC4uLihbY2RrT3V0cHV0RGlyLCB0aGlzLnByb3BzPy5idWlsZE9wdGlvbnM/Lm91dGRpcl0uZmlsdGVyKFxuICAgICAgICAgICAgQm9vbGVhbixcbiAgICAgICAgICApIGFzIHN0cmluZ1tdKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBvdXRmaWxlOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxufVxuIl19
package/lib/code.d.ts CHANGED
@@ -1,87 +1,134 @@
1
1
  import { ResourceBindOptions } from '@aws-cdk/aws-lambda';
2
+ import { Location } from '@aws-cdk/aws-s3';
2
3
  import { CfnResource, Construct } from '@aws-cdk/core';
3
- import { EsbuildAssetProps, EsbuildProps, JavaScriptAsset as JSAsset, TypeScriptAsset as TSAsset } from './asset';
4
+ import { AssetBaseProps, AssetProps, JavaScriptAsset as JSAsset, TypeScriptAsset as TSAsset } from './asset';
5
+ import { EntryPoints } from './bundler';
4
6
  /**
5
7
  * @stability stable
6
8
  */
7
- export interface Location {
8
- /**
9
- * @stability stable
10
- */
11
- readonly bucketName: string;
9
+ export interface CodeConfig {
12
10
  /**
11
+ * The location of the code in S3.
12
+ *
13
13
  * @stability stable
14
14
  */
15
- readonly objectKey: string;
15
+ readonly s3Location: Location;
16
16
  }
17
17
  /**
18
18
  * @stability stable
19
19
  */
20
- export interface CodeConfig {
21
- /**
22
- * @stability stable
23
- */
24
- readonly s3Location?: Location;
25
- /**
26
- * @stability stable
27
- */
28
- readonly inlineCode?: string;
20
+ export interface JavaScriptCodeProps extends AssetBaseProps {
29
21
  }
30
- declare type JavaScriptCodeProps = EsbuildProps;
31
- declare type TypeScriptCodeProps = EsbuildProps;
32
- declare abstract class Code<Props extends EsbuildProps, Asset extends JSAsset | TSAsset> {
33
- protected readonly abstract assetClass: new (scope: Construct, id: string, props: EsbuildAssetProps) => Asset;
22
+ /**
23
+ * @stability stable
24
+ */
25
+ export interface TypeScriptCodeProps extends AssetBaseProps {
26
+ }
27
+ declare abstract class Code<Props extends JavaScriptCodeProps | TypeScriptCodeProps, Asset extends JSAsset | TSAsset> {
28
+ readonly entryPoints: EntryPoints;
29
+ protected abstract readonly assetClass: new (scope: Construct, id: string, props: AssetProps) => Asset;
34
30
  /**
35
31
  * @stability stable
36
32
  */
37
- protected props: EsbuildAssetProps;
33
+ protected props: AssetProps;
38
34
  /**
39
35
  * @stability stable
40
36
  */
41
37
  protected asset: Asset;
42
38
  /**
43
- * @stability stable
39
+ * (deprecated) Determines whether this Code is inline code or not.
40
+ *
41
+ * @deprecated this value is ignored since inline is now determined based on the the inlineCode field of CodeConfig returned from bind().
44
42
  */
45
- isInline: false;
43
+ isInline: boolean;
46
44
  /**
47
45
  *
48
46
  * @param entryPoints - Relative path to the asset code. Use `props.buildOptions.absWorkingDir` if an absolute path is required.
49
47
  * @param props - Asset properties.
50
48
  */
51
- constructor(entryPoints: EsbuildAssetProps['entryPoints'], props: Props);
49
+ constructor(entryPoints: EntryPoints, props: Props);
52
50
  /**
53
51
  * @stability stable
54
52
  */
55
53
  bind(scope: Construct): CodeConfig;
56
54
  /**
55
+ * Called after the CFN function resource has been created to allow the code class to bind to it.
56
+ *
57
+ * Specifically it's required to allow assets to add
58
+ * metadata for tooling like SAM CLI to be able to find their origins.
59
+ *
57
60
  * @stability stable
58
61
  */
59
62
  bindToResource(resource: CfnResource, options?: ResourceBindOptions): void;
60
63
  }
61
64
  /**
65
+ * Represents the deployed JavaScript Code.
66
+ *
62
67
  * @stability stable
63
68
  */
64
69
  export declare class JavaScriptCode extends Code<JavaScriptCodeProps, JSAsset> {
65
70
  /**
66
71
  * @stability stable
67
72
  */
68
- assetClass: typeof JSAsset;
73
+ protected readonly assetClass: typeof JSAsset;
74
+ /**
75
+ * @param entryPoints A relative path or list or map of relative paths to the entry points of your code from the root of the project.
76
+ * @param props Props to change the behavior of the bundler.
77
+ * @stability stable
78
+ */
79
+ constructor(
80
+ /**
81
+ * A relative path or list or map of relative paths to the entry points of your code from the root of the project.
82
+ * E.g. `src/index.ts`.
83
+ *
84
+ * @stability stable
85
+ */
86
+ entryPoints: EntryPoints,
69
87
  /**
88
+ * Props to change the behavior of the bundler.
89
+ *
90
+ * Default values for `props.buildOptions`:
91
+ * - `bundle=true`
92
+ * - `platform=node`
93
+ * - `target=nodeX` with X being the major node version running locally
94
+ *
70
95
  * @stability stable
71
96
  */
72
- constructor(entryPoints: EsbuildAssetProps['entryPoints'], props?: JavaScriptCodeProps);
97
+ props?: JavaScriptCodeProps);
73
98
  }
74
99
  /**
100
+ * Represents the deployed TypeScript Code.
101
+ *
75
102
  * @stability stable
76
103
  */
77
104
  export declare class TypeScriptCode extends Code<TypeScriptCodeProps, TSAsset> {
78
105
  /**
79
106
  * @stability stable
80
107
  */
81
- assetClass: typeof TSAsset;
108
+ protected readonly assetClass: typeof TSAsset;
82
109
  /**
110
+ * @param entryPoints A relative path or list or map of relative paths to the entry points of your code from the root of the project.
111
+ * @param props Props to change the behavior of the bundler.
112
+ * @stability stable
113
+ */
114
+ constructor(
115
+ /**
116
+ * A relative path or list or map of relative paths to the entry points of your code from the root of the project.
117
+ * E.g. `src/index.ts`.
118
+ *
119
+ * @stability stable
120
+ */
121
+ entryPoints: EntryPoints,
122
+ /**
123
+ * Props to change the behavior of the bundler.
124
+ *
125
+ * Default values for `props.buildOptions`:
126
+ * - `bundle=true`
127
+ * - `platform=node`
128
+ * - `target=nodeX` with X being the major node version running locally
129
+ *
83
130
  * @stability stable
84
131
  */
85
- constructor(entryPoints: EsbuildAssetProps['entryPoints'], props?: TypeScriptCodeProps);
132
+ props?: TypeScriptCodeProps);
86
133
  }
87
134
  export {};