Metadata-Version: 2.1
Name: projen_modules
Version: 5.6.0
Summary: A collection of projen modules
Home-page: https://github.com/daveshepherd/projen-modules.git
Author: Dave Shepherd<dave.shepherd@endor.me.uk>
License: Apache-2.0
Project-URL: Source, https://github.com/daveshepherd/projen-modules.git
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: constructs ==10.8.1
Requires-Dist: jsii <2.0.0,>=1.141.0
Requires-Dist: projen <1.0.0,>=0.104.0
Requires-Dist: publication >=0.0.3

<!-- ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen". -->

# projen-modules

A collection of custom projen modules, that can be used to bootstrap and maintain consistent project configuration, tooling, dependencies, and builds.

## Getting Started

Prerequisites:

* Node.js 22
* Yarn 1 (classic)

```sh
yarn install
npx projen build
```

This will:

* Install the dependencies
* Apply any projen changes
* Run tests
* Package project locally

Any files changed by projen should be committed to git.

Running the tests like this will update any snapshot files, this should be reviewed and committed to git.

## Testing

Types of testing:

* Snapshot - projen project outputs are stored as a snapshot in the corresponding `__snapshots__` directory. When the project changes then it is expected that these snapshots change too and should be reviewed committed alongside the project.
* Unit tests - these assert on specific functionality of the project and should be written for any new functionality added.

## Creating a New Project

```
npx projen new {project} --from projen-modules
```

Some projects may have required fields that need to be specified as part of this command, review any errors for details what needs to be specified.

### Project Types

| Project type                                   | Description                |
| ---------------------------------------------- | -------------------------- |
| [cdk-typescript-app](API.md#cdktypescriptapp-) | A typescript CDK app |
| [npm-package](API.md#npmpackage-)              | A typescript npm package   |
| [python-package](API.md#pythonpackage-)        | A python package           |
| [jsii-package](API.md#jsiiproject-)            | A typescript JSII package  |

## Project Structure

All source is located in `src` and is grouped by:

* `components` - these are common building blocks that can be used by projects to implement specific project functionality.
* `projects` - these are projects that can be built from this project (see #something)
* `utils` - these are helper functions that are often reused

`test` contains tests, and mirrors the `src` directory structure. Within here there are `__snapshots__` which contain snapshots of project tests (see #section).

## Contributing

Pull request titles must follow [Conventional Commits](https://www.conventionalcommits.org), with one of the types `feat`, `fix` or `chore`, such as `feat: describe the change`. The **Validate PR title** check fails until the title does.

Once a pull request is approved, or is opened by `daveshepherd`, and its checks pass, the [Mergify](https://mergify.com) merge queue squash merges it, with its title as the commit message. Draft pull requests and those labelled `do-not-merge` are not merged.

The type decides the next release: `feat` releases a minor version and `fix` a patch version, while a breaking change, marked by `!` after the type (such as `feat!: ...`) or a `BREAKING CHANGE:` footer, releases a major version. Other types still release a patch version. While the version is below 1.0.0, a breaking change releases a minor version and `feat` a patch version.

## GitHub Configuration

The one-off configuration that this repository needs on GitHub, such as the Mergify merge queue and the branch ruleset, is described in [docs/github-configuration.md](docs/github-configuration.md).

## Known Issues

`cdk-typescript-app` defaults to Jest 30, which hoists `@sinonjs/fake-timers` 15 whose bundled types conflict with the `@types/sinon` used by `aws-sdk-client-mock`. Projects using `aws-sdk-client-mock` can set `compilerOptions.skipLibCheck` on the test tsconfig:

```python
project.tryFindObjectFile('test/tsconfig.json')?.addOverride('compilerOptions.skipLibCheck', true);
```
