cdk-cost-analyzer 0.1.1
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/.cdk-cost-analyzer-cache/metadata.json +12 -0
- package/.gitlab-ci.yml +214 -0
- package/.husky/pre-commit +12 -0
- package/.kiro/hooks/accessibility-audit.kiro.hook +18 -0
- package/.kiro/hooks/api-schema-validation.kiro.hook +21 -0
- package/.kiro/hooks/auto-test-on-save.kiro.hook +19 -0
- package/.kiro/hooks/cdk-synth-on-change.kiro.hook +20 -0
- package/.kiro/hooks/code-coverage-check.kiro.hook +14 -0
- package/.kiro/hooks/commit-message-helper.kiro.hook +14 -0
- package/.kiro/hooks/dependency-update-check.kiro.hook +14 -0
- package/.kiro/hooks/env-file-validation.kiro.hook +18 -0
- package/.kiro/hooks/lint-and-format-on-save.kiro.hook +21 -0
- package/.kiro/hooks/mcp-config-validation.kiro.hook +17 -0
- package/.kiro/hooks/mcp-server-test.kiro.hook +14 -0
- package/.kiro/hooks/performance-analysis.kiro.hook +14 -0
- package/.kiro/hooks/readme-spell-check.kiro.hook +14 -0
- package/.kiro/hooks/security-scan-on-dependency-change.kiro.hook +21 -0
- package/.kiro/hooks/translation-update.kiro.hook +18 -0
- package/.kiro/hooks/update-documentation.kiro.hook +18 -0
- package/.kiro/settings/mcp.json +20 -0
- package/.kiro/specs/cdk-cost-analyzer/design.md +620 -0
- package/.kiro/specs/cdk-cost-analyzer/requirements.md +183 -0
- package/.kiro/specs/cdk-cost-analyzer/tasks.md +357 -0
- package/.kiro/specs/github-actions-ci/design.md +281 -0
- package/.kiro/specs/github-actions-ci/requirements.md +86 -0
- package/.kiro/specs/github-actions-ci/tasks.md +115 -0
- package/.kiro/specs/nlb-calculator-test-coverage/design.md +190 -0
- package/.kiro/specs/nlb-calculator-test-coverage/requirements.md +84 -0
- package/.kiro/specs/nlb-calculator-test-coverage/tasks.md +150 -0
- package/.kiro/specs/production-readiness/design.md +1213 -0
- package/.kiro/specs/production-readiness/requirements.md +312 -0
- package/.kiro/specs/production-readiness/tasks.md +269 -0
- package/.kiro/specs/repository-cleanup/design.md +283 -0
- package/.kiro/specs/repository-cleanup/requirements.md +74 -0
- package/.kiro/specs/repository-cleanup/tasks.md +64 -0
- package/.kiro/steering/aws-cli-best-practices.md +41 -0
- package/.kiro/steering/cdk-best-practices.md +49 -0
- package/.kiro/steering/development-standards.md +54 -0
- package/.kiro/steering/docker-best-practices.md +34 -0
- package/.kiro/steering/documentation-style.md +151 -0
- package/.kiro/steering/git-best-practices.md +37 -0
- package/.kiro/steering/mcp-best-practices.md +95 -0
- package/.kiro/steering/python-best-practices.md +48 -0
- package/.kiro/steering/react-best-practices.md +44 -0
- package/.kiro/steering/security-best-practices.md +41 -0
- package/.kiro/steering/testing-best-practices.md +59 -0
- package/.kiro/steering/typescript-best-practices.md +40 -0
- package/CHANGELOG.md +49 -0
- package/CONTRIBUTING.md +258 -0
- package/LICENSE +19 -0
- package/README.md +480 -0
- package/SECURITY.md +117 -0
- package/dist/api/index.d.ts +11 -0
- package/dist/api/index.js +65 -0
- package/dist/api/types.d.ts +15 -0
- package/dist/api/types.js +3 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +262 -0
- package/dist/config/ConfigManager.d.ts +40 -0
- package/dist/config/ConfigManager.js +238 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +19 -0
- package/dist/config/types.d.ts +72 -0
- package/dist/config/types.js +15 -0
- package/dist/diff/DiffEngine.d.ts +7 -0
- package/dist/diff/DiffEngine.js +73 -0
- package/dist/diff/index.d.ts +2 -0
- package/dist/diff/index.js +21 -0
- package/dist/diff/types.d.ts +20 -0
- package/dist/diff/types.js +3 -0
- package/dist/integrations/GitLabIntegration.d.ts +7 -0
- package/dist/integrations/GitLabIntegration.js +45 -0
- package/dist/integrations/index.d.ts +2 -0
- package/dist/integrations/index.js +21 -0
- package/dist/integrations/types.d.ts +11 -0
- package/dist/integrations/types.js +13 -0
- package/dist/parser/TemplateParser.d.ts +8 -0
- package/dist/parser/TemplateParser.js +75 -0
- package/dist/parser/index.d.ts +2 -0
- package/dist/parser/index.js +22 -0
- package/dist/parser/types.d.ts +30 -0
- package/dist/parser/types.js +3 -0
- package/dist/pipeline/PipelineOrchestrator.d.ts +23 -0
- package/dist/pipeline/PipelineOrchestrator.js +191 -0
- package/dist/pipeline/index.d.ts +2 -0
- package/dist/pipeline/index.js +19 -0
- package/dist/pipeline/types.d.ts +41 -0
- package/dist/pipeline/types.js +13 -0
- package/dist/pricing/CacheManager.d.ts +75 -0
- package/dist/pricing/CacheManager.js +195 -0
- package/dist/pricing/PricingClient.d.ts +17 -0
- package/dist/pricing/PricingClient.js +122 -0
- package/dist/pricing/PricingService.d.ts +16 -0
- package/dist/pricing/PricingService.js +149 -0
- package/dist/pricing/calculators/ALBCalculator.d.ts +16 -0
- package/dist/pricing/calculators/ALBCalculator.js +163 -0
- package/dist/pricing/calculators/APIGatewayCalculator.d.ts +10 -0
- package/dist/pricing/calculators/APIGatewayCalculator.js +177 -0
- package/dist/pricing/calculators/CloudFrontCalculator.d.ts +59 -0
- package/dist/pricing/calculators/CloudFrontCalculator.js +151 -0
- package/dist/pricing/calculators/DynamoDBCalculator.d.ts +9 -0
- package/dist/pricing/calculators/DynamoDBCalculator.js +146 -0
- package/dist/pricing/calculators/EC2Calculator.d.ts +7 -0
- package/dist/pricing/calculators/EC2Calculator.js +80 -0
- package/dist/pricing/calculators/ECSCalculator.d.ts +9 -0
- package/dist/pricing/calculators/ECSCalculator.js +116 -0
- package/dist/pricing/calculators/ElastiCacheCalculator.d.ts +8 -0
- package/dist/pricing/calculators/ElastiCacheCalculator.js +106 -0
- package/dist/pricing/calculators/LambdaCalculator.d.ts +13 -0
- package/dist/pricing/calculators/LambdaCalculator.js +111 -0
- package/dist/pricing/calculators/NLBCalculator.d.ts +16 -0
- package/dist/pricing/calculators/NLBCalculator.js +138 -0
- package/dist/pricing/calculators/NatGatewayCalculator.d.ts +12 -0
- package/dist/pricing/calculators/NatGatewayCalculator.js +116 -0
- package/dist/pricing/calculators/RDSCalculator.d.ts +9 -0
- package/dist/pricing/calculators/RDSCalculator.js +103 -0
- package/dist/pricing/calculators/S3Calculator.d.ts +8 -0
- package/dist/pricing/calculators/S3Calculator.js +68 -0
- package/dist/pricing/calculators/VPCEndpointCalculator.d.ts +12 -0
- package/dist/pricing/calculators/VPCEndpointCalculator.js +129 -0
- package/dist/pricing/index.d.ts +10 -0
- package/dist/pricing/index.js +37 -0
- package/dist/pricing/types.d.ts +53 -0
- package/dist/pricing/types.js +22 -0
- package/dist/releasetag.txt +1 -0
- package/dist/reporter/Reporter.d.ts +18 -0
- package/dist/reporter/Reporter.js +412 -0
- package/dist/reporter/index.d.ts +2 -0
- package/dist/reporter/index.js +21 -0
- package/dist/reporter/types.d.ts +72 -0
- package/dist/reporter/types.js +3 -0
- package/dist/synthesis/SynthesisOrchestrator.d.ts +26 -0
- package/dist/synthesis/SynthesisOrchestrator.js +243 -0
- package/dist/synthesis/index.d.ts +2 -0
- package/dist/synthesis/index.js +19 -0
- package/dist/synthesis/types.d.ts +17 -0
- package/dist/synthesis/types.js +13 -0
- package/dist/threshold/ThresholdEnforcer.d.ts +29 -0
- package/dist/threshold/ThresholdEnforcer.js +143 -0
- package/dist/threshold/index.d.ts +2 -0
- package/dist/threshold/index.js +19 -0
- package/dist/threshold/types.d.ts +15 -0
- package/dist/threshold/types.js +17 -0
- package/docs/CALCULATORS.md +820 -0
- package/docs/CI_CD.md +608 -0
- package/docs/CONFIGURATION.md +407 -0
- package/docs/DEVELOPMENT.md +387 -0
- package/docs/RELEASE.md +223 -0
- package/docs/TROUBLESHOOTING.md +847 -0
- package/examples/.cdk-cost-analyzer.yml +85 -0
- package/examples/.gitlab-ci.yml +125 -0
- package/examples/api-usage.js +26 -0
- package/examples/complex/base.json +16 -0
- package/examples/complex/target.json +29 -0
- package/examples/monorepo/.gitlab-ci.yml +251 -0
- package/examples/monorepo/README.md +341 -0
- package/examples/monorepo/package.json +27 -0
- package/examples/monorepo/packages/backend-infra/.cdk-cost-analyzer.yml +34 -0
- package/examples/monorepo/packages/backend-infra/bin/app.ts +16 -0
- package/examples/monorepo/packages/backend-infra/cdk.json +7 -0
- package/examples/monorepo/packages/backend-infra/lib/backend-stack.ts +128 -0
- package/examples/monorepo/packages/backend-infra/package.json +30 -0
- package/examples/monorepo/packages/backend-infra/tsconfig.json +11 -0
- package/examples/monorepo/packages/data-infra/.cdk-cost-analyzer.yml +38 -0
- package/examples/monorepo/packages/data-infra/bin/app.ts +16 -0
- package/examples/monorepo/packages/data-infra/cdk.json +7 -0
- package/examples/monorepo/packages/data-infra/lib/data-stack.ts +121 -0
- package/examples/monorepo/packages/data-infra/package.json +30 -0
- package/examples/monorepo/packages/data-infra/tsconfig.json +11 -0
- package/examples/monorepo/packages/frontend-infra/.cdk-cost-analyzer.yml +31 -0
- package/examples/monorepo/packages/frontend-infra/bin/app.ts +16 -0
- package/examples/monorepo/packages/frontend-infra/cdk.json +7 -0
- package/examples/monorepo/packages/frontend-infra/lib/frontend-stack.ts +60 -0
- package/examples/monorepo/packages/frontend-infra/package.json +30 -0
- package/examples/monorepo/packages/frontend-infra/tsconfig.json +11 -0
- package/examples/monorepo/tsconfig.json +35 -0
- package/examples/multi-stack/.cdk-cost-analyzer.yml +72 -0
- package/examples/multi-stack/.gitlab-ci.yml +184 -0
- package/examples/multi-stack/README.md +279 -0
- package/examples/multi-stack/bin/app.ts +36 -0
- package/examples/multi-stack/cdk.json +72 -0
- package/examples/multi-stack/lib/compute-stack.ts +128 -0
- package/examples/multi-stack/lib/networking-stack.ts +69 -0
- package/examples/multi-stack/lib/storage-stack.ts +141 -0
- package/examples/multi-stack/package-lock.json +4437 -0
- package/examples/multi-stack/package.json +42 -0
- package/examples/multi-stack/tsconfig.json +34 -0
- package/examples/simple/base.json +8 -0
- package/examples/simple/target.json +14 -0
- package/examples/single-stack/.NVP +0 -0
- package/examples/single-stack/.cdk-cost-analyzer.yml +52 -0
- package/examples/single-stack/.gitlab-ci.yml +126 -0
- package/examples/single-stack/README.md +184 -0
- package/examples/single-stack/UeK +0 -0
- package/examples/single-stack/bin/app.ts +16 -0
- package/examples/single-stack/cdk.json +72 -0
- package/examples/single-stack/lib/infrastructure-stack.ts +119 -0
- package/examples/single-stack/package-lock.json +4443 -0
- package/examples/single-stack/package.json +38 -0
- package/examples/single-stack/tsconfig.json +34 -0
- package/package.json +139 -0
- package/test-cdk-project/README-COMPUTE.md +141 -0
- package/test-cdk-project/README.md +95 -0
- package/test-cdk-project/app-with-compute.js +102 -0
- package/test-cdk-project/app.js +81 -0
- package/test-cdk-project/cdk-compute.json +3 -0
- package/test-cdk-project/cdk.context.json +7 -0
- package/test-cdk-project/cdk.json +3 -0
- package/test-cdk-project/cdk.out/TestStack.assets.json +21 -0
- package/test-cdk-project/cdk.out/TestStack.template.json +115 -0
- package/test-cdk-project/cdk.out/cdk.out +1 -0
- package/test-cdk-project/cdk.out/manifest.json +503 -0
- package/test-cdk-project/cdk.out/tree.json +1 -0
- package/test-cdk-project/cdk.out.base/TestStack.assets.json +21 -0
- package/test-cdk-project/cdk.out.base/TestStack.template.json +115 -0
- package/test-cdk-project/cdk.out.base/cdk.out +1 -0
- package/test-cdk-project/cdk.out.base/manifest.json +503 -0
- package/test-cdk-project/cdk.out.base/tree.json +1 -0
- package/test-cdk-project/cdk.out.target/TestStack.assets.json +21 -0
- package/test-cdk-project/cdk.out.target/TestStack.template.json +183 -0
- package/test-cdk-project/cdk.out.target/cdk.out +1 -0
- package/test-cdk-project/cdk.out.target/manifest.json +521 -0
- package/test-cdk-project/cdk.out.target/tree.json +1 -0
- package/test-cdk-project/package-lock.json +422 -0
- package/test-cdk-project/package.json +17 -0
- package/tools/workflows/README.md +102 -0
- package/tools/workflows/validate-workflows.js +109 -0
- package/tools/workflows/workflow-utils.ts +181 -0
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# Contributing to CDK Cost Analyzer
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to CDK Cost Analyzer. This document provides guidelines for contributing to the project.
|
|
4
|
+
|
|
5
|
+
## Code of Conduct
|
|
6
|
+
|
|
7
|
+
Be respectful and constructive in all interactions. We aim to maintain a welcoming environment for all contributors.
|
|
8
|
+
|
|
9
|
+
## Getting Started
|
|
10
|
+
|
|
11
|
+
### Prerequisites
|
|
12
|
+
|
|
13
|
+
- Node.js >= 18.0.0
|
|
14
|
+
- npm or yarn
|
|
15
|
+
- AWS account with credentials configured
|
|
16
|
+
- Git
|
|
17
|
+
|
|
18
|
+
### Development Setup
|
|
19
|
+
|
|
20
|
+
1. Fork and clone the repository:
|
|
21
|
+
```bash
|
|
22
|
+
git clone https://github.com/buildinginthecloud/cdk-cost-analyzer.git
|
|
23
|
+
cd cdk-cost-analyzer
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
2. Install dependencies:
|
|
27
|
+
```bash
|
|
28
|
+
npm install
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
3. Build the project:
|
|
32
|
+
```bash
|
|
33
|
+
npm run build
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
4. Run tests:
|
|
37
|
+
```bash
|
|
38
|
+
npm run test
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
See the [Development Guide](docs/DEVELOPMENT.md) for detailed information about the project architecture and development workflow.
|
|
42
|
+
|
|
43
|
+
## How to Contribute
|
|
44
|
+
|
|
45
|
+
### Reporting Issues
|
|
46
|
+
|
|
47
|
+
Before creating an issue:
|
|
48
|
+
- Check existing issues to avoid duplicates
|
|
49
|
+
- Use the issue search to find similar problems
|
|
50
|
+
- Collect relevant information (error messages, logs, environment details)
|
|
51
|
+
|
|
52
|
+
When creating an issue:
|
|
53
|
+
- Use a clear, descriptive title
|
|
54
|
+
- Provide steps to reproduce the problem
|
|
55
|
+
- Include expected vs actual behavior
|
|
56
|
+
- Add relevant code samples or templates
|
|
57
|
+
- Specify your environment (Node version, OS, AWS region)
|
|
58
|
+
|
|
59
|
+
### Suggesting Features
|
|
60
|
+
|
|
61
|
+
Feature requests are welcome. Please:
|
|
62
|
+
- Explain the use case and problem it solves
|
|
63
|
+
- Describe the proposed solution
|
|
64
|
+
- Consider alternative approaches
|
|
65
|
+
- Be open to discussion and feedback
|
|
66
|
+
|
|
67
|
+
### Submitting Changes
|
|
68
|
+
|
|
69
|
+
1. Create a feature branch:
|
|
70
|
+
```bash
|
|
71
|
+
git checkout -b feature/your-feature-name
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
2. Make your changes following the code standards below
|
|
75
|
+
|
|
76
|
+
3. Add tests for new functionality:
|
|
77
|
+
```bash
|
|
78
|
+
npm run test
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
4. Ensure linting passes:
|
|
82
|
+
```bash
|
|
83
|
+
npm run lint
|
|
84
|
+
npm run eslint
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
5. Build the project:
|
|
88
|
+
```bash
|
|
89
|
+
npm run build
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
6. Commit your changes using conventional commits:
|
|
93
|
+
```bash
|
|
94
|
+
git commit -m "feat: add support for ElastiCache clusters"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
7. Push to your fork and create a pull request
|
|
98
|
+
|
|
99
|
+
### Pull Request Guidelines
|
|
100
|
+
|
|
101
|
+
- Keep changes focused and atomic
|
|
102
|
+
- Write clear commit messages following [Conventional Commits](https://www.conventionalcommits.org/)
|
|
103
|
+
- Include tests for new features
|
|
104
|
+
- Update documentation as needed
|
|
105
|
+
- Ensure all tests pass
|
|
106
|
+
- Link related issues in the PR description
|
|
107
|
+
|
|
108
|
+
## Code Standards
|
|
109
|
+
|
|
110
|
+
### TypeScript
|
|
111
|
+
|
|
112
|
+
- Use strict TypeScript configuration
|
|
113
|
+
- Define return types for all functions
|
|
114
|
+
- Prefer `const` over `let`, avoid `var`
|
|
115
|
+
- Use meaningful variable and function names
|
|
116
|
+
- Follow existing code style and patterns
|
|
117
|
+
|
|
118
|
+
### Testing
|
|
119
|
+
|
|
120
|
+
- Write unit tests for all public functions
|
|
121
|
+
- Use property-based tests for universal properties
|
|
122
|
+
- Aim for high test coverage (>80%)
|
|
123
|
+
- Use descriptive test names
|
|
124
|
+
- Mock external dependencies
|
|
125
|
+
|
|
126
|
+
### Documentation
|
|
127
|
+
|
|
128
|
+
- Update README.md for user-facing changes
|
|
129
|
+
- Add JSDoc comments for public APIs
|
|
130
|
+
- Update relevant documentation in `docs/`
|
|
131
|
+
- Include code examples where appropriate
|
|
132
|
+
|
|
133
|
+
### Commit Messages
|
|
134
|
+
|
|
135
|
+
Follow the [Conventional Commits](https://www.conventionalcommits.org/) specification:
|
|
136
|
+
|
|
137
|
+
- `feat:` New features
|
|
138
|
+
- `fix:` Bug fixes
|
|
139
|
+
- `docs:` Documentation changes
|
|
140
|
+
- `style:` Code style changes (formatting, etc.)
|
|
141
|
+
- `refactor:` Code refactoring
|
|
142
|
+
- `test:` Test additions or changes
|
|
143
|
+
- `chore:` Build process or tooling changes
|
|
144
|
+
|
|
145
|
+
Examples:
|
|
146
|
+
```
|
|
147
|
+
feat: add support for AWS::ElastiCache::CacheCluster
|
|
148
|
+
fix: correct RDS multi-AZ pricing calculation
|
|
149
|
+
docs: update configuration guide with new options
|
|
150
|
+
test: add property tests for DynamoDB calculator
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Adding New Resource Types
|
|
154
|
+
|
|
155
|
+
To add support for a new AWS resource type:
|
|
156
|
+
|
|
157
|
+
1. Create a calculator in `src/pricing/calculators/`:
|
|
158
|
+
```typescript
|
|
159
|
+
export class NewResourceCalculator implements ResourceCostCalculator {
|
|
160
|
+
supports(resourceType: string): boolean {
|
|
161
|
+
return resourceType === 'AWS::Service::Resource';
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
async calculateCost(
|
|
165
|
+
resource: CloudFormationResource,
|
|
166
|
+
region: string,
|
|
167
|
+
pricingClient: PricingClient
|
|
168
|
+
): Promise<MonthlyCost> {
|
|
169
|
+
// Implementation
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
2. Register the calculator in `src/pricing/PricingService.ts`
|
|
175
|
+
|
|
176
|
+
3. Add comprehensive tests in `test/pricing/`
|
|
177
|
+
|
|
178
|
+
4. Update documentation:
|
|
179
|
+
- Add to supported resources list in README.md
|
|
180
|
+
- Document assumptions in docs/CALCULATORS.md
|
|
181
|
+
- Add example in `examples/`
|
|
182
|
+
|
|
183
|
+
5. Create a pull request with your changes
|
|
184
|
+
|
|
185
|
+
## Project Structure
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
cdk-cost-analyzer/
|
|
189
|
+
├── src/
|
|
190
|
+
│ ├── api/ # Programmatic API
|
|
191
|
+
│ ├── cli/ # Command-line interface
|
|
192
|
+
│ ├── config/ # Configuration management
|
|
193
|
+
│ ├── diff/ # Template comparison
|
|
194
|
+
│ ├── parser/ # CloudFormation parsing
|
|
195
|
+
│ ├── pricing/ # Cost calculation
|
|
196
|
+
│ ├── reporter/ # Report formatting
|
|
197
|
+
│ ├── synthesis/ # CDK synthesis
|
|
198
|
+
│ └── threshold/ # Threshold enforcement
|
|
199
|
+
├── test/ # Test files (mirrors src/)
|
|
200
|
+
├── docs/ # Documentation
|
|
201
|
+
└── examples/ # Example projects
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Development Workflow
|
|
205
|
+
|
|
206
|
+
### Running Tests
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
# All tests
|
|
210
|
+
npm run test
|
|
211
|
+
|
|
212
|
+
# Silent mode (minimal output)
|
|
213
|
+
npm run test:silent
|
|
214
|
+
|
|
215
|
+
# Watch mode
|
|
216
|
+
npm run test:watch
|
|
217
|
+
|
|
218
|
+
# Specific test file
|
|
219
|
+
npx vitest run test/pricing/EC2Calculator.test.ts
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Building
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
# Full build (compile + test)
|
|
226
|
+
npm run build
|
|
227
|
+
|
|
228
|
+
# Compile only
|
|
229
|
+
npm run compile
|
|
230
|
+
|
|
231
|
+
# Watch mode
|
|
232
|
+
npm run watch
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Linting
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Type checking
|
|
239
|
+
npm run lint
|
|
240
|
+
|
|
241
|
+
# ESLint
|
|
242
|
+
npm run eslint
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Release Process
|
|
246
|
+
|
|
247
|
+
Releases are managed by maintainers. See [docs/RELEASE.md](docs/RELEASE.md) for details.
|
|
248
|
+
|
|
249
|
+
## Getting Help
|
|
250
|
+
|
|
251
|
+
- Check the [Documentation](docs/)
|
|
252
|
+
- Review [Troubleshooting Guide](docs/TROUBLESHOOTING.md)
|
|
253
|
+
- Search existing issues
|
|
254
|
+
- Create a new issue with your question
|
|
255
|
+
|
|
256
|
+
## License
|
|
257
|
+
|
|
258
|
+
By contributing, you agree that your contributions will be licensed under the MIT License.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2026 Yvo van Zee
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|