@nikovirtala/projen-constructs 0.3.78 → 0.3.80

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.
Files changed (45) hide show
  1. package/.jsii +326 -141
  2. package/README.md +18 -0
  3. package/docs/api/assets/search.js +1 -1
  4. package/docs/api/classes/AwsCdkConstructLibraryProject.html +1 -1
  5. package/docs/api/classes/AwsCdkTypeScriptAppProject.html +1 -1
  6. package/docs/api/classes/Bundler.html +33 -6
  7. package/docs/api/classes/Colima.html +4 -0
  8. package/docs/api/classes/JsiiProject.html +1 -1
  9. package/docs/api/classes/LambdaFunctionCodeBundle.html +22 -2
  10. package/docs/api/classes/LambdaFunctionConstructGenerator.html +4 -0
  11. package/docs/api/classes/LocalStack.html +4 -0
  12. package/docs/api/classes/ProjectGenerator.html +1 -1
  13. package/docs/api/classes/TypeScriptProject.html +1 -1
  14. package/docs/api/classes/Vitest.html +1 -1
  15. package/docs/api/functions/convertToPosixPath.html +2 -0
  16. package/docs/api/functions/renderBundleName.html +9 -1
  17. package/docs/api/index.html +8 -0
  18. package/docs/api/interfaces/Bundle.html +12 -3
  19. package/docs/api/interfaces/BundlerOptions.html +40 -4
  20. package/docs/api/interfaces/BundlingOptions.html +139 -12
  21. package/docs/api/interfaces/LambdaFunctionCodeBundleOptions.html +53 -5
  22. package/docs/api/interfaces/LambdaFunctionCodeBundlerOptions.html +26 -3
  23. package/docs/api/interfaces/LambdaFunctionConstructGeneratorOptions.html +90 -8
  24. package/docs/api/interfaces/LocalStackOptions.html +46 -4
  25. package/docs/api/interfaces/ProjectGeneratorOptions.html +1 -1
  26. package/docs/api/interfaces/VitestOptions.html +48 -3
  27. package/lib/components/bundle-lambda-function-code.d.ts +243 -0
  28. package/lib/components/bundle-lambda-function-code.js +75 -5
  29. package/lib/components/colima.d.ts +5 -0
  30. package/lib/components/colima.js +7 -2
  31. package/lib/components/homebrew.js +1 -1
  32. package/lib/components/lambda-function-construct-generator.d.ts +54 -0
  33. package/lib/components/lambda-function-construct-generator.js +7 -2
  34. package/lib/components/localstack.d.ts +32 -0
  35. package/lib/components/localstack.js +14 -2
  36. package/lib/components/mise.js +1 -1
  37. package/lib/components/typedoc.js +1 -1
  38. package/lib/components/vitest.d.ts +29 -0
  39. package/lib/components/vitest.js +38 -35
  40. package/lib/project-generator.js +1 -1
  41. package/lib/projects/awscdk-construct-library.generated.js +1 -1
  42. package/lib/projects/awscdk-typescript-app.generated.js +1 -1
  43. package/lib/projects/jsii.generated.js +1 -1
  44. package/lib/projects/typescript.generated.js +1 -1
  45. package/package.json +1 -1
package/.jsii CHANGED
@@ -4196,7 +4196,7 @@
4196
4196
  },
4197
4197
  "name": "@nikovirtala/projen-constructs",
4198
4198
  "readme": {
4199
- "markdown": "# @nikovirtala/projen-constructs\n\nProjen project types with standard configuration for consistent project setup across all repositories.\n\n## Installation\n\n```bash\npnpm add -D @nikovirtala/projen-constructs projen constructs\n```\n\nRequires pnpm 11 and `projen` >= 0.101.27. `@mrgrain/cdk-esbuild` and `constructs` are peer\ndependencies as well.\n\nTo create a project from scratch:\n\n```bash\npnpm dlx projen new --from @nikovirtala/projen-constructs aws_cdk_construct_library\n```\n\n## Features\n\n- **Standard Configuration**: Opinionated defaults for author, release branch, package manager, Node.js, TypeScript, and tooling\n- **Automatic Project Type Discovery**: Generates the `ProjectType` enum from Projen's JSII manifest (19 project types)\n- **Component System**: Reusable components (Vitest, TypeDoc, Mise, Homebrew, Colima, LocalStack, Lambda bundling)\n- **Code Generation**: `ProjectGenerator` creates project classes with standard configuration\n- **ES Modules**: TypeScript and CDK App projects use ES modules (JSII uses CommonJS)\n- **Code Quality**: Biome for formatting and linting\n- **Testing**: Vitest with coverage\n- **Auto-merge**: Enabled with auto-approve\n- **VSCode**: Recommended extensions and settings\n- **mise**: Node version management\n\n## Standard Configuration\n\n- **Author**: Niko Virtala (niko.virtala@hey.com)\n- **Default Release Branch**: main\n- **Package Manager**: pnpm 11.20.0\n- **Node Version**: 24.19.0\n- **TypeScript**: 6.0.3\n- **CDK Version**: 2.263.0 (for CDK projects)\n- **JSII Version**: ~6.0.3 (for JSII projects)\n\nThe AWS CDK, Node.js and TypeScript versions live in `src/versions.json` and are refreshed by the\n`update-versions` task, which the dependency upgrade workflow runs.\n\n### pnpm\n\npnpm reads its settings from `pnpm-workspace.yaml`, not `.npmrc`, since pnpm 11. Generated projects\nget:\n\n| Setting | Value | Reason |\n| ---------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------ |\n| `nodeLinker` | `hoisted` | jsii tooling resolves dependencies from a flat `node_modules` |\n| `allowBuilds` | `esbuild: true` | esbuild links its platform binary in a postinstall script, and pnpm 11 fails an install with ignored builds |\n| `verifyDepsBeforeRun` | `false` | projen resolves the task `PATH` with `$(pnpm -c exec ...)`, which otherwise re-enters `pnpm install` and deadlocks |\n| `minimumReleaseAge` | `0` | the pnpm 11 default of 1440 minutes makes pnpm write `minimumReleaseAgeExclude` entries into this generated file |\n\n### TypeScript configuration\n\nProjen renders three configs, and none of them should be edited directly:\n\n- `tsconfig.json` compiles `src` to `lib`. For JSII projects, jsii validates it against its `strict`\n rule set, so it only carries compiler options jsii accepts.\n- `test/tsconfig.json` extends it and is type-check only. This is the config Vitest type checking and\n the editor use, and the one `tsconfigDev` points at.\n- `projenrc/tsconfig.json` covers `.projenrc.ts`.\n\n## Customization\n\nOverride any option by passing it to the constructor:\n\n```typescript\nconst project = new JsiiProject({\n name: \"my-project\",\n repositoryUrl: \"https://github.com/nikovirtala/my-project.git\",\n minNodeVersion: \"24.0.0\",\n author: \"Custom Author\",\n authorAddress: \"custom@example.com\",\n mise: false,\n vitest: false,\n tsconfig: {\n compilerOptions: {\n noUnusedLocals: false,\n },\n },\n biomeOptions: {\n biomeConfig: {\n formatter: {\n lineWidth: 100,\n },\n },\n },\n});\n```\n\nEvery component is exposed as an enable flag (`mise`, `vitest`, ...) plus an options property\n(`miseOptions`, `vitestOptions`, ...).\n\n## Usage\n\n### Projects\n\n#### AWS CDK Construct Library Project\n\n```typescript\nimport { AwsCdkConstructLibraryProject } from \"@nikovirtala/projen-constructs\";\n\nconst project = new AwsCdkConstructLibraryProject({\n name: \"my-cdk-construct\",\n repositoryUrl: \"https://github.com/nikovirtala/my-cdk-construct.git\",\n});\n\nproject.synth();\n```\n\n#### AWS CDK TypeScript App Project\n\n```typescript\nimport { AwsCdkTypeScriptAppProject } from \"@nikovirtala/projen-constructs\";\n\nconst project = new AwsCdkTypeScriptAppProject({\n name: \"my-cdk-app\",\n repositoryUrl: \"https://github.com/nikovirtala/my-cdk-app.git\",\n});\n\nproject.synth();\n```\n\n#### JSII Project\n\n```typescript\nimport { JsiiProject } from \"@nikovirtala/projen-constructs\";\n\nconst project = new JsiiProject({\n name: \"my-jsii-project\",\n repositoryUrl: \"https://github.com/nikovirtala/my-jsii-project.git\",\n});\n\nproject.synth();\n```\n\n#### TypeScript Project\n\n```typescript\nimport { TypeScriptProject } from \"@nikovirtala/projen-constructs\";\n\nconst project = new TypeScriptProject({\n name: \"my-typescript-project\",\n repositoryUrl: \"https://github.com/nikovirtala/my-typescript-project.git\",\n});\n\nproject.synth();\n```\n\n### Components\n\nThe package includes reusable components for common development tasks:\n\n#### Vitest\n\n[Vitest](https://vitest.dev) testing framework component.\n\n```typescript\nimport { Vitest } from \"@nikovirtala/projen-constructs\";\n\nnew Vitest(project, {\n vitestVersion: \"^4\",\n config: {\n coverageProvider: CoverageProvider.V8,\n coverageReporters: [CoverageReporter.TEXT, CoverageReporter.LCOV],\n },\n});\n```\n\nType checking runs against the project's development tsconfig (`test/tsconfig.json`) unless\n`config.typecheckTsconfig` says otherwise.\n\n#### TypeDoc\n\n[TypeDoc](https://typedoc.org) documentation generation component.\n\n```typescript\nimport { TypeDoc, EntryPointStrategy } from \"@nikovirtala/projen-constructs\";\n\nnew TypeDoc(project, {\n version: \"^0.28\",\n typeDocConfig: {\n entryPointStrategy: EntryPointStrategy.EXPAND,\n out: \"docs/api\",\n exclude: [\"**/*.test.ts\"],\n },\n});\n```\n\n#### Mise\n\n[Mise](https://mise.jdx.dev) dev tools/runtimes management component.\n\n```typescript\nimport { Mise } from \"@nikovirtala/projen-constructs\";\n\nnew Mise(project, {\n nodeVersion: \"24.19.0\",\n});\n```\n\n#### Homebrew\n\n[Homebrew](https://brew.sh) package management component. Writes a `Brewfile` and adds an\n`install:homebrew` task that bootstraps Homebrew and runs `brew bundle`.\n\n```typescript\nimport { Homebrew } from \"@nikovirtala/projen-constructs\";\n\nconst homebrew = new Homebrew(project, {\n packages: [\"jq\", \"yq\"],\n});\n\nhomebrew.addPackage(\"gh\");\n```\n\n#### Colima\n\n[Colima](https://github.com/abiosoft/colima) container runtime component. Alternative for Docker.\n\n```typescript\nimport { Colima } from \"@nikovirtala/projen-constructs\";\n\nnew Colima(project);\n```\n\n#### LocalStack\n\n[LocalStack](https://www.localstack.cloud) AWS emulation component.\n\n```typescript\nimport { LocalStack } from \"@nikovirtala/projen-constructs\";\n\nnew LocalStack(project, {\n services: [\"s3\", \"lambda\", \"dynamodb\"],\n port: 4566,\n debug: true,\n});\n```\n\n#### LambdaFunctionConstructGenerator\n\nGenerates AWS CDK Lambda Function constructs and bundles their code.\n\n```typescript\nimport { LambdaFunctionConstructGenerator } from \"@nikovirtala/projen-constructs\";\n\nnew LambdaFunctionConstructGenerator(project, {\n sourceDir: \"src/handlers\",\n outputDir: \"src/constructs/lambda\",\n filePattern: \"*.lambda.ts\",\n esbuildOptions: {\n minify: true,\n sourcemap: true,\n },\n});\n```\n\n#### Bundler\n\nLow-level bundling utilities for Lambda functions.\n\n```typescript\nimport {\n Bundler,\n LambdaFunctionCodeBundle,\n} from \"@nikovirtala/projen-constructs\";\n\nconst bundler = new Bundler(project, {\n assetsDir: \"assets\",\n esbuildVersion: \"^0.25\",\n});\n\nnew LambdaFunctionCodeBundle(project, {\n entrypoint: \"src/my-function.lambda.ts\",\n extension: \".lambda.ts\",\n});\n```\n\n#### ProjectGenerator\n\nGenerates TypeScript project classes with standard configuration.\n\n```typescript\nimport { ProjectGenerator, ProjectType } from \"@nikovirtala/projen-constructs\";\n\nnew ProjectGenerator(project, {\n name: \"TypeScriptProject\",\n projectType: ProjectType.TYPE_SCRIPT_PROJECT,\n filePath: \"./src/projects/typescript.generated.ts\",\n components: [\n { componentClass: Mise },\n { componentClass: Vitest }, // Auto-detects VitestOptions from JSII manifest\n ],\n});\n```\n\nFeatures:\n\n- Automatically generates the `ProjectType` enum from Projen's JSII manifest\n- Auto-detects component options types from JSII manifests\n- Strips Projen's `@pjnew` annotation from `packageManager`, which `projen new` would otherwise\n render into a generated `.projenrc.ts` as the package manager that ran the command\n- Validates paths to prevent directory traversal attacks\n- Structured error handling with custom error classes\n\n## Development\n\nThis project is managed by Projen and generates itself: `.projenrc.ts` defines the project using the\n`JsiiProject` type from `src/`. Configuration changes belong in `.projenrc.ts`, never in the\ngenerated files.\n\n```bash\npnpm projen # synthesize project files\npnpm build # synthesize, compile, test and package\npnpm test # biome, vitest, typedoc\npnpm test:watch # vitest in watch mode\npnpm test:update # update snapshots\npnpm biome # format and lint\npnpm docgen # regenerate API.md from the .jsii manifest\npnpm update-versions # refresh src/versions.json\npnpm upgrade # upgrade dependencies\n```\n\n### Build process\n\n```mermaid\nflowchart TD\n projenrc[\".projenrc.ts\"]\n\n subgraph synthesize[\"default (synthesize)\"]\n direction TB\n synth[\"tsx .projenrc.ts\"]\n generator[\"ProjectGenerator\"]\n generated[\"src/project-type.ts<br/>src/projects/*.generated.ts<br/>src/projects/*-options.generated.ts\"]\n projenfiles[\"package.json, tsconfig.json,<br/>pnpm-workspace.yaml, workflows, ...\"]\n brew[\"install:homebrew<br/>brew bundle\"]\n definecfg[\"bundle-vitest-define-config<br/>esbuild → lib/vitest-define-config.js\"]\n\n synth --> generator --> generated\n synth --> projenfiles\n synth --> brew\n synth --> definecfg\n end\n\n subgraph compile[\"compile\"]\n direction TB\n jsii[\"jsii<br/>validates tsconfig.json against the strict rule set\"]\n lib[\"lib/**\"]\n manifest[\".jsii manifest\"]\n\n jsii --> lib\n jsii --> manifest\n end\n\n subgraph test[\"test\"]\n direction TB\n biome[\"biome check --write\"]\n vitest[\"vitest run<br/>+ type checking\"]\n typedoc[\"typedoc → docs/api\"]\n\n biome --> vitest --> typedoc\n end\n\n subgraph package[\"package\"]\n direction TB\n pacmak[\"jsii-pacmak<br/>--pack-command 'pnpm pack'\"]\n dist[\"dist/js/*.tgz\"]\n\n pacmak --> dist\n end\n\n projenrc --> synthesize\n synthesize --> compile\n compile --> test\n test --> package\n\n manifest -. \"component options FQNs<br/>read on the next synthesis\" .-> generator\n docgen[\"docgen<br/>jsii-docgen → API.md\"]\n manifest --> docgen\n\n classDef artifact fill:#eef,stroke:#88a\n class generated,projenfiles,lib,manifest,dist artifact\n```\n\nThe dashed edge is the part worth knowing about: `ProjectGenerator` reads the committed `.jsii`\nmanifest to resolve component options types, so the manifest produced by `compile` feeds the *next*\nsynthesis. This is why `.jsii` is committed rather than ignored. A component options type that is\nmissing from the manifest is reported as a warning and its options property is left out of the\ngenerated interface, which is expected only while a new component is being introduced: compile once,\nthen synthesize again.\n\n`package` runs `package:js` on CI and `package-all` locally; both end up in `jsii-pacmak`.\n`docgen` is not part of `build` and has to be run explicitly after the manifest changes.\n"
4199
+ "markdown": "# @nikovirtala/projen-constructs\n\nProjen project types with standard configuration for consistent project setup across all repositories.\n\n## Installation\n\n```bash\npnpm add -D @nikovirtala/projen-constructs projen constructs\n```\n\nRequires pnpm 11 and `projen` >= 0.101.27. `@mrgrain/cdk-esbuild` and `constructs` are peer\ndependencies as well.\n\nTo create a project from scratch:\n\n```bash\npnpm dlx projen new --from @nikovirtala/projen-constructs aws_cdk_construct_library\n```\n\n## Features\n\n- **Standard Configuration**: Opinionated defaults for author, release branch, package manager, Node.js, TypeScript, and tooling\n- **Automatic Project Type Discovery**: Generates the `ProjectType` enum from Projen's JSII manifest (19 project types)\n- **Component System**: Reusable components (Vitest, TypeDoc, Mise, Homebrew, Colima, LocalStack, Lambda bundling)\n- **Code Generation**: `ProjectGenerator` creates project classes with standard configuration\n- **ES Modules**: TypeScript and CDK App projects use ES modules (JSII uses CommonJS)\n- **Code Quality**: Biome for formatting and linting\n- **Testing**: Vitest with coverage\n- **Auto-merge**: Enabled with auto-approve\n- **VSCode**: Recommended extensions and settings\n- **mise**: Node version management\n\n## Standard Configuration\n\n- **Author**: Niko Virtala (niko.virtala@hey.com)\n- **Default Release Branch**: main\n- **Package Manager**: pnpm 11.20.0\n- **Node Version**: 24.19.0\n- **TypeScript**: 6.0.3\n- **CDK Version**: 2.263.0 (for CDK projects)\n- **JSII Version**: ~6.0.3 (for JSII projects)\n\nThe AWS CDK, Node.js and TypeScript versions live in `src/versions.json` and are refreshed by the\n`update-versions` task, which the dependency upgrade workflow runs.\n\n### pnpm\n\npnpm reads its settings from `pnpm-workspace.yaml`, not `.npmrc`, since pnpm 11. Generated projects\nget:\n\n| Setting | Value | Reason |\n| ---------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------ |\n| `nodeLinker` | `hoisted` | jsii tooling resolves dependencies from a flat `node_modules` |\n| `allowBuilds` | `esbuild: true` | esbuild links its platform binary in a postinstall script, and pnpm 11 fails an install with ignored builds |\n| `verifyDepsBeforeRun` | `false` | projen resolves the task `PATH` with `$(pnpm -c exec ...)`, which otherwise re-enters `pnpm install` and deadlocks |\n| `minimumReleaseAge` | `0` | the pnpm 11 default of 1440 minutes makes pnpm write `minimumReleaseAgeExclude` entries into this generated file |\n\n### TypeScript configuration\n\nProjen renders three configs, and none of them should be edited directly:\n\n- `tsconfig.json` compiles `src` to `lib`. For JSII projects, jsii validates it against its `strict`\n rule set, so it only carries compiler options jsii accepts.\n- `test/tsconfig.json` extends it and is type-check only. This is the config Vitest type checking and\n the editor use, and the one `tsconfigDev` points at.\n- `projenrc/tsconfig.json` covers `.projenrc.ts`.\n\n## Customization\n\nOverride any option by passing it to the constructor:\n\n```typescript\nconst project = new JsiiProject({\n name: \"my-project\",\n repositoryUrl: \"https://github.com/nikovirtala/my-project.git\",\n minNodeVersion: \"24.0.0\",\n author: \"Custom Author\",\n authorAddress: \"custom@example.com\",\n mise: false,\n vitest: false,\n tsconfig: {\n compilerOptions: {\n noUnusedLocals: false,\n },\n },\n biomeOptions: {\n biomeConfig: {\n formatter: {\n lineWidth: 100,\n },\n },\n },\n});\n```\n\nEvery component is exposed as an enable flag (`mise`, `vitest`, ...) plus an options property\n(`miseOptions`, `vitestOptions`, ...).\n\n## Usage\n\n### Projects\n\n#### AWS CDK Construct Library Project\n\n```typescript\nimport { AwsCdkConstructLibraryProject } from \"@nikovirtala/projen-constructs\";\n\nconst project = new AwsCdkConstructLibraryProject({\n name: \"my-cdk-construct\",\n repositoryUrl: \"https://github.com/nikovirtala/my-cdk-construct.git\",\n});\n\nproject.synth();\n```\n\n#### AWS CDK TypeScript App Project\n\n```typescript\nimport { AwsCdkTypeScriptAppProject } from \"@nikovirtala/projen-constructs\";\n\nconst project = new AwsCdkTypeScriptAppProject({\n name: \"my-cdk-app\",\n repositoryUrl: \"https://github.com/nikovirtala/my-cdk-app.git\",\n});\n\nproject.synth();\n```\n\n#### JSII Project\n\n```typescript\nimport { JsiiProject } from \"@nikovirtala/projen-constructs\";\n\nconst project = new JsiiProject({\n name: \"my-jsii-project\",\n repositoryUrl: \"https://github.com/nikovirtala/my-jsii-project.git\",\n});\n\nproject.synth();\n```\n\n#### TypeScript Project\n\n```typescript\nimport { TypeScriptProject } from \"@nikovirtala/projen-constructs\";\n\nconst project = new TypeScriptProject({\n name: \"my-typescript-project\",\n repositoryUrl: \"https://github.com/nikovirtala/my-typescript-project.git\",\n});\n\nproject.synth();\n```\n\n### Components\n\nThe package includes reusable components for common development tasks:\n\n#### Vitest\n\n[Vitest](https://vitest.dev) testing framework component.\n\n```typescript\nimport { Vitest } from \"@nikovirtala/projen-constructs\";\n\nnew Vitest(project, {\n vitestVersion: \"^4\",\n config: {\n coverageProvider: CoverageProvider.V8,\n coverageReporters: [CoverageReporter.TEXT, CoverageReporter.LCOV],\n },\n});\n```\n\nType checking runs against the project's development tsconfig (`test/tsconfig.json`) unless\n`config.typecheckTsconfig` says otherwise.\n\nFor Vitest settings that `config` doesn't cover, use `extraTestConfig` (merged into `test`) and\n`extraConfig` (top-level options next to `test`):\n\n```typescript\nnew Vitest(project, {\n extraTestConfig: {\n setupFiles: [\"test/setup.ts\"],\n },\n extraConfig: {\n resolve: { alias: { \"@\": \"/src\" } },\n },\n});\n```\n\n`extraTestConfig` is deep-merged over the generated `test` options: objects merge, and other values\n(including arrays) replace the generated value. Both options are rendered as JSON, so their values\ncan't contain functions or regular expressions, which rules out plugins.\n\n#### TypeDoc\n\n[TypeDoc](https://typedoc.org) documentation generation component.\n\n```typescript\nimport { TypeDoc, EntryPointStrategy } from \"@nikovirtala/projen-constructs\";\n\nnew TypeDoc(project, {\n version: \"^0.28\",\n typeDocConfig: {\n entryPointStrategy: EntryPointStrategy.EXPAND,\n out: \"docs/api\",\n exclude: [\"**/*.test.ts\"],\n },\n});\n```\n\n#### Mise\n\n[Mise](https://mise.jdx.dev) dev tools/runtimes management component.\n\n```typescript\nimport { Mise } from \"@nikovirtala/projen-constructs\";\n\nnew Mise(project, {\n nodeVersion: \"24.19.0\",\n});\n```\n\n#### Homebrew\n\n[Homebrew](https://brew.sh) package management component. Writes a `Brewfile` and adds an\n`install:homebrew` task that bootstraps Homebrew and runs `brew bundle`.\n\n```typescript\nimport { Homebrew } from \"@nikovirtala/projen-constructs\";\n\nconst homebrew = new Homebrew(project, {\n packages: [\"jq\", \"yq\"],\n});\n\nhomebrew.addPackage(\"gh\");\n```\n\n#### Colima\n\n[Colima](https://github.com/abiosoft/colima) container runtime component. Alternative for Docker.\n\n```typescript\nimport { Colima } from \"@nikovirtala/projen-constructs\";\n\nnew Colima(project);\n```\n\n#### LocalStack\n\n[LocalStack](https://www.localstack.cloud) AWS emulation component.\n\n```typescript\nimport { LocalStack } from \"@nikovirtala/projen-constructs\";\n\nnew LocalStack(project, {\n services: [\"s3\", \"lambda\", \"dynamodb\"],\n port: 4566,\n debug: true,\n});\n```\n\n#### LambdaFunctionConstructGenerator\n\nGenerates AWS CDK Lambda Function constructs and bundles their code.\n\n```typescript\nimport { LambdaFunctionConstructGenerator } from \"@nikovirtala/projen-constructs\";\n\nnew LambdaFunctionConstructGenerator(project, {\n sourceDir: \"src/handlers\",\n outputDir: \"src/constructs/lambda\",\n filePattern: \"*.lambda.ts\",\n esbuildOptions: {\n minify: true,\n sourcemap: true,\n },\n});\n```\n\n#### Bundler\n\nLow-level bundling utilities for Lambda functions.\n\n```typescript\nimport {\n Bundler,\n LambdaFunctionCodeBundle,\n} from \"@nikovirtala/projen-constructs\";\n\nconst bundler = new Bundler(project, {\n assetsDir: \"assets\",\n esbuildVersion: \"^0.25\",\n});\n\nnew LambdaFunctionCodeBundle(project, {\n entrypoint: \"src/my-function.lambda.ts\",\n extension: \".lambda.ts\",\n});\n```\n\n#### ProjectGenerator\n\nGenerates TypeScript project classes with standard configuration.\n\n```typescript\nimport { ProjectGenerator, ProjectType } from \"@nikovirtala/projen-constructs\";\n\nnew ProjectGenerator(project, {\n name: \"TypeScriptProject\",\n projectType: ProjectType.TYPE_SCRIPT_PROJECT,\n filePath: \"./src/projects/typescript.generated.ts\",\n components: [\n { componentClass: Mise },\n { componentClass: Vitest }, // Auto-detects VitestOptions from JSII manifest\n ],\n});\n```\n\nFeatures:\n\n- Automatically generates the `ProjectType` enum from Projen's JSII manifest\n- Auto-detects component options types from JSII manifests\n- Strips Projen's `@pjnew` annotation from `packageManager`, which `projen new` would otherwise\n render into a generated `.projenrc.ts` as the package manager that ran the command\n- Validates paths to prevent directory traversal attacks\n- Structured error handling with custom error classes\n\n## Development\n\nThis project is managed by Projen and generates itself: `.projenrc.ts` defines the project using the\n`JsiiProject` type from `src/`. Configuration changes belong in `.projenrc.ts`, never in the\ngenerated files.\n\n```bash\npnpm projen # synthesize project files\npnpm build # synthesize, compile, test and package\npnpm test # biome, vitest, typedoc\npnpm test:watch # vitest in watch mode\npnpm test:update # update snapshots\npnpm biome # format and lint\npnpm docgen # regenerate API.md from the .jsii manifest\npnpm update-versions # refresh src/versions.json\npnpm upgrade # upgrade dependencies\n```\n\n### Build process\n\n```mermaid\nflowchart TD\n projenrc[\".projenrc.ts\"]\n\n subgraph synthesize[\"default (synthesize)\"]\n direction TB\n synth[\"tsx .projenrc.ts\"]\n generator[\"ProjectGenerator\"]\n generated[\"src/project-type.ts<br/>src/projects/*.generated.ts<br/>src/projects/*-options.generated.ts\"]\n projenfiles[\"package.json, tsconfig.json,<br/>pnpm-workspace.yaml, workflows, ...\"]\n brew[\"install:homebrew<br/>brew bundle\"]\n definecfg[\"bundle-vitest-define-config<br/>esbuild → lib/vitest-define-config.js\"]\n\n synth --> generator --> generated\n synth --> projenfiles\n synth --> brew\n synth --> definecfg\n end\n\n subgraph compile[\"compile\"]\n direction TB\n jsii[\"jsii<br/>validates tsconfig.json against the strict rule set\"]\n lib[\"lib/**\"]\n manifest[\".jsii manifest\"]\n\n jsii --> lib\n jsii --> manifest\n end\n\n subgraph test[\"test\"]\n direction TB\n biome[\"biome check --write\"]\n vitest[\"vitest run<br/>+ type checking\"]\n typedoc[\"typedoc → docs/api\"]\n\n biome --> vitest --> typedoc\n end\n\n subgraph package[\"package\"]\n direction TB\n pacmak[\"jsii-pacmak<br/>--pack-command 'pnpm pack'\"]\n dist[\"dist/js/*.tgz\"]\n\n pacmak --> dist\n end\n\n projenrc --> synthesize\n synthesize --> compile\n compile --> test\n test --> package\n\n manifest -. \"component options FQNs<br/>read on the next synthesis\" .-> generator\n docgen[\"docgen<br/>jsii-docgen → API.md\"]\n manifest --> docgen\n\n classDef artifact fill:#eef,stroke:#88a\n class generated,projenfiles,lib,manifest,dist artifact\n```\n\nThe dashed edge is the part worth knowing about: `ProjectGenerator` reads the committed `.jsii`\nmanifest to resolve component options types, so the manifest produced by `compile` feeds the *next*\nsynthesis. This is why `.jsii` is committed rather than ignored. A component options type that is\nmissing from the manifest is reported as a warning and its options property is left out of the\ngenerated interface, which is expected only while a new component is being introduced: compile once,\nthen synthesize again.\n\n`package` runs `package:js` on CI and `package-all` locally; both end up in `jsii-pacmak`.\n`docgen` is not part of `build` and has to be run explicitly after the manifest changes.\n"
4200
4200
  },
4201
4201
  "repository": {
4202
4202
  "type": "git",
@@ -10989,25 +10989,27 @@
10989
10989
  "assembly": "@nikovirtala/projen-constructs",
10990
10990
  "datatype": true,
10991
10991
  "docs": {
10992
- "stability": "stable"
10992
+ "stability": "stable",
10993
+ "summary": "A bundle created by `Bundler.addBundle`."
10993
10994
  },
10994
10995
  "fqn": "@nikovirtala/projen-constructs.Bundle",
10995
10996
  "kind": "interface",
10996
10997
  "locationInModule": {
10997
10998
  "filename": "src/components/bundle-lambda-function-code.ts",
10998
- "line": 158
10999
+ "line": 235
10999
11000
  },
11000
11001
  "name": "Bundle",
11001
11002
  "properties": [
11002
11003
  {
11003
11004
  "abstract": true,
11004
11005
  "docs": {
11005
- "stability": "stable"
11006
+ "stability": "stable",
11007
+ "summary": "The task that produces this bundle."
11006
11008
  },
11007
11009
  "immutable": true,
11008
11010
  "locationInModule": {
11009
11011
  "filename": "src/components/bundle-lambda-function-code.ts",
11010
- "line": 159
11012
+ "line": 239
11011
11013
  },
11012
11014
  "name": "bundleTask",
11013
11015
  "type": {
@@ -11017,12 +11019,13 @@
11017
11019
  {
11018
11020
  "abstract": true,
11019
11021
  "docs": {
11020
- "stability": "stable"
11022
+ "stability": "stable",
11023
+ "summary": "Base directory containing the output file (relative to project root)."
11021
11024
  },
11022
11025
  "immutable": true,
11023
11026
  "locationInModule": {
11024
11027
  "filename": "src/components/bundle-lambda-function-code.ts",
11025
- "line": 161
11028
+ "line": 249
11026
11029
  },
11027
11030
  "name": "outdir",
11028
11031
  "type": {
@@ -11032,12 +11035,13 @@
11032
11035
  {
11033
11036
  "abstract": true,
11034
11037
  "docs": {
11035
- "stability": "stable"
11038
+ "stability": "stable",
11039
+ "summary": "Location of the output file (relative to project root)."
11036
11040
  },
11037
11041
  "immutable": true,
11038
11042
  "locationInModule": {
11039
11043
  "filename": "src/components/bundle-lambda-function-code.ts",
11040
- "line": 160
11044
+ "line": 244
11041
11045
  },
11042
11046
  "name": "outfile",
11043
11047
  "type": {
@@ -11051,16 +11055,18 @@
11051
11055
  "assembly": "@nikovirtala/projen-constructs",
11052
11056
  "base": "projen.Component",
11053
11057
  "docs": {
11054
- "stability": "stable"
11058
+ "stability": "stable",
11059
+ "summary": "Adds support for bundling JavaScript applications and dependencies into a single file."
11055
11060
  },
11056
11061
  "fqn": "@nikovirtala/projen-constructs.Bundler",
11057
11062
  "initializer": {
11058
11063
  "docs": {
11059
- "stability": "stable"
11064
+ "stability": "stable",
11065
+ "summary": "Creates a `Bundler`."
11060
11066
  },
11061
11067
  "locationInModule": {
11062
11068
  "filename": "src/components/bundle-lambda-function-code.ts",
11063
- "line": 50
11069
+ "line": 106
11064
11070
  },
11065
11071
  "parameters": [
11066
11072
  {
@@ -11081,20 +11087,25 @@
11081
11087
  "kind": "class",
11082
11088
  "locationInModule": {
11083
11089
  "filename": "src/components/bundle-lambda-function-code.ts",
11084
- "line": 37
11090
+ "line": 76
11085
11091
  },
11086
11092
  "methods": [
11087
11093
  {
11088
11094
  "docs": {
11089
- "stability": "stable"
11095
+ "returns": "A bundler",
11096
+ "stability": "stable",
11097
+ "summary": "Returns the `Bundler` instance associated with a project or `undefined` if there is no Bundler."
11090
11098
  },
11091
11099
  "locationInModule": {
11092
11100
  "filename": "src/components/bundle-lambda-function-code.ts",
11093
- "line": 38
11101
+ "line": 84
11094
11102
  },
11095
11103
  "name": "of",
11096
11104
  "parameters": [
11097
11105
  {
11106
+ "docs": {
11107
+ "summary": "The project."
11108
+ },
11098
11109
  "name": "project",
11099
11110
  "type": {
11100
11111
  "fqn": "projen.Project"
@@ -11111,21 +11122,28 @@
11111
11122
  },
11112
11123
  {
11113
11124
  "docs": {
11114
- "stability": "stable"
11125
+ "stability": "stable",
11126
+ "summary": "Adds a task to the project which bundles a specific entrypoint and all of its dependencies into a single javascript output file."
11115
11127
  },
11116
11128
  "locationInModule": {
11117
11129
  "filename": "src/components/bundle-lambda-function-code.ts",
11118
- "line": 71
11130
+ "line": 140
11119
11131
  },
11120
11132
  "name": "addBundle",
11121
11133
  "parameters": [
11122
11134
  {
11135
+ "docs": {
11136
+ "summary": "The relative path of the artifact within the project."
11137
+ },
11123
11138
  "name": "entrypoint",
11124
11139
  "type": {
11125
11140
  "primitive": "string"
11126
11141
  }
11127
11142
  },
11128
11143
  {
11144
+ "docs": {
11145
+ "summary": "Bundling options."
11146
+ },
11129
11147
  "name": "options",
11130
11148
  "type": {
11131
11149
  "fqn": "@nikovirtala/projen-constructs.BundlingOptions"
@@ -11143,12 +11161,13 @@
11143
11161
  "properties": [
11144
11162
  {
11145
11163
  "docs": {
11146
- "stability": "stable"
11164
+ "stability": "stable",
11165
+ "summary": "Root bundle directory."
11147
11166
  },
11148
11167
  "immutable": true,
11149
11168
  "locationInModule": {
11150
11169
  "filename": "src/components/bundle-lambda-function-code.ts",
11151
- "line": 44
11170
+ "line": 97
11152
11171
  },
11153
11172
  "name": "bundledir",
11154
11173
  "type": {
@@ -11157,12 +11176,14 @@
11157
11176
  },
11158
11177
  {
11159
11178
  "docs": {
11160
- "stability": "stable"
11179
+ "remarks": "If the project doesn't have a \"bundle\" task, it will be created and spawned\nduring the pre-compile phase (unless `addToPreCompile` is `false`).",
11180
+ "stability": "stable",
11181
+ "summary": "Gets or creates the singleton \"bundle\" task of the project."
11161
11182
  },
11162
11183
  "immutable": true,
11163
11184
  "locationInModule": {
11164
11185
  "filename": "src/components/bundle-lambda-function-code.ts",
11165
- "line": 58
11186
+ "line": 120
11166
11187
  },
11167
11188
  "name": "bundleTask",
11168
11189
  "type": {
@@ -11171,12 +11192,13 @@
11171
11192
  },
11172
11193
  {
11173
11194
  "docs": {
11174
- "stability": "stable"
11195
+ "stability": "stable",
11196
+ "summary": "The semantic version requirement for `esbuild` (if defined)."
11175
11197
  },
11176
11198
  "immutable": true,
11177
11199
  "locationInModule": {
11178
11200
  "filename": "src/components/bundle-lambda-function-code.ts",
11179
- "line": 43
11201
+ "line": 92
11180
11202
  },
11181
11203
  "name": "esbuildVersion",
11182
11204
  "optional": true,
@@ -11191,25 +11213,28 @@
11191
11213
  "assembly": "@nikovirtala/projen-constructs",
11192
11214
  "datatype": true,
11193
11215
  "docs": {
11194
- "stability": "stable"
11216
+ "stability": "stable",
11217
+ "summary": "Options for `Bundler`."
11195
11218
  },
11196
11219
  "fqn": "@nikovirtala/projen-constructs.BundlerOptions",
11197
11220
  "kind": "interface",
11198
11221
  "locationInModule": {
11199
11222
  "filename": "src/components/bundle-lambda-function-code.ts",
11200
- "line": 30
11223
+ "line": 41
11201
11224
  },
11202
11225
  "name": "BundlerOptions",
11203
11226
  "properties": [
11204
11227
  {
11205
11228
  "abstract": true,
11206
11229
  "docs": {
11207
- "stability": "stable"
11230
+ "default": "true",
11231
+ "stability": "stable",
11232
+ "summary": "Install the `bundle` command as a pre-compile phase."
11208
11233
  },
11209
11234
  "immutable": true,
11210
11235
  "locationInModule": {
11211
11236
  "filename": "src/components/bundle-lambda-function-code.ts",
11212
- "line": 33
11237
+ "line": 61
11213
11238
  },
11214
11239
  "name": "addToPreCompile",
11215
11240
  "optional": true,
@@ -11220,12 +11245,14 @@
11220
11245
  {
11221
11246
  "abstract": true,
11222
11247
  "docs": {
11223
- "stability": "stable"
11248
+ "default": "\"assets\"",
11249
+ "stability": "stable",
11250
+ "summary": "Output directory for all bundles."
11224
11251
  },
11225
11252
  "immutable": true,
11226
11253
  "locationInModule": {
11227
11254
  "filename": "src/components/bundle-lambda-function-code.ts",
11228
- "line": 32
11255
+ "line": 54
11229
11256
  },
11230
11257
  "name": "assetsDir",
11231
11258
  "optional": true,
@@ -11236,12 +11263,14 @@
11236
11263
  {
11237
11264
  "abstract": true,
11238
11265
  "docs": {
11239
- "stability": "stable"
11266
+ "default": "- no specific version (implies latest)",
11267
+ "stability": "stable",
11268
+ "summary": "The semantic version requirement for `esbuild`."
11240
11269
  },
11241
11270
  "immutable": true,
11242
11271
  "locationInModule": {
11243
11272
  "filename": "src/components/bundle-lambda-function-code.ts",
11244
- "line": 31
11273
+ "line": 47
11245
11274
  },
11246
11275
  "name": "esbuildVersion",
11247
11276
  "optional": true,
@@ -11252,12 +11281,15 @@
11252
11281
  {
11253
11282
  "abstract": true,
11254
11283
  "docs": {
11255
- "stability": "stable"
11284
+ "default": "- no loaders",
11285
+ "remarks": "Loaders are appended to the esbuild command by `--loader:.extension=loader`",
11286
+ "stability": "stable",
11287
+ "summary": "Map of file extensions (without dot) and loaders to use for this file type."
11256
11288
  },
11257
11289
  "immutable": true,
11258
11290
  "locationInModule": {
11259
11291
  "filename": "src/components/bundle-lambda-function-code.ts",
11260
- "line": 34
11292
+ "line": 69
11261
11293
  },
11262
11294
  "name": "loaders",
11263
11295
  "optional": true,
@@ -11277,25 +11309,30 @@
11277
11309
  "assembly": "@nikovirtala/projen-constructs",
11278
11310
  "datatype": true,
11279
11311
  "docs": {
11280
- "stability": "stable"
11312
+ "stability": "stable",
11313
+ "summary": "Options for bundling."
11281
11314
  },
11282
11315
  "fqn": "@nikovirtala/projen-constructs.BundlingOptions",
11283
11316
  "kind": "interface",
11284
11317
  "locationInModule": {
11285
11318
  "filename": "src/components/bundle-lambda-function-code.ts",
11286
- "line": 164
11319
+ "line": 255
11287
11320
  },
11288
11321
  "name": "BundlingOptions",
11289
11322
  "properties": [
11290
11323
  {
11291
11324
  "abstract": true,
11292
11325
  "docs": {
11293
- "stability": "stable"
11326
+ "default": "\":js=import { createRequire as topLevelCreateRequire } from 'module';const require = topLevelCreateRequire(import.meta.url)\"",
11327
+ "remarks": "The default defines `require` so that CommonJS dependencies work in an ES module bundle.",
11328
+ "see": "https://esbuild.github.io/api/#banner",
11329
+ "stability": "stable",
11330
+ "summary": "esbuild `--banner` argument, appended as is (so it starts with the file type, e.g. `:js=`)."
11294
11331
  },
11295
11332
  "immutable": true,
11296
11333
  "locationInModule": {
11297
11334
  "filename": "src/components/bundle-lambda-function-code.ts",
11298
- "line": 176
11335
+ "line": 359
11299
11336
  },
11300
11337
  "name": "banner",
11301
11338
  "optional": true,
@@ -11306,12 +11343,15 @@
11306
11343
  {
11307
11344
  "abstract": true,
11308
11345
  "docs": {
11309
- "stability": "stable"
11346
+ "default": "[]",
11347
+ "remarks": "Instead of being bundled, the import will be preserved (using require for\nthe iife and cjs formats and using import for the esm format) and will be\nevaluated at run time instead.\n\nThis has several uses. First of all, it can be used to trim unnecessary\ncode from your bundle for a code path that you know will never be executed.\nFor example, a package may contain code that only runs in node but you will\nonly be using that package in the browser. It can also be used to import\ncode in node at run time from a package that cannot be bundled. For\nexample, the fsevents package contains a native extension, which esbuild\ndoesn't support.",
11348
+ "stability": "stable",
11349
+ "summary": "You can mark a file or a package as external to exclude it from your build."
11310
11350
  },
11311
11351
  "immutable": true,
11312
11352
  "locationInModule": {
11313
11353
  "filename": "src/components/bundle-lambda-function-code.ts",
11314
- "line": 165
11354
+ "line": 272
11315
11355
  },
11316
11356
  "name": "externals",
11317
11357
  "optional": true,
@@ -11327,12 +11367,15 @@
11327
11367
  {
11328
11368
  "abstract": true,
11329
11369
  "docs": {
11330
- "stability": "stable"
11370
+ "default": "\"esm\"",
11371
+ "see": "https://esbuild.github.io/api/#format",
11372
+ "stability": "stable",
11373
+ "summary": "Output format for the generated JavaScript files: `\"iife\"`, `\"cjs\"` or `\"esm\"`."
11331
11374
  },
11332
11375
  "immutable": true,
11333
11376
  "locationInModule": {
11334
11377
  "filename": "src/components/bundle-lambda-function-code.ts",
11335
- "line": 172
11378
+ "line": 325
11336
11379
  },
11337
11380
  "name": "format",
11338
11381
  "optional": true,
@@ -11343,12 +11386,15 @@
11343
11386
  {
11344
11387
  "abstract": true,
11345
11388
  "docs": {
11346
- "stability": "stable"
11389
+ "default": "- the loaders of the `Bundler`",
11390
+ "remarks": "Loaders are appended to the esbuild command by `--loader:.extension=loader`",
11391
+ "stability": "stable",
11392
+ "summary": "Map of file extensions (without dot) and loaders to use for this file type."
11347
11393
  },
11348
11394
  "immutable": true,
11349
11395
  "locationInModule": {
11350
11396
  "filename": "src/components/bundle-lambda-function-code.ts",
11351
- "line": 171
11397
+ "line": 317
11352
11398
  },
11353
11399
  "name": "loaders",
11354
11400
  "optional": true,
@@ -11364,12 +11410,15 @@
11364
11410
  {
11365
11411
  "abstract": true,
11366
11412
  "docs": {
11367
- "stability": "stable"
11413
+ "default": "\"module,main\"",
11414
+ "see": "https://esbuild.github.io/api/#main-fields",
11415
+ "stability": "stable",
11416
+ "summary": "Comma-separated list of `package.json` fields esbuild tries when resolving a package."
11368
11417
  },
11369
11418
  "immutable": true,
11370
11419
  "locationInModule": {
11371
11420
  "filename": "src/components/bundle-lambda-function-code.ts",
11372
- "line": 175
11421
+ "line": 349
11373
11422
  },
11374
11423
  "name": "mainFields",
11375
11424
  "optional": true,
@@ -11380,12 +11429,15 @@
11380
11429
  {
11381
11430
  "abstract": true,
11382
11431
  "docs": {
11383
- "stability": "stable"
11432
+ "default": "true",
11433
+ "see": "https://esbuild.github.io/api/#minify",
11434
+ "stability": "stable",
11435
+ "summary": "Minify the bundle."
11384
11436
  },
11385
11437
  "immutable": true,
11386
11438
  "locationInModule": {
11387
11439
  "filename": "src/components/bundle-lambda-function-code.ts",
11388
- "line": 173
11440
+ "line": 333
11389
11441
  },
11390
11442
  "name": "minify",
11391
11443
  "optional": true,
@@ -11396,12 +11448,14 @@
11396
11448
  {
11397
11449
  "abstract": true,
11398
11450
  "docs": {
11399
- "stability": "stable"
11451
+ "default": "\"index.mjs\"",
11452
+ "stability": "stable",
11453
+ "summary": "Bundler output path relative to the asset's output directory."
11400
11454
  },
11401
11455
  "immutable": true,
11402
11456
  "locationInModule": {
11403
11457
  "filename": "src/components/bundle-lambda-function-code.ts",
11404
- "line": 169
11458
+ "line": 300
11405
11459
  },
11406
11460
  "name": "outfile",
11407
11461
  "optional": true,
@@ -11412,12 +11466,14 @@
11412
11466
  {
11413
11467
  "abstract": true,
11414
11468
  "docs": {
11415
- "stability": "stable"
11469
+ "default": "\"node\"",
11470
+ "stability": "stable",
11471
+ "summary": "esbuild platform."
11416
11472
  },
11417
11473
  "immutable": true,
11418
11474
  "locationInModule": {
11419
11475
  "filename": "src/components/bundle-lambda-function-code.ts",
11420
- "line": 168
11476
+ "line": 293
11421
11477
  },
11422
11478
  "name": "platform",
11423
11479
  "optional": true,
@@ -11428,12 +11484,14 @@
11428
11484
  {
11429
11485
  "abstract": true,
11430
11486
  "docs": {
11431
- "stability": "stable"
11487
+ "default": "true",
11488
+ "stability": "stable",
11489
+ "summary": "Include a source map in the bundle."
11432
11490
  },
11433
11491
  "immutable": true,
11434
11492
  "locationInModule": {
11435
11493
  "filename": "src/components/bundle-lambda-function-code.ts",
11436
- "line": 166
11494
+ "line": 279
11437
11495
  },
11438
11496
  "name": "sourcemap",
11439
11497
  "optional": true,
@@ -11444,12 +11502,15 @@
11444
11502
  {
11445
11503
  "abstract": true,
11446
11504
  "docs": {
11447
- "stability": "stable"
11505
+ "default": "false",
11506
+ "see": "https://esbuild.github.io/api/#sources-content",
11507
+ "stability": "stable",
11508
+ "summary": "Include the original source code in the source map."
11448
11509
  },
11449
11510
  "immutable": true,
11450
11511
  "locationInModule": {
11451
11512
  "filename": "src/components/bundle-lambda-function-code.ts",
11452
- "line": 174
11513
+ "line": 341
11453
11514
  },
11454
11515
  "name": "sourcesContent",
11455
11516
  "optional": true,
@@ -11460,12 +11521,14 @@
11460
11521
  {
11461
11522
  "abstract": true,
11462
11523
  "docs": {
11463
- "stability": "stable"
11524
+ "default": "\"esnext\"",
11525
+ "stability": "stable",
11526
+ "summary": "esbuild target."
11464
11527
  },
11465
11528
  "immutable": true,
11466
11529
  "locationInModule": {
11467
11530
  "filename": "src/components/bundle-lambda-function-code.ts",
11468
- "line": 167
11531
+ "line": 286
11469
11532
  },
11470
11533
  "name": "target",
11471
11534
  "optional": true,
@@ -11476,12 +11539,15 @@
11476
11539
  {
11477
11540
  "abstract": true,
11478
11541
  "docs": {
11479
- "stability": "stable"
11542
+ "default": "- no tsconfig is passed to esbuild",
11543
+ "remarks": "`LambdaFunctionCodeBundle` always sets this to the project's development tsconfig.",
11544
+ "stability": "stable",
11545
+ "summary": "The path of the tsconfig.json file to use for bundling."
11480
11546
  },
11481
11547
  "immutable": true,
11482
11548
  "locationInModule": {
11483
11549
  "filename": "src/components/bundle-lambda-function-code.ts",
11484
- "line": 170
11550
+ "line": 309
11485
11551
  },
11486
11552
  "name": "tsconfigPath",
11487
11553
  "optional": true,
@@ -11496,7 +11562,9 @@
11496
11562
  "assembly": "@nikovirtala/projen-constructs",
11497
11563
  "base": "projen.Component",
11498
11564
  "docs": {
11499
- "stability": "stable"
11565
+ "remarks": "Adds Colima support to your project with automatic installation and startup.",
11566
+ "stability": "stable",
11567
+ "summary": "Colima component for projen projects."
11500
11568
  },
11501
11569
  "fqn": "@nikovirtala/projen-constructs.Colima",
11502
11570
  "initializer": {
@@ -11505,7 +11573,7 @@
11505
11573
  },
11506
11574
  "locationInModule": {
11507
11575
  "filename": "src/components/colima.ts",
11508
- "line": 8
11576
+ "line": 13
11509
11577
  },
11510
11578
  "parameters": [
11511
11579
  {
@@ -11519,7 +11587,7 @@
11519
11587
  "kind": "class",
11520
11588
  "locationInModule": {
11521
11589
  "filename": "src/components/colima.ts",
11522
- "line": 7
11590
+ "line": 12
11523
11591
  },
11524
11592
  "name": "Colima",
11525
11593
  "symbolId": "src/components/colima:Colima"
@@ -15264,25 +15332,35 @@
15264
15332
  "assembly": "@nikovirtala/projen-constructs",
15265
15333
  "base": "projen.Component",
15266
15334
  "docs": {
15267
- "stability": "stable"
15335
+ "example": "new Bundler(myProject);\nnew LambdaFunctionCodeBundle(myProject, {\n entrypoint: \"src/foo.lambda.ts\",\n extension: \".lambda.ts\",\n});",
15336
+ "remarks": "Adds a task to the project's `Bundler` that uses `esbuild` to bundle the\nhandler into the assets directory, and generates a file (e.g. `src/foo-code.ts`)\nexporting an `aws_lambda.Code` constant (e.g. `FooFunctionCode`) that points to\nthe bundle. Pass it as the `code` of an `aws_lambda.Function`.\n\nRequires a `Bundler` component in the project.",
15337
+ "stability": "stable",
15338
+ "summary": "Generates a pre-bundled AWS Lambda Function code asset from handler code."
15268
15339
  },
15269
15340
  "fqn": "@nikovirtala/projen-constructs.LambdaFunctionCodeBundle",
15270
15341
  "initializer": {
15271
15342
  "docs": {
15272
- "stability": "stable"
15343
+ "stability": "stable",
15344
+ "summary": "Defines a pre-bundled AWS Lambda Function code asset from handler code."
15273
15345
  },
15274
15346
  "locationInModule": {
15275
15347
  "filename": "src/components/bundle-lambda-function-code.ts",
15276
- "line": 188
15348
+ "line": 433
15277
15349
  },
15278
15350
  "parameters": [
15279
15351
  {
15352
+ "docs": {
15353
+ "summary": "The project to use."
15354
+ },
15280
15355
  "name": "project",
15281
15356
  "type": {
15282
15357
  "fqn": "projen.Project"
15283
15358
  }
15284
15359
  },
15285
15360
  {
15361
+ "docs": {
15362
+ "summary": "Options."
15363
+ },
15286
15364
  "name": "options",
15287
15365
  "type": {
15288
15366
  "fqn": "@nikovirtala/projen-constructs.LambdaFunctionCodeBundleOptions"
@@ -15293,7 +15371,7 @@
15293
15371
  "kind": "class",
15294
15372
  "locationInModule": {
15295
15373
  "filename": "src/components/bundle-lambda-function-code.ts",
15296
- "line": 187
15374
+ "line": 426
15297
15375
  },
15298
15376
  "name": "LambdaFunctionCodeBundle",
15299
15377
  "symbolId": "src/components/bundle-lambda-function-code:LambdaFunctionCodeBundle"
@@ -15302,25 +15380,29 @@
15302
15380
  "assembly": "@nikovirtala/projen-constructs",
15303
15381
  "datatype": true,
15304
15382
  "docs": {
15305
- "stability": "stable"
15383
+ "stability": "stable",
15384
+ "summary": "Options for `LambdaFunctionCodeBundle`."
15306
15385
  },
15307
15386
  "fqn": "@nikovirtala/projen-constructs.LambdaFunctionCodeBundleOptions",
15308
15387
  "kind": "interface",
15309
15388
  "locationInModule": {
15310
15389
  "filename": "src/components/bundle-lambda-function-code.ts",
15311
- "line": 179
15390
+ "line": 365
15312
15391
  },
15313
15392
  "name": "LambdaFunctionCodeBundleOptions",
15314
15393
  "properties": [
15315
15394
  {
15316
15395
  "abstract": true,
15317
15396
  "docs": {
15318
- "stability": "stable"
15397
+ "example": "\"src/subdir/foo.lambda.ts\"",
15398
+ "remarks": "This is relative to the root directory of the project.",
15399
+ "stability": "stable",
15400
+ "summary": "A path from the project root directory to a TypeScript file which contains the AWS Lambda handler entrypoint (exports a `handler` function)."
15319
15401
  },
15320
15402
  "immutable": true,
15321
15403
  "locationInModule": {
15322
15404
  "filename": "src/components/bundle-lambda-function-code.ts",
15323
- "line": 180
15405
+ "line": 374
15324
15406
  },
15325
15407
  "name": "entrypoint",
15326
15408
  "type": {
@@ -15330,12 +15412,14 @@
15330
15412
  {
15331
15413
  "abstract": true,
15332
15414
  "docs": {
15333
- "stability": "stable"
15415
+ "example": "\".lambda.ts\"",
15416
+ "stability": "stable",
15417
+ "summary": "Suffix for AWS Lambda handlers."
15334
15418
  },
15335
15419
  "immutable": true,
15336
15420
  "locationInModule": {
15337
15421
  "filename": "src/components/bundle-lambda-function-code.ts",
15338
- "line": 181
15422
+ "line": 381
15339
15423
  },
15340
15424
  "name": "extension",
15341
15425
  "type": {
@@ -15345,12 +15429,14 @@
15345
15429
  {
15346
15430
  "abstract": true,
15347
15431
  "docs": {
15348
- "stability": "stable"
15432
+ "default": "- the defaults of `BundlingOptions`",
15433
+ "stability": "stable",
15434
+ "summary": "Bundling options for this AWS Lambda Function."
15349
15435
  },
15350
15436
  "immutable": true,
15351
15437
  "locationInModule": {
15352
15438
  "filename": "src/components/bundle-lambda-function-code.ts",
15353
- "line": 184
15439
+ "line": 405
15354
15440
  },
15355
15441
  "name": "bundlingOptions",
15356
15442
  "optional": true,
@@ -15361,12 +15447,15 @@
15361
15447
  {
15362
15448
  "abstract": true,
15363
15449
  "docs": {
15364
- "stability": "stable"
15450
+ "default": "- The path of the entrypoint file, with the `-code.ts` suffix\ninstead of the extension (e.g. `src/foo-code.ts`).",
15451
+ "remarks": "This file should also be\nunder the source tree.",
15452
+ "stability": "stable",
15453
+ "summary": "The name of the generated TypeScript source file."
15365
15454
  },
15366
15455
  "immutable": true,
15367
15456
  "locationInModule": {
15368
15457
  "filename": "src/components/bundle-lambda-function-code.ts",
15369
- "line": 182
15458
+ "line": 390
15370
15459
  },
15371
15460
  "name": "constructFile",
15372
15461
  "optional": true,
@@ -15377,12 +15466,14 @@
15377
15466
  {
15378
15467
  "abstract": true,
15379
15468
  "docs": {
15380
- "stability": "stable"
15469
+ "default": "- A pascal cased version of the name of the entrypoint file, with\nthe suffix `FunctionCode` (e.g. `ResizeImageFunctionCode`).",
15470
+ "stability": "stable",
15471
+ "summary": "The name of the generated `aws_lambda.Code` constant."
15381
15472
  },
15382
15473
  "immutable": true,
15383
15474
  "locationInModule": {
15384
15475
  "filename": "src/components/bundle-lambda-function-code.ts",
15385
- "line": 183
15476
+ "line": 398
15386
15477
  },
15387
15478
  "name": "constructName",
15388
15479
  "optional": true,
@@ -15407,7 +15498,7 @@
15407
15498
  },
15408
15499
  "locationInModule": {
15409
15500
  "filename": "src/components/bundle-lambda-function-code.ts",
15410
- "line": 250
15501
+ "line": 516
15411
15502
  },
15412
15503
  "parameters": [
15413
15504
  {
@@ -15427,7 +15518,7 @@
15427
15518
  "kind": "class",
15428
15519
  "locationInModule": {
15429
15520
  "filename": "src/components/bundle-lambda-function-code.ts",
15430
- "line": 249
15521
+ "line": 515
15431
15522
  },
15432
15523
  "name": "LambdaFunctionCodeBundler",
15433
15524
  "symbolId": "src/components/bundle-lambda-function-code:LambdaFunctionCodeBundler"
@@ -15436,25 +15527,28 @@
15436
15527
  "assembly": "@nikovirtala/projen-constructs",
15437
15528
  "datatype": true,
15438
15529
  "docs": {
15439
- "stability": "stable"
15530
+ "stability": "stable",
15531
+ "summary": "Options for `LambdaFunctionCodeBundler`."
15440
15532
  },
15441
15533
  "fqn": "@nikovirtala/projen-constructs.LambdaFunctionCodeBundlerOptions",
15442
15534
  "kind": "interface",
15443
15535
  "locationInModule": {
15444
15536
  "filename": "src/components/bundle-lambda-function-code.ts",
15445
- "line": 240
15537
+ "line": 488
15446
15538
  },
15447
15539
  "name": "LambdaFunctionCodeBundlerOptions",
15448
15540
  "properties": [
15449
15541
  {
15450
15542
  "abstract": true,
15451
15543
  "docs": {
15452
- "stability": "stable"
15544
+ "example": "\".lambda.ts\"",
15545
+ "stability": "stable",
15546
+ "summary": "Locate files with the given extension."
15453
15547
  },
15454
15548
  "immutable": true,
15455
15549
  "locationInModule": {
15456
15550
  "filename": "src/components/bundle-lambda-function-code.ts",
15457
- "line": 241
15551
+ "line": 494
15458
15552
  },
15459
15553
  "name": "extension",
15460
15554
  "type": {
@@ -15464,12 +15558,13 @@
15464
15558
  {
15465
15559
  "abstract": true,
15466
15560
  "docs": {
15467
- "stability": "stable"
15561
+ "stability": "stable",
15562
+ "summary": "Project source tree (relative to project output directory)."
15468
15563
  },
15469
15564
  "immutable": true,
15470
15565
  "locationInModule": {
15471
15566
  "filename": "src/components/bundle-lambda-function-code.ts",
15472
- "line": 242
15567
+ "line": 499
15473
15568
  },
15474
15569
  "name": "srcdir",
15475
15570
  "type": {
@@ -15479,12 +15574,15 @@
15479
15574
  {
15480
15575
  "abstract": true,
15481
15576
  "docs": {
15482
- "stability": "stable"
15577
+ "default": "- the defaults of `LambdaFunctionCodeBundleOptions`",
15578
+ "remarks": "The `entrypoint` and `extension` given here are ignored: each bundle uses its\ndiscovered entrypoint and the `extension` of the bundler.",
15579
+ "stability": "stable",
15580
+ "summary": "Options for AWS Lambda Function bundling, applied to every discovered entrypoint."
15483
15581
  },
15484
15582
  "immutable": true,
15485
15583
  "locationInModule": {
15486
15584
  "filename": "src/components/bundle-lambda-function-code.ts",
15487
- "line": 243
15585
+ "line": 509
15488
15586
  },
15489
15587
  "name": "bundleOptions",
15490
15588
  "optional": true,
@@ -15499,7 +15597,9 @@
15499
15597
  "assembly": "@nikovirtala/projen-constructs",
15500
15598
  "base": "projen.Component",
15501
15599
  "docs": {
15502
- "stability": "stable"
15600
+ "remarks": "The bundling happens during projen execution, not during CDK synth, enabling a \"build once, deploy many\" pattern.",
15601
+ "stability": "stable",
15602
+ "summary": "A projen component that generates AWS CDK Lambda Function constructs and bundles their code assets using esbuild."
15503
15603
  },
15504
15604
  "fqn": "@nikovirtala/projen-constructs.LambdaFunctionConstructGenerator",
15505
15605
  "initializer": {
@@ -15508,7 +15608,7 @@
15508
15608
  },
15509
15609
  "locationInModule": {
15510
15610
  "filename": "src/components/lambda-function-construct-generator.ts",
15511
- "line": 29
15611
+ "line": 90
15512
15612
  },
15513
15613
  "parameters": [
15514
15614
  {
@@ -15529,7 +15629,7 @@
15529
15629
  "kind": "class",
15530
15630
  "locationInModule": {
15531
15631
  "filename": "src/components/lambda-function-construct-generator.ts",
15532
- "line": 18
15632
+ "line": 79
15533
15633
  },
15534
15634
  "name": "LambdaFunctionConstructGenerator",
15535
15635
  "properties": [
@@ -15540,7 +15640,7 @@
15540
15640
  "immutable": true,
15541
15641
  "locationInModule": {
15542
15642
  "filename": "src/components/lambda-function-construct-generator.ts",
15543
- "line": 22
15643
+ "line": 83
15544
15644
  },
15545
15645
  "name": "esbuildOptions",
15546
15646
  "type": {
@@ -15554,7 +15654,7 @@
15554
15654
  "immutable": true,
15555
15655
  "locationInModule": {
15556
15656
  "filename": "src/components/lambda-function-construct-generator.ts",
15557
- "line": 21
15657
+ "line": 82
15558
15658
  },
15559
15659
  "name": "filePattern",
15560
15660
  "type": {
@@ -15568,7 +15668,7 @@
15568
15668
  "immutable": true,
15569
15669
  "locationInModule": {
15570
15670
  "filename": "src/components/lambda-function-construct-generator.ts",
15571
- "line": 20
15671
+ "line": 81
15572
15672
  },
15573
15673
  "name": "outputDir",
15574
15674
  "type": {
@@ -15582,7 +15682,7 @@
15582
15682
  "immutable": true,
15583
15683
  "locationInModule": {
15584
15684
  "filename": "src/components/lambda-function-construct-generator.ts",
15585
- "line": 19
15685
+ "line": 80
15586
15686
  },
15587
15687
  "name": "sourceDir",
15588
15688
  "type": {
@@ -15596,7 +15696,7 @@
15596
15696
  "immutable": true,
15597
15697
  "locationInModule": {
15598
15698
  "filename": "src/components/lambda-function-construct-generator.ts",
15599
- "line": 24
15699
+ "line": 85
15600
15700
  },
15601
15701
  "name": "baseConstructClass",
15602
15702
  "optional": true,
@@ -15611,7 +15711,7 @@
15611
15711
  "immutable": true,
15612
15712
  "locationInModule": {
15613
15713
  "filename": "src/components/lambda-function-construct-generator.ts",
15614
- "line": 23
15714
+ "line": 84
15615
15715
  },
15616
15716
  "name": "baseConstructImport",
15617
15717
  "optional": true,
@@ -15626,7 +15726,7 @@
15626
15726
  "immutable": true,
15627
15727
  "locationInModule": {
15628
15728
  "filename": "src/components/lambda-function-construct-generator.ts",
15629
- "line": 25
15729
+ "line": 86
15630
15730
  },
15631
15731
  "name": "baseConstructPackage",
15632
15732
  "optional": true,
@@ -15641,25 +15741,28 @@
15641
15741
  "assembly": "@nikovirtala/projen-constructs",
15642
15742
  "datatype": true,
15643
15743
  "docs": {
15644
- "stability": "stable"
15744
+ "stability": "stable",
15745
+ "summary": "Options for the LambdaFunctionConstructGenerator."
15645
15746
  },
15646
15747
  "fqn": "@nikovirtala/projen-constructs.LambdaFunctionConstructGeneratorOptions",
15647
15748
  "kind": "interface",
15648
15749
  "locationInModule": {
15649
15750
  "filename": "src/components/lambda-function-construct-generator.ts",
15650
- "line": 7
15751
+ "line": 10
15651
15752
  },
15652
15753
  "name": "LambdaFunctionConstructGeneratorOptions",
15653
15754
  "properties": [
15654
15755
  {
15655
15756
  "abstract": true,
15656
15757
  "docs": {
15657
- "stability": "stable"
15758
+ "default": "true",
15759
+ "stability": "stable",
15760
+ "summary": "Whether to automatically add the required dependencies."
15658
15761
  },
15659
15762
  "immutable": true,
15660
15763
  "locationInModule": {
15661
15764
  "filename": "src/components/lambda-function-construct-generator.ts",
15662
- "line": 12
15765
+ "line": 44
15663
15766
  },
15664
15767
  "name": "addDependencies",
15665
15768
  "optional": true,
@@ -15670,12 +15773,15 @@
15670
15773
  {
15671
15774
  "abstract": true,
15672
15775
  "docs": {
15673
- "stability": "stable"
15776
+ "default": "\"aws_lambda.Function\"",
15777
+ "example": "\"NodejsFunction\"",
15778
+ "stability": "stable",
15779
+ "summary": "Name of the construct class to extend."
15674
15780
  },
15675
15781
  "immutable": true,
15676
15782
  "locationInModule": {
15677
15783
  "filename": "src/components/lambda-function-construct-generator.ts",
15678
- "line": 14
15784
+ "line": 62
15679
15785
  },
15680
15786
  "name": "baseConstructClass",
15681
15787
  "optional": true,
@@ -15686,12 +15792,15 @@
15686
15792
  {
15687
15793
  "abstract": true,
15688
15794
  "docs": {
15689
- "stability": "stable"
15795
+ "default": "\"import { aws_lambda } from 'aws-cdk-lib';\"",
15796
+ "example": "\"import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';\"",
15797
+ "stability": "stable",
15798
+ "summary": "Import statement for the base construct."
15690
15799
  },
15691
15800
  "immutable": true,
15692
15801
  "locationInModule": {
15693
15802
  "filename": "src/components/lambda-function-construct-generator.ts",
15694
- "line": 13
15803
+ "line": 53
15695
15804
  },
15696
15805
  "name": "baseConstructImport",
15697
15806
  "optional": true,
@@ -15702,12 +15811,15 @@
15702
15811
  {
15703
15812
  "abstract": true,
15704
15813
  "docs": {
15705
- "stability": "stable"
15814
+ "default": "\"aws-cdk-lib\"",
15815
+ "example": "\"aws-cdk-lib\"",
15816
+ "stability": "stable",
15817
+ "summary": "Package name to add as dependency for the base construct."
15706
15818
  },
15707
15819
  "immutable": true,
15708
15820
  "locationInModule": {
15709
15821
  "filename": "src/components/lambda-function-construct-generator.ts",
15710
- "line": 15
15822
+ "line": 71
15711
15823
  },
15712
15824
  "name": "baseConstructPackage",
15713
15825
  "optional": true,
@@ -15718,12 +15830,14 @@
15718
15830
  {
15719
15831
  "abstract": true,
15720
15832
  "docs": {
15721
- "stability": "stable"
15833
+ "default": "{}",
15834
+ "stability": "stable",
15835
+ "summary": "esbuild options to customize the bundling process."
15722
15836
  },
15723
15837
  "immutable": true,
15724
15838
  "locationInModule": {
15725
15839
  "filename": "src/components/lambda-function-construct-generator.ts",
15726
- "line": 11
15840
+ "line": 37
15727
15841
  },
15728
15842
  "name": "esbuildOptions",
15729
15843
  "optional": true,
@@ -15734,12 +15848,14 @@
15734
15848
  {
15735
15849
  "abstract": true,
15736
15850
  "docs": {
15737
- "stability": "stable"
15851
+ "default": "\"*.lambda.ts\"",
15852
+ "stability": "stable",
15853
+ "summary": "File pattern to identify Lambda Function handlers."
15738
15854
  },
15739
15855
  "immutable": true,
15740
15856
  "locationInModule": {
15741
15857
  "filename": "src/components/lambda-function-construct-generator.ts",
15742
- "line": 10
15858
+ "line": 30
15743
15859
  },
15744
15860
  "name": "filePattern",
15745
15861
  "optional": true,
@@ -15750,12 +15866,14 @@
15750
15866
  {
15751
15867
  "abstract": true,
15752
15868
  "docs": {
15753
- "stability": "stable"
15869
+ "default": "\"src/constructs/lambda\"",
15870
+ "stability": "stable",
15871
+ "summary": "Output directory where Lambda Function constructs will be generated."
15754
15872
  },
15755
15873
  "immutable": true,
15756
15874
  "locationInModule": {
15757
15875
  "filename": "src/components/lambda-function-construct-generator.ts",
15758
- "line": 9
15876
+ "line": 23
15759
15877
  },
15760
15878
  "name": "outputDir",
15761
15879
  "optional": true,
@@ -15766,12 +15884,14 @@
15766
15884
  {
15767
15885
  "abstract": true,
15768
15886
  "docs": {
15769
- "stability": "stable"
15887
+ "default": "\"src/handlers\"",
15888
+ "stability": "stable",
15889
+ "summary": "Source directory where Lambda Function handlers are located."
15770
15890
  },
15771
15891
  "immutable": true,
15772
15892
  "locationInModule": {
15773
15893
  "filename": "src/components/lambda-function-construct-generator.ts",
15774
- "line": 8
15894
+ "line": 16
15775
15895
  },
15776
15896
  "name": "sourceDir",
15777
15897
  "optional": true,
@@ -15786,7 +15906,9 @@
15786
15906
  "assembly": "@nikovirtala/projen-constructs",
15787
15907
  "base": "projen.Component",
15788
15908
  "docs": {
15789
- "stability": "stable"
15909
+ "remarks": "Adds LocalStack support to your project with automatic Docker/Colima setup.",
15910
+ "stability": "stable",
15911
+ "summary": "LocalStack component for projen projects."
15790
15912
  },
15791
15913
  "fqn": "@nikovirtala/projen-constructs.LocalStack",
15792
15914
  "initializer": {
@@ -15795,7 +15917,7 @@
15795
15917
  },
15796
15918
  "locationInModule": {
15797
15919
  "filename": "src/components/localstack.ts",
15798
- "line": 15
15920
+ "line": 50
15799
15921
  },
15800
15922
  "parameters": [
15801
15923
  {
@@ -15816,7 +15938,7 @@
15816
15938
  "kind": "class",
15817
15939
  "locationInModule": {
15818
15940
  "filename": "src/components/localstack.ts",
15819
- "line": 14
15941
+ "line": 49
15820
15942
  },
15821
15943
  "name": "LocalStack",
15822
15944
  "symbolId": "src/components/localstack:LocalStack"
@@ -15825,25 +15947,28 @@
15825
15947
  "assembly": "@nikovirtala/projen-constructs",
15826
15948
  "datatype": true,
15827
15949
  "docs": {
15828
- "stability": "stable"
15950
+ "stability": "stable",
15951
+ "summary": "Options for LocalStack component."
15829
15952
  },
15830
15953
  "fqn": "@nikovirtala/projen-constructs.LocalStackOptions",
15831
15954
  "kind": "interface",
15832
15955
  "locationInModule": {
15833
15956
  "filename": "src/components/localstack.ts",
15834
- "line": 7
15957
+ "line": 10
15835
15958
  },
15836
15959
  "name": "LocalStackOptions",
15837
15960
  "properties": [
15838
15961
  {
15839
15962
  "abstract": true,
15840
15963
  "docs": {
15841
- "stability": "stable"
15964
+ "default": "false",
15965
+ "stability": "stable",
15966
+ "summary": "Enable LocalStack debug mode."
15842
15967
  },
15843
15968
  "immutable": true,
15844
15969
  "locationInModule": {
15845
15970
  "filename": "src/components/localstack.ts",
15846
- "line": 10
15971
+ "line": 27
15847
15972
  },
15848
15973
  "name": "debug",
15849
15974
  "optional": true,
@@ -15854,12 +15979,16 @@
15854
15979
  {
15855
15980
  "abstract": true,
15856
15981
  "docs": {
15857
- "stability": "stable"
15982
+ "default": "- the LocalStack CLI's default image",
15983
+ "remarks": "When set, LocalStack starts with the `localstack/localstack:<imageTag>` image, passed to\n`localstack start` through the `IMAGE_NAME` environment variable. That's the community\nimage, even if a `LOCALSTACK_AUTH_TOKEN` would otherwise select the Pro image.\n\nMust be a valid Docker tag.",
15984
+ "see": "https://docs.localstack.cloud/aws/customization/configuration-options/",
15985
+ "stability": "stable",
15986
+ "summary": "LocalStack Docker image tag, e.g. `\"4.9\"` to pin a version."
15858
15987
  },
15859
15988
  "immutable": true,
15860
15989
  "locationInModule": {
15861
15990
  "filename": "src/components/localstack.ts",
15862
- "line": 11
15991
+ "line": 41
15863
15992
  },
15864
15993
  "name": "imageTag",
15865
15994
  "optional": true,
@@ -15870,12 +15999,14 @@
15870
15999
  {
15871
16000
  "abstract": true,
15872
16001
  "docs": {
15873
- "stability": "stable"
16002
+ "default": "4566",
16003
+ "stability": "stable",
16004
+ "summary": "LocalStack gateway port."
15874
16005
  },
15875
16006
  "immutable": true,
15876
16007
  "locationInModule": {
15877
16008
  "filename": "src/components/localstack.ts",
15878
- "line": 9
16009
+ "line": 21
15879
16010
  },
15880
16011
  "name": "port",
15881
16012
  "optional": true,
@@ -15886,12 +16017,14 @@
15886
16017
  {
15887
16018
  "abstract": true,
15888
16019
  "docs": {
15889
- "stability": "stable"
16020
+ "default": "- all services enabled",
16021
+ "stability": "stable",
16022
+ "summary": "LocalStack services to enable."
15890
16023
  },
15891
16024
  "immutable": true,
15892
16025
  "locationInModule": {
15893
16026
  "filename": "src/components/localstack.ts",
15894
- "line": 8
16027
+ "line": 15
15895
16028
  },
15896
16029
  "name": "services",
15897
16030
  "optional": true,
@@ -20575,7 +20708,7 @@
20575
20708
  },
20576
20709
  "locationInModule": {
20577
20710
  "filename": "src/components/vitest.ts",
20578
- "line": 317
20711
+ "line": 344
20579
20712
  },
20580
20713
  "parameters": [
20581
20714
  {
@@ -20596,7 +20729,7 @@
20596
20729
  "kind": "class",
20597
20730
  "locationInModule": {
20598
20731
  "filename": "src/components/vitest.ts",
20599
- "line": 290
20732
+ "line": 315
20600
20733
  },
20601
20734
  "methods": [
20602
20735
  {
@@ -20605,7 +20738,7 @@
20605
20738
  },
20606
20739
  "locationInModule": {
20607
20740
  "filename": "src/components/vitest.ts",
20608
- "line": 291
20741
+ "line": 316
20609
20742
  },
20610
20743
  "name": "of",
20611
20744
  "parameters": [
@@ -20630,7 +20763,7 @@
20630
20763
  },
20631
20764
  "locationInModule": {
20632
20765
  "filename": "src/components/vitest.ts",
20633
- "line": 383
20766
+ "line": 417
20634
20767
  },
20635
20768
  "name": "addExclude",
20636
20769
  "parameters": [
@@ -20648,7 +20781,7 @@
20648
20781
  },
20649
20782
  "locationInModule": {
20650
20783
  "filename": "src/components/vitest.ts",
20651
- "line": 378
20784
+ "line": 412
20652
20785
  },
20653
20786
  "name": "addInclude",
20654
20787
  "parameters": [
@@ -20666,7 +20799,7 @@
20666
20799
  },
20667
20800
  "locationInModule": {
20668
20801
  "filename": "src/components/vitest.ts",
20669
- "line": 393
20802
+ "line": 427
20670
20803
  },
20671
20804
  "name": "configureCoverageProvider",
20672
20805
  "parameters": [
@@ -20684,7 +20817,7 @@
20684
20817
  },
20685
20818
  "locationInModule": {
20686
20819
  "filename": "src/components/vitest.ts",
20687
- "line": 412
20820
+ "line": 446
20688
20821
  },
20689
20822
  "name": "configureCoverageReporters",
20690
20823
  "parameters": [
@@ -20707,7 +20840,7 @@
20707
20840
  },
20708
20841
  "locationInModule": {
20709
20842
  "filename": "src/components/vitest.ts",
20710
- "line": 388
20843
+ "line": 422
20711
20844
  },
20712
20845
  "name": "configureEnvironment",
20713
20846
  "parameters": [
@@ -20725,7 +20858,7 @@
20725
20858
  },
20726
20859
  "locationInModule": {
20727
20860
  "filename": "src/components/vitest.ts",
20728
- "line": 417
20861
+ "line": 451
20729
20862
  },
20730
20863
  "name": "configureGlobals"
20731
20864
  },
@@ -20736,7 +20869,7 @@
20736
20869
  },
20737
20870
  "locationInModule": {
20738
20871
  "filename": "src/components/vitest.ts",
20739
- "line": 368
20872
+ "line": 402
20740
20873
  },
20741
20874
  "name": "preSynthesize",
20742
20875
  "overrides": "projen.Component"
@@ -21173,6 +21306,58 @@
21173
21306
  "primitive": "string"
21174
21307
  }
21175
21308
  },
21309
+ {
21310
+ "abstract": true,
21311
+ "docs": {
21312
+ "default": "- no additional top-level options",
21313
+ "example": "{ resolve: { alias: { \"@\": \"/src\" } } }",
21314
+ "remarks": "Values are rendered as JSON, so they must be JSON-serializable (no functions or regular expressions,\nwhich rules out plugins). Use `extraTestConfig` for `test` options.",
21315
+ "see": "https://vitest.dev/config/",
21316
+ "stability": "stable",
21317
+ "summary": "Additional top-level config options, next to `test`, such as `resolve`."
21318
+ },
21319
+ "immutable": true,
21320
+ "locationInModule": {
21321
+ "filename": "src/components/vitest.ts",
21322
+ "line": 312
21323
+ },
21324
+ "name": "extraConfig",
21325
+ "optional": true,
21326
+ "type": {
21327
+ "collection": {
21328
+ "elementtype": {
21329
+ "primitive": "any"
21330
+ },
21331
+ "kind": "map"
21332
+ }
21333
+ }
21334
+ },
21335
+ {
21336
+ "abstract": true,
21337
+ "docs": {
21338
+ "default": "- no additional test options",
21339
+ "example": "{ setupFiles: [\"test/setup.ts\"], expect: { requireAssertions: true } }",
21340
+ "remarks": "Deep-merged over the options generated from `config`: objects are merged, other values (including\narrays) replace the generated value. Values are rendered as JSON, so they must be JSON-serializable\n(no functions or regular expressions).",
21341
+ "see": "https://vitest.dev/config/",
21342
+ "stability": "stable",
21343
+ "summary": "Additional `test` options for settings that `config` doesn't cover, such as `setupFiles` or `expect`."
21344
+ },
21345
+ "immutable": true,
21346
+ "locationInModule": {
21347
+ "filename": "src/components/vitest.ts",
21348
+ "line": 300
21349
+ },
21350
+ "name": "extraTestConfig",
21351
+ "optional": true,
21352
+ "type": {
21353
+ "collection": {
21354
+ "elementtype": {
21355
+ "primitive": "any"
21356
+ },
21357
+ "kind": "map"
21358
+ }
21359
+ }
21360
+ },
21176
21361
  {
21177
21362
  "abstract": true,
21178
21363
  "docs": {
@@ -21195,6 +21380,6 @@
21195
21380
  "symbolId": "src/components/vitest:VitestOptions"
21196
21381
  }
21197
21382
  },
21198
- "version": "0.3.78",
21199
- "fingerprint": "IlSKcQKlyQLH3MfXLnQLJrHFPApv8tEpciIKVND7bI0="
21383
+ "version": "0.3.80",
21384
+ "fingerprint": "859+Vz0Hr1V+Ho96Pw/4708GxTl+HpX3aG1KTlBTW5s="
21200
21385
  }