@rocketleap/rocketleap-projen 1.0.0 → 1.2.0

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.
@@ -0,0 +1,1094 @@
1
+ import type { github, GitOptions, GroupRunnerOptions, IgnoreFileOptions, javascript, LoggerOptions, Project, ProjectType, ProjenrcJsonOptions, ReleasableCommits, release, RenovatebotOptions, SampleReadmeProps, typescript } from 'projen';
2
+ /**
3
+ * RocketleapLibraryCdkProjectOptions
4
+ */
5
+ export interface RocketleapLibraryCdkProjectOptions {
6
+ /**
7
+ * TypeScript version to use.
8
+ * NOTE: Typescript is not semantically versioned and should remain on the
9
+ * same minor, so we recommend using a `~` dependency (e.g. `~1.2.3`).
10
+ * @default "latest"
11
+ * @stability experimental
12
+ */
13
+ readonly typescriptVersion?: string;
14
+ /**
15
+ * Options for ts-jest.
16
+ * @stability experimental
17
+ */
18
+ readonly tsJestOptions?: typescript.TsJestOptions;
19
+ /**
20
+ * The name of the development tsconfig.json file.
21
+ * @default "tsconfig.dev.json"
22
+ * @stability experimental
23
+ */
24
+ readonly tsconfigDevFile?: string;
25
+ /**
26
+ * Custom tsconfig options for the development tsconfig.json file (used for testing).
27
+ * @default - use the production tsconfig options
28
+ * @stability experimental
29
+ */
30
+ readonly tsconfigDev?: javascript.TypescriptConfigOptions;
31
+ /**
32
+ * Custom TSConfig.
33
+ * @default - default options
34
+ * @stability experimental
35
+ */
36
+ readonly tsconfig?: javascript.TypescriptConfigOptions;
37
+ /**
38
+ * Jest tests directory. Tests files should be named `xxx.test.ts`.
39
+ * If this directory is under `srcdir` (e.g. `src/test`, `src/__tests__`),
40
+ * then tests are going to be compiled into `lib/` and executed as javascript.
41
+ * If the test directory is outside of `src`, then we configure jest to
42
+ * compile the code in-memory.
43
+ * @default "test"
44
+ * @stability experimental
45
+ */
46
+ readonly testdir?: string;
47
+ /**
48
+ * Typescript sources directory.
49
+ * @default "src"
50
+ * @stability experimental
51
+ */
52
+ readonly srcdir?: string;
53
+ /**
54
+ * Generate one-time sample in `src/` and `test/` if there are no files there.
55
+ * @default true
56
+ * @stability experimental
57
+ */
58
+ readonly sampleCode?: boolean;
59
+ /**
60
+ * Options for .projenrc.ts.
61
+ * @stability experimental
62
+ */
63
+ readonly projenrcTsOptions?: typescript.ProjenrcOptions;
64
+ /**
65
+ * Use TypeScript for your projenrc file (`.projenrc.ts`).
66
+ * @default false
67
+ * @stability experimental
68
+ * @pjnew true
69
+ */
70
+ readonly projenrcTs?: boolean;
71
+ /**
72
+ * Typescript artifacts output directory.
73
+ * @default "lib"
74
+ * @stability experimental
75
+ */
76
+ readonly libdir?: string;
77
+ /**
78
+ * Eslint options.
79
+ * @default - opinionated default options
80
+ * @stability experimental
81
+ */
82
+ readonly eslintOptions?: javascript.EslintOptions;
83
+ /**
84
+ * Setup eslint.
85
+ * @default - true, unless biome is enabled
86
+ * @stability experimental
87
+ */
88
+ readonly eslint?: boolean;
89
+ /**
90
+ * The .d.ts file that includes the type declarations for this module.
91
+ * @default - .d.ts file derived from the project's entrypoint (usually lib/index.d.ts)
92
+ * @stability experimental
93
+ */
94
+ readonly entrypointTypes?: string;
95
+ /**
96
+ * Docs directory.
97
+ * @default "docs"
98
+ * @stability experimental
99
+ */
100
+ readonly docsDirectory?: string;
101
+ /**
102
+ * Docgen by Typedoc.
103
+ * @default false
104
+ * @stability experimental
105
+ */
106
+ readonly docgen?: boolean;
107
+ /**
108
+ * Do not generate a `tsconfig.dev.json` file.
109
+ * @default false
110
+ * @stability experimental
111
+ */
112
+ readonly disableTsconfigDev?: boolean;
113
+ /**
114
+ * Do not generate a `tsconfig.json` file (used by jsii projects since tsconfig.json is generated by the jsii compiler).
115
+ * @default false
116
+ * @stability experimental
117
+ */
118
+ readonly disableTsconfig?: boolean;
119
+ /**
120
+ * Enable Node.js package cache in GitHub workflows.
121
+ * @default false
122
+ * @stability experimental
123
+ */
124
+ readonly workflowPackageCache?: boolean;
125
+ /**
126
+ * The node version used in GitHub Actions workflows.
127
+ * Always use this option if your GitHub Actions workflows require a specific to run.
128
+ * @default - `minNodeVersion` if set, otherwise `lts/*`.
129
+ * @stability experimental
130
+ */
131
+ readonly workflowNodeVersion?: string;
132
+ /**
133
+ * The git identity to use in workflows.
134
+ * @default - default GitHub Actions user
135
+ * @stability experimental
136
+ */
137
+ readonly workflowGitIdentity?: github.GitIdentity;
138
+ /**
139
+ * Workflow steps to use in order to bootstrap this repo.
140
+ * @default "yarn install --frozen-lockfile && yarn projen"
141
+ * @stability experimental
142
+ */
143
+ readonly workflowBootstrapSteps?: Array<github.workflows.JobStep>;
144
+ /**
145
+ * DEPRECATED: renamed to `release`.
146
+ * @default - true if not a subproject
147
+ * @deprecated see `release`.
148
+ * @stability deprecated
149
+ */
150
+ readonly releaseWorkflow?: boolean;
151
+ /**
152
+ * Automatically release to npm when new versions are introduced.
153
+ * @default false
154
+ * @stability experimental
155
+ */
156
+ readonly releaseToNpm?: boolean;
157
+ /**
158
+ * Add release management to this project.
159
+ * @default - true (false for subprojects)
160
+ * @stability experimental
161
+ */
162
+ readonly release?: boolean;
163
+ /**
164
+ * The contents of the pull request template.
165
+ * @default - default content
166
+ * @stability experimental
167
+ */
168
+ readonly pullRequestTemplateContents?: Array<string>;
169
+ /**
170
+ * Include a GitHub pull request template.
171
+ * @default true
172
+ * @stability experimental
173
+ */
174
+ readonly pullRequestTemplate?: boolean;
175
+ /**
176
+ * Version of projen to install.
177
+ * @default - Defaults to the latest version.
178
+ * @stability experimental
179
+ */
180
+ readonly projenVersion?: string;
181
+ /**
182
+ * Options for .projenrc.js.
183
+ * @default - default options
184
+ * @stability experimental
185
+ */
186
+ readonly projenrcJsOptions?: javascript.ProjenrcOptions;
187
+ /**
188
+ * Generate (once) .projenrc.js (in JavaScript). Set to `false` in order to disable .projenrc.js generation.
189
+ * @default - true if projenrcJson is false
190
+ * @stability experimental
191
+ */
192
+ readonly projenrcJs?: boolean;
193
+ /**
194
+ * Indicates of "projen" should be installed as a devDependency.
195
+ * @default - true if not a subproject
196
+ * @stability experimental
197
+ */
198
+ readonly projenDevDependency?: boolean;
199
+ /**
200
+ * Prettier options.
201
+ * @default - default options
202
+ * @stability experimental
203
+ */
204
+ readonly prettierOptions?: javascript.PrettierOptions;
205
+ /**
206
+ * Setup prettier.
207
+ * @default false
208
+ * @stability experimental
209
+ */
210
+ readonly prettier?: boolean;
211
+ /**
212
+ * Defines a `package` task that will produce an npm tarball under the artifacts directory (e.g. `dist`).
213
+ * @default true
214
+ * @stability experimental
215
+ */
216
+ readonly package?: boolean;
217
+ /**
218
+ * Configuration options for .npmignore file.
219
+ * @stability experimental
220
+ */
221
+ readonly npmIgnoreOptions?: IgnoreFileOptions;
222
+ /**
223
+ * Defines an .npmignore file. Normally this is only needed for libraries that are packaged as tarballs.
224
+ * @default true
225
+ * @stability experimental
226
+ */
227
+ readonly npmignoreEnabled?: boolean;
228
+ /**
229
+ * Additional entries to .npmignore.
230
+ * @deprecated - use `project.addPackageIgnore`
231
+ * @stability deprecated
232
+ */
233
+ readonly npmignore?: Array<string>;
234
+ /**
235
+ * Automatically update files modified during builds to pull-request branches.
236
+ * This means
237
+ * that any files synthesized by projen or e.g. test snapshots will always be up-to-date
238
+ * before a PR is merged.
239
+ *
240
+ * Implies that PR builds do not have anti-tamper checks.
241
+ * @default true
242
+ * @deprecated - Use `buildWorkflowOptions.mutableBuild`
243
+ * @stability deprecated
244
+ */
245
+ readonly mutableBuild?: boolean;
246
+ /**
247
+ * Jest options.
248
+ * @default - default options
249
+ * @stability experimental
250
+ */
251
+ readonly jestOptions?: javascript.JestOptions;
252
+ /**
253
+ * Setup jest unit tests.
254
+ * @default true
255
+ * @stability experimental
256
+ */
257
+ readonly jest?: boolean;
258
+ /**
259
+ * Additional entries to .gitignore.
260
+ * @stability experimental
261
+ */
262
+ readonly gitignore?: Array<string>;
263
+ /**
264
+ * Options for `UpgradeDependencies`.
265
+ * @default - default options
266
+ * @stability experimental
267
+ */
268
+ readonly depsUpgradeOptions?: javascript.UpgradeDependenciesOptions;
269
+ /**
270
+ * Use tasks and github workflows to handle dependency upgrades.
271
+ * Cannot be used in conjunction with `dependabot`.
272
+ * @default - `true` for root projects, `false` for subprojects
273
+ * @stability experimental
274
+ */
275
+ readonly depsUpgrade?: boolean;
276
+ /**
277
+ * Options for dependabot.
278
+ * @default - default options
279
+ * @stability experimental
280
+ */
281
+ readonly dependabotOptions?: github.DependabotOptions;
282
+ /**
283
+ * Use dependabot to handle dependency upgrades.
284
+ * Cannot be used in conjunction with `depsUpgrade`.
285
+ * @default false
286
+ * @stability experimental
287
+ */
288
+ readonly dependabot?: boolean;
289
+ /**
290
+ * The copyright years to put in the LICENSE file.
291
+ * @default - current year
292
+ * @stability experimental
293
+ */
294
+ readonly copyrightPeriod?: string;
295
+ /**
296
+ * License copyright owner.
297
+ * @default - defaults to the value of authorName or "" if `authorName` is undefined.
298
+ * @stability experimental
299
+ */
300
+ readonly copyrightOwner?: string;
301
+ /**
302
+ * Define the secret name for a specified https://codecov.io/ token.
303
+ * @default - OIDC auth is used
304
+ * @stability experimental
305
+ */
306
+ readonly codeCovTokenSecret?: string;
307
+ /**
308
+ * Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v5 By default, OIDC auth is used. Alternatively a token can be provided via `codeCovTokenSecret`.
309
+ * @default false
310
+ * @stability experimental
311
+ */
312
+ readonly codeCov?: boolean;
313
+ /**
314
+ * Configure which licenses should be deemed acceptable for use by dependencies.
315
+ * This setting will cause the build to fail, if any prohibited or not allowed licenses ares encountered.
316
+ * @default - no license checks are run during the build and all licenses will be accepted
317
+ * @stability experimental
318
+ */
319
+ readonly checkLicenses?: javascript.LicenseCheckerOptions;
320
+ /**
321
+ * Options for `Bundler`.
322
+ * @stability experimental
323
+ */
324
+ readonly bundlerOptions?: javascript.BundlerOptions;
325
+ /**
326
+ * Build workflow triggers.
327
+ * @default "{ pullRequest: {}, workflowDispatch: {} }"
328
+ * @deprecated - Use `buildWorkflowOptions.workflowTriggers`
329
+ * @stability deprecated
330
+ */
331
+ readonly buildWorkflowTriggers?: github.workflows.Triggers;
332
+ /**
333
+ * Options for PR build workflow.
334
+ * @stability experimental
335
+ */
336
+ readonly buildWorkflowOptions?: javascript.BuildWorkflowOptions;
337
+ /**
338
+ * Define a GitHub workflow for building PRs.
339
+ * @default - true if not a subproject
340
+ * @stability experimental
341
+ */
342
+ readonly buildWorkflow?: boolean;
343
+ /**
344
+ * Biome options.
345
+ * @default - default options
346
+ * @stability experimental
347
+ */
348
+ readonly biomeOptions?: javascript.BiomeOptions;
349
+ /**
350
+ * Setup Biome.
351
+ * @default false
352
+ * @stability experimental
353
+ */
354
+ readonly biome?: boolean;
355
+ /**
356
+ * Automatically approve deps upgrade PRs, allowing them to be merged by mergify (if configured).
357
+ * Throw if set to true but `autoApproveOptions` are not defined.
358
+ * @default - true
359
+ * @stability experimental
360
+ */
361
+ readonly autoApproveUpgrades?: boolean;
362
+ /**
363
+ * Security audit options.
364
+ * @default - default options
365
+ * @stability experimental
366
+ */
367
+ readonly auditDepsOptions?: javascript.AuditOptions;
368
+ /**
369
+ * Run security audit on dependencies.
370
+ * When enabled, creates an "audit" task that checks for known security vulnerabilities
371
+ * in dependencies. By default, runs during every build and checks for "high" severity
372
+ * vulnerabilities or above in all dependencies (including dev dependencies).
373
+ * @default false
374
+ * @stability experimental
375
+ */
376
+ readonly auditDeps?: boolean;
377
+ /**
378
+ * A directory which will contain build artifacts.
379
+ * @default "dist"
380
+ * @stability experimental
381
+ */
382
+ readonly artifactsDirectory?: string;
383
+ /**
384
+ * Github Runner Group selection options.
385
+ * @stability experimental
386
+ * @description Defines a target Runner Group by name and/or labels
387
+ * @throws {Error} if both `runsOn` and `runsOnGroup` are specified
388
+ */
389
+ readonly workflowRunsOnGroup?: GroupRunnerOptions;
390
+ /**
391
+ * Github Runner selection labels.
392
+ * @default ["ubuntu-latest"]
393
+ * @stability experimental
394
+ * @description Defines a target Runner by labels
395
+ * @throws {Error} if both `runsOn` and `runsOnGroup` are specified
396
+ */
397
+ readonly workflowRunsOn?: Array<string>;
398
+ /**
399
+ * Container image to use for GitHub workflows.
400
+ * @default - default image
401
+ * @stability experimental
402
+ */
403
+ readonly workflowContainerImage?: string;
404
+ /**
405
+ * Custom configuration used when creating changelog with commit-and-tag-version package.
406
+ * Given values either append to default configuration or overwrite values in it.
407
+ * @default - standard configuration applicable for GitHub repositories
408
+ * @stability experimental
409
+ */
410
+ readonly versionrcOptions?: Record<string, any>;
411
+ /**
412
+ * A set of workflow steps to execute in order to setup the workflow container.
413
+ * @stability experimental
414
+ */
415
+ readonly releaseWorkflowSetupSteps?: Array<github.workflows.JobStep>;
416
+ /**
417
+ * The name of the default release workflow.
418
+ * @default "release"
419
+ * @stability experimental
420
+ */
421
+ readonly releaseWorkflowName?: string;
422
+ /**
423
+ * Build environment variables for release workflows.
424
+ * @default {}
425
+ * @stability experimental
426
+ */
427
+ readonly releaseWorkflowEnv?: Record<string, string>;
428
+ /**
429
+ * The release trigger to use.
430
+ * @default - Continuous releases (`ReleaseTrigger.continuous()`)
431
+ * @stability experimental
432
+ */
433
+ readonly releaseTrigger?: release.ReleaseTrigger;
434
+ /**
435
+ * Automatically add the given prefix to release tags. Useful if you are releasing on multiple branches with overlapping version numbers.
436
+ * Note: this prefix is used to detect the latest tagged version
437
+ * when bumping, so if you change this on a project with an existing version
438
+ * history, you may need to manually tag your latest release
439
+ * with the new prefix.
440
+ * @default "v"
441
+ * @stability experimental
442
+ */
443
+ readonly releaseTagPrefix?: string;
444
+ /**
445
+ * CRON schedule to trigger new releases.
446
+ * @default - no scheduled releases
447
+ * @deprecated Use `releaseTrigger: ReleaseTrigger.scheduled()` instead
448
+ * @stability deprecated
449
+ */
450
+ readonly releaseSchedule?: string;
451
+ /**
452
+ * The label to apply to issues indicating publish failures.
453
+ * Only applies if `releaseFailureIssue` is true.
454
+ * @default "failed-release"
455
+ * @stability experimental
456
+ */
457
+ readonly releaseFailureIssueLabel?: string;
458
+ /**
459
+ * Create a github issue on every failed publishing task.
460
+ * @default false
461
+ * @stability experimental
462
+ */
463
+ readonly releaseFailureIssue?: boolean;
464
+ /**
465
+ * Automatically release new versions every commit to one of branches in `releaseBranches`.
466
+ * @default true
467
+ * @deprecated Use `releaseTrigger: ReleaseTrigger.continuous()` instead
468
+ * @stability deprecated
469
+ */
470
+ readonly releaseEveryCommit?: boolean;
471
+ /**
472
+ * The GitHub Actions environment used for the release.
473
+ * This can be used to add an explicit approval step to the release
474
+ * or limit who can initiate a release through environment protection rules.
475
+ *
476
+ * When multiple artifacts are released, the environment can be overwritten
477
+ * on a per artifact basis.
478
+ * @default - no environment used, unless set at the artifact level
479
+ * @stability experimental
480
+ */
481
+ readonly releaseEnvironment?: string;
482
+ /**
483
+ * Defines additional release branches.
484
+ * A workflow will be created for each
485
+ * release branch which will publish releases from commits in this branch.
486
+ * Each release branch _must_ be assigned a major version number which is used
487
+ * to enforce that versions published from that branch always use that major
488
+ * version. If multiple branches are used, the `majorVersion` field must also
489
+ * be provided for the default branch.
490
+ * @default - no additional branches are used for release. you can use
491
+ `addBranch()` to add additional branches.
492
+ * @stability experimental
493
+ */
494
+ readonly releaseBranches?: Record<string, release.BranchOptions>;
495
+ /**
496
+ * Find commits that should be considered releasable Used to decide if a release is required.
497
+ * @default ReleasableCommits.everyCommit()
498
+ * @stability experimental
499
+ */
500
+ readonly releasableCommits?: ReleasableCommits;
501
+ /**
502
+ * Define publishing tasks that can be executed manually as well as workflows.
503
+ * Normally, publishing only happens within automated workflows. Enable this
504
+ * in order to create a publishing task for each publishing activity.
505
+ * @default false
506
+ * @stability experimental
507
+ */
508
+ readonly publishTasks?: boolean;
509
+ /**
510
+ * Instead of actually publishing to package managers, just print the publishing command.
511
+ * @default false
512
+ * @stability experimental
513
+ */
514
+ readonly publishDryRun?: boolean;
515
+ /**
516
+ * Bump versions from the default branch as pre-releases (e.g. "beta", "alpha", "pre").
517
+ * @default - normal semantic versions
518
+ * @stability experimental
519
+ */
520
+ readonly prerelease?: string;
521
+ /**
522
+ * Steps to execute after build as part of the release workflow.
523
+ * @default []
524
+ * @stability experimental
525
+ */
526
+ readonly postBuildSteps?: Array<github.workflows.JobStep>;
527
+ /**
528
+ * The npmDistTag to use when publishing from the default branch.
529
+ * To set the npm dist-tag for release branches, set the `npmDistTag` property
530
+ * for each branch.
531
+ * @default "latest"
532
+ * @stability experimental
533
+ */
534
+ readonly npmDistTag?: string;
535
+ /**
536
+ * A shell command to control the next version to release.
537
+ * If present, this shell command will be run before the bump is executed, and
538
+ * it determines what version to release. It will be executed in the following
539
+ * environment:
540
+ *
541
+ * - Working directory: the project directory.
542
+ * - `$VERSION`: the current version. Looks like `1.2.3`.
543
+ * - `$LATEST_TAG`: the most recent tag. Looks like `prefix-v1.2.3`, or may be unset.
544
+ * - `$SUGGESTED_BUMP`: the suggested bump action based on commits. One of `major|minor|patch|none`.
545
+ *
546
+ * The command should print one of the following to `stdout`:
547
+ *
548
+ * - Nothing: the next version number will be determined based on commit history.
549
+ * - `x.y.z`: the next version number will be `x.y.z`.
550
+ * - `major|minor|patch`: the next version number will be the current version number
551
+ * with the indicated component bumped.
552
+ *
553
+ * This setting cannot be specified together with `minMajorVersion`; the invoked
554
+ * script can be used to achieve the effects of `minMajorVersion`.
555
+ * @default - The next version will be determined based on the commit history and project settings.
556
+ * @stability experimental
557
+ */
558
+ readonly nextVersionCommand?: string;
559
+ /**
560
+ * Minimal Major version to release.
561
+ * This can be useful to set to 1, as breaking changes before the 1.x major
562
+ * release are not incrementing the major version number.
563
+ *
564
+ * Can not be set together with `majorVersion`.
565
+ * @default - No minimum version is being enforced
566
+ * @stability experimental
567
+ */
568
+ readonly minMajorVersion?: number;
569
+ /**
570
+ * Major version to release from the default branch.
571
+ * If this is specified, we bump the latest version of this major version line.
572
+ * If not specified, we bump the global latest version.
573
+ * @default - Major version is not enforced.
574
+ * @stability experimental
575
+ */
576
+ readonly majorVersion?: number;
577
+ /**
578
+ * Version requirement of `publib` which is used to publish modules to npm.
579
+ * @default "latest"
580
+ * @stability experimental
581
+ */
582
+ readonly jsiiReleaseVersion?: string;
583
+ /**
584
+ * The `commit-and-tag-version` compatible package used to bump the package version, as a dependency string.
585
+ * This can be any compatible package version, including the deprecated `standard-version@9`.
586
+ * @default - A recent version of "commit-and-tag-version"
587
+ * @stability experimental
588
+ */
589
+ readonly bumpPackage?: string;
590
+ /**
591
+ * Options for Yarn Berry.
592
+ * @default - Yarn Berry v4 with all default options
593
+ * @stability experimental
594
+ */
595
+ readonly yarnBerryOptions?: javascript.YarnBerryOptions;
596
+ /**
597
+ * Package's Stability.
598
+ * @stability experimental
599
+ */
600
+ readonly stability?: string;
601
+ /**
602
+ * npm scripts to include.
603
+ * If a script has the same name as a standard script,
604
+ * the standard script will be overwritten.
605
+ * Also adds the script as a task.
606
+ * @default {}
607
+ * @deprecated use `project.addTask()` or `package.setScript()`
608
+ * @stability deprecated
609
+ */
610
+ readonly scripts?: Record<string, string>;
611
+ /**
612
+ * Options for privately hosted scoped packages.
613
+ * @default - fetch all scoped packages from the public npm registry
614
+ * @stability experimental
615
+ */
616
+ readonly scopedPackagesOptions?: Array<javascript.ScopedPackagesOptions>;
617
+ /**
618
+ * If the package.json for your package is not in the root directory (for example if it is part of a monorepo), you can specify the directory in which it lives.
619
+ * @stability experimental
620
+ */
621
+ readonly repositoryDirectory?: string;
622
+ /**
623
+ * The repository is the location where the actual code for your package lives.
624
+ * See https://classic.yarnpkg.com/en/docs/package-json/#toc-repository
625
+ * @stability experimental
626
+ */
627
+ readonly repository?: string;
628
+ /**
629
+ * The version of PNPM to use if using PNPM as a package manager.
630
+ * @default "9"
631
+ * @stability experimental
632
+ */
633
+ readonly pnpmVersion?: string;
634
+ /**
635
+ * Peer dependencies for this module.
636
+ * Dependencies listed here are required to
637
+ * be installed (and satisfied) by the _consumer_ of this library. Using peer
638
+ * dependencies allows you to ensure that only a single module of a certain
639
+ * library exists in the `node_modules` tree of your consumers.
640
+ *
641
+ * Note that prior to npm@7, peer dependencies are _not_ automatically
642
+ * installed, which means that adding peer dependencies to a library will be a
643
+ * breaking change for your customers.
644
+ *
645
+ * Unless `peerDependencyOptions.pinnedDevDependency` is disabled (it is
646
+ * enabled by default), projen will automatically add a dev dependency with a
647
+ * pinned version for each peer dependency. This will ensure that you build &
648
+ * test your module against the lowest peer version required.
649
+ * @default []
650
+ * @stability experimental
651
+ */
652
+ readonly peerDeps?: Array<string>;
653
+ /**
654
+ * Options for `peerDeps`.
655
+ * @stability experimental
656
+ */
657
+ readonly peerDependencyOptions?: javascript.PeerDependencyOptions;
658
+ /**
659
+ * The "name" in package.json.
660
+ * @default - defaults to project name
661
+ * @stability experimental
662
+ * @featured true
663
+ */
664
+ readonly packageName?: string;
665
+ /**
666
+ * The Node Package Manager used to execute scripts.
667
+ * @default NodePackageManager.YARN_CLASSIC
668
+ * @stability experimental
669
+ */
670
+ readonly packageManager?: javascript.NodePackageManager;
671
+ /**
672
+ * Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work.
673
+ * @default - false
674
+ * @stability experimental
675
+ */
676
+ readonly npmTrustedPublishing?: boolean;
677
+ /**
678
+ * GitHub secret which contains the NPM token to use when publishing packages.
679
+ * @default "NPM_TOKEN"
680
+ * @stability experimental
681
+ */
682
+ readonly npmTokenSecret?: string;
683
+ /**
684
+ * The base URL of the npm package registry.
685
+ * Must be a URL (e.g. start with "https://" or "http://")
686
+ * @default "https://registry.npmjs.org"
687
+ * @stability experimental
688
+ */
689
+ readonly npmRegistryUrl?: string;
690
+ /**
691
+ * The host name of the npm registry to publish to.
692
+ * Cannot be set together with `npmRegistryUrl`.
693
+ * @deprecated use `npmRegistryUrl` instead
694
+ * @stability deprecated
695
+ */
696
+ readonly npmRegistry?: string;
697
+ /**
698
+ * Should provenance statements be generated when the package is published.
699
+ * A supported package manager is required to publish a package with npm provenance statements and
700
+ * you will need to use a supported CI/CD provider.
701
+ *
702
+ * Note that the projen `Release` and `Publisher` components are using `publib` to publish packages,
703
+ * which is using npm internally and supports provenance statements independently of the package manager used.
704
+ * @default - true for public packages, false otherwise
705
+ * @stability experimental
706
+ */
707
+ readonly npmProvenance?: boolean;
708
+ /**
709
+ * Access level of the npm package.
710
+ * @default - for scoped packages (e.g. `foo@bar`), the default is
711
+ `NpmAccess.RESTRICTED`, for non-scoped packages, the default is
712
+ `NpmAccess.PUBLIC`.
713
+ * @stability experimental
714
+ */
715
+ readonly npmAccess?: javascript.NpmAccess;
716
+ /**
717
+ * The minimum node version required by this package to function. Most projects should not use this option.
718
+ * The value indicates that the package is incompatible with any older versions of node.
719
+ * This requirement is enforced via the engines field.
720
+ *
721
+ * You will normally not need to set this option, even if your package is incompatible with EOL versions of node.
722
+ * Consider this option only if your package depends on a specific feature, that is not available in other LTS versions.
723
+ * Setting this option has very high impact on the consumers of your package,
724
+ * as package managers will actively prevent usage with node versions you have marked as incompatible.
725
+ *
726
+ * To change the node version of your CI/CD workflows, use `workflowNodeVersion`.
727
+ * @default - no minimum version is enforced
728
+ * @stability experimental
729
+ */
730
+ readonly minNodeVersion?: string;
731
+ /**
732
+ * The maximum node version supported by this package. Most projects should not use this option.
733
+ * The value indicates that the package is incompatible with any newer versions of node.
734
+ * This requirement is enforced via the engines field.
735
+ *
736
+ * You will normally not need to set this option.
737
+ * Consider this option only if your package is known to not function with newer versions of node.
738
+ * @default - no maximum version is enforced
739
+ * @stability experimental
740
+ */
741
+ readonly maxNodeVersion?: string;
742
+ /**
743
+ * Indicates if a license should be added.
744
+ * @default true
745
+ * @stability experimental
746
+ */
747
+ readonly licensed?: boolean;
748
+ /**
749
+ * License's SPDX identifier.
750
+ * See https://github.com/projen/projen/tree/main/license-text for a list of supported licenses.
751
+ * Use the `licensed` option if you want to no license to be specified.
752
+ * @default "Apache-2.0"
753
+ * @stability experimental
754
+ */
755
+ readonly license?: string;
756
+ /**
757
+ * Keywords to include in `package.json`.
758
+ * @stability experimental
759
+ */
760
+ readonly keywords?: Array<string>;
761
+ /**
762
+ * Package's Homepage / Website.
763
+ * @stability experimental
764
+ */
765
+ readonly homepage?: string;
766
+ /**
767
+ * Module entrypoint (`main` in `package.json`).
768
+ * Set to an empty string to not include `main` in your package.json
769
+ * @default "lib/index.js"
770
+ * @stability experimental
771
+ */
772
+ readonly entrypoint?: string;
773
+ /**
774
+ * Build dependencies for this module.
775
+ * These dependencies will only be
776
+ * available in your build environment but will not be fetched when this
777
+ * module is consumed.
778
+ *
779
+ * The recommendation is to only specify the module name here (e.g.
780
+ * `express`). This will behave similar to `yarn add` or `npm install` in the
781
+ * sense that it will add the module as a dependency to your `package.json`
782
+ * file with the latest version (`^`). You can specify semver requirements in
783
+ * the same syntax passed to `npm i` or `yarn add` (e.g. `express@^2`) and
784
+ * this will be what you `package.json` will eventually include.
785
+ * @default []
786
+ * @stability experimental
787
+ * @featured true
788
+ */
789
+ readonly devDeps?: Array<string>;
790
+ /**
791
+ * The description is just a string that helps people understand the purpose of the package.
792
+ * It can be used when searching for packages in a package manager as well.
793
+ * See https://classic.yarnpkg.com/en/docs/package-json/#toc-description
794
+ * @stability experimental
795
+ * @featured true
796
+ */
797
+ readonly description?: string;
798
+ /**
799
+ * Runtime dependencies of this module.
800
+ * The recommendation is to only specify the module name here (e.g.
801
+ * `express`). This will behave similar to `yarn add` or `npm install` in the
802
+ * sense that it will add the module as a dependency to your `package.json`
803
+ * file with the latest version (`^`). You can specify semver requirements in
804
+ * the same syntax passed to `npm i` or `yarn add` (e.g. `express@^2`) and
805
+ * this will be what you `package.json` will eventually include.
806
+ * @default []
807
+ * @stability experimental
808
+ * @featured true
809
+ */
810
+ readonly deps?: Array<string>;
811
+ /**
812
+ * Options for npm packages using AWS CodeArtifact.
813
+ * This is required if publishing packages to, or installing scoped packages from AWS CodeArtifact
814
+ * @default - undefined
815
+ * @stability experimental
816
+ */
817
+ readonly codeArtifactOptions?: javascript.CodeArtifactOptions;
818
+ /**
819
+ * The version of Bun to use if using Bun as a package manager.
820
+ * @default "latest"
821
+ * @stability experimental
822
+ */
823
+ readonly bunVersion?: string;
824
+ /**
825
+ * List of dependencies to bundle into this module.
826
+ * These modules will be
827
+ * added both to the `dependencies` section and `bundledDependencies` section of
828
+ * your `package.json`.
829
+ *
830
+ * The recommendation is to only specify the module name here (e.g.
831
+ * `express`). This will behave similar to `yarn add` or `npm install` in the
832
+ * sense that it will add the module as a dependency to your `package.json`
833
+ * file with the latest version (`^`). You can specify semver requirements in
834
+ * the same syntax passed to `npm i` or `yarn add` (e.g. `express@^2`) and
835
+ * this will be what you `package.json` will eventually include.
836
+ * @stability experimental
837
+ */
838
+ readonly bundledDeps?: Array<string>;
839
+ /**
840
+ * The url to your project's issue tracker.
841
+ * @stability experimental
842
+ */
843
+ readonly bugsUrl?: string;
844
+ /**
845
+ * The email address to which issues should be reported.
846
+ * @stability experimental
847
+ */
848
+ readonly bugsEmail?: string;
849
+ /**
850
+ * Binary programs vended with your module.
851
+ * You can use this option to add/customize how binaries are represented in
852
+ * your `package.json`, but unless `autoDetectBin` is `false`, every
853
+ * executable file under `bin` will automatically be added to this section.
854
+ * @stability experimental
855
+ */
856
+ readonly bin?: Record<string, string>;
857
+ /**
858
+ * Automatically add all executables under the `bin` directory to your `package.json` file under the `bin` section.
859
+ * @default true
860
+ * @stability experimental
861
+ */
862
+ readonly autoDetectBin?: boolean;
863
+ /**
864
+ * Author's URL / Website.
865
+ * @stability experimental
866
+ */
867
+ readonly authorUrl?: string;
868
+ /**
869
+ * Is the author an organization.
870
+ * @stability experimental
871
+ */
872
+ readonly authorOrganization?: boolean;
873
+ /**
874
+ * Author's name.
875
+ * @stability experimental
876
+ */
877
+ readonly authorName?: string;
878
+ /**
879
+ * Author's e-mail.
880
+ * @stability experimental
881
+ */
882
+ readonly authorEmail?: string;
883
+ /**
884
+ * Allow the project to include `peerDependencies` and `bundledDependencies`.
885
+ * This is normally only allowed for libraries. For apps, there's no meaning
886
+ * for specifying these.
887
+ * @default true
888
+ * @stability experimental
889
+ */
890
+ readonly allowLibraryDependencies?: boolean;
891
+ /**
892
+ * Enable VSCode integration.
893
+ * Enabled by default for root projects. Disabled for non-root projects.
894
+ * @default true
895
+ * @stability experimental
896
+ */
897
+ readonly vscode?: boolean;
898
+ /**
899
+ * Auto-close stale issues and pull requests.
900
+ * To disable set `stale` to `false`.
901
+ * @default - see defaults in `StaleOptions`
902
+ * @stability experimental
903
+ */
904
+ readonly staleOptions?: github.StaleOptions;
905
+ /**
906
+ * Auto-close of stale issues and pull request.
907
+ * See `staleOptions` for options.
908
+ * @default false
909
+ * @stability experimental
910
+ */
911
+ readonly stale?: boolean;
912
+ /**
913
+ * The README setup.
914
+ * @default - { filename: 'README.md', contents: '# replace this' }
915
+ * @stability experimental
916
+ */
917
+ readonly readme?: SampleReadmeProps;
918
+ /**
919
+ * The name of a secret which includes a GitHub Personal Access Token to be used by projen workflows.
920
+ * This token needs to have the `repo`, `workflows`
921
+ * and `packages` scope.
922
+ * @default "PROJEN_GITHUB_TOKEN"
923
+ * @deprecated use `projenCredentials`
924
+ * @stability deprecated
925
+ */
926
+ readonly projenTokenSecret?: string;
927
+ /**
928
+ * Choose a method of providing GitHub API access for projen workflows.
929
+ * @default - use a personal access token named PROJEN_GITHUB_TOKEN
930
+ * @stability experimental
931
+ */
932
+ readonly projenCredentials?: github.GithubCredentials;
933
+ /**
934
+ * Which type of project this is (library/app).
935
+ * @default ProjectType.UNKNOWN
936
+ * @deprecated no longer supported at the base project level
937
+ * @stability deprecated
938
+ */
939
+ readonly projectType?: ProjectType;
940
+ /**
941
+ * Options for mergify.
942
+ * @default - default options
943
+ * @deprecated use `githubOptions.mergifyOptions` instead
944
+ * @stability deprecated
945
+ */
946
+ readonly mergifyOptions?: github.MergifyOptions;
947
+ /**
948
+ * Whether mergify should be enabled on this repository or not.
949
+ * @default true
950
+ * @deprecated use `githubOptions.mergify` instead
951
+ * @stability deprecated
952
+ */
953
+ readonly mergify?: boolean;
954
+ /**
955
+ * Add a Gitpod development environment.
956
+ * @default false
957
+ * @stability experimental
958
+ */
959
+ readonly gitpod?: boolean;
960
+ /**
961
+ * Options for GitHub integration.
962
+ * @default - see GitHubOptions
963
+ * @stability experimental
964
+ */
965
+ readonly githubOptions?: github.GitHubOptions;
966
+ /**
967
+ * Enable GitHub integration.
968
+ * Enabled by default for root projects. Disabled for non-root projects.
969
+ * @default true
970
+ * @stability experimental
971
+ */
972
+ readonly github?: boolean;
973
+ /**
974
+ * Add a VSCode development environment (used for GitHub Codespaces).
975
+ * @default false
976
+ * @stability experimental
977
+ */
978
+ readonly devContainer?: boolean;
979
+ /**
980
+ * Add a `clobber` task which resets the repo to origin.
981
+ * @default - true, but false for subprojects
982
+ * @stability experimental
983
+ */
984
+ readonly clobber?: boolean;
985
+ /**
986
+ * Configure options for automatic merging on GitHub.
987
+ * Has no effect if
988
+ * `github.mergify` or `autoMerge` is set to false.
989
+ * @default - see defaults in `AutoMergeOptions`
990
+ * @stability experimental
991
+ */
992
+ readonly autoMergeOptions?: github.AutoMergeOptions;
993
+ /**
994
+ * Enable automatic merging on GitHub.
995
+ * Has no effect if `github.mergify`
996
+ * is set to false.
997
+ * @default true
998
+ * @stability experimental
999
+ */
1000
+ readonly autoMerge?: boolean;
1001
+ /**
1002
+ * Enable and configure the 'auto approve' workflow.
1003
+ * @default - auto approve is disabled
1004
+ * @stability experimental
1005
+ */
1006
+ readonly autoApproveOptions?: github.AutoApproveOptions;
1007
+ /**
1008
+ * Options for renovatebot.
1009
+ * @default - default options
1010
+ * @stability experimental
1011
+ */
1012
+ readonly renovatebotOptions?: RenovatebotOptions;
1013
+ /**
1014
+ * Use renovatebot to handle dependency upgrades.
1015
+ * @default false
1016
+ * @stability experimental
1017
+ */
1018
+ readonly renovatebot?: boolean;
1019
+ /**
1020
+ * Options for .projenrc.json.
1021
+ * @default - default options
1022
+ * @stability experimental
1023
+ */
1024
+ readonly projenrcJsonOptions?: ProjenrcJsonOptions;
1025
+ /**
1026
+ * Generate (once) .projenrc.json (in JSON). Set to `false` in order to disable .projenrc.json generation.
1027
+ * @default false
1028
+ * @stability experimental
1029
+ */
1030
+ readonly projenrcJson?: boolean;
1031
+ /**
1032
+ * The shell command to use in order to run the projen CLI.
1033
+ * Can be used to customize in special environments.
1034
+ * @default "npx projen"
1035
+ * @stability experimental
1036
+ */
1037
+ readonly projenCommand?: string;
1038
+ /**
1039
+ * The parent project, if this project is part of a bigger project.
1040
+ * @stability experimental
1041
+ */
1042
+ readonly parent?: Project;
1043
+ /**
1044
+ * The root directory of the project.
1045
+ * Relative to this directory, all files are synthesized.
1046
+ *
1047
+ * If this project has a parent, this directory is relative to the parent
1048
+ * directory and it cannot be the same as the parent or any of it's other
1049
+ * subprojects.
1050
+ * @default "."
1051
+ * @stability experimental
1052
+ */
1053
+ readonly outdir?: string;
1054
+ /**
1055
+ * Configure logging options such as verbosity.
1056
+ * @default {}
1057
+ * @stability experimental
1058
+ */
1059
+ readonly logging?: LoggerOptions;
1060
+ /**
1061
+ * Configuration options for git.
1062
+ * @stability experimental
1063
+ */
1064
+ readonly gitOptions?: GitOptions;
1065
+ /**
1066
+ * Configuration options for .gitignore file.
1067
+ * @stability experimental
1068
+ */
1069
+ readonly gitIgnoreOptions?: IgnoreFileOptions;
1070
+ /**
1071
+ * Whether to commit the managed files by default.
1072
+ * @default true
1073
+ * @stability experimental
1074
+ */
1075
+ readonly commitGenerated?: boolean;
1076
+ /**
1077
+ * The company identifier used for package scoping.
1078
+ */
1079
+ readonly company: string;
1080
+ /**
1081
+ * The project name.
1082
+ */
1083
+ readonly project: string;
1084
+ /**
1085
+ * The AWS CDK version to use as peer dependency.
1086
+ * @default '2.238.0'
1087
+ */
1088
+ readonly cdkVersion?: string;
1089
+ /**
1090
+ * The constructs library version to use as peer dependency.
1091
+ * @default '10.4.5'
1092
+ */
1093
+ readonly constructVersion?: string;
1094
+ }