@nikovirtala/projen-constructs 0.0.9 → 0.0.10

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