@nikovirtala/projen-localstack 1.0.28 → 1.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -7,8 +7,8 @@
7
7
  ]
8
8
  },
9
9
  "dependencies": {
10
- "@nikovirtala/projen-colima": "^1.0.23",
11
- "@nikovirtala/projen-homebrew": "^1.0.19",
10
+ "@nikovirtala/projen-colima": "^1.0.25",
11
+ "@nikovirtala/projen-homebrew": "^1.0.20",
12
12
  "constructs": "^10.4.3",
13
13
  "projen": "^0.98.28"
14
14
  },
@@ -261,6 +261,6 @@
261
261
  "symbolId": "src/index:LocalStackOptions"
262
262
  }
263
263
  },
264
- "version": "1.0.28",
265
- "fingerprint": "oB61amFEn5AOmS1Li8yYjlsH6yT99KFHhL7QQTS90Ys="
264
+ "version": "1.0.30",
265
+ "fingerprint": "cWx8uBviWkV/TfrhOkUag/x0M1RsDNr1mcNy4dHVLPk="
266
266
  }
@@ -0,0 +1,22 @@
1
+ # Product Overview
2
+
3
+ This is a projen component that adds LocalStack integration to projen-based Node.js projects.
4
+
5
+ ## Purpose
6
+
7
+ Provides a reusable component that:
8
+ - Installs and configures LocalStack for local AWS service emulation
9
+ - Manages Docker runtime via Colima integration
10
+ - Automatically starts LocalStack before running tests
11
+ - Adds aws-cdk-local to project dependencies
12
+
13
+ ## Target Users
14
+
15
+ Developers building AWS CDK or AWS-based applications who want to test locally without connecting to real AWS services.
16
+
17
+ ## Key Features
18
+
19
+ - Automatic LocalStack installation via Homebrew
20
+ - Configurable service selection, port, debug mode, and image tag
21
+ - Integration with projen task system
22
+ - Seamless test workflow integration
@@ -0,0 +1,51 @@
1
+ # Project Structure
2
+
3
+ ## Directory Layout
4
+
5
+ ```
6
+ .
7
+ ├── src/ # Source code
8
+ │ └── index.ts # Main LocalStack component export
9
+ ├── test/ # Test files
10
+ │ └── *.test.ts # Vitest test files
11
+ ├── .projen/ # Projen metadata (generated)
12
+ ├── .github/ # GitHub workflows (generated)
13
+ ├── .kiro/ # Kiro configuration and steering
14
+ ├── lib/ # Compiled JavaScript (generated)
15
+ └── dist/ # JSII distribution packages (generated)
16
+ ```
17
+
18
+ ## Key Files
19
+
20
+ - `.projenrc.ts`: Project configuration (source of truth)
21
+ - `package.json`: Generated from .projenrc.ts
22
+ - `biome.jsonc`: Code formatting/linting config (generated)
23
+ - `vitest.config.ts`: Test configuration (generated)
24
+ - `tsconfig.dev.json`: TypeScript config (generated)
25
+ - `mise.toml`: Node.js version pinning
26
+
27
+ ## Code Organization
28
+
29
+ ### Source Code (`src/`)
30
+
31
+ - Single entry point: `index.ts`
32
+ - Exports `LocalStack` component class and `LocalStackOptions` interface
33
+ - Component extends projen's `Component` base class
34
+ - Must be used with `NodeProject` instances
35
+
36
+ ### Tests (`test/`)
37
+
38
+ - Unit tests using Vitest
39
+ - Test file naming: `*.test.ts`
40
+ - Tests verify task creation, dependency management, and configuration
41
+
42
+ ## Generated Files
43
+
44
+ Files marked with `~~ Generated by projen` header should not be edited directly. Modify `.projenrc.ts` and run `npx projen` to regenerate.
45
+
46
+ ## Architecture Patterns
47
+
48
+ - **Component-based**: Extends projen's Component class
49
+ - **Composition**: Integrates Colima and Homebrew components
50
+ - **Task dependencies**: Uses projen task system for workflow orchestration
51
+ - **Singleton pattern**: Reuses existing Homebrew component if present
@@ -0,0 +1,73 @@
1
+ # Technology Stack
2
+
3
+ ## ⚠️ Projen-Managed Project
4
+
5
+ This project is **entirely managed by projen**. Key implications:
6
+
7
+ - **DO NOT** manually edit generated files (package.json, tsconfig.json, etc.)
8
+ - **ALL** configuration changes must be made in `.projenrc.ts`
9
+ - After modifying `.projenrc.ts`, run `npx projen` to regenerate files
10
+ - Dependencies, scripts, and tooling are defined in `.projenrc.ts`, not package.json
11
+
12
+ ## Build System
13
+
14
+ - **projen**: Project configuration and task management
15
+ - **JSII**: Multi-language library compilation
16
+ - **pnpm**: Package manager (hoisted node-linker)
17
+ - **TypeScript**: 5.9.3
18
+
19
+ ## Testing
20
+
21
+ - **Vitest**: Test runner with coverage via v8
22
+ - **Type checking**: Enabled in tests via tsc
23
+
24
+ ## Code Quality
25
+
26
+ - **Biome**: Formatter and linter (replaces ESLint/Prettier)
27
+ - 4-space indentation
28
+ - 120 character line width
29
+ - Double quotes for JavaScript/TypeScript
30
+ - Organize imports on save
31
+
32
+ ## Runtime
33
+
34
+ - **Node.js**: >= 22.21.1
35
+ - **mise**: Version management (see mise.toml)
36
+
37
+ ## Dependencies
38
+
39
+ - `projen`: Core framework
40
+ - `@nikovirtala/projen-colima`: Docker runtime management
41
+ - `@nikovirtala/projen-homebrew`: Package installation
42
+
43
+ ## Common Commands
44
+
45
+ ```bash
46
+ # Build the project
47
+ npx projen build
48
+
49
+ # Run tests
50
+ npx projen test
51
+
52
+ # Run tests in watch mode
53
+ npx projen test:watch
54
+
55
+ # Format and lint code
56
+ npx projen biome
57
+
58
+ # Compile TypeScript
59
+ npx projen compile
60
+
61
+ # Generate API documentation
62
+ npx projen docgen
63
+
64
+ # Run default task (build + test)
65
+ npx projen default
66
+ ```
67
+
68
+ ## Development Workflow
69
+
70
+ 1. All configuration is managed through `.projenrc.ts`
71
+ 2. Run `npx projen` to regenerate project files after changes
72
+ 3. Generated files are marked readonly and should not be edited directly
73
+ 4. Tests run with LocalStack automatically started via task dependencies
package/lib/index.js CHANGED
@@ -47,5 +47,5 @@ class LocalStack extends component_1.Component {
47
47
  }
48
48
  exports.LocalStack = LocalStack;
49
49
  _a = JSII_RTTI_SYMBOL_1;
50
- LocalStack[_a] = { fqn: "@nikovirtala/projen-localstack.LocalStack", version: "1.0.28" };
50
+ LocalStack[_a] = { fqn: "@nikovirtala/projen-localstack.LocalStack", version: "1.0.30" };
51
51
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4REFBb0Q7QUFDcEQsa0VBQXdEO0FBRXhELG9EQUFpRDtBQUNqRCxzREFBb0Q7QUErQnBEOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxxQkFBUztJQUNyQyxZQUFZLEtBQWlCLEVBQUUsVUFBNkIsRUFBRTtRQUMxRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixNQUFNLE9BQU8sR0FBRyx3QkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsQ0FBQyxPQUFPLFlBQVksd0JBQVcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUVyQyxJQUFJLHNCQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFcEIsSUFBSSxRQUFRLEdBQUcsMEJBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ1osUUFBUSxHQUFHLElBQUksMEJBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVsQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRCxNQUFNLE9BQU8sR0FBRyxDQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBRSxvQkFBb0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckYsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDakQsSUFBSSxFQUFFLDBDQUEwQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0I7U0FDMUYsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFcEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLFFBQVEsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7O0FBMUNMLGdDQTJDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGltYSB9IGZyb20gXCJAbmlrb3ZpcnRhbGEvcHJvamVuLWNvbGltYVwiO1xuaW1wb3J0IHsgSG9tZWJyZXcgfSBmcm9tIFwiQG5pa292aXJ0YWxhL3Byb2plbi1ob21lYnJld1wiO1xuaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJwcm9qZW4vbGliL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgTm9kZVByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgTG9jYWxTdGFjayBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxTdGFja09wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIExvY2FsU3RhY2sgc2VydmljZXMgdG8gZW5hYmxlLlxuICAgICAqIEBkZWZhdWx0IC0gYWxsIHNlcnZpY2VzIGVuYWJsZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBzZXJ2aWNlcz86IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogTG9jYWxTdGFjayBnYXRld2F5IHBvcnQuXG4gICAgICogQGRlZmF1bHQgNDU2NlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgTG9jYWxTdGFjayBkZWJ1ZyBtb2RlLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTG9jYWxTdGFjayBEb2NrZXIgaW1hZ2UgdGFnLlxuICAgICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICAgKi9cbiAgICByZWFkb25seSBpbWFnZVRhZz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBMb2NhbFN0YWNrIGNvbXBvbmVudCBmb3IgcHJvamVuIHByb2plY3RzLlxuICpcbiAqIEFkZHMgTG9jYWxTdGFjayBzdXBwb3J0IHRvIHlvdXIgcHJvamVjdCB3aXRoIGF1dG9tYXRpYyBEb2NrZXIvQ29saW1hIHNldHVwLlxuICovXG5leHBvcnQgY2xhc3MgTG9jYWxTdGFjayBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IElDb25zdHJ1Y3QsIG9wdGlvbnM6IExvY2FsU3RhY2tPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIoc2NvcGUpO1xuXG4gICAgICAgIGNvbnN0IHByb2plY3QgPSBOb2RlUHJvamVjdC5vZih0aGlzKTtcbiAgICAgICAgaWYgKCEocHJvamVjdCBpbnN0YW5jZW9mIE5vZGVQcm9qZWN0KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTG9jYWxTdGFjayBjb21wb25lbnQgcmVxdWlyZXMgYSBOb2RlUHJvamVjdFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvcnQgPSBvcHRpb25zLnBvcnQgPz8gNDU2NjtcbiAgICAgICAgY29uc3QgZGVidWcgPSBvcHRpb25zLmRlYnVnID8/IGZhbHNlO1xuXG4gICAgICAgIG5ldyBDb2xpbWEocHJvamVjdCk7XG5cbiAgICAgICAgbGV0IGhvbWVicmV3ID0gSG9tZWJyZXcub2YocHJvamVjdCk7XG4gICAgICAgIGlmICghaG9tZWJyZXcpIHtcbiAgICAgICAgICAgIGhvbWVicmV3ID0gbmV3IEhvbWVicmV3KHByb2plY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaG9tZWJyZXcuYWRkUGFja2FnZShcImxvY2Fsc3RhY2tcIik7XG5cbiAgICAgICAgY29uc3QgY29saW1hVGFzayA9IHByb2plY3QudGFza3MudHJ5RmluZChcImNvbGltYVwiKTtcblxuICAgICAgICBjb25zdCBlbnZWYXJzID0gW2BMT0NBTFNUQUNLX1BPUlQ9JHtwb3J0fWAsIGBMT0NBTFNUQUNLX0RFQlVHPSR7ZGVidWcgPyBcIjFcIiA6IFwiMFwifWBdO1xuICAgICAgICBpZiAob3B0aW9ucy5zZXJ2aWNlcykge1xuICAgICAgICAgICAgZW52VmFycy5wdXNoKGBTRVJWSUNFUz0ke29wdGlvbnMuc2VydmljZXMuam9pbihcIixcIil9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2NhbHN0YWNrVGFzayA9IHByb2plY3QuYWRkVGFzayhcImxvY2Fsc3RhY2tcIiwge1xuICAgICAgICAgICAgZXhlYzogYGxvY2Fsc3RhY2sgc3RhdHVzIHwgZ3JlcCAtcSBydW5uaW5nIHx8ICR7ZW52VmFycy5qb2luKFwiIFwiKX0gbG9jYWxzdGFjayBzdGFydCAtZGAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjb2xpbWFUYXNrKSB7XG4gICAgICAgICAgICBsb2NhbHN0YWNrVGFzay5wcmVwZW5kU3Bhd24oY29saW1hVGFzayk7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9qZWN0LmFkZERldkRlcHMoXCJhd3MtY2RrLWxvY2FsXCIpO1xuXG4gICAgICAgIGNvbnN0IHRlc3RUYXNrID0gcHJvamVjdC50YXNrcy50cnlGaW5kKFwidGVzdFwiKTtcbiAgICAgICAgaWYgKHRlc3RUYXNrKSB7XG4gICAgICAgICAgICB0ZXN0VGFzay5wcmVwZW5kU3Bhd24obG9jYWxzdGFja1Rhc2spO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "devDependencies": {
14
14
  "@biomejs/biome": "^2",
15
- "@nikovirtala/projen-vitest": "^2.1.20",
15
+ "@nikovirtala/projen-vitest": "^2.1.22",
16
16
  "@types/node": "^22",
17
17
  "@vitest/coverage-v8": "^4",
18
18
  "commit-and-tag-version": "^12",
@@ -32,8 +32,8 @@
32
32
  "projen": "^0.98.28"
33
33
  },
34
34
  "dependencies": {
35
- "@nikovirtala/projen-colima": "^1.0.23",
36
- "@nikovirtala/projen-homebrew": "^1.0.19",
35
+ "@nikovirtala/projen-colima": "^1.0.25",
36
+ "@nikovirtala/projen-homebrew": "^1.0.20",
37
37
  "projen": "^0.98.28"
38
38
  },
39
39
  "engines": {
@@ -44,7 +44,7 @@
44
44
  "publishConfig": {
45
45
  "access": "public"
46
46
  },
47
- "version": "1.0.28",
47
+ "version": "1.0.30",
48
48
  "types": "lib/index.d.ts",
49
49
  "stability": "stable",
50
50
  "jsii": {