diff --git a/libs/wingsdk/src/shared/bundling.ts b/libs/wingsdk/src/shared/bundling.ts index 0d38bc855e8..c8c702696c4 100644 --- a/libs/wingsdk/src/shared/bundling.ts +++ b/libs/wingsdk/src/shared/bundling.ts @@ -7,7 +7,6 @@ import { normalPath } from "./misc"; const SDK_PATH = normalPath(resolve(__dirname, "..", "..")); export interface Bundle { - entrypointPath: string; directory: string; hash: string; outfilePath: string; @@ -87,7 +86,6 @@ export function createBundle( .digest("hex"); return { - entrypointPath: outfile, directory: outdir, hash: codeHash, outfilePath: outfile, diff --git a/libs/wingsdk/src/target-sim/function.inflight.ts b/libs/wingsdk/src/target-sim/function.inflight.ts index 2234b4bdd8a..39b4c252a4c 100644 --- a/libs/wingsdk/src/target-sim/function.inflight.ts +++ b/libs/wingsdk/src/target-sim/function.inflight.ts @@ -147,7 +147,7 @@ export class Function implements IFunctionClient, ISimulatorResourceInstance { throw new Error("Bundle not created"); } - return new Sandbox(this.bundle.entrypointPath, { + return new Sandbox(this.bundle.outfilePath, { env: { ...this.env, WING_SIMULATOR_CALLER: this.context.resourceHandle, diff --git a/libs/wingsdk/src/target-sim/service.inflight.ts b/libs/wingsdk/src/target-sim/service.inflight.ts index 5531e34a23f..f75733d7cbb 100644 --- a/libs/wingsdk/src/target-sim/service.inflight.ts +++ b/libs/wingsdk/src/target-sim/service.inflight.ts @@ -82,7 +82,7 @@ export class Service implements IServiceClient, ISimulatorResourceInstance { return; } - this.sandbox = new Sandbox(this.bundle.entrypointPath, { + this.sandbox = new Sandbox(this.bundle.outfilePath, { env: { ...this.environmentVariables, WING_SIMULATOR_URL: this.context.serverUrl, diff --git a/libs/wingsdk/src/target-tf-azure/function.ts b/libs/wingsdk/src/target-tf-azure/function.ts index 6c321583526..d4c8ff89393 100644 --- a/libs/wingsdk/src/target-tf-azure/function.ts +++ b/libs/wingsdk/src/target-tf-azure/function.ts @@ -192,7 +192,7 @@ export class Function extends cloud.Function { // Move index.js to function name directory. Every Azure function in a function app // must be in its own folder containing an index.js and function.json files fs.mkdirSync(`${codeDir}/${this.functionName}`); - fs.renameSync(bundle.entrypointPath, `${outDir}/index.js`); + fs.renameSync(bundle.outfilePath, `${outDir}/index.js`); // As per documentation "a function must have exactly one trigger" so for now // by default a function will support http get requests diff --git a/libs/wingsdk/src/target-tf-gcp/function.ts b/libs/wingsdk/src/target-tf-gcp/function.ts index 93c99cae51c..01fa62bb869 100644 --- a/libs/wingsdk/src/target-tf-gcp/function.ts +++ b/libs/wingsdk/src/target-tf-gcp/function.ts @@ -1,5 +1,5 @@ import { writeFileSync } from "fs"; -import { join } from "path"; +import { join, basename } from "path"; import { AssetType, Lazy, TerraformAsset } from "cdktf"; import { Construct } from "constructs"; import { App } from "./app"; @@ -197,7 +197,7 @@ export class Function extends cloud.Function { packageJson, JSON.stringify( { - main: "index.js", + main: basename(bundle.outfilePath), dependencies: { "@google-cloud/functions-framework": "^3.0.0", "@google-cloud/datastore": "8.4.0", diff --git a/libs/wingsdk/test/target-tf-gcp/function.test.ts b/libs/wingsdk/test/target-tf-gcp/function.test.ts index 31be648b562..4886e151d08 100644 --- a/libs/wingsdk/test/target-tf-gcp/function.test.ts +++ b/libs/wingsdk/test/target-tf-gcp/function.test.ts @@ -1,3 +1,5 @@ +import { readdirSync, readFileSync, existsSync } from "fs"; +import { join } from "path"; import * as cdktf from "cdktf"; import { test, expect } from "vitest"; import { Function } from "../../src/cloud"; @@ -24,6 +26,22 @@ test("basic function", () => { new Function(app, "Function", inflight); const output = app.synth(); + const functionOutDir = readdirSync(app.workdir, { + recursive: true, + withFileTypes: true, + }).find((d) => d.isDirectory())!; + const packageJson = JSON.parse( + readFileSync( + join(app.workdir, functionOutDir.name, "package.json"), + "utf-8" + ) + ); + const indexFilename = "index.cjs"; + expect(packageJson.main).toBe(indexFilename); + expect( + existsSync(join(app.workdir, functionOutDir.name, indexFilename)) + ).toBeTruthy(); + // THEN expect(tfResourcesOf(output)).toEqual([ "google_cloudfunctions_function",