@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 +4 -4
- package/.kiro/steering/product.md +22 -0
- package/.kiro/steering/structure.md +51 -0
- package/.kiro/steering/tech.md +73 -0
- package/lib/index.js +1 -1
- package/package.json +4 -4
package/.jsii
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
]
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@nikovirtala/projen-colima": "^1.0.
|
|
11
|
-
"@nikovirtala/projen-homebrew": "^1.0.
|
|
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.
|
|
265
|
-
"fingerprint": "
|
|
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.
|
|
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.
|
|
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.
|
|
36
|
-
"@nikovirtala/projen-homebrew": "^1.0.
|
|
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.
|
|
47
|
+
"version": "1.0.30",
|
|
48
48
|
"types": "lib/index.d.ts",
|
|
49
49
|
"stability": "stable",
|
|
50
50
|
"jsii": {
|