@xpertss/projen-types 0.0.5 → 0.0.7

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 (37) hide show
  1. package/.jsii +89 -91
  2. package/API.md +17 -24
  3. package/README.md +4 -4
  4. package/lib/actions/action-build-workflow.js +4 -2
  5. package/lib/actions/action-dogfood-workflow.js +4 -2
  6. package/lib/actions/action-sonar-workflow.d.ts +6 -6
  7. package/lib/actions/action-sonar-workflow.js +8 -6
  8. package/lib/actions/github-action-project.d.ts +3 -3
  9. package/lib/actions/github-action-project.js +10 -2
  10. package/lib/cdk/app-runtime-scaffold.js +1 -1
  11. package/lib/cdk/cdk-app-project.js +5 -3
  12. package/lib/cdk/cdk-infra-project.js +1 -1
  13. package/lib/cdk/cdk-typescript-base.js +19 -2
  14. package/lib/cdk/components/ecr-ecs-constructs.js +1 -1
  15. package/lib/cdk/components/edge-networking-constructs.js +1 -1
  16. package/lib/cdk/database-component.js +1 -1
  17. package/lib/common/actions-allowlist-guard.js +4 -2
  18. package/lib/common/internal-actions.js +8 -7
  19. package/lib/common/manual-deploy-workflow.js +3 -1
  20. package/lib/common/projen-drift-check-workflow.js +4 -2
  21. package/lib/common/upgrade-workflow.js +3 -1
  22. package/lib/common/workflow-change-notice-workflow.js +4 -2
  23. package/lib/common/workflow-purpose.d.ts +21 -0
  24. package/lib/common/workflow-purpose.js +51 -0
  25. package/lib/java/components/cdk-deploy-hook.js +1 -1
  26. package/lib/java/components/code-index-workflow.js +5 -3
  27. package/lib/java/components/docker-publish.js +5 -3
  28. package/lib/java/components/flyway-migration.js +1 -1
  29. package/lib/java/components/github-packages-publish.js +5 -3
  30. package/lib/java/components/maven-central-publish.js +5 -3
  31. package/lib/java/java-app-project.js +1 -1
  32. package/lib/java/java-library-project.js +1 -1
  33. package/lib/java/java-maven-base.js +7 -2
  34. package/lib/java/java-service-project.js +1 -1
  35. package/lib/java/options.d.ts +1 -1
  36. package/lib/java/options.js +1 -1
  37. package/package.json +1 -1
package/.jsii CHANGED
@@ -106,7 +106,7 @@
106
106
  },
107
107
  "name": "@xpertss/projen-types",
108
108
  "readme": {
109
- "markdown": "# @xpertss/projen-types\n\nProjen project types for CDK/TypeScript and Java/Maven projects.\n\nInstead of hand-maintaining `pom.xml`, `cdk.json`, and GitHub workflows, you declare a project type in a `.projenrc.ts` file and let [projen](https://github.com/projen/projen) generate (and keep up to date) the whole scaffold: build files, source skeletons, CI workflows, and deploy pipelines.\n\n## Project types at a glance\n\n| Type | What it is | Publishes to | Generated workflows |\n| --- | --- | --- | --- |\n| `CdkInfraProject` | Pure-infrastructure CDK stacks (CloudFront, Route53, SQS, API Gateway, Cognito, ECR/ECS for externally-built images) | - | `build` (PR checks), `deploy` (manual dispatch) |\n| `CdkAppProject` | Full TypeScript service behind API Gateway: infra + app source + database | - | `build`, `deploy`, `app-build` (PR checks) |\n| `JavaLibraryProject` | Reusable Java library | Maven Central | `build`, `upgrade` (nightly), `publish-maven-central`, `codeindex` |\n| `JavaServiceProject` | Spring Boot service | Docker Hub | `build`, `upgrade` (nightly), `publish-docker`, `deploy-cdk` |\n| `JavaAppProject` | GUI/TUI/CLI Java application | GitHub Packages | `build`, `upgrade` (nightly), `publish-ghpackages` |\n| `GitHubActionProject` | Reusable GitHub Action or Workflow | GitHub Releases | `build`, `test-dogfood`, `sonar`, `release` |\n\nTwo foundation classes are also exported for advanced use: `CdkTypescriptProject` (shared CDK + TypeScript base for the CDK types) and `JavaMavenProject` (shared Maven base for the Java types).\n\nAll project types:\n\n- run a **drift check** in PR builds - a job that re-runs projen and fails if generated files were hand-edited. Edit `.projenrc.ts`, then run `npx projen`; never edit generated files directly.\n- use the GitHub secret `PROJEN_GITHUB_TOKEN` (a fine-grained PAT) for projen's automation. Override with `gheTokenSecret`.\n- make all publishing/deploying **manual** (workflow_dispatch) rather than on every merge.\n\n## Getting started\n\nScaffold the repo with projen's own bootstrap, pointed at this package:\n\n```bash\nmkdir my-project && cd my-project\ngit init\nnpx projen new --from @xpertss/projen-types cdk_infra --name my-project\n```\n\nThat writes a starter `.projenrc.ts`, synthesizes the whole scaffold and\ninstalls dependencies. The type names `projen new` accepts are `cdk_infra`,\n`cdk_app`, `java_library`, `java_service`, `java_app` and\n`git_hub_action`; pass a bogus one to have it list them. Required options\nbecome flags: `--name` for every type, plus `--group-id`/`--artifact-id`\n(Java) and `--sonar-host-url` (`git_hub_action`). Any other plainly-typed\noption can be passed the same way - `--cdk-deploy-target-repo owner/repo`,\n`--docker-registry ghcr.io`, `--no-use-flyway`, and so on.\n\nCommit the result. From then on, every change to the scaffold goes through\n`.projenrc.ts` followed by `npx projen`:\n\n```bash\nnpx projen\n```\n\nEvery type scaffolds from that one command; no option is *required* that\n`projen new` cannot pass. The structured options - `environments` and\n`GitHubActionProject`'s `dogfood` - are ones projen's CLI cannot render\ninto a projenrc, so they are added afterwards by editing `.projenrc.ts` and\nre-running `npx projen`. Leaving `environments` out simply generates no\ndeploy workflow; leaving `dogfood` out (or a service's\n`cdkDeployTargetRepo`) still generates the workflow, with one step that\nfails and tells you what to add - a gate this package considers load-bearing\nis allowed to be missing loudly, never silently.\n\nThe `name` option must match the `name` field in the project's `package.json` (for the CDK types) or the project name used by projen's `java.JavaProject` (for the Java types).\n\n## Examples\n\n### CdkInfraProject\n\nPure infrastructure stacks with optional ECR/ECS and edge-networking constructs.\n\n```typescript\n// .projenrc.ts\nimport { CdkInfraProject } from '@xpertss/projen-types';\n\nconst project = new CdkInfraProject({\n name: 'media-edge-infra',\n environments: [\n 'dev',\n { name: 'stage', accountId: '111111111111', region: 'eu-central-1' },\n { name: 'prod', accountId: '222222222222', region: 'eu-central-1', requiresApproval: true },\n ],\n edgeResources: ['cloudfront', 'route53', 'sqs'],\n ecrEcs: { enabled: true, externalImageSource: true },\n slackWebhookSecret: 'SLACK_DEPLOY_WEBHOOK',\n});\n\nproject.synth();\n```\n\nYou get:\n\n- `cdk.json`, `cdk synth` / `cdk diff` / `cdk deploy` tasks, and the standard `AwsCdkTypeScriptApp` layout (CDK 2.189.1 by default).\n- `.github/workflows/build.yml` - PR build that hard-fails on projen drift.\n- `.github/workflows/deploy.yml` - manual dispatch with one `deploy-<env>` job per environment (runs `cdk deploy --all` with `--context environment=<env>`); `requiresApproval` environments get a GitHub Environment approval gate; a Slack notification step is added when `slackWebhookSecret` is set.\n- `src/constructs/edge-networking.ts` - helper constructs only for the requested `edgeResources` (`cloudfront`, `route53`, `apigateway`, `cognito`, `sqs`).\n- `src/constructs/ecr-ecs.ts` when `ecrEcs.enabled` - ECR repo + Fargate service; `externalImageSource: true` (default) means the service pulls an image built outside this repo.\n\n### CdkAppProject\n\n`CdkInfraProject` plus application source, a database construct, and an app-level build workflow.\n\n```typescript\n// .projenrc.ts\nimport { CdkAppProject } from '@xpertss/projen-types';\n\nconst project = new CdkAppProject({\n name: 'video-api',\n environments: ['dev', 'prod'],\n edgeResources: ['apigateway'],\n database: { engine: 'postgres', migrationTool: 'flyway' },\n appEntryPoint: 'src/app.ts',\n});\n\nproject.synth();\n```\n\nEverything from `CdkInfraProject`, plus:\n\n- `src/app.ts` - application entrypoint stub (`export function handler()`).\n- `src/handlers/example.ts` - API Gateway proxy handler stub, with `@types/aws-lambda` added as a dev dependency.\n- `src/constructs/database.ts` - a `Database` construct stub for the chosen engine (`postgres`/`mysql` -> RDS, `dynamodb` -> DynamoDB). `migrationTool` (no default, intentionally) is added as a dev dependency and referenced in the stub - wiring it up is left to you.\n- `.github/workflows/app-build.yml` - runs the project's test task on every PR, then checks for projen drift.\n\n### JavaLibraryProject\n\nA reusable Java library published to Maven Central.\n\n```typescript\n// .projenrc.ts\nimport { JavaLibraryProject } from '@xpertss/projen-types';\n\nconst project = new JavaLibraryProject({\n name: 'common-utils',\n groupId: 'org.xpertss',\n artifactId: 'common-utils',\n version: '1.0.0',\n sonarProjectKey: 'org.xpertss:common-utils',\n mavenCentralOidc: true,\n});\n\nproject.synth();\n```\n\nYou get:\n\n- `pom.xml` (via projen's `java.JavaProject`) with the given GAV coordinates.\n- `.github/workflows/build.yml` - PR build + projen drift check, plus a SonarQube scan step when `sonarProjectKey` is set (needs a `SONAR_TOKEN` secret).\n- `.github/workflows/upgrade.yml` - nightly (03:00 UTC) PR running `mvn versions:use-latest-releases versions:update-properties`.\n- `.github/workflows/publish-maven-central.yml` - manual dispatch running `mvn -B deploy -P release`. With `mavenCentralOidc: true` it uses Maven Central's OIDC trusted publishing (no GPG secrets needed); otherwise it expects the secrets `MAVEN_GPG_PRIVATE_KEY`, `MAVEN_GPG_PASSPHRASE`, `MAVEN_CENTRAL_USERNAME`, `MAVEN_CENTRAL_PASSWORD`.\n- `.github/workflows/codeindex.yml` - on push to `main`, generates a Java source index under `.cai/` (disable with `publishCodeIndex: false`).\n\n### JavaServiceProject\n\nA Spring Boot service that publishes a Docker image and can trigger deploys in a companion CDK repo.\n\n```typescript\n// .projenrc.ts\nimport { JavaServiceProject } from '@xpertss/projen-types';\n\nconst project = new JavaServiceProject({\n name: 'stream-processor',\n groupId: 'org.xpertss',\n artifactId: 'stream-processor',\n dockerRegistry: 'docker.io/xpertss',\n cdkDeployTargetRepo: 'xpertss/stream-infra',\n environments: ['dev', { name: 'prod', requiresApproval: true }],\n});\n\nproject.synth();\n```\n\nYou get (everything from `JavaMavenProject` - `pom.xml`, `build` + drift check, nightly `upgrade` - plus):\n\n- `spring-boot-starter-web` added to the pom.\n- `.github/workflows/publish-docker.yml` - manual dispatch: `mvn -B package && docker build -t <registry>/<name>:<sha>`, logged in with the `DOCKER_USERNAME` / `DOCKER_PASSWORD` secrets. `dockerRegistry` defaults to `docker.io`.\n- Flyway wiring when `useFlyway` (default `true`): `flyway-maven-plugin` ^10 + `flyway-core` ^10 in the pom, and `src/main/resources/db/migration/V1__init.sql`.\n- `.github/workflows/deploy-cdk.yml` (the `CdkDeployHook`, generated by default) - manual dispatch with an environment selector; each job sends a `workflow_dispatch` to `deploy.yml` in the companion `cdkDeployTargetRepo` (a `CdkInfraProject`/`CdkAppProject` repo). With no `cdkDeployTargetRepo` set, the workflow is still generated but each job's only step fails with instructions - it is dispatch-only, so that lands on whoever tries to deploy rather than on every PR. Turn the workflow off entirely with `cdkDeployHook: false`. `environments` defaults to `['prod']`.\n\n### JavaAppProject\n\nA GUI/TUI/CLI Java application published to GitHub Packages only - no Maven Central, no Docker, no CDK deploy hook.\n\n```typescript\n// .projenrc.ts\nimport { JavaAppProject } from '@xpertss/projen-types';\n\nconst project = new JavaAppProject({\n name: 'studio-cli',\n groupId: 'org.xpertss',\n artifactId: 'studio-cli',\n ghPackagesRegistry: 'https://maven.pkg.github.com/xpertss/studio-cli',\n});\n\nproject.synth();\n```\n\nYou get everything from `JavaMavenProject`, plus `.github/workflows/publish-ghpackages.yml` - manual dispatch running `mvn -B deploy -DaltDeploymentRepository=github::<registry>`, authenticated with `GITHUB_TOKEN`. `ghPackagesRegistry` defaults to `https://maven.pkg.github.com/<repo>` derived from the repository URL.\n\n### GitHubActionProject\n\nA reusable GitHub Action or Workflow. This example scaffolds an action that stages a folder and, only if it changed, commits and pushes it.\n\n```typescript\n// .projenrc.ts\nimport { GitHubActionProject } from '@xpertss/projen-types';\n\nconst project = new GitHubActionProject({\n name: 'auto-commit',\n description: 'Stage a folder and, only if it changed, commit and push it',\n sonarHostUrl: 'https://sonar.xpertss.org', // required, no default - your self-hosted SonarQube\n dogfood: {\n // Two scenario steps: the \"changed\" path and the \"no-op\" path are both\n // load-bearing behavior for this action (a double-commit or a\n // push-when-empty bug is the failure mode a hand-rolled inline-shell\n // alternative is most likely to introduce).\n scenario: [\n {\n name: 'Changed path',\n fixtureSteps: [\n 'echo \"$(date -u +%Y%m%dT%H%M%SZ)\" >> test/fixtures/dogfood-state.txt',\n ],\n inputs: {\n commit_message: 'test: dogfood',\n branches: 'test/dogfood',\n },\n assertions: [\n // step id defaults to a slug of `name` - here \"changed-path-0\"\n '[ \"${{ steps.changed-path-0.outputs.committed }}\" = \"true\" ]',\n ],\n },\n {\n // No fixture change this time - nothing new to commit.\n name: 'No-op path',\n id: 'no-op-check', // pin an explicit id instead of relying on the default slug\n inputs: {\n commit_message: 'test: dogfood',\n branches: 'test/dogfood',\n },\n assertions: [\n '[ \"${{ steps.no-op-check.outputs.committed }}\" = \"false\" ]',\n ],\n },\n ],\n cleanup: [\n 'git push origin --delete test/dogfood || true',\n ],\n },\n});\n\nproject.synth();\n```\n\nYou get:\n\n- `action.yml` and `auto-commit.sh` are hand-written - this type only lints their content via `build.yml`'s shellcheck/yamllint/actionlint checks.\n- `.github/workflows/build.yml` - lint gate: `apt`-installed shellcheck/yamllint plus a pinned, SHA-256-verified `actionlint` release binary. Gates `main` alongside `sonar.yml`.\n- `.github/workflows/test-dogfood.yml` - runs the `dogfood.scenario` steps above against this repo's own `action.yml` (via `uses: .`), then the shared `cleanup`, on `workflow_dispatch`, every `pull_request`, and nightly. Omit `dogfood` and the workflow still exists, with one step that fails on every PR until you declare a scenario - AD-001 allows a dogfood to be missing loudly, never silently. A *partial* `dogfood` (a scenario with no cleanup) is a synth error.\n- `.github/workflows/sonar.yml` - self-hosted SonarQube via the Scanner CLI, scanning `action.yml`/`.github/workflows/**`/`**/*.sh` explicitly.\n- `.github/workflows/release.yml` - `feat:`/`fix:` commits on `main` bump the version, tag `vX.Y.Z`, and create a GitHub Release.\n- `.github/workflows/projen-drift-check.yml`, `workflow-change-notice.yml`, `actions-allowlist-guard.yml` - drift detection, a change notice, and an action allow-list guard, always included.\n- `package.json` (**private**, version source only), `.yamllint`, `LICENSE` (MIT by default), and a `README.md` template - all regenerated by `npx projen`.\n\nNeeds the same two secrets as everything else in this package: `PROJEN_GITHUB_TOKEN` (used for automated PR comments) and `SONAR_TOKEN` (the Sonar scan). Onboard a brand-new action repo following [Getting started](#getting-started), write the `.projenrc.ts` above, then hand-write `action.yml`/`auto-commit.sh`/`test/fixtures/`.\n\n## Common options\n\nCDK project types (`CdkInfraProjectOptions` / `CdkAppProjectOptions`):\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `name` | - (required) | Project name; must match `package.json` |\n| `cdkVersion` | `2.189.1` | AWS CDK version |\n| `gheTokenSecret` | `PROJEN_GITHUB_TOKEN` | GitHub secret holding projen's PAT |\n| `slackWebhookSecret` | - | GitHub secret with a Slack webhook URL for deploy notifications |\n| `environments` | - (no `deploy` workflow) | Deploy targets for the `deploy` workflow; strings or `EnvironmentOptions` |\n| `ecrEcs` | - | `EcrEcsOptions` - `enabled`, `externalImageSource` (default `true`) |\n| `edgeResources` | - | Subset of `cloudfront`, `route53`, `apigateway`, `cognito`, `sqs` |\n| `database` | - (app only) | `DatabaseOptions` - `engine` (`postgres`/`mysql`/`dynamodb`, default `postgres`), `migrationTool` |\n| `appEntryPoint` | `src/app.ts` (app only) | Path of the generated application entrypoint |\n\nJava project types (`JavaLibraryProjectOptions` / `JavaServiceProjectOptions` / `JavaAppProjectOptions`):\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `name` | - (required) | Project name |\n| `groupId` | - (required) | Maven group id |\n| `artifactId` | - (required) | Maven artifact id |\n| `version` | `0.1.0` | Maven version |\n| `sonarProjectKey` | - | SonarQube project key; the sonar step is skipped when unset |\n| `gheTokenSecret` | `PROJEN_GITHUB_TOKEN` | GitHub secret holding projen's PAT |\n| `cdkDeployTargetRepo` | - (service only; `deploy-cdk.yml` fails until set) | Companion CDK repo (`owner/repo`) whose `deploy.yml` the deploy hook dispatches |\n| `cdkDeployHook` | `true` (service only) | Whether to generate `deploy-cdk.yml` at all |\n| `dockerRegistry` | `docker.io` (service only) | Registry the Docker image is pushed to |\n| `useFlyway` | `true` (service only) | Flyway plugin/dependency + `V1__init.sql` |\n\n`EnvironmentOptions` for deploy targets:\n\n```text\ninterface EnvironmentOptions {\n readonly name: string; // e.g. \"dev\", \"stage\", \"prod\"\n readonly accountId?: string; // AWS account id (CDK deploys)\n readonly region?: string; // AWS region (CDK deploys)\n readonly requiresApproval?: boolean; // GitHub Environment approval gate (default false)\n}\n```\n\nPlain strings (`'dev'`) are shorthand for `{ name: 'dev' }`.\n\n`GitHubActionProjectOptions`:\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `name` | - (required) | Project name |\n| `description` | - | One-line description; used in the default README template and recorded in the private `package.json` |\n| `sonarHostUrl` | - (required) | URL of your self-hosted SonarQube instance; must be reachable from github.com-hosted runners |\n| `sonarTokenSecret` | `SONAR_TOKEN` | GitHub secret holding the Sonar token |\n| `sonarPullRequestGate` | `true` | Whether `sonar.yml` also runs on `pull_request` as a pass/fail gate |\n| `dogfood` | - (a `test-dogfood.yml` that fails until you declare one) | `ActionDogfoodOptions` - the scenario that exercises the action end-to-end via `uses: .` |\n| `license` | `MIT` | SPDX identifier for the generated `LICENSE` |\n| `gheTokenSecret` | `PROJEN_GITHUB_TOKEN` | GitHub secret holding projen's PAT |\n\n`ActionDogfoodOptions`/`ActionDogfoodStep` - the dogfood scenario (`test-dogfood.yml`):\n\n```text\ninterface ActionDogfoodOptions {\n readonly scenario: ActionDogfoodStep[]; // one or more, run in order - required\n readonly cleanup: string[]; // shared, run once at the end with `if: always()` - required\n}\n\ninterface ActionDogfoodStep {\n readonly name: string; // labels this step-group's generated workflow steps\n readonly id?: string; // step id for the `uses: .` call; default: a slug of `name`\n readonly fixtureSteps?: string[]; // shell, before the invocation (default: none)\n readonly inputs?: Record<string, string>; // `with:` for this invocation (default: none)\n readonly assertions: string[]; // shell, after the invocation - required, job fails unless all exit 0\n}\n```\n\nMost actions need exactly one `scenario` step. Actions with a re-run/no-op/idempotency behavior to verify (e.g. `auto-commit`'s no-op-on-no-change path, `create-pull-request`'s reuse-the-PR path) declare two - the second typically omits `fixtureSteps` so its invocation sees no new state, and its assertion checks the opposite outcome of the first. Reference an invocation's own outputs from a later assertion via `${{ steps.<id>.outputs.<name> }}`, using either the default slug or an explicit `id`.\n\n## Required GitHub secrets\n\n| Secret | Used by | Notes |\n| --- | --- | --- |\n| `PROJEN_GITHUB_TOKEN` | all types | PAT for projen's self-mutation/automation; override via `gheTokenSecret` |\n| `SONAR_TOKEN` | Java types with `sonarProjectKey`; `GitHubActionProject` | SonarQube scan step in `build.yml` / `sonar.yml`; override via `sonarTokenSecret` on `GitHubActionProject` |\n| `DOCKER_USERNAME` / `DOCKER_PASSWORD` | `JavaServiceProject` | Docker image push |\n| `MAVEN_GPG_PRIVATE_KEY`, `MAVEN_GPG_PASSPHRASE`, `MAVEN_CENTRAL_USERNAME`, `MAVEN_CENTRAL_PASSWORD` | `JavaLibraryProject` without `mavenCentralOidc` | Not needed with OIDC trusted publishing |\n| (your Slack webhook secret) | CDK types with `slackWebhookSecret` | Deploy notifications |\n\n## Going further\n\nThe project types are composed from smaller components you can also attach to your own projects:\n\n| Component | Applies to | Purpose |\n| --- | --- | --- |\n| `AppRuntimeScaffold` | `NodeProject` | App source skeleton (`app.ts` + handlers) |\n| `DatabaseComponent` | `NodeProject` | Database construct stub + migration tool wiring |\n| `EcrEcsConstructs` | `Project` | ECR + Fargate ECS construct helper |\n| `EdgeNetworkingConstructs` | `Project` | Per-resource edge networking construct helpers |\n| `MavenCentralPublish` | `JavaProject` | Manual-dispatch Maven Central publish workflow |\n| `DockerPublish` | `JavaProject` | Manual-dispatch Docker build+push workflow |\n| `GitHubPackagesPublish` | `JavaProject` | Manual-dispatch GitHub Packages publish workflow |\n| `FlywayMigration` | `JavaProject` | Flyway plugin/dependency + migrations directory |\n| `CdkDeployHook` | `JavaProject` | Manual-dispatch workflow that triggers `deploy.yml` in a companion CDK repo |\n| `CodeIndexWorkflow` | `JavaProject` | Code index generation on push to `main` |\n| `ActionBuildWorkflow` | `GitHubProject` | The `lint` task (shellcheck/yamllint/pinned actionlint) + `build.yml` |\n| `ActionDogfoodWorkflow` | `GitHubProject` | `test-dogfood.yml` from an `ActionDogfoodOptions` scenario |\n| `ActionSonarWorkflow` | `GitHubProject` | `sonar.yml` (self-hosted SonarQube via the Scanner CLI) |\n\nExample - adding a Docker publish to a plain projen `JavaProject`:\n\n```typescript\nimport { java } from 'projen';\nimport { DockerPublish } from '@xpertss/projen-types';\n\nconst project = new java.JavaProject({\n name: 'my-service',\n groupId: 'org.xpertss',\n artifactId: 'my-service',\n});\n\nnew DockerPublish(project, { dockerRegistry: 'ghcr.io' });\n\nproject.synth();\n```\n\nThe full API reference, including every option and property, is in [API.md](./API.md).\n"
109
+ "markdown": "# @xpertss/projen-types\n\nProjen project types for CDK/TypeScript and Java/Maven projects.\n\nInstead of hand-maintaining `pom.xml`, `cdk.json`, and GitHub workflows, you declare a project type in a `.projenrc.ts` file and let [projen](https://github.com/projen/projen) generate (and keep up to date) the whole scaffold: build files, source skeletons, CI workflows, and deploy pipelines.\n\n## Project types at a glance\n\n| Type | What it is | Publishes to | Generated workflows |\n| --- | --- | --- | --- |\n| `CdkInfraProject` | Pure-infrastructure CDK stacks (CloudFront, Route53, SQS, API Gateway, Cognito, ECR/ECS for externally-built images) | - | `build` (PR checks), `deploy` (manual dispatch) |\n| `CdkAppProject` | Full TypeScript service behind API Gateway: infra + app source + database | - | `build`, `deploy`, `app-build` (PR checks) |\n| `JavaLibraryProject` | Reusable Java library | Maven Central | `build`, `upgrade` (nightly), `publish-maven-central`, `codeindex` |\n| `JavaServiceProject` | Spring Boot service | Docker Hub | `build`, `upgrade` (nightly), `publish-docker`, `deploy-cdk` |\n| `JavaAppProject` | GUI/TUI/CLI Java application | GitHub Packages | `build`, `upgrade` (nightly), `publish-ghpackages` |\n| `GitHubActionProject` | Reusable GitHub Action or Workflow | GitHub Releases | `build`, `test-dogfood`, `sonar`, `release` |\n\nTwo foundation classes are also exported for advanced use: `CdkTypescriptProject` (shared CDK + TypeScript base for the CDK types) and `JavaMavenProject` (shared Maven base for the Java types).\n\nAll project types:\n\n- run a **drift check** in PR builds - a job that re-runs projen and fails if generated files were hand-edited. Edit `.projenrc.ts`, then run `npx projen`; never edit generated files directly.\n- use the GitHub secret `PROJEN_GITHUB_TOKEN` (a fine-grained PAT) for projen's automation. Override with `gheTokenSecret`.\n- make all publishing/deploying **manual** (workflow_dispatch) rather than on every merge.\n\n## Getting started\n\nScaffold the repo with projen's own bootstrap, pointed at this package:\n\n```bash\nmkdir my-project && cd my-project\ngit init\nnpx projen new --from @xpertss/projen-types cdk_infra --name my-project\n```\n\nThat writes a starter `.projenrc.ts`, synthesizes the whole scaffold and\ninstalls dependencies. The type names `projen new` accepts are `cdk_infra`,\n`cdk_app`, `java_library`, `java_service`, `java_app` and\n`git_hub_action`; pass a bogus one to have it list them. Required options\nbecome flags: `--name` for every type, plus `--group-id`/`--artifact-id`\n(Java) and `--sonar-host-url` (`git_hub_action`). Any other plainly-typed\noption can be passed the same way - `--cdk-deploy-target-repo owner/repo`,\n`--docker-registry ghcr.io`, `--no-use-flyway`, and so on.\n\nCommit the result. From then on, every change to the scaffold goes through\n`.projenrc.ts` followed by `npx projen`:\n\n```bash\nnpx projen\n```\n\nEvery type scaffolds from that one command; no option is *required* that\n`projen new` cannot pass. The structured options - `environments` and\n`GitHubActionProject`'s `dogfood` - are ones projen's CLI cannot render\ninto a projenrc, so they are added afterwards by editing `.projenrc.ts` and\nre-running `npx projen`. Leaving `environments` out simply generates no\ndeploy workflow; leaving `dogfood` out (or a service's\n`cdkDeployTargetRepo`) still generates the workflow, with one step that\nfails and tells you what to add - a gate this package considers load-bearing\nis allowed to be missing loudly, never silently.\n\nThe `name` option must match the `name` field in the project's `package.json` (for the CDK types) or the project name used by projen's `java.JavaProject` (for the Java types).\n\n## Examples\n\n### CdkInfraProject\n\nPure infrastructure stacks with optional ECR/ECS and edge-networking constructs.\n\n```typescript\n// .projenrc.ts\nimport { CdkInfraProject } from '@xpertss/projen-types';\n\nconst project = new CdkInfraProject({\n name: 'media-edge-infra',\n environments: [\n 'dev',\n { name: 'stage', accountId: '111111111111', region: 'eu-central-1' },\n { name: 'prod', accountId: '222222222222', region: 'eu-central-1', requiresApproval: true },\n ],\n edgeResources: ['cloudfront', 'route53', 'sqs'],\n ecrEcs: { enabled: true, externalImageSource: true },\n slackWebhookSecret: 'SLACK_DEPLOY_WEBHOOK',\n});\n\nproject.synth();\n```\n\nYou get:\n\n- `cdk.json`, `cdk synth` / `cdk diff` / `cdk deploy` tasks, and the standard `AwsCdkTypeScriptApp` layout (CDK 2.189.1 by default).\n- `.github/workflows/build.yml` - PR build that hard-fails on projen drift.\n- `.github/workflows/deploy.yml` - manual dispatch with one `deploy-<env>` job per environment (runs `cdk deploy --all` with `--context environment=<env>`); `requiresApproval` environments get a GitHub Environment approval gate; a Slack notification step is added when `slackWebhookSecret` is set.\n- `src/constructs/edge-networking.ts` - helper constructs only for the requested `edgeResources` (`cloudfront`, `route53`, `apigateway`, `cognito`, `sqs`).\n- `src/constructs/ecr-ecs.ts` when `ecrEcs.enabled` - ECR repo + Fargate service; `externalImageSource: true` (default) means the service pulls an image built outside this repo.\n\n### CdkAppProject\n\n`CdkInfraProject` plus application source, a database construct, and an app-level build workflow.\n\n```typescript\n// .projenrc.ts\nimport { CdkAppProject } from '@xpertss/projen-types';\n\nconst project = new CdkAppProject({\n name: 'video-api',\n environments: ['dev', 'prod'],\n edgeResources: ['apigateway'],\n database: { engine: 'postgres', migrationTool: 'flyway' },\n appEntryPoint: 'src/app.ts',\n});\n\nproject.synth();\n```\n\nEverything from `CdkInfraProject`, plus:\n\n- `src/app.ts` - application entrypoint stub (`export function handler()`).\n- `src/handlers/example.ts` - API Gateway proxy handler stub, with `@types/aws-lambda` added as a dev dependency.\n- `src/constructs/database.ts` - a `Database` construct stub for the chosen engine (`postgres`/`mysql` -> RDS, `dynamodb` -> DynamoDB). `migrationTool` (no default, intentionally) is added as a dev dependency and referenced in the stub - wiring it up is left to you.\n- `.github/workflows/app-build.yml` - runs the project's test task on every PR, then checks for projen drift.\n\n### JavaLibraryProject\n\nA reusable Java library published to Maven Central.\n\n```typescript\n// .projenrc.ts\nimport { JavaLibraryProject } from '@xpertss/projen-types';\n\nconst project = new JavaLibraryProject({\n name: 'common-utils',\n groupId: 'org.xpertss',\n artifactId: 'common-utils',\n version: '1.0.0',\n sonarProjectKey: 'org.xpertss:common-utils',\n mavenCentralOidc: true,\n});\n\nproject.synth();\n```\n\nYou get:\n\n- `pom.xml` (via projen's `java.JavaProject`) with the given GAV coordinates.\n- `.github/workflows/build.yml` - PR build + projen drift check, plus a SonarQube scan step when `sonarProjectKey` is set (needs a `SONAR_TOKEN` secret).\n- `.github/workflows/upgrade.yml` - nightly (03:00 UTC) PR running `mvn versions:use-latest-releases versions:update-properties`.\n- `.github/workflows/publish-maven-central.yml` - manual dispatch running `mvn -B deploy -P release`. With `mavenCentralOidc: true` it uses Maven Central's OIDC trusted publishing (no GPG secrets needed); otherwise it expects the secrets `MAVEN_GPG_PRIVATE_KEY`, `MAVEN_GPG_PASSPHRASE`, `MAVEN_CENTRAL_USERNAME`, `MAVEN_CENTRAL_PASSWORD`.\n- `.github/workflows/codeindex.yml` - on push to `main`, generates a Java source index under `.cai/` (disable with `publishCodeIndex: false`).\n\n### JavaServiceProject\n\nA Spring Boot service that publishes a Docker image and can trigger deploys in a companion CDK repo.\n\n```typescript\n// .projenrc.ts\nimport { JavaServiceProject } from '@xpertss/projen-types';\n\nconst project = new JavaServiceProject({\n name: 'stream-processor',\n groupId: 'org.xpertss',\n artifactId: 'stream-processor',\n dockerRegistry: 'docker.io/xpertss',\n cdkDeployTargetRepo: 'xpertss/stream-infra',\n environments: ['dev', { name: 'prod', requiresApproval: true }],\n});\n\nproject.synth();\n```\n\nYou get (everything from `JavaMavenProject` - `pom.xml`, `build` + drift check, nightly `upgrade` - plus):\n\n- `spring-boot-starter-web` added to the pom.\n- `.github/workflows/publish-docker.yml` - manual dispatch: `mvn -B package && docker build -t <registry>/<name>:<sha>`, logged in with the `DOCKER_USERNAME` / `DOCKER_PASSWORD` secrets. `dockerRegistry` defaults to `docker.io`.\n- Flyway wiring when `useFlyway` (default `true`): `flyway-maven-plugin` ^10 + `flyway-core` ^10 in the pom, and `src/main/resources/db/migration/V1__init.sql`.\n- `.github/workflows/deploy-cdk.yml` (the `CdkDeployHook`, generated by default) - manual dispatch with an environment selector; each job sends a `workflow_dispatch` to `deploy.yml` in the companion `cdkDeployTargetRepo` (a `CdkInfraProject`/`CdkAppProject` repo). With no `cdkDeployTargetRepo` set, the workflow is still generated but each job's only step fails with instructions - it is dispatch-only, so that lands on whoever tries to deploy rather than on every PR. Turn the workflow off entirely with `cdkDeployHook: false`. `environments` defaults to `['prod']`.\n\n### JavaAppProject\n\nA GUI/TUI/CLI Java application published to GitHub Packages only - no Maven Central, no Docker, no CDK deploy hook.\n\n```typescript\n// .projenrc.ts\nimport { JavaAppProject } from '@xpertss/projen-types';\n\nconst project = new JavaAppProject({\n name: 'studio-cli',\n groupId: 'org.xpertss',\n artifactId: 'studio-cli',\n ghPackagesRegistry: 'https://maven.pkg.github.com/xpertss/studio-cli',\n});\n\nproject.synth();\n```\n\nYou get everything from `JavaMavenProject`, plus `.github/workflows/publish-ghpackages.yml` - manual dispatch running `mvn -B deploy -DaltDeploymentRepository=github::<registry>`, authenticated with `GITHUB_TOKEN`. `ghPackagesRegistry` defaults to `https://maven.pkg.github.com/<repo>` derived from the repository URL.\n\n### GitHubActionProject\n\nA reusable GitHub Action or Workflow. This example scaffolds an action that stages a folder and, only if it changed, commits and pushes it.\n\n```typescript\n// .projenrc.ts\nimport { GitHubActionProject } from '@xpertss/projen-types';\n\nconst project = new GitHubActionProject({\n name: 'auto-commit',\n description: 'Stage a folder and, only if it changed, commit and push it',\n sonarHostUrl: 'https://sonarcloud.io', // required, no default - your SonarCloud URL\n dogfood: {\n // Two scenario steps: the \"changed\" path and the \"no-op\" path are both\n // load-bearing behavior for this action (a double-commit or a\n // push-when-empty bug is the failure mode a hand-rolled inline-shell\n // alternative is most likely to introduce).\n scenario: [\n {\n name: 'Changed path',\n fixtureSteps: [\n 'echo \"$(date -u +%Y%m%dT%H%M%SZ)\" >> test/fixtures/dogfood-state.txt',\n ],\n inputs: {\n commit_message: 'test: dogfood',\n branches: 'test/dogfood',\n },\n assertions: [\n // step id defaults to a slug of `name` - here \"changed-path-0\"\n '[ \"${{ steps.changed-path-0.outputs.committed }}\" = \"true\" ]',\n ],\n },\n {\n // No fixture change this time - nothing new to commit.\n name: 'No-op path',\n id: 'no-op-check', // pin an explicit id instead of relying on the default slug\n inputs: {\n commit_message: 'test: dogfood',\n branches: 'test/dogfood',\n },\n assertions: [\n '[ \"${{ steps.no-op-check.outputs.committed }}\" = \"false\" ]',\n ],\n },\n ],\n cleanup: [\n 'git push origin --delete test/dogfood || true',\n ],\n },\n});\n\nproject.synth();\n```\n\nYou get:\n\n- `action.yml` and `auto-commit.sh` are hand-written - this type only lints their content via `build.yml`'s shellcheck/yamllint/actionlint checks.\n- `.github/workflows/build.yml` - lint gate: `apt`-installed shellcheck/yamllint plus a pinned, SHA-256-verified `actionlint` release binary. Gates `main` alongside `sonar.yml`.\n- `.github/workflows/test-dogfood.yml` - runs the `dogfood.scenario` steps above against this repo's own `action.yml` (via `uses: .`), then the shared `cleanup`, on `workflow_dispatch`, every `pull_request`, and nightly. Omit `dogfood` and the workflow still exists, with one step that fails on every PR until you declare a scenario - AD-001 allows a dogfood to be missing loudly, never silently. A *partial* `dogfood` (a scenario with no cleanup) is a synth error.\n- `.github/workflows/sonar.yml` - SonarCloud scan via the Scanner CLI (the quality gate blocks the PR), scanning `action.yml`/`.github/workflows/**`/`**/*.sh` explicitly.\n- `.github/workflows/release.yml` - `feat:`/`fix:` commits on `main` bump the version, tag `vX.Y.Z`, and create a GitHub Release.\n- `.github/workflows/projen-drift-check.yml`, `workflow-change-notice.yml`, `actions-allowlist-guard.yml` - drift detection, a change notice, and an action allow-list guard, always included.\n- `package.json` (**private**, version source only), `.yamllint`, `LICENSE` (MIT by default), and a `README.md` template - all regenerated by `npx projen`.\n\nNeeds the same two secrets as everything else in this package: `PROJEN_GITHUB_TOKEN` (used for automated PR comments) and `SONAR_TOKEN` (the Sonar scan). Onboard a brand-new action repo following [Getting started](#getting-started), write the `.projenrc.ts` above, then hand-write `action.yml`/`auto-commit.sh`/`test/fixtures/`.\n\n## Common options\n\nCDK project types (`CdkInfraProjectOptions` / `CdkAppProjectOptions`):\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `name` | - (required) | Project name; must match `package.json` |\n| `cdkVersion` | `2.189.1` | AWS CDK version |\n| `gheTokenSecret` | `PROJEN_GITHUB_TOKEN` | GitHub secret holding projen's PAT |\n| `slackWebhookSecret` | - | GitHub secret with a Slack webhook URL for deploy notifications |\n| `environments` | - (no `deploy` workflow) | Deploy targets for the `deploy` workflow; strings or `EnvironmentOptions` |\n| `ecrEcs` | - | `EcrEcsOptions` - `enabled`, `externalImageSource` (default `true`) |\n| `edgeResources` | - | Subset of `cloudfront`, `route53`, `apigateway`, `cognito`, `sqs` |\n| `database` | - (app only) | `DatabaseOptions` - `engine` (`postgres`/`mysql`/`dynamodb`, default `postgres`), `migrationTool` |\n| `appEntryPoint` | `src/app.ts` (app only) | Path of the generated application entrypoint |\n\nJava project types (`JavaLibraryProjectOptions` / `JavaServiceProjectOptions` / `JavaAppProjectOptions`):\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `name` | - (required) | Project name |\n| `groupId` | - (required) | Maven group id |\n| `artifactId` | - (required) | Maven artifact id |\n| `version` | `0.1.0` | Maven version |\n| `sonarProjectKey` | - | SonarQube project key; the sonar step is skipped when unset |\n| `gheTokenSecret` | `PROJEN_GITHUB_TOKEN` | GitHub secret holding projen's PAT |\n| `cdkDeployTargetRepo` | - (service only; `deploy-cdk.yml` fails until set) | Companion CDK repo (`owner/repo`) whose `deploy.yml` the deploy hook dispatches |\n| `cdkDeployHook` | `true` (service only) | Whether to generate `deploy-cdk.yml` at all |\n| `dockerRegistry` | `docker.io` (service only) | Registry the Docker image is pushed to |\n| `useFlyway` | `true` (service only) | Flyway plugin/dependency + `V1__init.sql` |\n\n`EnvironmentOptions` for deploy targets:\n\n```text\ninterface EnvironmentOptions {\n readonly name: string; // e.g. \"dev\", \"stage\", \"prod\"\n readonly accountId?: string; // AWS account id (CDK deploys)\n readonly region?: string; // AWS region (CDK deploys)\n readonly requiresApproval?: boolean; // GitHub Environment approval gate (default false)\n}\n```\n\nPlain strings (`'dev'`) are shorthand for `{ name: 'dev' }`.\n\n`GitHubActionProjectOptions`:\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `name` | - (required) | Project name |\n| `description` | - | One-line description; used in the default README template and recorded in the private `package.json` |\n| `sonarHostUrl` | - (required) | URL of your SonarCloud instance (e.g. `https://sonarcloud.io`); must be reachable from github.com-hosted runners |\n| `sonarTokenSecret` | `SONAR_TOKEN` | GitHub secret holding the Sonar token |\n| `sonarPullRequestGate` | `true` | Whether `sonar.yml` also runs on `pull_request` as a pass/fail gate |\n| `dogfood` | - (a `test-dogfood.yml` that fails until you declare one) | `ActionDogfoodOptions` - the scenario that exercises the action end-to-end via `uses: .` |\n| `license` | `MIT` | SPDX identifier for the generated `LICENSE` |\n| `gheTokenSecret` | `PROJEN_GITHUB_TOKEN` | GitHub secret holding projen's PAT |\n\n`ActionDogfoodOptions`/`ActionDogfoodStep` - the dogfood scenario (`test-dogfood.yml`):\n\n```text\ninterface ActionDogfoodOptions {\n readonly scenario: ActionDogfoodStep[]; // one or more, run in order - required\n readonly cleanup: string[]; // shared, run once at the end with `if: always()` - required\n}\n\ninterface ActionDogfoodStep {\n readonly name: string; // labels this step-group's generated workflow steps\n readonly id?: string; // step id for the `uses: .` call; default: a slug of `name`\n readonly fixtureSteps?: string[]; // shell, before the invocation (default: none)\n readonly inputs?: Record<string, string>; // `with:` for this invocation (default: none)\n readonly assertions: string[]; // shell, after the invocation - required, job fails unless all exit 0\n}\n```\n\nMost actions need exactly one `scenario` step. Actions with a re-run/no-op/idempotency behavior to verify (e.g. `auto-commit`'s no-op-on-no-change path, `create-pull-request`'s reuse-the-PR path) declare two - the second typically omits `fixtureSteps` so its invocation sees no new state, and its assertion checks the opposite outcome of the first. Reference an invocation's own outputs from a later assertion via `${{ steps.<id>.outputs.<name> }}`, using either the default slug or an explicit `id`.\n\n## Required GitHub secrets\n\n| Secret | Used by | Notes |\n| --- | --- | --- |\n| `PROJEN_GITHUB_TOKEN` | all types | PAT for projen's self-mutation/automation; override via `gheTokenSecret` |\n| `SONAR_TOKEN` | Java types with `sonarProjectKey`; `GitHubActionProject` | SonarQube scan step in `build.yml` / `sonar.yml`; override via `sonarTokenSecret` on `GitHubActionProject` |\n| `DOCKER_USERNAME` / `DOCKER_PASSWORD` | `JavaServiceProject` | Docker image push |\n| `MAVEN_GPG_PRIVATE_KEY`, `MAVEN_GPG_PASSPHRASE`, `MAVEN_CENTRAL_USERNAME`, `MAVEN_CENTRAL_PASSWORD` | `JavaLibraryProject` without `mavenCentralOidc` | Not needed with OIDC trusted publishing |\n| (your Slack webhook secret) | CDK types with `slackWebhookSecret` | Deploy notifications |\n\n## Going further\n\nThe project types are composed from smaller components you can also attach to your own projects:\n\n| Component | Applies to | Purpose |\n| --- | --- | --- |\n| `AppRuntimeScaffold` | `NodeProject` | App source skeleton (`app.ts` + handlers) |\n| `DatabaseComponent` | `NodeProject` | Database construct stub + migration tool wiring |\n| `EcrEcsConstructs` | `Project` | ECR + Fargate ECS construct helper |\n| `EdgeNetworkingConstructs` | `Project` | Per-resource edge networking construct helpers |\n| `MavenCentralPublish` | `JavaProject` | Manual-dispatch Maven Central publish workflow |\n| `DockerPublish` | `JavaProject` | Manual-dispatch Docker build+push workflow |\n| `GitHubPackagesPublish` | `JavaProject` | Manual-dispatch GitHub Packages publish workflow |\n| `FlywayMigration` | `JavaProject` | Flyway plugin/dependency + migrations directory |\n| `CdkDeployHook` | `JavaProject` | Manual-dispatch workflow that triggers `deploy.yml` in a companion CDK repo |\n| `CodeIndexWorkflow` | `JavaProject` | Code index generation on push to `main` |\n| `ActionBuildWorkflow` | `GitHubProject` | The `lint` task (shellcheck/yamllint/pinned actionlint) + `build.yml` |\n| `ActionDogfoodWorkflow` | `GitHubProject` | `test-dogfood.yml` from an `ActionDogfoodOptions` scenario |\n| `ActionSonarWorkflow` | `GitHubProject` | `sonar.yml` (SonarCloud scan via the Scanner CLI) |\n\nExample - adding a Docker publish to a plain projen `JavaProject`:\n\n```typescript\nimport { java } from 'projen';\nimport { DockerPublish } from '@xpertss/projen-types';\n\nconst project = new java.JavaProject({\n name: 'my-service',\n groupId: 'org.xpertss',\n artifactId: 'my-service',\n});\n\nnew DockerPublish(project, { dockerRegistry: 'ghcr.io' });\n\nproject.synth();\n```\n\nThe full API reference, including every option and property, is in [API.md](./API.md).\n"
110
110
  },
111
111
  "repository": {
112
112
  "type": "git",
@@ -134,7 +134,7 @@
134
134
  },
135
135
  "locationInModule": {
136
136
  "filename": "src/actions/action-build-workflow.ts",
137
- "line": 24
137
+ "line": 25
138
138
  },
139
139
  "parameters": [
140
140
  {
@@ -148,7 +148,7 @@
148
148
  "kind": "class",
149
149
  "locationInModule": {
150
150
  "filename": "src/actions/action-build-workflow.ts",
151
- "line": 20
151
+ "line": 21
152
152
  },
153
153
  "name": "ActionBuildWorkflow",
154
154
  "properties": [
@@ -159,7 +159,7 @@
159
159
  "immutable": true,
160
160
  "locationInModule": {
161
161
  "filename": "src/actions/action-build-workflow.ts",
162
- "line": 21
162
+ "line": 22
163
163
  },
164
164
  "name": "task",
165
165
  "type": {
@@ -173,7 +173,7 @@
173
173
  "immutable": true,
174
174
  "locationInModule": {
175
175
  "filename": "src/actions/action-build-workflow.ts",
176
- "line": 22
176
+ "line": 23
177
177
  },
178
178
  "name": "workflow",
179
179
  "type": {
@@ -193,7 +193,7 @@
193
193
  "kind": "interface",
194
194
  "locationInModule": {
195
195
  "filename": "src/actions/action-dogfood-workflow.ts",
196
- "line": 55
196
+ "line": 56
197
197
  },
198
198
  "name": "ActionDogfoodOptions",
199
199
  "properties": [
@@ -206,7 +206,7 @@
206
206
  "immutable": true,
207
207
  "locationInModule": {
208
208
  "filename": "src/actions/action-dogfood-workflow.ts",
209
- "line": 60
209
+ "line": 61
210
210
  },
211
211
  "name": "cleanup",
212
212
  "type": {
@@ -227,7 +227,7 @@
227
227
  "immutable": true,
228
228
  "locationInModule": {
229
229
  "filename": "src/actions/action-dogfood-workflow.ts",
230
- "line": 57
230
+ "line": 58
231
231
  },
232
232
  "name": "scenario",
233
233
  "type": {
@@ -253,7 +253,7 @@
253
253
  "kind": "interface",
254
254
  "locationInModule": {
255
255
  "filename": "src/actions/action-dogfood-workflow.ts",
256
- "line": 16
256
+ "line": 17
257
257
  },
258
258
  "name": "ActionDogfoodStep",
259
259
  "properties": [
@@ -266,7 +266,7 @@
266
266
  "immutable": true,
267
267
  "locationInModule": {
268
268
  "filename": "src/actions/action-dogfood-workflow.ts",
269
- "line": 41
269
+ "line": 42
270
270
  },
271
271
  "name": "assertions",
272
272
  "type": {
@@ -287,7 +287,7 @@
287
287
  "immutable": true,
288
288
  "locationInModule": {
289
289
  "filename": "src/actions/action-dogfood-workflow.ts",
290
- "line": 18
290
+ "line": 19
291
291
  },
292
292
  "name": "name",
293
293
  "type": {
@@ -304,7 +304,7 @@
304
304
  "immutable": true,
305
305
  "locationInModule": {
306
306
  "filename": "src/actions/action-dogfood-workflow.ts",
307
- "line": 32
307
+ "line": 33
308
308
  },
309
309
  "name": "fixtureSteps",
310
310
  "optional": true,
@@ -327,7 +327,7 @@
327
327
  "immutable": true,
328
328
  "locationInModule": {
329
329
  "filename": "src/actions/action-dogfood-workflow.ts",
330
- "line": 25
330
+ "line": 26
331
331
  },
332
332
  "name": "id",
333
333
  "optional": true,
@@ -345,7 +345,7 @@
345
345
  "immutable": true,
346
346
  "locationInModule": {
347
347
  "filename": "src/actions/action-dogfood-workflow.ts",
348
- "line": 38
348
+ "line": 39
349
349
  },
350
350
  "name": "inputs",
351
351
  "optional": true,
@@ -376,7 +376,7 @@
376
376
  },
377
377
  "locationInModule": {
378
378
  "filename": "src/actions/action-dogfood-workflow.ts",
379
- "line": 88
379
+ "line": 89
380
380
  },
381
381
  "parameters": [
382
382
  {
@@ -397,7 +397,7 @@
397
397
  "kind": "class",
398
398
  "locationInModule": {
399
399
  "filename": "src/actions/action-dogfood-workflow.ts",
400
- "line": 85
400
+ "line": 86
401
401
  },
402
402
  "name": "ActionDogfoodWorkflow",
403
403
  "properties": [
@@ -408,7 +408,7 @@
408
408
  "immutable": true,
409
409
  "locationInModule": {
410
410
  "filename": "src/actions/action-dogfood-workflow.ts",
411
- "line": 86
411
+ "line": 87
412
412
  },
413
413
  "name": "workflow",
414
414
  "type": {
@@ -422,9 +422,9 @@
422
422
  "assembly": "@xpertss/projen-types",
423
423
  "base": "projen.Component",
424
424
  "docs": {
425
- "remarks": "`sonar.inclusions` is set explicitly since\ndefault inclusions may skip `action.yml` outside `.github/`.",
425
+ "remarks": "`sonar.inclusions` is set explicitly since default\ninclusions may skip `action.yml` outside `.github/`.",
426
426
  "stability": "experimental",
427
- "summary": "AD-001 Layer 2: self-hosted SonarQube Community Edition via the Scanner CLI only (never `SonarSource/sonarqube-scan-action` - third-party, and it carried a security advisory)."
427
+ "summary": "AD-001 Layer 2: SonarCloud via the Scanner CLI only (never `SonarSource/sonarqube-scan-action` - third-party, and it carried a security advisory)."
428
428
  },
429
429
  "fqn": "@xpertss/projen-types.ActionSonarWorkflow",
430
430
  "initializer": {
@@ -433,7 +433,7 @@
433
433
  },
434
434
  "locationInModule": {
435
435
  "filename": "src/actions/action-sonar-workflow.ts",
436
- "line": 35
436
+ "line": 36
437
437
  },
438
438
  "parameters": [
439
439
  {
@@ -453,7 +453,7 @@
453
453
  "kind": "class",
454
454
  "locationInModule": {
455
455
  "filename": "src/actions/action-sonar-workflow.ts",
456
- "line": 32
456
+ "line": 33
457
457
  },
458
458
  "name": "ActionSonarWorkflow",
459
459
  "properties": [
@@ -464,7 +464,7 @@
464
464
  "immutable": true,
465
465
  "locationInModule": {
466
466
  "filename": "src/actions/action-sonar-workflow.ts",
467
- "line": 33
467
+ "line": 34
468
468
  },
469
469
  "name": "workflow",
470
470
  "type": {
@@ -484,21 +484,20 @@
484
484
  "kind": "interface",
485
485
  "locationInModule": {
486
486
  "filename": "src/actions/action-sonar-workflow.ts",
487
- "line": 9
487
+ "line": 10
488
488
  },
489
489
  "name": "ActionSonarWorkflowOptions",
490
490
  "properties": [
491
491
  {
492
492
  "abstract": true,
493
493
  "docs": {
494
- "remarks": "Required, no default -\na guessed server is worse than a loud failure.",
495
494
  "stability": "experimental",
496
- "summary": "URL of the org's self-hosted SonarQube instance."
495
+ "summary": "URL of the org's SonarCloud instance (e.g. `https://sonarcloud.io`). Required, no default - a guessed server is worse than a loud failure."
497
496
  },
498
497
  "immutable": true,
499
498
  "locationInModule": {
500
499
  "filename": "src/actions/action-sonar-workflow.ts",
501
- "line": 14
500
+ "line": 15
502
501
  },
503
502
  "name": "sonarHostUrl",
504
503
  "type": {
@@ -515,7 +514,7 @@
515
514
  "immutable": true,
516
515
  "locationInModule": {
517
516
  "filename": "src/actions/action-sonar-workflow.ts",
518
- "line": 23
517
+ "line": 24
519
518
  },
520
519
  "name": "sonarPullRequestGate",
521
520
  "optional": true,
@@ -532,7 +531,7 @@
532
531
  "immutable": true,
533
532
  "locationInModule": {
534
533
  "filename": "src/actions/action-sonar-workflow.ts",
535
- "line": 17
534
+ "line": 18
536
535
  },
537
536
  "name": "sonarTokenSecret",
538
537
  "optional": true,
@@ -556,7 +555,7 @@
556
555
  },
557
556
  "locationInModule": {
558
557
  "filename": "src/common/actions-allowlist-guard.ts",
559
- "line": 41
558
+ "line": 42
560
559
  },
561
560
  "parameters": [
562
561
  {
@@ -577,7 +576,7 @@
577
576
  "kind": "class",
578
577
  "locationInModule": {
579
578
  "filename": "src/common/actions-allowlist-guard.ts",
580
- "line": 38
579
+ "line": 39
581
580
  },
582
581
  "name": "ActionsAllowlistGuard",
583
582
  "properties": [
@@ -588,7 +587,7 @@
588
587
  "immutable": true,
589
588
  "locationInModule": {
590
589
  "filename": "src/common/actions-allowlist-guard.ts",
591
- "line": 39
590
+ "line": 40
592
591
  },
593
592
  "name": "workflow",
594
593
  "type": {
@@ -610,7 +609,7 @@
610
609
  "kind": "interface",
611
610
  "locationInModule": {
612
611
  "filename": "src/common/actions-allowlist-guard.ts",
613
- "line": 25
612
+ "line": 26
614
613
  },
615
614
  "name": "ActionsAllowlistGuardOptions",
616
615
  "properties": [
@@ -625,7 +624,7 @@
625
624
  "immutable": true,
626
625
  "locationInModule": {
627
626
  "filename": "src/common/actions-allowlist-guard.ts",
628
- "line": 32
627
+ "line": 33
629
628
  },
630
629
  "name": "gheTokenSecret",
631
630
  "optional": true,
@@ -642,7 +641,7 @@
642
641
  "immutable": true,
643
642
  "locationInModule": {
644
643
  "filename": "src/common/actions-allowlist-guard.ts",
645
- "line": 35
644
+ "line": 36
646
645
  },
647
646
  "name": "workflowName",
648
647
  "optional": true,
@@ -707,7 +706,7 @@
707
706
  },
708
707
  "locationInModule": {
709
708
  "filename": "src/cdk/cdk-app-project.ts",
710
- "line": 13
709
+ "line": 14
711
710
  },
712
711
  "parameters": [
713
712
  {
@@ -721,7 +720,7 @@
721
720
  "kind": "class",
722
721
  "locationInModule": {
723
722
  "filename": "src/cdk/cdk-app-project.ts",
724
- "line": 12
723
+ "line": 13
725
724
  },
726
725
  "name": "CdkAppProject",
727
726
  "symbolId": "src/cdk/cdk-app-project:CdkAppProject"
@@ -1013,7 +1012,7 @@
1013
1012
  },
1014
1013
  "locationInModule": {
1015
1014
  "filename": "src/cdk/cdk-typescript-base.ts",
1016
- "line": 29
1015
+ "line": 30
1017
1016
  },
1018
1017
  "parameters": [
1019
1018
  {
@@ -1027,7 +1026,7 @@
1027
1026
  "kind": "class",
1028
1027
  "locationInModule": {
1029
1028
  "filename": "src/cdk/cdk-typescript-base.ts",
1030
- "line": 28
1029
+ "line": 29
1031
1030
  },
1032
1031
  "name": "CdkTypescriptProject",
1033
1032
  "symbolId": "src/cdk/cdk-typescript-base:CdkTypescriptProject"
@@ -1045,7 +1044,7 @@
1045
1044
  "kind": "interface",
1046
1045
  "locationInModule": {
1047
1046
  "filename": "src/cdk/cdk-typescript-base.ts",
1048
- "line": 17
1047
+ "line": 18
1049
1048
  },
1050
1049
  "name": "CdkTypescriptProjectOptions",
1051
1050
  "properties": [
@@ -1057,7 +1056,7 @@
1057
1056
  "immutable": true,
1058
1057
  "locationInModule": {
1059
1058
  "filename": "src/cdk/cdk-typescript-base.ts",
1060
- "line": 18
1059
+ "line": 19
1061
1060
  },
1062
1061
  "name": "environments",
1063
1062
  "optional": true,
@@ -1096,7 +1095,7 @@
1096
1095
  },
1097
1096
  "locationInModule": {
1098
1097
  "filename": "src/java/components/code-index-workflow.ts",
1099
- "line": 6
1098
+ "line": 7
1100
1099
  },
1101
1100
  "parameters": [
1102
1101
  {
@@ -1110,7 +1109,7 @@
1110
1109
  "kind": "class",
1111
1110
  "locationInModule": {
1112
1111
  "filename": "src/java/components/code-index-workflow.ts",
1113
- "line": 5
1112
+ "line": 6
1114
1113
  },
1115
1114
  "name": "CodeIndexWorkflow",
1116
1115
  "symbolId": "src/java/components/code-index-workflow:CodeIndexWorkflow"
@@ -1262,7 +1261,7 @@
1262
1261
  "docs": {
1263
1262
  "remarks": "If unset, the sonar scan step is skipped.",
1264
1263
  "stability": "experimental",
1265
- "summary": "SonarQube project key."
1264
+ "summary": "SonarCloud project key."
1266
1265
  },
1267
1266
  "immutable": true,
1268
1267
  "locationInModule": {
@@ -1401,7 +1400,7 @@
1401
1400
  },
1402
1401
  "locationInModule": {
1403
1402
  "filename": "src/java/components/docker-publish.ts",
1404
- "line": 11
1403
+ "line": 12
1405
1404
  },
1406
1405
  "parameters": [
1407
1406
  {
@@ -1422,7 +1421,7 @@
1422
1421
  "kind": "class",
1423
1422
  "locationInModule": {
1424
1423
  "filename": "src/java/components/docker-publish.ts",
1425
- "line": 10
1424
+ "line": 11
1426
1425
  },
1427
1426
  "name": "DockerPublish",
1428
1427
  "symbolId": "src/java/components/docker-publish:DockerPublish"
@@ -1437,7 +1436,7 @@
1437
1436
  "kind": "interface",
1438
1437
  "locationInModule": {
1439
1438
  "filename": "src/java/components/docker-publish.ts",
1440
- "line": 4
1439
+ "line": 5
1441
1440
  },
1442
1441
  "name": "DockerPublishOptions",
1443
1442
  "properties": [
@@ -1450,7 +1449,7 @@
1450
1449
  "immutable": true,
1451
1450
  "locationInModule": {
1452
1451
  "filename": "src/java/components/docker-publish.ts",
1453
- "line": 6
1452
+ "line": 7
1454
1453
  },
1455
1454
  "name": "dockerRegistry",
1456
1455
  "optional": true,
@@ -1731,7 +1730,7 @@
1731
1730
  },
1732
1731
  "locationInModule": {
1733
1732
  "filename": "src/actions/github-action-project.ts",
1734
- "line": 133
1733
+ "line": 134
1735
1734
  },
1736
1735
  "parameters": [
1737
1736
  {
@@ -1745,7 +1744,7 @@
1745
1744
  "kind": "class",
1746
1745
  "locationInModule": {
1747
1746
  "filename": "src/actions/github-action-project.ts",
1748
- "line": 127
1747
+ "line": 128
1749
1748
  },
1750
1749
  "name": "GitHubActionProject",
1751
1750
  "properties": [
@@ -1756,7 +1755,7 @@
1756
1755
  "immutable": true,
1757
1756
  "locationInModule": {
1758
1757
  "filename": "src/actions/github-action-project.ts",
1759
- "line": 128
1758
+ "line": 129
1760
1759
  },
1761
1760
  "name": "buildWorkflow",
1762
1761
  "type": {
@@ -1770,7 +1769,7 @@
1770
1769
  "immutable": true,
1771
1770
  "locationInModule": {
1772
1771
  "filename": "src/actions/github-action-project.ts",
1773
- "line": 129
1772
+ "line": 130
1774
1773
  },
1775
1774
  "name": "dogfoodWorkflow",
1776
1775
  "type": {
@@ -1784,7 +1783,7 @@
1784
1783
  "immutable": true,
1785
1784
  "locationInModule": {
1786
1785
  "filename": "src/actions/github-action-project.ts",
1787
- "line": 131
1786
+ "line": 132
1788
1787
  },
1789
1788
  "name": "release",
1790
1789
  "type": {
@@ -1798,7 +1797,7 @@
1798
1797
  "immutable": true,
1799
1798
  "locationInModule": {
1800
1799
  "filename": "src/actions/github-action-project.ts",
1801
- "line": 130
1800
+ "line": 131
1802
1801
  },
1803
1802
  "name": "sonarWorkflow",
1804
1803
  "type": {
@@ -1821,21 +1820,20 @@
1821
1820
  "kind": "interface",
1822
1821
  "locationInModule": {
1823
1822
  "filename": "src/actions/github-action-project.ts",
1824
- "line": 35
1823
+ "line": 36
1825
1824
  },
1826
1825
  "name": "GitHubActionProjectOptions",
1827
1826
  "properties": [
1828
1827
  {
1829
1828
  "abstract": true,
1830
1829
  "docs": {
1831
- "remarks": "MUST be reachable from\ngithub.com-hosted (public) runners (AD-001). Required, no default: a\nguessed server is worse than a loud failure.",
1832
1830
  "stability": "experimental",
1833
- "summary": "URL of the org's self-hosted SonarQube instance."
1831
+ "summary": "URL of the org's SonarCloud instance (e.g. `https://sonarcloud.io`). MUST be reachable from github.com-hosted (public) runners (AD-001). Required, no default: a guessed server is worse than a loud failure."
1834
1832
  },
1835
1833
  "immutable": true,
1836
1834
  "locationInModule": {
1837
1835
  "filename": "src/actions/github-action-project.ts",
1838
- "line": 56
1836
+ "line": 57
1839
1837
  },
1840
1838
  "name": "sonarHostUrl",
1841
1839
  "type": {
@@ -1852,7 +1850,7 @@
1852
1850
  "immutable": true,
1853
1851
  "locationInModule": {
1854
1852
  "filename": "src/actions/github-action-project.ts",
1855
- "line": 41
1853
+ "line": 42
1856
1854
  },
1857
1855
  "name": "description",
1858
1856
  "optional": true,
@@ -1871,7 +1869,7 @@
1871
1869
  "immutable": true,
1872
1870
  "locationInModule": {
1873
1871
  "filename": "src/actions/github-action-project.ts",
1874
- "line": 82
1872
+ "line": 83
1875
1873
  },
1876
1874
  "name": "dogfood",
1877
1875
  "optional": true,
@@ -1889,7 +1887,7 @@
1889
1887
  "immutable": true,
1890
1888
  "locationInModule": {
1891
1889
  "filename": "src/actions/github-action-project.ts",
1892
- "line": 49
1890
+ "line": 50
1893
1891
  },
1894
1892
  "name": "gheTokenSecret",
1895
1893
  "optional": true,
@@ -1907,7 +1905,7 @@
1907
1905
  "immutable": true,
1908
1906
  "locationInModule": {
1909
1907
  "filename": "src/actions/github-action-project.ts",
1910
- "line": 88
1908
+ "line": 89
1911
1909
  },
1912
1910
  "name": "license",
1913
1911
  "optional": true,
@@ -1925,7 +1923,7 @@
1925
1923
  "immutable": true,
1926
1924
  "locationInModule": {
1927
1925
  "filename": "src/actions/github-action-project.ts",
1928
- "line": 65
1926
+ "line": 66
1929
1927
  },
1930
1928
  "name": "sonarPullRequestGate",
1931
1929
  "optional": true,
@@ -1942,7 +1940,7 @@
1942
1940
  "immutable": true,
1943
1941
  "locationInModule": {
1944
1942
  "filename": "src/actions/github-action-project.ts",
1945
- "line": 59
1943
+ "line": 60
1946
1944
  },
1947
1945
  "name": "sonarTokenSecret",
1948
1946
  "optional": true,
@@ -1967,7 +1965,7 @@
1967
1965
  },
1968
1966
  "locationInModule": {
1969
1967
  "filename": "src/java/components/github-packages-publish.ts",
1970
- "line": 11
1968
+ "line": 12
1971
1969
  },
1972
1970
  "parameters": [
1973
1971
  {
@@ -1988,7 +1986,7 @@
1988
1986
  "kind": "class",
1989
1987
  "locationInModule": {
1990
1988
  "filename": "src/java/components/github-packages-publish.ts",
1991
- "line": 10
1989
+ "line": 11
1992
1990
  },
1993
1991
  "name": "GitHubPackagesPublish",
1994
1992
  "symbolId": "src/java/components/github-packages-publish:GitHubPackagesPublish"
@@ -2003,7 +2001,7 @@
2003
2001
  "kind": "interface",
2004
2002
  "locationInModule": {
2005
2003
  "filename": "src/java/components/github-packages-publish.ts",
2006
- "line": 4
2004
+ "line": 5
2007
2005
  },
2008
2006
  "name": "GitHubPackagesPublishOptions",
2009
2007
  "properties": [
@@ -2016,7 +2014,7 @@
2016
2014
  "immutable": true,
2017
2015
  "locationInModule": {
2018
2016
  "filename": "src/java/components/github-packages-publish.ts",
2019
- "line": 6
2017
+ "line": 7
2020
2018
  },
2021
2019
  "name": "ghPackagesRegistry",
2022
2020
  "optional": true,
@@ -2199,7 +2197,7 @@
2199
2197
  },
2200
2198
  "locationInModule": {
2201
2199
  "filename": "src/java/java-maven-base.ts",
2202
- "line": 23
2200
+ "line": 24
2203
2201
  },
2204
2202
  "parameters": [
2205
2203
  {
@@ -2213,7 +2211,7 @@
2213
2211
  "kind": "class",
2214
2212
  "locationInModule": {
2215
2213
  "filename": "src/java/java-maven-base.ts",
2216
- "line": 19
2214
+ "line": 20
2217
2215
  },
2218
2216
  "name": "JavaMavenProject",
2219
2217
  "properties": [
@@ -2224,7 +2222,7 @@
2224
2222
  "immutable": true,
2225
2223
  "locationInModule": {
2226
2224
  "filename": "src/java/java-maven-base.ts",
2227
- "line": 21
2225
+ "line": 22
2228
2226
  },
2229
2227
  "name": "buildVerifyWorkflow",
2230
2228
  "type": {
@@ -2238,7 +2236,7 @@
2238
2236
  "immutable": true,
2239
2237
  "locationInModule": {
2240
2238
  "filename": "src/java/java-maven-base.ts",
2241
- "line": 20
2239
+ "line": 21
2242
2240
  },
2243
2241
  "name": "upgradeTask",
2244
2242
  "type": {
@@ -2261,7 +2259,7 @@
2261
2259
  "kind": "interface",
2262
2260
  "locationInModule": {
2263
2261
  "filename": "src/java/java-maven-base.ts",
2264
- "line": 11
2262
+ "line": 12
2265
2263
  },
2266
2264
  "name": "JavaMavenProjectOptions",
2267
2265
  "symbolId": "src/java/java-maven-base:JavaMavenProjectOptions"
@@ -2440,7 +2438,7 @@
2440
2438
  },
2441
2439
  "locationInModule": {
2442
2440
  "filename": "src/java/components/maven-central-publish.ts",
2443
- "line": 14
2441
+ "line": 15
2444
2442
  },
2445
2443
  "parameters": [
2446
2444
  {
@@ -2461,7 +2459,7 @@
2461
2459
  "kind": "class",
2462
2460
  "locationInModule": {
2463
2461
  "filename": "src/java/components/maven-central-publish.ts",
2464
- "line": 13
2462
+ "line": 14
2465
2463
  },
2466
2464
  "name": "MavenCentralPublish",
2467
2465
  "symbolId": "src/java/components/maven-central-publish:MavenCentralPublish"
@@ -2476,7 +2474,7 @@
2476
2474
  "kind": "interface",
2477
2475
  "locationInModule": {
2478
2476
  "filename": "src/java/components/maven-central-publish.ts",
2479
- "line": 4
2477
+ "line": 5
2480
2478
  },
2481
2479
  "name": "MavenCentralPublishOptions",
2482
2480
  "properties": [
@@ -2489,7 +2487,7 @@
2489
2487
  "immutable": true,
2490
2488
  "locationInModule": {
2491
2489
  "filename": "src/java/components/maven-central-publish.ts",
2492
- "line": 6
2490
+ "line": 7
2493
2491
  },
2494
2492
  "name": "mavenCentralOidc",
2495
2493
  "optional": true,
@@ -2513,7 +2511,7 @@
2513
2511
  },
2514
2512
  "locationInModule": {
2515
2513
  "filename": "src/common/projen-drift-check-workflow.ts",
2516
- "line": 40
2514
+ "line": 41
2517
2515
  },
2518
2516
  "parameters": [
2519
2517
  {
@@ -2534,7 +2532,7 @@
2534
2532
  "kind": "class",
2535
2533
  "locationInModule": {
2536
2534
  "filename": "src/common/projen-drift-check-workflow.ts",
2537
- "line": 37
2535
+ "line": 38
2538
2536
  },
2539
2537
  "name": "ProjenDriftCheckWorkflow",
2540
2538
  "properties": [
@@ -2545,7 +2543,7 @@
2545
2543
  "immutable": true,
2546
2544
  "locationInModule": {
2547
2545
  "filename": "src/common/projen-drift-check-workflow.ts",
2548
- "line": 38
2546
+ "line": 39
2549
2547
  },
2550
2548
  "name": "workflow",
2551
2549
  "type": {
@@ -2567,7 +2565,7 @@
2567
2565
  "kind": "interface",
2568
2566
  "locationInModule": {
2569
2567
  "filename": "src/common/projen-drift-check-workflow.ts",
2570
- "line": 17
2568
+ "line": 18
2571
2569
  },
2572
2570
  "name": "ProjenDriftCheckWorkflowOptions",
2573
2571
  "properties": [
@@ -2582,7 +2580,7 @@
2582
2580
  "immutable": true,
2583
2581
  "locationInModule": {
2584
2582
  "filename": "src/common/projen-drift-check-workflow.ts",
2585
- "line": 31
2583
+ "line": 32
2586
2584
  },
2587
2585
  "name": "gheTokenSecret",
2588
2586
  "optional": true,
@@ -2600,7 +2598,7 @@
2600
2598
  "immutable": true,
2601
2599
  "locationInModule": {
2602
2600
  "filename": "src/common/projen-drift-check-workflow.ts",
2603
- "line": 22
2601
+ "line": 23
2604
2602
  },
2605
2603
  "name": "projenCommand",
2606
2604
  "optional": true,
@@ -2617,7 +2615,7 @@
2617
2615
  "immutable": true,
2618
2616
  "locationInModule": {
2619
2617
  "filename": "src/common/projen-drift-check-workflow.ts",
2620
- "line": 34
2618
+ "line": 35
2621
2619
  },
2622
2620
  "name": "workflowName",
2623
2621
  "optional": true,
@@ -2641,7 +2639,7 @@
2641
2639
  },
2642
2640
  "locationInModule": {
2643
2641
  "filename": "src/common/workflow-change-notice-workflow.ts",
2644
- "line": 36
2642
+ "line": 37
2645
2643
  },
2646
2644
  "parameters": [
2647
2645
  {
@@ -2662,7 +2660,7 @@
2662
2660
  "kind": "class",
2663
2661
  "locationInModule": {
2664
2662
  "filename": "src/common/workflow-change-notice-workflow.ts",
2665
- "line": 33
2663
+ "line": 34
2666
2664
  },
2667
2665
  "name": "WorkflowChangeNoticeWorkflow",
2668
2666
  "properties": [
@@ -2673,7 +2671,7 @@
2673
2671
  "immutable": true,
2674
2672
  "locationInModule": {
2675
2673
  "filename": "src/common/workflow-change-notice-workflow.ts",
2676
- "line": 34
2674
+ "line": 35
2677
2675
  },
2678
2676
  "name": "workflow",
2679
2677
  "type": {
@@ -2695,7 +2693,7 @@
2695
2693
  "kind": "interface",
2696
2694
  "locationInModule": {
2697
2695
  "filename": "src/common/workflow-change-notice-workflow.ts",
2698
- "line": 20
2696
+ "line": 21
2699
2697
  },
2700
2698
  "name": "WorkflowChangeNoticeWorkflowOptions",
2701
2699
  "properties": [
@@ -2709,7 +2707,7 @@
2709
2707
  "immutable": true,
2710
2708
  "locationInModule": {
2711
2709
  "filename": "src/common/workflow-change-notice-workflow.ts",
2712
- "line": 27
2710
+ "line": 28
2713
2711
  },
2714
2712
  "name": "watchPaths",
2715
2713
  "optional": true,
@@ -2731,7 +2729,7 @@
2731
2729
  "immutable": true,
2732
2730
  "locationInModule": {
2733
2731
  "filename": "src/common/workflow-change-notice-workflow.ts",
2734
- "line": 30
2732
+ "line": 31
2735
2733
  },
2736
2734
  "name": "workflowName",
2737
2735
  "optional": true,
@@ -2743,6 +2741,6 @@
2743
2741
  "symbolId": "src/common/workflow-change-notice-workflow:WorkflowChangeNoticeWorkflowOptions"
2744
2742
  }
2745
2743
  },
2746
- "version": "0.0.5",
2747
- "fingerprint": "21Crb2pgD0b45EpeaT/Dk4otgOluTce8o16ym1pl0ho="
2744
+ "version": "0.0.7",
2745
+ "fingerprint": "8cVaV8F9Kb2MBi/ddw4ws7w3AjveRgnshxputVCgcSg="
2748
2746
  }