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