projen 0.79.4__py3-none-any.whl → 0.98.25__py3-none-any.whl

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.
@@ -1,3 +1,6 @@
1
+ from pkgutil import extend_path
2
+ __path__ = extend_path(__path__, __name__)
3
+
1
4
  import abc
2
5
  import builtins
3
6
  import datetime
@@ -8,7 +11,22 @@ import jsii
8
11
  import publication
9
12
  import typing_extensions
10
13
 
11
- from typeguard import check_type
14
+ import typeguard
15
+ from importlib.metadata import version as _metadata_package_version
16
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
17
+
18
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
19
+ if TYPEGUARD_MAJOR_VERSION <= 2:
20
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
21
+ else:
22
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
23
+ pass
24
+ else:
25
+ if TYPEGUARD_MAJOR_VERSION == 3:
26
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
27
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
28
+ else:
29
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
12
30
 
13
31
  from .._jsii import *
14
32
 
@@ -18,10 +36,12 @@ from .. import (
18
36
  DependencyType as _DependencyType_6b786d68,
19
37
  GitOptions as _GitOptions_a65916a3,
20
38
  GroupRunnerOptions as _GroupRunnerOptions_148c59c1,
39
+ ICompareString as _ICompareString_f119e19c,
21
40
  IgnoreFile as _IgnoreFile_3df2076a,
22
41
  IgnoreFileOptions as _IgnoreFileOptions_86c48b91,
23
42
  JsonFile as _JsonFile_fa8164db,
24
43
  LoggerOptions as _LoggerOptions_eb0f6309,
44
+ ObjectFile as _ObjectFile_a34b4727,
25
45
  Project as _Project_57d89203,
26
46
  ProjectType as _ProjectType_fd80c725,
27
47
  ProjenrcFile as _ProjenrcFile_50432c7e,
@@ -31,7 +51,10 @@ from .. import (
31
51
  SampleReadmeProps as _SampleReadmeProps_3518b03b,
32
52
  Task as _Task_9fa875b6,
33
53
  )
34
- from ..build import BuildWorkflow as _BuildWorkflow_bdd5e6cc
54
+ from ..build import (
55
+ BuildWorkflow as _BuildWorkflow_bdd5e6cc,
56
+ BuildWorkflowCommonOptions as _BuildWorkflowCommonOptions_7e3d5c39,
57
+ )
35
58
  from ..github import (
36
59
  AutoApproveOptions as _AutoApproveOptions_dac86cbe,
37
60
  AutoMerge as _AutoMerge_f73f9be0,
@@ -60,6 +83,7 @@ from ..release import (
60
83
  ReleaseProjectOptions as _ReleaseProjectOptions_929803c8,
61
84
  ReleaseTrigger as _ReleaseTrigger_e4dc221f,
62
85
  )
86
+ from .biome_config import BiomeConfiguration as _BiomeConfiguration_dd1a6c83
63
87
 
64
88
 
65
89
  @jsii.enum(jsii_type="projen.javascript.ArrowParens")
@@ -78,29 +102,509 @@ class ArrowParens(enum.Enum):
78
102
  AVOID = "AVOID"
79
103
  '''(experimental) Omit parens when possible.
80
104
 
81
- Example: ``x => x``
105
+ Example: ``x => x``
106
+
107
+ :stability: experimental
108
+ '''
109
+
110
+
111
+ @jsii.data_type(
112
+ jsii_type="projen.javascript.AuditOptions",
113
+ jsii_struct_bases=[],
114
+ name_mapping={"level": "level", "prod_only": "prodOnly", "run_on": "runOn"},
115
+ )
116
+ class AuditOptions:
117
+ def __init__(
118
+ self,
119
+ *,
120
+ level: typing.Optional[builtins.str] = None,
121
+ prod_only: typing.Optional[builtins.bool] = None,
122
+ run_on: typing.Optional[builtins.str] = None,
123
+ ) -> None:
124
+ '''(experimental) Options for security audit configuration.
125
+
126
+ :param level: (experimental) Minimum vulnerability level to check for during audit. Default: "high"
127
+ :param prod_only: (experimental) Only audit production dependencies. When false, both production and development dependencies are audited. This is recommended as build dependencies can also contain security vulnerabilities. Default: false
128
+ :param run_on: (experimental) When to run the audit task. - "build": Run during every build (default) - "release": Only run during release workflow - "manual": Create the task but don't run it automatically Default: "build"
129
+
130
+ :stability: experimental
131
+ '''
132
+ if __debug__:
133
+ type_hints = typing.get_type_hints(_typecheckingstub__fa4156d4e0a4a5a2efe965ea98ba35b587dcbfe01e1b4d659a959bcf54294ed2)
134
+ check_type(argname="argument level", value=level, expected_type=type_hints["level"])
135
+ check_type(argname="argument prod_only", value=prod_only, expected_type=type_hints["prod_only"])
136
+ check_type(argname="argument run_on", value=run_on, expected_type=type_hints["run_on"])
137
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
138
+ if level is not None:
139
+ self._values["level"] = level
140
+ if prod_only is not None:
141
+ self._values["prod_only"] = prod_only
142
+ if run_on is not None:
143
+ self._values["run_on"] = run_on
144
+
145
+ @builtins.property
146
+ def level(self) -> typing.Optional[builtins.str]:
147
+ '''(experimental) Minimum vulnerability level to check for during audit.
148
+
149
+ :default: "high"
150
+
151
+ :stability: experimental
152
+ '''
153
+ result = self._values.get("level")
154
+ return typing.cast(typing.Optional[builtins.str], result)
155
+
156
+ @builtins.property
157
+ def prod_only(self) -> typing.Optional[builtins.bool]:
158
+ '''(experimental) Only audit production dependencies.
159
+
160
+ When false, both production and development dependencies are audited.
161
+ This is recommended as build dependencies can also contain security vulnerabilities.
162
+
163
+ :default: false
164
+
165
+ :stability: experimental
166
+ '''
167
+ result = self._values.get("prod_only")
168
+ return typing.cast(typing.Optional[builtins.bool], result)
169
+
170
+ @builtins.property
171
+ def run_on(self) -> typing.Optional[builtins.str]:
172
+ '''(experimental) When to run the audit task.
173
+
174
+ - "build": Run during every build (default)
175
+ - "release": Only run during release workflow
176
+ - "manual": Create the task but don't run it automatically
177
+
178
+ :default: "build"
179
+
180
+ :stability: experimental
181
+ '''
182
+ result = self._values.get("run_on")
183
+ return typing.cast(typing.Optional[builtins.str], result)
184
+
185
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
186
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
187
+
188
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
189
+ return not (rhs == self)
190
+
191
+ def __repr__(self) -> str:
192
+ return "AuditOptions(%s)" % ", ".join(
193
+ k + "=" + repr(v) for k, v in self._values.items()
194
+ )
195
+
196
+
197
+ @jsii.enum(jsii_type="projen.javascript.AutoRelease")
198
+ class AutoRelease(enum.Enum):
199
+ '''(experimental) Automatic bump modes.
200
+
201
+ :stability: experimental
202
+ '''
203
+
204
+ EVERY_COMMIT = "EVERY_COMMIT"
205
+ '''(experimental) Automatically bump & release a new version for every commit to "main".
206
+
207
+ :stability: experimental
208
+ '''
209
+ DAILY = "DAILY"
210
+ '''(experimental) Automatically bump & release a new version on a daily basis.
211
+
212
+ :stability: experimental
213
+ '''
214
+
215
+
216
+ class Biome(
217
+ _Component_2b0ad27f,
218
+ metaclass=jsii.JSIIMeta,
219
+ jsii_type="projen.javascript.Biome",
220
+ ):
221
+ '''(experimental) Biome component.
222
+
223
+ :stability: experimental
224
+ '''
225
+
226
+ def __init__(
227
+ self,
228
+ project: "NodeProject",
229
+ *,
230
+ assist: typing.Optional[builtins.bool] = None,
231
+ biome_config: typing.Optional[typing.Union[_BiomeConfiguration_dd1a6c83, typing.Dict[builtins.str, typing.Any]]] = None,
232
+ formatter: typing.Optional[builtins.bool] = None,
233
+ ignore_generated_files: typing.Optional[builtins.bool] = None,
234
+ linter: typing.Optional[builtins.bool] = None,
235
+ merge_arrays_in_configuration: typing.Optional[builtins.bool] = None,
236
+ version: typing.Optional[builtins.str] = None,
237
+ ) -> None:
238
+ '''
239
+ :param project: -
240
+ :param assist: (experimental) Enable code assist with recommended actions. Default: true
241
+ :param biome_config: (experimental) Full Biome configuration. This configuration dictates the final outcome if value is set. For example, if the linter is disabled at the top-level, it can be enabled with ``biomeConfig.linter.enabled``.
242
+ :param formatter: (experimental) Enable code formatter with recommended settings. Default: true
243
+ :param ignore_generated_files: (experimental) Automatically ignore all generated files. This prevents Biome from trying to format or lint files that are marked as generated, which would fail since generated files are typically read-only. Default: true
244
+ :param linter: (experimental) Enable linting with recommended rules. Default: true
245
+ :param merge_arrays_in_configuration: (experimental) Should arrays be merged or overwritten when creating Biome configuration. By default arrays are merged and duplicate values are removed Default: true
246
+ :param version: (experimental) Version of Biome to use. Default: "^2"
247
+
248
+ :stability: experimental
249
+ '''
250
+ if __debug__:
251
+ type_hints = typing.get_type_hints(_typecheckingstub__9f2264088409136f62af7e2ac4488206c06c3b9a69056be8b9ead20ab895f1bc)
252
+ check_type(argname="argument project", value=project, expected_type=type_hints["project"])
253
+ options = BiomeOptions(
254
+ assist=assist,
255
+ biome_config=biome_config,
256
+ formatter=formatter,
257
+ ignore_generated_files=ignore_generated_files,
258
+ linter=linter,
259
+ merge_arrays_in_configuration=merge_arrays_in_configuration,
260
+ version=version,
261
+ )
262
+
263
+ jsii.create(self.__class__, self, [project, options])
264
+
265
+ @jsii.member(jsii_name="of")
266
+ @builtins.classmethod
267
+ def of(cls, project: _Project_57d89203) -> typing.Optional["Biome"]:
268
+ '''
269
+ :param project: -
270
+
271
+ :stability: experimental
272
+ '''
273
+ if __debug__:
274
+ type_hints = typing.get_type_hints(_typecheckingstub__02197aa3a69f17c43ff359679227be724559aba6ef0881da4e04e9a0bf66d078)
275
+ check_type(argname="argument project", value=project, expected_type=type_hints["project"])
276
+ return typing.cast(typing.Optional["Biome"], jsii.sinvoke(cls, "of", [project]))
277
+
278
+ @jsii.member(jsii_name="addFilePattern")
279
+ def add_file_pattern(self, pattern: builtins.str) -> None:
280
+ '''
281
+ :param pattern: -
282
+
283
+ :stability: experimental
284
+ '''
285
+ if __debug__:
286
+ type_hints = typing.get_type_hints(_typecheckingstub__5609a4432d207b19ee177e477fdf5e275031b8ec1346b00ac4bbfdf93f688757)
287
+ check_type(argname="argument pattern", value=pattern, expected_type=type_hints["pattern"])
288
+ return typing.cast(None, jsii.invoke(self, "addFilePattern", [pattern]))
289
+
290
+ @builtins.property
291
+ @jsii.member(jsii_name="file")
292
+ def file(self) -> _JsonFile_fa8164db:
293
+ '''(experimental) Biome configuration file content.
294
+
295
+ :stability: experimental
296
+ '''
297
+ return typing.cast(_JsonFile_fa8164db, jsii.get(self, "file"))
298
+
299
+ @builtins.property
300
+ @jsii.member(jsii_name="task")
301
+ def task(self) -> _Task_9fa875b6:
302
+ '''(experimental) Biome task.
303
+
304
+ :stability: experimental
305
+ '''
306
+ return typing.cast(_Task_9fa875b6, jsii.get(self, "task"))
307
+
308
+
309
+ @jsii.data_type(
310
+ jsii_type="projen.javascript.BiomeOptions",
311
+ jsii_struct_bases=[],
312
+ name_mapping={
313
+ "assist": "assist",
314
+ "biome_config": "biomeConfig",
315
+ "formatter": "formatter",
316
+ "ignore_generated_files": "ignoreGeneratedFiles",
317
+ "linter": "linter",
318
+ "merge_arrays_in_configuration": "mergeArraysInConfiguration",
319
+ "version": "version",
320
+ },
321
+ )
322
+ class BiomeOptions:
323
+ def __init__(
324
+ self,
325
+ *,
326
+ assist: typing.Optional[builtins.bool] = None,
327
+ biome_config: typing.Optional[typing.Union[_BiomeConfiguration_dd1a6c83, typing.Dict[builtins.str, typing.Any]]] = None,
328
+ formatter: typing.Optional[builtins.bool] = None,
329
+ ignore_generated_files: typing.Optional[builtins.bool] = None,
330
+ linter: typing.Optional[builtins.bool] = None,
331
+ merge_arrays_in_configuration: typing.Optional[builtins.bool] = None,
332
+ version: typing.Optional[builtins.str] = None,
333
+ ) -> None:
334
+ '''
335
+ :param assist: (experimental) Enable code assist with recommended actions. Default: true
336
+ :param biome_config: (experimental) Full Biome configuration. This configuration dictates the final outcome if value is set. For example, if the linter is disabled at the top-level, it can be enabled with ``biomeConfig.linter.enabled``.
337
+ :param formatter: (experimental) Enable code formatter with recommended settings. Default: true
338
+ :param ignore_generated_files: (experimental) Automatically ignore all generated files. This prevents Biome from trying to format or lint files that are marked as generated, which would fail since generated files are typically read-only. Default: true
339
+ :param linter: (experimental) Enable linting with recommended rules. Default: true
340
+ :param merge_arrays_in_configuration: (experimental) Should arrays be merged or overwritten when creating Biome configuration. By default arrays are merged and duplicate values are removed Default: true
341
+ :param version: (experimental) Version of Biome to use. Default: "^2"
342
+
343
+ :stability: experimental
344
+ '''
345
+ if isinstance(biome_config, dict):
346
+ biome_config = _BiomeConfiguration_dd1a6c83(**biome_config)
347
+ if __debug__:
348
+ type_hints = typing.get_type_hints(_typecheckingstub__b53a2988afa9afc23bda2fe96e2de8ffaff18ab919e00b69a6c8d3d229f3dcc1)
349
+ check_type(argname="argument assist", value=assist, expected_type=type_hints["assist"])
350
+ check_type(argname="argument biome_config", value=biome_config, expected_type=type_hints["biome_config"])
351
+ check_type(argname="argument formatter", value=formatter, expected_type=type_hints["formatter"])
352
+ check_type(argname="argument ignore_generated_files", value=ignore_generated_files, expected_type=type_hints["ignore_generated_files"])
353
+ check_type(argname="argument linter", value=linter, expected_type=type_hints["linter"])
354
+ check_type(argname="argument merge_arrays_in_configuration", value=merge_arrays_in_configuration, expected_type=type_hints["merge_arrays_in_configuration"])
355
+ check_type(argname="argument version", value=version, expected_type=type_hints["version"])
356
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
357
+ if assist is not None:
358
+ self._values["assist"] = assist
359
+ if biome_config is not None:
360
+ self._values["biome_config"] = biome_config
361
+ if formatter is not None:
362
+ self._values["formatter"] = formatter
363
+ if ignore_generated_files is not None:
364
+ self._values["ignore_generated_files"] = ignore_generated_files
365
+ if linter is not None:
366
+ self._values["linter"] = linter
367
+ if merge_arrays_in_configuration is not None:
368
+ self._values["merge_arrays_in_configuration"] = merge_arrays_in_configuration
369
+ if version is not None:
370
+ self._values["version"] = version
371
+
372
+ @builtins.property
373
+ def assist(self) -> typing.Optional[builtins.bool]:
374
+ '''(experimental) Enable code assist with recommended actions.
375
+
376
+ :default: true
377
+
378
+ :stability: experimental
379
+ '''
380
+ result = self._values.get("assist")
381
+ return typing.cast(typing.Optional[builtins.bool], result)
382
+
383
+ @builtins.property
384
+ def biome_config(self) -> typing.Optional[_BiomeConfiguration_dd1a6c83]:
385
+ '''(experimental) Full Biome configuration.
386
+
387
+ This configuration dictates the final outcome if value is set.
388
+ For example, if the linter is disabled at the top-level, it can be enabled with ``biomeConfig.linter.enabled``.
389
+
390
+ :stability: experimental
391
+ '''
392
+ result = self._values.get("biome_config")
393
+ return typing.cast(typing.Optional[_BiomeConfiguration_dd1a6c83], result)
394
+
395
+ @builtins.property
396
+ def formatter(self) -> typing.Optional[builtins.bool]:
397
+ '''(experimental) Enable code formatter with recommended settings.
398
+
399
+ :default: true
400
+
401
+ :stability: experimental
402
+ '''
403
+ result = self._values.get("formatter")
404
+ return typing.cast(typing.Optional[builtins.bool], result)
405
+
406
+ @builtins.property
407
+ def ignore_generated_files(self) -> typing.Optional[builtins.bool]:
408
+ '''(experimental) Automatically ignore all generated files.
409
+
410
+ This prevents Biome from trying to format or lint files that are marked as generated,
411
+ which would fail since generated files are typically read-only.
412
+
413
+ :default: true
414
+
415
+ :stability: experimental
416
+ '''
417
+ result = self._values.get("ignore_generated_files")
418
+ return typing.cast(typing.Optional[builtins.bool], result)
419
+
420
+ @builtins.property
421
+ def linter(self) -> typing.Optional[builtins.bool]:
422
+ '''(experimental) Enable linting with recommended rules.
423
+
424
+ :default: true
425
+
426
+ :stability: experimental
427
+ '''
428
+ result = self._values.get("linter")
429
+ return typing.cast(typing.Optional[builtins.bool], result)
430
+
431
+ @builtins.property
432
+ def merge_arrays_in_configuration(self) -> typing.Optional[builtins.bool]:
433
+ '''(experimental) Should arrays be merged or overwritten when creating Biome configuration.
434
+
435
+ By default arrays are merged and duplicate values are removed
436
+
437
+ :default: true
438
+
439
+ :stability: experimental
440
+ '''
441
+ result = self._values.get("merge_arrays_in_configuration")
442
+ return typing.cast(typing.Optional[builtins.bool], result)
443
+
444
+ @builtins.property
445
+ def version(self) -> typing.Optional[builtins.str]:
446
+ '''(experimental) Version of Biome to use.
447
+
448
+ :default: "^2"
449
+
450
+ :stability: experimental
451
+ '''
452
+ result = self._values.get("version")
453
+ return typing.cast(typing.Optional[builtins.str], result)
454
+
455
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
456
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
457
+
458
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
459
+ return not (rhs == self)
460
+
461
+ def __repr__(self) -> str:
462
+ return "BiomeOptions(%s)" % ", ".join(
463
+ k + "=" + repr(v) for k, v in self._values.items()
464
+ )
465
+
466
+
467
+ @jsii.data_type(
468
+ jsii_type="projen.javascript.BuildWorkflowOptions",
469
+ jsii_struct_bases=[_BuildWorkflowCommonOptions_7e3d5c39],
470
+ name_mapping={
471
+ "env": "env",
472
+ "name": "name",
473
+ "permissions": "permissions",
474
+ "pre_build_steps": "preBuildSteps",
475
+ "workflow_triggers": "workflowTriggers",
476
+ "mutable_build": "mutableBuild",
477
+ },
478
+ )
479
+ class BuildWorkflowOptions(_BuildWorkflowCommonOptions_7e3d5c39):
480
+ def __init__(
481
+ self,
482
+ *,
483
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
484
+ name: typing.Optional[builtins.str] = None,
485
+ permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
486
+ pre_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
487
+ workflow_triggers: typing.Optional[typing.Union[_Triggers_e9ae7617, typing.Dict[builtins.str, typing.Any]]] = None,
488
+ mutable_build: typing.Optional[builtins.bool] = None,
489
+ ) -> None:
490
+ '''(experimental) Build workflow options for NodeProject.
491
+
492
+ :param env: (experimental) Build environment variables. Default: {}
493
+ :param name: (experimental) Name of the buildfile (e.g. "build" becomes "build.yml"). Default: "build"
494
+ :param permissions: (experimental) Permissions granted to the build job To limit job permissions for ``contents``, the desired permissions have to be explicitly set, e.g.: ``{ contents: JobPermission.NONE }``. Default: ``{ contents: JobPermission.WRITE }``
495
+ :param pre_build_steps: (experimental) Steps to execute before the build. Default: []
496
+ :param workflow_triggers: (experimental) Build workflow triggers. Default: "{ pullRequest: {}, workflowDispatch: {} }"
497
+ :param mutable_build: (experimental) Automatically update files modified during builds to pull-request branches. This means that any files synthesized by projen or e.g. test snapshots will always be up-to-date before a PR is merged. Implies that PR builds do not have anti-tamper checks. Default: true
498
+
499
+ :stability: experimental
500
+ '''
501
+ if isinstance(permissions, dict):
502
+ permissions = _JobPermissions_3b5b53dc(**permissions)
503
+ if isinstance(workflow_triggers, dict):
504
+ workflow_triggers = _Triggers_e9ae7617(**workflow_triggers)
505
+ if __debug__:
506
+ type_hints = typing.get_type_hints(_typecheckingstub__12c3595783c38c358dfa0cc66282771c2ed2020f0770e8379920bb5731b72372)
507
+ check_type(argname="argument env", value=env, expected_type=type_hints["env"])
508
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
509
+ check_type(argname="argument permissions", value=permissions, expected_type=type_hints["permissions"])
510
+ check_type(argname="argument pre_build_steps", value=pre_build_steps, expected_type=type_hints["pre_build_steps"])
511
+ check_type(argname="argument workflow_triggers", value=workflow_triggers, expected_type=type_hints["workflow_triggers"])
512
+ check_type(argname="argument mutable_build", value=mutable_build, expected_type=type_hints["mutable_build"])
513
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
514
+ if env is not None:
515
+ self._values["env"] = env
516
+ if name is not None:
517
+ self._values["name"] = name
518
+ if permissions is not None:
519
+ self._values["permissions"] = permissions
520
+ if pre_build_steps is not None:
521
+ self._values["pre_build_steps"] = pre_build_steps
522
+ if workflow_triggers is not None:
523
+ self._values["workflow_triggers"] = workflow_triggers
524
+ if mutable_build is not None:
525
+ self._values["mutable_build"] = mutable_build
526
+
527
+ @builtins.property
528
+ def env(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
529
+ '''(experimental) Build environment variables.
530
+
531
+ :default: {}
532
+
533
+ :stability: experimental
534
+ '''
535
+ result = self._values.get("env")
536
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
537
+
538
+ @builtins.property
539
+ def name(self) -> typing.Optional[builtins.str]:
540
+ '''(experimental) Name of the buildfile (e.g. "build" becomes "build.yml").
541
+
542
+ :default: "build"
543
+
544
+ :stability: experimental
545
+ '''
546
+ result = self._values.get("name")
547
+ return typing.cast(typing.Optional[builtins.str], result)
548
+
549
+ @builtins.property
550
+ def permissions(self) -> typing.Optional[_JobPermissions_3b5b53dc]:
551
+ '''(experimental) Permissions granted to the build job To limit job permissions for ``contents``, the desired permissions have to be explicitly set, e.g.: ``{ contents: JobPermission.NONE }``.
552
+
553
+ :default: ``{ contents: JobPermission.WRITE }``
554
+
555
+ :stability: experimental
556
+ '''
557
+ result = self._values.get("permissions")
558
+ return typing.cast(typing.Optional[_JobPermissions_3b5b53dc], result)
559
+
560
+ @builtins.property
561
+ def pre_build_steps(self) -> typing.Optional[typing.List[_JobStep_c3287c05]]:
562
+ '''(experimental) Steps to execute before the build.
563
+
564
+ :default: []
565
+
566
+ :stability: experimental
567
+ '''
568
+ result = self._values.get("pre_build_steps")
569
+ return typing.cast(typing.Optional[typing.List[_JobStep_c3287c05]], result)
570
+
571
+ @builtins.property
572
+ def workflow_triggers(self) -> typing.Optional[_Triggers_e9ae7617]:
573
+ '''(experimental) Build workflow triggers.
574
+
575
+ :default: "{ pullRequest: {}, workflowDispatch: {} }"
82
576
 
83
- :stability: experimental
84
- '''
577
+ :stability: experimental
578
+ '''
579
+ result = self._values.get("workflow_triggers")
580
+ return typing.cast(typing.Optional[_Triggers_e9ae7617], result)
85
581
 
582
+ @builtins.property
583
+ def mutable_build(self) -> typing.Optional[builtins.bool]:
584
+ '''(experimental) Automatically update files modified during builds to pull-request branches.
86
585
 
87
- @jsii.enum(jsii_type="projen.javascript.AutoRelease")
88
- class AutoRelease(enum.Enum):
89
- '''(experimental) Automatic bump modes.
586
+ This means that any files synthesized by projen or e.g. test snapshots will
587
+ always be up-to-date before a PR is merged.
90
588
 
91
- :stability: experimental
92
- '''
589
+ Implies that PR builds do not have anti-tamper checks.
93
590
 
94
- EVERY_COMMIT = "EVERY_COMMIT"
95
- '''(experimental) Automatically bump & release a new version for every commit to "main".
591
+ :default: true
96
592
 
97
- :stability: experimental
98
- '''
99
- DAILY = "DAILY"
100
- '''(experimental) Automatically bump & release a new version on a daily basis.
593
+ :stability: experimental
594
+ '''
595
+ result = self._values.get("mutable_build")
596
+ return typing.cast(typing.Optional[builtins.bool], result)
101
597
 
102
- :stability: experimental
103
- '''
598
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
599
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
600
+
601
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
602
+ return not (rhs == self)
603
+
604
+ def __repr__(self) -> str:
605
+ return "BuildWorkflowOptions(%s)" % ", ".join(
606
+ k + "=" + repr(v) for k, v in self._values.items()
607
+ )
104
608
 
105
609
 
106
610
  @jsii.data_type(
@@ -195,6 +699,45 @@ class Bundle:
195
699
  )
196
700
 
197
701
 
702
+ @jsii.enum(jsii_type="projen.javascript.BundleLogLevel")
703
+ class BundleLogLevel(enum.Enum):
704
+ '''(experimental) Log levels for esbuild and package managers' install commands.
705
+
706
+ :stability: experimental
707
+ '''
708
+
709
+ VERBOSE = "VERBOSE"
710
+ '''(experimental) Show everything.
711
+
712
+ :stability: experimental
713
+ '''
714
+ DEBUG = "DEBUG"
715
+ '''(experimental) Show everything from info and some additional messages for debugging.
716
+
717
+ :stability: experimental
718
+ '''
719
+ INFO = "INFO"
720
+ '''(experimental) Show warnings, errors, and an output file summary.
721
+
722
+ :stability: experimental
723
+ '''
724
+ WARNING = "WARNING"
725
+ '''(experimental) Show warnings and errors.
726
+
727
+ :stability: experimental
728
+ '''
729
+ ERROR = "ERROR"
730
+ '''(experimental) Show errors only.
731
+
732
+ :stability: experimental
733
+ '''
734
+ SILENT = "SILENT"
735
+ '''(experimental) Show nothing.
736
+
737
+ :stability: experimental
738
+ '''
739
+
740
+
198
741
  class Bundler(
199
742
  _Component_2b0ad27f,
200
743
  metaclass=jsii.JSIIMeta,
@@ -215,14 +758,16 @@ class Bundler(
215
758
  assets_dir: typing.Optional[builtins.str] = None,
216
759
  esbuild_version: typing.Optional[builtins.str] = None,
217
760
  loaders: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
761
+ run_bundle_task: typing.Optional["RunBundleTask"] = None,
218
762
  ) -> None:
219
763
  '''(experimental) Creates a ``Bundler``.
220
764
 
221
765
  :param project: -
222
- :param add_to_pre_compile: (experimental) Install the ``bundle`` command as a pre-compile phase. Default: true
766
+ :param add_to_pre_compile: (deprecated) Install the ``bundle`` command as a pre-compile phase. Default: true
223
767
  :param assets_dir: (experimental) Output directory for all bundles. Default: "assets"
224
768
  :param esbuild_version: (experimental) The semantic version requirement for ``esbuild``. Default: - no specific version (implies latest)
225
769
  :param loaders: (experimental) Map of file extensions (without dot) and loaders to use for this file type. Loaders are appended to the esbuild command by ``--loader:.extension=loader``
770
+ :param run_bundle_task: (experimental) Choose which phase (if any) to add the ``bundle`` command to. Note: If using ``addBundle()`` with the ``bundleCompiledResults``, this option must be set to ``RunBundleTask.POST_COMPILE`` or ``RunBundleTask.MANUAL``. Default: RunBundleTask.PRE_COMPILE
226
771
 
227
772
  :stability: experimental
228
773
  '''
@@ -234,6 +779,7 @@ class Bundler(
234
779
  assets_dir=assets_dir,
235
780
  esbuild_version=esbuild_version,
236
781
  loaders=loaders,
782
+ run_bundle_task=run_bundle_task,
237
783
  )
238
784
 
239
785
  jsii.create(self.__class__, self, [project, options])
@@ -261,10 +807,23 @@ class Bundler(
261
807
  *,
262
808
  platform: builtins.str,
263
809
  target: builtins.str,
810
+ banner: typing.Optional[builtins.str] = None,
811
+ charset: typing.Optional["Charset"] = None,
812
+ define: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
813
+ esbuild_args: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.bool]]] = None,
264
814
  executable: typing.Optional[builtins.bool] = None,
815
+ footer: typing.Optional[builtins.str] = None,
265
816
  format: typing.Optional[builtins.str] = None,
817
+ inject: typing.Optional[typing.Sequence[builtins.str]] = None,
818
+ keep_names: typing.Optional[builtins.bool] = None,
266
819
  loaders: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
820
+ log_level: typing.Optional[BundleLogLevel] = None,
821
+ main_fields: typing.Optional[typing.Sequence[builtins.str]] = None,
822
+ metafile: typing.Optional[builtins.bool] = None,
823
+ minify: typing.Optional[builtins.bool] = None,
267
824
  outfile: typing.Optional[builtins.str] = None,
825
+ source_map_mode: typing.Optional["SourceMapMode"] = None,
826
+ sources_content: typing.Optional[builtins.bool] = None,
268
827
  tsconfig_path: typing.Optional[builtins.str] = None,
269
828
  externals: typing.Optional[typing.Sequence[builtins.str]] = None,
270
829
  sourcemap: typing.Optional[builtins.bool] = None,
@@ -275,10 +834,23 @@ class Bundler(
275
834
  :param entrypoint: The relative path of the artifact within the project.
276
835
  :param platform: (experimental) esbuild platform.
277
836
  :param target: (experimental) esbuild target.
837
+ :param banner: (experimental) Use this to insert an arbitrary string at the beginning of generated JavaScript files. This is similar to footer which inserts at the end instead of the beginning. This is commonly used to insert comments: Default: - no comments are passed
838
+ :param charset: (experimental) The charset to use for esbuild's output. By default esbuild's output is ASCII-only. Any non-ASCII characters are escaped using backslash escape sequences. Using escape sequences makes the generated output slightly bigger, and also makes it harder to read. If you would like for esbuild to print the original characters without using escape sequences, use ``Charset.UTF8``. Default: Charset.ASCII
839
+ :param define: (experimental) Replace global identifiers with constant expressions. For example, ``{ 'process.env.DEBUG': 'true' }``. Another example, ``{ 'process.env.API_KEY': JSON.stringify('xxx-xxxx-xxx') }``. Default: - no replacements are made
840
+ :param esbuild_args: (experimental) Build arguments to pass into esbuild. For example, to add the `--log-limit <https://esbuild.github.io/api/#log-limit>`_ flag:: project.bundler.addBundle("./src/hello.ts", { platform: "node", target: "node22", sourcemap: true, format: "esm", esbuildArgs: { "--log-limit": "0", }, }); Default: - no additional esbuild arguments are passed
278
841
  :param executable: (experimental) Mark the output file as executable. Default: false
842
+ :param footer: (experimental) Use this to insert an arbitrary string at the end of generated JavaScript files. This is similar to banner which inserts at the beginning instead of the end. This is commonly used to insert comments Default: - no comments are passed
279
843
  :param format: (experimental) Output format for the generated JavaScript files. There are currently three possible values that can be configured: ``"iife"``, ``"cjs"``, and ``"esm"``. If not set (``undefined``), esbuild picks an output format for you based on ``platform``: - ``"cjs"`` if ``platform`` is ``"node"`` - ``"iife"`` if ``platform`` is ``"browser"`` - ``"esm"`` if ``platform`` is ``"neutral"`` Note: If making a bundle to run under node with ESM, set ``format`` to ``"esm"`` instead of setting ``platform`` to ``"neutral"``. Default: undefined
844
+ :param inject: (experimental) This option allows you to automatically replace a global variable with an import from another file. Default: - no code is injected
845
+ :param keep_names: (experimental) Whether to preserve the original ``name`` values even in minified code. In JavaScript the ``name`` property on functions and classes defaults to a nearby identifier in the source code. However, minification renames symbols to reduce code size and bundling sometimes need to rename symbols to avoid collisions. That changes value of the ``name`` property for many of these cases. This is usually fine because the ``name`` property is normally only used for debugging. However, some frameworks rely on the ``name`` property for registration and binding purposes. If this is the case, you can enable this option to preserve the original ``name`` values even in minified code. Default: false
280
846
  :param loaders: (experimental) Map of file extensions (without dot) and loaders to use for this file type. Loaders are appended to the esbuild command by ``--loader:.extension=loader``
847
+ :param log_level: (experimental) Log level for esbuild. This is also propagated to the package manager and applies to its specific install command. Default: LogLevel.WARNING
848
+ :param main_fields: (experimental) How to determine the entry point for modules. Try ['module', 'main'] to default to ES module versions. Default: []
849
+ :param metafile: (experimental) This option tells esbuild to write out a JSON file relative to output directory with metadata about the build. The metadata in this JSON file follows this schema (specified using TypeScript syntax):: { outputs: { [path: string]: { bytes: number inputs: { [path: string]: { bytesInOutput: number } } imports: { path: string }[] exports: string[] } } } This data can then be analyzed by other tools. For example, bundle buddy can consume esbuild's metadata format and generates a treemap visualization of the modules in your bundle and how much space each one takes up. Default: false
850
+ :param minify: (experimental) Whether to minify files when bundling. Default: false
281
851
  :param outfile: (experimental) Bundler output path relative to the asset's output directory. Default: "index.js"
852
+ :param source_map_mode: (experimental) Source map mode to be used when bundling. Default: SourceMapMode.DEFAULT
853
+ :param sources_content: (experimental) Whether to include original source code in source maps when bundling. Default: true
282
854
  :param tsconfig_path: (experimental) The path of the tsconfig.json file to use for bundling. Default: "tsconfig.json"
283
855
  :param externals: (experimental) You can mark a file or a package as external to exclude it from your build. Instead of being bundled, the import will be preserved (using require for the iife and cjs formats and using import for the esm format) and will be evaluated at run time instead. This has several uses. First of all, it can be used to trim unnecessary code from your bundle for a code path that you know will never be executed. For example, a package may contain code that only runs in node but you will only be using that package in the browser. It can also be used to import code in node at run time from a package that cannot be bundled. For example, the fsevents package contains a native extension, which esbuild doesn't support. Default: []
284
856
  :param sourcemap: (experimental) Include a source map in the bundle. Default: false
@@ -292,10 +864,23 @@ class Bundler(
292
864
  options = AddBundleOptions(
293
865
  platform=platform,
294
866
  target=target,
867
+ banner=banner,
868
+ charset=charset,
869
+ define=define,
870
+ esbuild_args=esbuild_args,
295
871
  executable=executable,
872
+ footer=footer,
296
873
  format=format,
874
+ inject=inject,
875
+ keep_names=keep_names,
297
876
  loaders=loaders,
877
+ log_level=log_level,
878
+ main_fields=main_fields,
879
+ metafile=metafile,
880
+ minify=minify,
298
881
  outfile=outfile,
882
+ source_map_mode=source_map_mode,
883
+ sources_content=sources_content,
299
884
  tsconfig_path=tsconfig_path,
300
885
  externals=externals,
301
886
  sourcemap=sourcemap,
@@ -343,6 +928,7 @@ class Bundler(
343
928
  "assets_dir": "assetsDir",
344
929
  "esbuild_version": "esbuildVersion",
345
930
  "loaders": "loaders",
931
+ "run_bundle_task": "runBundleTask",
346
932
  },
347
933
  )
348
934
  class BundlerOptions:
@@ -353,13 +939,15 @@ class BundlerOptions:
353
939
  assets_dir: typing.Optional[builtins.str] = None,
354
940
  esbuild_version: typing.Optional[builtins.str] = None,
355
941
  loaders: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
942
+ run_bundle_task: typing.Optional["RunBundleTask"] = None,
356
943
  ) -> None:
357
944
  '''(experimental) Options for ``Bundler``.
358
945
 
359
- :param add_to_pre_compile: (experimental) Install the ``bundle`` command as a pre-compile phase. Default: true
946
+ :param add_to_pre_compile: (deprecated) Install the ``bundle`` command as a pre-compile phase. Default: true
360
947
  :param assets_dir: (experimental) Output directory for all bundles. Default: "assets"
361
948
  :param esbuild_version: (experimental) The semantic version requirement for ``esbuild``. Default: - no specific version (implies latest)
362
949
  :param loaders: (experimental) Map of file extensions (without dot) and loaders to use for this file type. Loaders are appended to the esbuild command by ``--loader:.extension=loader``
950
+ :param run_bundle_task: (experimental) Choose which phase (if any) to add the ``bundle`` command to. Note: If using ``addBundle()`` with the ``bundleCompiledResults``, this option must be set to ``RunBundleTask.POST_COMPILE`` or ``RunBundleTask.MANUAL``. Default: RunBundleTask.PRE_COMPILE
363
951
 
364
952
  :stability: experimental
365
953
  '''
@@ -369,6 +957,7 @@ class BundlerOptions:
369
957
  check_type(argname="argument assets_dir", value=assets_dir, expected_type=type_hints["assets_dir"])
370
958
  check_type(argname="argument esbuild_version", value=esbuild_version, expected_type=type_hints["esbuild_version"])
371
959
  check_type(argname="argument loaders", value=loaders, expected_type=type_hints["loaders"])
960
+ check_type(argname="argument run_bundle_task", value=run_bundle_task, expected_type=type_hints["run_bundle_task"])
372
961
  self._values: typing.Dict[builtins.str, typing.Any] = {}
373
962
  if add_to_pre_compile is not None:
374
963
  self._values["add_to_pre_compile"] = add_to_pre_compile
@@ -378,14 +967,18 @@ class BundlerOptions:
378
967
  self._values["esbuild_version"] = esbuild_version
379
968
  if loaders is not None:
380
969
  self._values["loaders"] = loaders
970
+ if run_bundle_task is not None:
971
+ self._values["run_bundle_task"] = run_bundle_task
381
972
 
382
973
  @builtins.property
383
974
  def add_to_pre_compile(self) -> typing.Optional[builtins.bool]:
384
- '''(experimental) Install the ``bundle`` command as a pre-compile phase.
975
+ '''(deprecated) Install the ``bundle`` command as a pre-compile phase.
385
976
 
386
977
  :default: true
387
978
 
388
- :stability: experimental
979
+ :deprecated: Use ``runBundleTask`` instead.
980
+
981
+ :stability: deprecated
389
982
  '''
390
983
  result = self._values.get("add_to_pre_compile")
391
984
  return typing.cast(typing.Optional[builtins.bool], result)
@@ -423,6 +1016,21 @@ class BundlerOptions:
423
1016
  result = self._values.get("loaders")
424
1017
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
425
1018
 
1019
+ @builtins.property
1020
+ def run_bundle_task(self) -> typing.Optional["RunBundleTask"]:
1021
+ '''(experimental) Choose which phase (if any) to add the ``bundle`` command to.
1022
+
1023
+ Note: If using ``addBundle()`` with the ``bundleCompiledResults``, this option
1024
+ must be set to ``RunBundleTask.POST_COMPILE`` or ``RunBundleTask.MANUAL``.
1025
+
1026
+ :default: RunBundleTask.PRE_COMPILE
1027
+
1028
+ :see: AddBundleOptions.bundleCompiledResults *
1029
+ :stability: experimental
1030
+ '''
1031
+ result = self._values.get("run_bundle_task")
1032
+ return typing.cast(typing.Optional["RunBundleTask"], result)
1033
+
426
1034
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
427
1035
  return isinstance(rhs, self.__class__) and rhs._values == self._values
428
1036
 
@@ -533,6 +1141,29 @@ class BundlingOptions:
533
1141
  )
534
1142
 
535
1143
 
1144
+ @jsii.enum(jsii_type="projen.javascript.Charset")
1145
+ class Charset(enum.Enum):
1146
+ '''(experimental) Charset for esbuild's output.
1147
+
1148
+ :stability: experimental
1149
+ '''
1150
+
1151
+ ASCII = "ASCII"
1152
+ '''(experimental) ASCII.
1153
+
1154
+ Any non-ASCII characters are escaped using backslash escape sequences
1155
+
1156
+ :stability: experimental
1157
+ '''
1158
+ UTF8 = "UTF8"
1159
+ '''(experimental) UTF-8.
1160
+
1161
+ Keep original characters without using escape sequences
1162
+
1163
+ :stability: experimental
1164
+ '''
1165
+
1166
+
536
1167
  @jsii.enum(jsii_type="projen.javascript.CodeArtifactAuthProvider")
537
1168
  class CodeArtifactAuthProvider(enum.Enum):
538
1169
  '''(experimental) Options for authorizing requests to a AWS CodeArtifact npm repository.
@@ -822,12 +1453,14 @@ class Eslint(
822
1453
  dirs: typing.Sequence[builtins.str],
823
1454
  alias_extensions: typing.Optional[typing.Sequence[builtins.str]] = None,
824
1455
  alias_map: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
1456
+ command_options: typing.Optional[typing.Union["EslintCommandOptions", typing.Dict[builtins.str, typing.Any]]] = None,
825
1457
  devdirs: typing.Optional[typing.Sequence[builtins.str]] = None,
826
1458
  file_extensions: typing.Optional[typing.Sequence[builtins.str]] = None,
827
1459
  ignore_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
828
1460
  lint_projen_rc: typing.Optional[builtins.bool] = None,
829
1461
  lint_projen_rc_file: typing.Optional[builtins.str] = None,
830
1462
  prettier: typing.Optional[builtins.bool] = None,
1463
+ sort_extends: typing.Optional[_ICompareString_f119e19c] = None,
831
1464
  ts_always_try_types: typing.Optional[builtins.bool] = None,
832
1465
  tsconfig_path: typing.Optional[builtins.str] = None,
833
1466
  yaml: typing.Optional[builtins.bool] = None,
@@ -837,12 +1470,14 @@ class Eslint(
837
1470
  :param dirs: (experimental) Files or glob patterns or directories with source files to lint (e.g. [ "src" ]).
838
1471
  :param alias_extensions: (experimental) Enable import alias for module paths. Default: undefined
839
1472
  :param alias_map: (experimental) Enable import alias for module paths. Default: undefined
1473
+ :param command_options: (experimental) Options for eslint command executed by eslint task.
840
1474
  :param devdirs: (experimental) Files or glob patterns or directories with source files that include tests and build tools. These sources are linted but may also import packages from ``devDependencies``. Default: []
841
1475
  :param file_extensions: (experimental) File types that should be linted (e.g. [ ".js", ".ts" ]). Default: [".ts"]
842
1476
  :param ignore_patterns: (experimental) List of file patterns that should not be linted, using the same syntax as .gitignore patterns. Default: [ '*.js', '*.d.ts', 'node_modules/', '*.generated.ts', 'coverage' ]
843
1477
  :param lint_projen_rc: (deprecated) Should we lint .projenrc.js. Default: true
844
1478
  :param lint_projen_rc_file: (deprecated) Projenrc file to lint. Use empty string to disable. Default: "projenrc.js"
845
1479
  :param prettier: (experimental) Enable prettier for code formatting. Default: false
1480
+ :param sort_extends: (experimental) The extends array in eslint is order dependent. This option allows to sort the extends array in any way seen fit. Default: - Use known ESLint best practices to place "prettier" plugins at the end of the array
846
1481
  :param ts_always_try_types: (experimental) Always try to resolve types under ``<root>@types`` directory even it doesn't contain any source code. This prevents ``import/no-unresolved`` eslint errors when importing a ``@types/*`` module that would otherwise remain unresolved. Default: true
847
1482
  :param tsconfig_path: (experimental) Path to ``tsconfig.json`` which should be used by eslint. Default: "./tsconfig.json"
848
1483
  :param yaml: (experimental) Write eslint configuration as YAML instead of JSON. Default: false
@@ -856,12 +1491,14 @@ class Eslint(
856
1491
  dirs=dirs,
857
1492
  alias_extensions=alias_extensions,
858
1493
  alias_map=alias_map,
1494
+ command_options=command_options,
859
1495
  devdirs=devdirs,
860
1496
  file_extensions=file_extensions,
861
1497
  ignore_patterns=ignore_patterns,
862
1498
  lint_projen_rc=lint_projen_rc,
863
1499
  lint_projen_rc_file=lint_projen_rc_file,
864
1500
  prettier=prettier,
1501
+ sort_extends=sort_extends,
865
1502
  ts_always_try_types=ts_always_try_types,
866
1503
  tsconfig_path=tsconfig_path,
867
1504
  yaml=yaml,
@@ -872,7 +1509,7 @@ class Eslint(
872
1509
  @jsii.member(jsii_name="of")
873
1510
  @builtins.classmethod
874
1511
  def of(cls, project: _Project_57d89203) -> typing.Optional["Eslint"]:
875
- '''(experimental) Returns the singletone Eslint component of a project or undefined if there is none.
1512
+ '''(experimental) Returns the singleton Eslint component of a project or undefined if there is none.
876
1513
 
877
1514
  :param project: -
878
1515
 
@@ -940,7 +1577,7 @@ class Eslint(
940
1577
  :param extends: (experimental) Config(s) to extend in this override.
941
1578
  :param parser: (experimental) The overridden parser.
942
1579
  :param plugins: (experimental) ``plugins`` override.
943
- :param rules: (experimental) The overriden rules.
1580
+ :param rules: (experimental) The overridden rules.
944
1581
 
945
1582
  :stability: experimental
946
1583
  '''
@@ -1012,6 +1649,15 @@ class Eslint(
1012
1649
  '''
1013
1650
  return typing.cast(_Task_9fa875b6, jsii.get(self, "eslintTask"))
1014
1651
 
1652
+ @builtins.property
1653
+ @jsii.member(jsii_name="file")
1654
+ def file(self) -> _ObjectFile_a34b4727:
1655
+ '''(experimental) The underlying config file.
1656
+
1657
+ :stability: experimental
1658
+ '''
1659
+ return typing.cast(_ObjectFile_a34b4727, jsii.get(self, "file"))
1660
+
1015
1661
  @builtins.property
1016
1662
  @jsii.member(jsii_name="ignorePatterns")
1017
1663
  def ignore_patterns(self) -> typing.List[builtins.str]:
@@ -1041,12 +1687,72 @@ class Eslint(
1041
1687
 
1042
1688
  @builtins.property
1043
1689
  @jsii.member(jsii_name="rules")
1044
- def rules(self) -> typing.Mapping[builtins.str, typing.List[typing.Any]]:
1690
+ def rules(self) -> typing.Mapping[builtins.str, typing.Any]:
1045
1691
  '''(experimental) eslint rules.
1046
1692
 
1047
1693
  :stability: experimental
1048
1694
  '''
1049
- return typing.cast(typing.Mapping[builtins.str, typing.List[typing.Any]], jsii.get(self, "rules"))
1695
+ return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "rules"))
1696
+
1697
+
1698
+ @jsii.data_type(
1699
+ jsii_type="projen.javascript.EslintCommandOptions",
1700
+ jsii_struct_bases=[],
1701
+ name_mapping={"extra_args": "extraArgs", "fix": "fix"},
1702
+ )
1703
+ class EslintCommandOptions:
1704
+ def __init__(
1705
+ self,
1706
+ *,
1707
+ extra_args: typing.Optional[typing.Sequence[builtins.str]] = None,
1708
+ fix: typing.Optional[builtins.bool] = None,
1709
+ ) -> None:
1710
+ '''
1711
+ :param extra_args: (experimental) Extra flag arguments to pass to eslint command.
1712
+ :param fix: (experimental) Whether to fix eslint issues when running the eslint task. Default: true
1713
+
1714
+ :stability: experimental
1715
+ '''
1716
+ if __debug__:
1717
+ type_hints = typing.get_type_hints(_typecheckingstub__ab5437a5e5c0bee91b2bed562cbb0dc9e80e748c8ca3251df4c2eb91ea3a4160)
1718
+ check_type(argname="argument extra_args", value=extra_args, expected_type=type_hints["extra_args"])
1719
+ check_type(argname="argument fix", value=fix, expected_type=type_hints["fix"])
1720
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
1721
+ if extra_args is not None:
1722
+ self._values["extra_args"] = extra_args
1723
+ if fix is not None:
1724
+ self._values["fix"] = fix
1725
+
1726
+ @builtins.property
1727
+ def extra_args(self) -> typing.Optional[typing.List[builtins.str]]:
1728
+ '''(experimental) Extra flag arguments to pass to eslint command.
1729
+
1730
+ :stability: experimental
1731
+ '''
1732
+ result = self._values.get("extra_args")
1733
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
1734
+
1735
+ @builtins.property
1736
+ def fix(self) -> typing.Optional[builtins.bool]:
1737
+ '''(experimental) Whether to fix eslint issues when running the eslint task.
1738
+
1739
+ :default: true
1740
+
1741
+ :stability: experimental
1742
+ '''
1743
+ result = self._values.get("fix")
1744
+ return typing.cast(typing.Optional[builtins.bool], result)
1745
+
1746
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1747
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1748
+
1749
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1750
+ return not (rhs == self)
1751
+
1752
+ def __repr__(self) -> str:
1753
+ return "EslintCommandOptions(%s)" % ", ".join(
1754
+ k + "=" + repr(v) for k, v in self._values.items()
1755
+ )
1050
1756
 
1051
1757
 
1052
1758
  @jsii.data_type(
@@ -1056,12 +1762,14 @@ class Eslint(
1056
1762
  "dirs": "dirs",
1057
1763
  "alias_extensions": "aliasExtensions",
1058
1764
  "alias_map": "aliasMap",
1765
+ "command_options": "commandOptions",
1059
1766
  "devdirs": "devdirs",
1060
1767
  "file_extensions": "fileExtensions",
1061
1768
  "ignore_patterns": "ignorePatterns",
1062
1769
  "lint_projen_rc": "lintProjenRc",
1063
1770
  "lint_projen_rc_file": "lintProjenRcFile",
1064
1771
  "prettier": "prettier",
1772
+ "sort_extends": "sortExtends",
1065
1773
  "ts_always_try_types": "tsAlwaysTryTypes",
1066
1774
  "tsconfig_path": "tsconfigPath",
1067
1775
  "yaml": "yaml",
@@ -1074,12 +1782,14 @@ class EslintOptions:
1074
1782
  dirs: typing.Sequence[builtins.str],
1075
1783
  alias_extensions: typing.Optional[typing.Sequence[builtins.str]] = None,
1076
1784
  alias_map: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
1785
+ command_options: typing.Optional[typing.Union[EslintCommandOptions, typing.Dict[builtins.str, typing.Any]]] = None,
1077
1786
  devdirs: typing.Optional[typing.Sequence[builtins.str]] = None,
1078
1787
  file_extensions: typing.Optional[typing.Sequence[builtins.str]] = None,
1079
1788
  ignore_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
1080
1789
  lint_projen_rc: typing.Optional[builtins.bool] = None,
1081
1790
  lint_projen_rc_file: typing.Optional[builtins.str] = None,
1082
1791
  prettier: typing.Optional[builtins.bool] = None,
1792
+ sort_extends: typing.Optional[_ICompareString_f119e19c] = None,
1083
1793
  ts_always_try_types: typing.Optional[builtins.bool] = None,
1084
1794
  tsconfig_path: typing.Optional[builtins.str] = None,
1085
1795
  yaml: typing.Optional[builtins.bool] = None,
@@ -1088,29 +1798,35 @@ class EslintOptions:
1088
1798
  :param dirs: (experimental) Files or glob patterns or directories with source files to lint (e.g. [ "src" ]).
1089
1799
  :param alias_extensions: (experimental) Enable import alias for module paths. Default: undefined
1090
1800
  :param alias_map: (experimental) Enable import alias for module paths. Default: undefined
1801
+ :param command_options: (experimental) Options for eslint command executed by eslint task.
1091
1802
  :param devdirs: (experimental) Files or glob patterns or directories with source files that include tests and build tools. These sources are linted but may also import packages from ``devDependencies``. Default: []
1092
1803
  :param file_extensions: (experimental) File types that should be linted (e.g. [ ".js", ".ts" ]). Default: [".ts"]
1093
1804
  :param ignore_patterns: (experimental) List of file patterns that should not be linted, using the same syntax as .gitignore patterns. Default: [ '*.js', '*.d.ts', 'node_modules/', '*.generated.ts', 'coverage' ]
1094
1805
  :param lint_projen_rc: (deprecated) Should we lint .projenrc.js. Default: true
1095
1806
  :param lint_projen_rc_file: (deprecated) Projenrc file to lint. Use empty string to disable. Default: "projenrc.js"
1096
1807
  :param prettier: (experimental) Enable prettier for code formatting. Default: false
1808
+ :param sort_extends: (experimental) The extends array in eslint is order dependent. This option allows to sort the extends array in any way seen fit. Default: - Use known ESLint best practices to place "prettier" plugins at the end of the array
1097
1809
  :param ts_always_try_types: (experimental) Always try to resolve types under ``<root>@types`` directory even it doesn't contain any source code. This prevents ``import/no-unresolved`` eslint errors when importing a ``@types/*`` module that would otherwise remain unresolved. Default: true
1098
1810
  :param tsconfig_path: (experimental) Path to ``tsconfig.json`` which should be used by eslint. Default: "./tsconfig.json"
1099
1811
  :param yaml: (experimental) Write eslint configuration as YAML instead of JSON. Default: false
1100
1812
 
1101
1813
  :stability: experimental
1102
1814
  '''
1815
+ if isinstance(command_options, dict):
1816
+ command_options = EslintCommandOptions(**command_options)
1103
1817
  if __debug__:
1104
1818
  type_hints = typing.get_type_hints(_typecheckingstub__26892c968b7bf4d64dd2597bbdabf1f1e9ced92002225a4eedfae6cbe3c22894)
1105
1819
  check_type(argname="argument dirs", value=dirs, expected_type=type_hints["dirs"])
1106
1820
  check_type(argname="argument alias_extensions", value=alias_extensions, expected_type=type_hints["alias_extensions"])
1107
1821
  check_type(argname="argument alias_map", value=alias_map, expected_type=type_hints["alias_map"])
1822
+ check_type(argname="argument command_options", value=command_options, expected_type=type_hints["command_options"])
1108
1823
  check_type(argname="argument devdirs", value=devdirs, expected_type=type_hints["devdirs"])
1109
1824
  check_type(argname="argument file_extensions", value=file_extensions, expected_type=type_hints["file_extensions"])
1110
1825
  check_type(argname="argument ignore_patterns", value=ignore_patterns, expected_type=type_hints["ignore_patterns"])
1111
1826
  check_type(argname="argument lint_projen_rc", value=lint_projen_rc, expected_type=type_hints["lint_projen_rc"])
1112
1827
  check_type(argname="argument lint_projen_rc_file", value=lint_projen_rc_file, expected_type=type_hints["lint_projen_rc_file"])
1113
1828
  check_type(argname="argument prettier", value=prettier, expected_type=type_hints["prettier"])
1829
+ check_type(argname="argument sort_extends", value=sort_extends, expected_type=type_hints["sort_extends"])
1114
1830
  check_type(argname="argument ts_always_try_types", value=ts_always_try_types, expected_type=type_hints["ts_always_try_types"])
1115
1831
  check_type(argname="argument tsconfig_path", value=tsconfig_path, expected_type=type_hints["tsconfig_path"])
1116
1832
  check_type(argname="argument yaml", value=yaml, expected_type=type_hints["yaml"])
@@ -1121,6 +1837,8 @@ class EslintOptions:
1121
1837
  self._values["alias_extensions"] = alias_extensions
1122
1838
  if alias_map is not None:
1123
1839
  self._values["alias_map"] = alias_map
1840
+ if command_options is not None:
1841
+ self._values["command_options"] = command_options
1124
1842
  if devdirs is not None:
1125
1843
  self._values["devdirs"] = devdirs
1126
1844
  if file_extensions is not None:
@@ -1133,6 +1851,8 @@ class EslintOptions:
1133
1851
  self._values["lint_projen_rc_file"] = lint_projen_rc_file
1134
1852
  if prettier is not None:
1135
1853
  self._values["prettier"] = prettier
1854
+ if sort_extends is not None:
1855
+ self._values["sort_extends"] = sort_extends
1136
1856
  if ts_always_try_types is not None:
1137
1857
  self._values["ts_always_try_types"] = ts_always_try_types
1138
1858
  if tsconfig_path is not None:
@@ -1172,6 +1892,15 @@ class EslintOptions:
1172
1892
  result = self._values.get("alias_map")
1173
1893
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
1174
1894
 
1895
+ @builtins.property
1896
+ def command_options(self) -> typing.Optional[EslintCommandOptions]:
1897
+ '''(experimental) Options for eslint command executed by eslint task.
1898
+
1899
+ :stability: experimental
1900
+ '''
1901
+ result = self._values.get("command_options")
1902
+ return typing.cast(typing.Optional[EslintCommandOptions], result)
1903
+
1175
1904
  @builtins.property
1176
1905
  def devdirs(self) -> typing.Optional[typing.List[builtins.str]]:
1177
1906
  '''(experimental) Files or glob patterns or directories with source files that include tests and build tools.
@@ -1246,6 +1975,19 @@ class EslintOptions:
1246
1975
  result = self._values.get("prettier")
1247
1976
  return typing.cast(typing.Optional[builtins.bool], result)
1248
1977
 
1978
+ @builtins.property
1979
+ def sort_extends(self) -> typing.Optional[_ICompareString_f119e19c]:
1980
+ '''(experimental) The extends array in eslint is order dependent.
1981
+
1982
+ This option allows to sort the extends array in any way seen fit.
1983
+
1984
+ :default: - Use known ESLint best practices to place "prettier" plugins at the end of the array
1985
+
1986
+ :stability: experimental
1987
+ '''
1988
+ result = self._values.get("sort_extends")
1989
+ return typing.cast(typing.Optional[_ICompareString_f119e19c], result)
1990
+
1249
1991
  @builtins.property
1250
1992
  def ts_always_try_types(self) -> typing.Optional[builtins.bool]:
1251
1993
  '''(experimental) Always try to resolve types under ``<root>@types`` directory even it doesn't contain any source code.
@@ -1323,7 +2065,7 @@ class EslintOverride:
1323
2065
  :param extends: (experimental) Config(s) to extend in this override.
1324
2066
  :param parser: (experimental) The overridden parser.
1325
2067
  :param plugins: (experimental) ``plugins`` override.
1326
- :param rules: (experimental) The overriden rules.
2068
+ :param rules: (experimental) The overridden rules.
1327
2069
 
1328
2070
  :stability: experimental
1329
2071
  '''
@@ -1399,7 +2141,7 @@ class EslintOverride:
1399
2141
 
1400
2142
  @builtins.property
1401
2143
  def rules(self) -> typing.Optional[typing.Mapping[builtins.str, typing.Any]]:
1402
- '''(experimental) The overriden rules.
2144
+ '''(experimental) The overridden rules.
1403
2145
 
1404
2146
  :stability: experimental
1405
2147
  '''
@@ -1558,7 +2300,7 @@ class Jest(
1558
2300
 
1559
2301
  def __init__(
1560
2302
  self,
1561
- project: "NodeProject",
2303
+ scope: _constructs_77d1e7e8.IConstruct,
1562
2304
  *,
1563
2305
  config_file_path: typing.Optional[builtins.str] = None,
1564
2306
  coverage: typing.Optional[builtins.bool] = None,
@@ -1568,19 +2310,21 @@ class Jest(
1568
2310
  jest_config: typing.Optional[typing.Union["JestConfigOptions", typing.Dict[builtins.str, typing.Any]]] = None,
1569
2311
  jest_version: typing.Optional[builtins.str] = None,
1570
2312
  junit_reporting: typing.Optional[builtins.bool] = None,
2313
+ pass_with_no_tests: typing.Optional[builtins.bool] = None,
1571
2314
  preserve_default_reporters: typing.Optional[builtins.bool] = None,
1572
2315
  update_snapshot: typing.Optional["UpdateSnapshot"] = None,
1573
2316
  ) -> None:
1574
2317
  '''
1575
- :param project: -
2318
+ :param scope: -
1576
2319
  :param config_file_path: (experimental) Path to JSON config file for Jest. Default: - No separate config file, jest settings are stored in package.json
1577
2320
  :param coverage: (deprecated) Collect coverage. Deprecated Default: true
1578
2321
  :param coverage_text: (experimental) Include the ``text`` coverage reporter, which means that coverage summary is printed at the end of the jest execution. Default: true
1579
2322
  :param extra_cli_options: (experimental) Additional options to pass to the Jest CLI invocation. Default: - no extra options
1580
2323
  :param ignore_patterns: (deprecated) Defines ``testPathIgnorePatterns`` and ``coveragePathIgnorePatterns``. Default: ["/node_modules/"]
1581
2324
  :param jest_config: (experimental) Jest configuration. Default: - default jest configuration
1582
- :param jest_version: (experimental) The version of jest to use. Note that same version is used as version of ``@types/jest`` and ``ts-jest`` (if Typescript in use), so given version should work also for those. Default: - installs the latest jest version
2325
+ :param jest_version: (experimental) The version of jest to use. Note that same version is used as version of ``@types/jest`` and ``ts-jest`` (if Typescript in use), so given version should work also for those. With Jest 30 ts-jest version 29 is used (if Typescript in use) Default: - installs the latest jest version
1583
2326
  :param junit_reporting: (experimental) Result processing with jest-junit. Output directory is ``test-reports/``. Default: true
2327
+ :param pass_with_no_tests: (experimental) Pass with no tests. Default: - true
1584
2328
  :param preserve_default_reporters: (experimental) Preserve the default Jest reporter when additional reporters are added. Default: true
1585
2329
  :param update_snapshot: (experimental) Whether to update snapshots in task "test" (which is executed in task "build" and build workflows), or create a separate task "test:update" for updating snapshots. Default: - ALWAYS
1586
2330
 
@@ -1588,7 +2332,7 @@ class Jest(
1588
2332
  '''
1589
2333
  if __debug__:
1590
2334
  type_hints = typing.get_type_hints(_typecheckingstub__7f22158e02967239263c228b0eadfa82f5edd4d7b172b8506a5b32bc46ab7738)
1591
- check_type(argname="argument project", value=project, expected_type=type_hints["project"])
2335
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1592
2336
  options = JestOptions(
1593
2337
  config_file_path=config_file_path,
1594
2338
  coverage=coverage,
@@ -1598,11 +2342,12 @@ class Jest(
1598
2342
  jest_config=jest_config,
1599
2343
  jest_version=jest_version,
1600
2344
  junit_reporting=junit_reporting,
2345
+ pass_with_no_tests=pass_with_no_tests,
1601
2346
  preserve_default_reporters=preserve_default_reporters,
1602
2347
  update_snapshot=update_snapshot,
1603
2348
  )
1604
2349
 
1605
- jsii.create(self.__class__, self, [project, options])
2350
+ jsii.create(self.__class__, self, [scope, options])
1606
2351
 
1607
2352
  @jsii.member(jsii_name="of")
1608
2353
  @builtins.classmethod
@@ -1750,6 +2495,29 @@ class Jest(
1750
2495
  check_type(argname="argument pattern", value=pattern, expected_type=type_hints["pattern"])
1751
2496
  return typing.cast(None, jsii.invoke(self, "addWatchIgnorePattern", [pattern]))
1752
2497
 
2498
+ @jsii.member(jsii_name="discoverTestMatchPatternsForDirs")
2499
+ def discover_test_match_patterns_for_dirs(
2500
+ self,
2501
+ dirs: typing.Sequence[builtins.str],
2502
+ *,
2503
+ file_extension_pattern: typing.Optional[builtins.str] = None,
2504
+ ) -> None:
2505
+ '''(experimental) Build standard test match patterns for a directory.
2506
+
2507
+ :param dirs: The directories to add test matches for. Matches any folder if not specified or an empty array.
2508
+ :param file_extension_pattern: (experimental) The file extension pattern to use. Defaults to "[jt]s?(x)".
2509
+
2510
+ :stability: experimental
2511
+ '''
2512
+ if __debug__:
2513
+ type_hints = typing.get_type_hints(_typecheckingstub__0681a729d70e1f1999defc63f8a0f12400f6e0b609f4fb8dbf7f858c435cd9b1)
2514
+ check_type(argname="argument dirs", value=dirs, expected_type=type_hints["dirs"])
2515
+ options = JestDiscoverTestMatchPatternsForDirsOptions(
2516
+ file_extension_pattern=file_extension_pattern
2517
+ )
2518
+
2519
+ return typing.cast(None, jsii.invoke(self, "discoverTestMatchPatternsForDirs", [dirs, options]))
2520
+
1753
2521
  @builtins.property
1754
2522
  @jsii.member(jsii_name="config")
1755
2523
  def config(self) -> typing.Any:
@@ -1768,6 +2536,14 @@ class Jest(
1768
2536
  '''
1769
2537
  return typing.cast(builtins.str, jsii.get(self, "jestVersion"))
1770
2538
 
2539
+ @builtins.property
2540
+ @jsii.member(jsii_name="project")
2541
+ def project(self) -> "NodeProject":
2542
+ '''
2543
+ :stability: experimental
2544
+ '''
2545
+ return typing.cast("NodeProject", jsii.get(self, "project"))
2546
+
1771
2547
  @builtins.property
1772
2548
  @jsii.member(jsii_name="file")
1773
2549
  def file(self) -> typing.Optional[_JsonFile_fa8164db]:
@@ -1933,7 +2709,7 @@ class JestConfigOptions:
1933
2709
  :param collect_coverage_from: (experimental) An array of glob patterns indicating a set of files for which coverage information should be collected. Default: - undefined
1934
2710
  :param coverage_directory: (experimental) The directory where Jest should output its coverage files. Default: "coverage"
1935
2711
  :param coverage_path_ignore_patterns: (experimental) An array of regexp pattern strings that are matched against all file paths before executing the test. If the file path matches any of the patterns, coverage information will be skipped Default: "/node_modules/"
1936
- :param coverage_provider: (experimental) Indicates which provider should be used to instrument code for coverage. Allowed values are babel (default) or v8 Default: - "babel"
2712
+ :param coverage_provider: (experimental) Indicates which provider should be used to instrument code for coverage. Allowed values are v8 (default) or babel Default: - "v8"
1937
2713
  :param coverage_reporters: (experimental) A list of reporter names that Jest uses when writing coverage reports. Any istanbul reporter can be used Default: - ["json", "lcov", "text", "clover", "cobertura"]
1938
2714
  :param coverage_threshold: (experimental) Specify the global coverage thresholds. This will be used to configure minimum threshold enforcement for coverage results. Thresholds can be specified as global, as a glob, and as a directory or file path. If thresholds aren't met, jest will fail. Default: - undefined
1939
2715
  :param dependency_extractor: (experimental) This option allows the use of a custom dependency extractor. It must be a node module that exports an object with an extract function Default: - undefined
@@ -1974,7 +2750,7 @@ class JestConfigOptions:
1974
2750
  :param test_environment: (experimental) The test environment that will be used for testing. The default environment in Jest is a browser-like environment through jsdom. If you are building a node service, you can use the node option to use a node-like environment instead. Default: - "jsdom"
1975
2751
  :param test_environment_options: (experimental) Test environment options that will be passed to the testEnvironment. The relevant options depend on the environment. Default: - {}
1976
2752
  :param test_failure_exit_code: (experimental) The exit code Jest returns on test failure. Default: - 1
1977
- :param test_match: (experimental) The glob patterns Jest uses to detect test files. By default it looks for .js, .jsx, .ts and .tsx files inside of **tests** folders, as well as any files with a suffix of .test or .spec (e.g. Component.test.js or Component.spec.js). It will also find files called test.js or spec.js. Default: ['**/**tests**/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)']
2753
+ :param test_match: (experimental) The glob patterns Jest uses to detect test files. By default it looks for .js, .jsx, .ts and .tsx files inside of **tests** folders, as well as any files with a suffix of .test or .spec (e.g. Component.test.js or Component.spec.js). It will also find files called test.js or spec.js. Default: ['**/**tests**/**/*.[jt]s?(x)', '**/*(*.)@(spec|test).[tj]s?(x)']
1978
2754
  :param test_path_ignore_patterns: (experimental) An array of regexp pattern strings that are matched against all test paths before executing the test. If the test path matches any of the patterns, it will be skipped. Default: - ["/node_modules/"]
1979
2755
  :param test_regex: (experimental) The pattern or patterns Jest uses to detect test files. By default it looks for .js, .jsx, .ts and .tsx files inside of **tests** folders, as well as any files with a suffix of .test or .spec (e.g. Component.test.js or Component.spec.js). It will also find files called test.js or spec.js. Default: - (/**tests**/.*|(\\.|/)(test|spec))\\.[jt]sx?$
1980
2756
  :param test_results_processor: (experimental) This option allows the use of a custom results processor. Default: - undefined
@@ -2317,9 +3093,9 @@ class JestConfigOptions:
2317
3093
  def coverage_provider(self) -> typing.Optional[builtins.str]:
2318
3094
  '''(experimental) Indicates which provider should be used to instrument code for coverage.
2319
3095
 
2320
- Allowed values are babel (default) or v8
3096
+ Allowed values are v8 (default) or babel
2321
3097
 
2322
- :default: - "babel"
3098
+ :default: - "v8"
2323
3099
 
2324
3100
  :stability: experimental
2325
3101
  '''
@@ -2858,7 +3634,7 @@ class JestConfigOptions:
2858
3634
  files inside of **tests** folders, as well as any files with a suffix of .test or .spec
2859
3635
  (e.g. Component.test.js or Component.spec.js). It will also find files called test.js or spec.js.
2860
3636
 
2861
- :default: ['**/**tests**/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)']
3637
+ :default: ['**/**tests**/**/*.[jt]s?(x)', '**/*(*.)@(spec|test).[tj]s?(x)']
2862
3638
 
2863
3639
  :stability: experimental
2864
3640
  '''
@@ -3075,6 +3851,53 @@ class JestConfigOptions:
3075
3851
  )
3076
3852
 
3077
3853
 
3854
+ @jsii.data_type(
3855
+ jsii_type="projen.javascript.JestDiscoverTestMatchPatternsForDirsOptions",
3856
+ jsii_struct_bases=[],
3857
+ name_mapping={"file_extension_pattern": "fileExtensionPattern"},
3858
+ )
3859
+ class JestDiscoverTestMatchPatternsForDirsOptions:
3860
+ def __init__(
3861
+ self,
3862
+ *,
3863
+ file_extension_pattern: typing.Optional[builtins.str] = None,
3864
+ ) -> None:
3865
+ '''(experimental) Options for discoverTestMatchPatternsForDirs.
3866
+
3867
+ :param file_extension_pattern: (experimental) The file extension pattern to use. Defaults to "[jt]s?(x)".
3868
+
3869
+ :stability: experimental
3870
+ '''
3871
+ if __debug__:
3872
+ type_hints = typing.get_type_hints(_typecheckingstub__987ab5c64454683ddeb28bad78f44cdd78a2099af6a0e44ff92f50bc40f8e486)
3873
+ check_type(argname="argument file_extension_pattern", value=file_extension_pattern, expected_type=type_hints["file_extension_pattern"])
3874
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
3875
+ if file_extension_pattern is not None:
3876
+ self._values["file_extension_pattern"] = file_extension_pattern
3877
+
3878
+ @builtins.property
3879
+ def file_extension_pattern(self) -> typing.Optional[builtins.str]:
3880
+ '''(experimental) The file extension pattern to use.
3881
+
3882
+ Defaults to "[jt]s?(x)".
3883
+
3884
+ :stability: experimental
3885
+ '''
3886
+ result = self._values.get("file_extension_pattern")
3887
+ return typing.cast(typing.Optional[builtins.str], result)
3888
+
3889
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
3890
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
3891
+
3892
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
3893
+ return not (rhs == self)
3894
+
3895
+ def __repr__(self) -> str:
3896
+ return "JestDiscoverTestMatchPatternsForDirsOptions(%s)" % ", ".join(
3897
+ k + "=" + repr(v) for k, v in self._values.items()
3898
+ )
3899
+
3900
+
3078
3901
  @jsii.data_type(
3079
3902
  jsii_type="projen.javascript.JestOptions",
3080
3903
  jsii_struct_bases=[],
@@ -3087,6 +3910,7 @@ class JestConfigOptions:
3087
3910
  "jest_config": "jestConfig",
3088
3911
  "jest_version": "jestVersion",
3089
3912
  "junit_reporting": "junitReporting",
3913
+ "pass_with_no_tests": "passWithNoTests",
3090
3914
  "preserve_default_reporters": "preserveDefaultReporters",
3091
3915
  "update_snapshot": "updateSnapshot",
3092
3916
  },
@@ -3103,6 +3927,7 @@ class JestOptions:
3103
3927
  jest_config: typing.Optional[typing.Union[JestConfigOptions, typing.Dict[builtins.str, typing.Any]]] = None,
3104
3928
  jest_version: typing.Optional[builtins.str] = None,
3105
3929
  junit_reporting: typing.Optional[builtins.bool] = None,
3930
+ pass_with_no_tests: typing.Optional[builtins.bool] = None,
3106
3931
  preserve_default_reporters: typing.Optional[builtins.bool] = None,
3107
3932
  update_snapshot: typing.Optional["UpdateSnapshot"] = None,
3108
3933
  ) -> None:
@@ -3113,8 +3938,9 @@ class JestOptions:
3113
3938
  :param extra_cli_options: (experimental) Additional options to pass to the Jest CLI invocation. Default: - no extra options
3114
3939
  :param ignore_patterns: (deprecated) Defines ``testPathIgnorePatterns`` and ``coveragePathIgnorePatterns``. Default: ["/node_modules/"]
3115
3940
  :param jest_config: (experimental) Jest configuration. Default: - default jest configuration
3116
- :param jest_version: (experimental) The version of jest to use. Note that same version is used as version of ``@types/jest`` and ``ts-jest`` (if Typescript in use), so given version should work also for those. Default: - installs the latest jest version
3941
+ :param jest_version: (experimental) The version of jest to use. Note that same version is used as version of ``@types/jest`` and ``ts-jest`` (if Typescript in use), so given version should work also for those. With Jest 30 ts-jest version 29 is used (if Typescript in use) Default: - installs the latest jest version
3117
3942
  :param junit_reporting: (experimental) Result processing with jest-junit. Output directory is ``test-reports/``. Default: true
3943
+ :param pass_with_no_tests: (experimental) Pass with no tests. Default: - true
3118
3944
  :param preserve_default_reporters: (experimental) Preserve the default Jest reporter when additional reporters are added. Default: true
3119
3945
  :param update_snapshot: (experimental) Whether to update snapshots in task "test" (which is executed in task "build" and build workflows), or create a separate task "test:update" for updating snapshots. Default: - ALWAYS
3120
3946
 
@@ -3132,6 +3958,7 @@ class JestOptions:
3132
3958
  check_type(argname="argument jest_config", value=jest_config, expected_type=type_hints["jest_config"])
3133
3959
  check_type(argname="argument jest_version", value=jest_version, expected_type=type_hints["jest_version"])
3134
3960
  check_type(argname="argument junit_reporting", value=junit_reporting, expected_type=type_hints["junit_reporting"])
3961
+ check_type(argname="argument pass_with_no_tests", value=pass_with_no_tests, expected_type=type_hints["pass_with_no_tests"])
3135
3962
  check_type(argname="argument preserve_default_reporters", value=preserve_default_reporters, expected_type=type_hints["preserve_default_reporters"])
3136
3963
  check_type(argname="argument update_snapshot", value=update_snapshot, expected_type=type_hints["update_snapshot"])
3137
3964
  self._values: typing.Dict[builtins.str, typing.Any] = {}
@@ -3151,6 +3978,8 @@ class JestOptions:
3151
3978
  self._values["jest_version"] = jest_version
3152
3979
  if junit_reporting is not None:
3153
3980
  self._values["junit_reporting"] = junit_reporting
3981
+ if pass_with_no_tests is not None:
3982
+ self._values["pass_with_no_tests"] = pass_with_no_tests
3154
3983
  if preserve_default_reporters is not None:
3155
3984
  self._values["preserve_default_reporters"] = preserve_default_reporters
3156
3985
  if update_snapshot is not None:
@@ -3234,6 +4063,8 @@ class JestOptions:
3234
4063
 
3235
4064
  Note that same version is used as version of ``@types/jest`` and ``ts-jest`` (if Typescript in use), so given version should work also for those.
3236
4065
 
4066
+ With Jest 30 ts-jest version 29 is used (if Typescript in use)
4067
+
3237
4068
  :default: - installs the latest jest version
3238
4069
 
3239
4070
  :stability: experimental
@@ -3254,6 +4085,17 @@ class JestOptions:
3254
4085
  result = self._values.get("junit_reporting")
3255
4086
  return typing.cast(typing.Optional[builtins.bool], result)
3256
4087
 
4088
+ @builtins.property
4089
+ def pass_with_no_tests(self) -> typing.Optional[builtins.bool]:
4090
+ '''(experimental) Pass with no tests.
4091
+
4092
+ :default: - true
4093
+
4094
+ :stability: experimental
4095
+ '''
4096
+ result = self._values.get("pass_with_no_tests")
4097
+ return typing.cast(typing.Optional[builtins.bool], result)
4098
+
3257
4099
  @builtins.property
3258
4100
  def preserve_default_reporters(self) -> typing.Optional[builtins.bool]:
3259
4101
  '''(experimental) Preserve the default Jest reporter when additional reporters are added.
@@ -3510,6 +4352,7 @@ class NodePackage(
3510
4352
  bugs_email: typing.Optional[builtins.str] = None,
3511
4353
  bugs_url: typing.Optional[builtins.str] = None,
3512
4354
  bundled_deps: typing.Optional[typing.Sequence[builtins.str]] = None,
4355
+ bun_version: typing.Optional[builtins.str] = None,
3513
4356
  code_artifact_options: typing.Optional[typing.Union[CodeArtifactOptions, typing.Dict[builtins.str, typing.Any]]] = None,
3514
4357
  deps: typing.Optional[typing.Sequence[builtins.str]] = None,
3515
4358
  description: typing.Optional[builtins.str] = None,
@@ -3522,9 +4365,11 @@ class NodePackage(
3522
4365
  max_node_version: typing.Optional[builtins.str] = None,
3523
4366
  min_node_version: typing.Optional[builtins.str] = None,
3524
4367
  npm_access: typing.Optional["NpmAccess"] = None,
4368
+ npm_provenance: typing.Optional[builtins.bool] = None,
3525
4369
  npm_registry: typing.Optional[builtins.str] = None,
3526
4370
  npm_registry_url: typing.Optional[builtins.str] = None,
3527
4371
  npm_token_secret: typing.Optional[builtins.str] = None,
4372
+ npm_trusted_publishing: typing.Optional[builtins.bool] = None,
3528
4373
  package_manager: typing.Optional["NodePackageManager"] = None,
3529
4374
  package_name: typing.Optional[builtins.str] = None,
3530
4375
  peer_dependency_options: typing.Optional[typing.Union["PeerDependencyOptions", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3549,6 +4394,7 @@ class NodePackage(
3549
4394
  :param bugs_email: (experimental) The email address to which issues should be reported.
3550
4395
  :param bugs_url: (experimental) The url to your project's issue tracker.
3551
4396
  :param bundled_deps: (experimental) List of dependencies to bundle into this module. These modules will be added both to the ``dependencies`` section and ``bundledDependencies`` section of your ``package.json``. The recommendation is to only specify the module name here (e.g. ``express``). This will behave similar to ``yarn add`` or ``npm install`` in the sense that it will add the module as a dependency to your ``package.json`` file with the latest version (``^``). You can specify semver requirements in the same syntax passed to ``npm i`` or ``yarn add`` (e.g. ``express@^2``) and this will be what you ``package.json`` will eventually include.
4397
+ :param bun_version: (experimental) The version of Bun to use if using Bun as a package manager. Default: "latest"
3552
4398
  :param code_artifact_options: (experimental) Options for npm packages using AWS CodeArtifact. This is required if publishing packages to, or installing scoped packages from AWS CodeArtifact Default: - undefined
3553
4399
  :param deps: (experimental) Runtime dependencies of this module. The recommendation is to only specify the module name here (e.g. ``express``). This will behave similar to ``yarn add`` or ``npm install`` in the sense that it will add the module as a dependency to your ``package.json`` file with the latest version (``^``). You can specify semver requirements in the same syntax passed to ``npm i`` or ``yarn add`` (e.g. ``express@^2``) and this will be what you ``package.json`` will eventually include. Default: []
3554
4400
  :param description: (experimental) The description is just a string that helps people understand the purpose of the package. It can be used when searching for packages in a package manager as well. See https://classic.yarnpkg.com/en/docs/package-json/#toc-description
@@ -3558,17 +4404,19 @@ class NodePackage(
3558
4404
  :param keywords: (experimental) Keywords to include in ``package.json``.
3559
4405
  :param license: (experimental) License's SPDX identifier. See https://github.com/projen/projen/tree/main/license-text for a list of supported licenses. Use the ``licensed`` option if you want to no license to be specified. Default: "Apache-2.0"
3560
4406
  :param licensed: (experimental) Indicates if a license should be added. Default: true
3561
- :param max_node_version: (experimental) Minimum node.js version to require via ``engines`` (inclusive). Default: - no max
3562
- :param min_node_version: (experimental) Minimum Node.js version to require via package.json ``engines`` (inclusive). Default: - no "engines" specified
4407
+ :param max_node_version: (experimental) The maximum node version supported by this package. Most projects should not use this option. The value indicates that the package is incompatible with any newer versions of node. This requirement is enforced via the engines field. You will normally not need to set this option. Consider this option only if your package is known to not function with newer versions of node. Default: - no maximum version is enforced
4408
+ :param min_node_version: (experimental) The minimum node version required by this package to function. Most projects should not use this option. The value indicates that the package is incompatible with any older versions of node. This requirement is enforced via the engines field. You will normally not need to set this option, even if your package is incompatible with EOL versions of node. Consider this option only if your package depends on a specific feature, that is not available in other LTS versions. Setting this option has very high impact on the consumers of your package, as package managers will actively prevent usage with node versions you have marked as incompatible. To change the node version of your CI/CD workflows, use ``workflowNodeVersion``. Default: - no minimum version is enforced
3563
4409
  :param npm_access: (experimental) Access level of the npm package. Default: - for scoped packages (e.g. ``foo@bar``), the default is ``NpmAccess.RESTRICTED``, for non-scoped packages, the default is ``NpmAccess.PUBLIC``.
4410
+ :param npm_provenance: (experimental) Should provenance statements be generated when the package is published. A supported package manager is required to publish a package with npm provenance statements and you will need to use a supported CI/CD provider. Note that the projen ``Release`` and ``Publisher`` components are using ``publib`` to publish packages, which is using npm internally and supports provenance statements independently of the package manager used. Default: - true for public packages, false otherwise
3564
4411
  :param npm_registry: (deprecated) The host name of the npm registry to publish to. Cannot be set together with ``npmRegistryUrl``.
3565
4412
  :param npm_registry_url: (experimental) The base URL of the npm package registry. Must be a URL (e.g. start with "https://" or "http://") Default: "https://registry.npmjs.org"
3566
4413
  :param npm_token_secret: (experimental) GitHub secret which contains the NPM token to use when publishing packages. Default: "NPM_TOKEN"
4414
+ :param npm_trusted_publishing: (experimental) Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work. Default: - false
3567
4415
  :param package_manager: (experimental) The Node Package Manager used to execute scripts. Default: NodePackageManager.YARN_CLASSIC
3568
4416
  :param package_name: (experimental) The "name" in package.json. Default: - defaults to project name
3569
4417
  :param peer_dependency_options: (experimental) Options for ``peerDeps``.
3570
4418
  :param peer_deps: (experimental) Peer dependencies for this module. Dependencies listed here are required to be installed (and satisfied) by the *consumer* of this library. Using peer dependencies allows you to ensure that only a single module of a certain library exists in the ``node_modules`` tree of your consumers. Note that prior to npm@7, peer dependencies are *not* automatically installed, which means that adding peer dependencies to a library will be a breaking change for your customers. Unless ``peerDependencyOptions.pinnedDevDependency`` is disabled (it is enabled by default), projen will automatically add a dev dependency with a pinned version for each peer dependency. This will ensure that you build & test your module against the lowest peer version required. Default: []
3571
- :param pnpm_version: (experimental) The version of PNPM to use if using PNPM as a package manager. Default: "7"
4419
+ :param pnpm_version: (experimental) The version of PNPM to use if using PNPM as a package manager. Default: "9"
3572
4420
  :param repository: (experimental) The repository is the location where the actual code for your package lives. See https://classic.yarnpkg.com/en/docs/package-json/#toc-repository
3573
4421
  :param repository_directory: (experimental) 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.
3574
4422
  :param scoped_packages_options: (experimental) Options for privately hosted scoped packages. Default: - fetch all scoped packages from the public npm registry
@@ -3592,6 +4440,7 @@ class NodePackage(
3592
4440
  bugs_email=bugs_email,
3593
4441
  bugs_url=bugs_url,
3594
4442
  bundled_deps=bundled_deps,
4443
+ bun_version=bun_version,
3595
4444
  code_artifact_options=code_artifact_options,
3596
4445
  deps=deps,
3597
4446
  description=description,
@@ -3604,9 +4453,11 @@ class NodePackage(
3604
4453
  max_node_version=max_node_version,
3605
4454
  min_node_version=min_node_version,
3606
4455
  npm_access=npm_access,
4456
+ npm_provenance=npm_provenance,
3607
4457
  npm_registry=npm_registry,
3608
4458
  npm_registry_url=npm_registry_url,
3609
4459
  npm_token_secret=npm_token_secret,
4460
+ npm_trusted_publishing=npm_trusted_publishing,
3610
4461
  package_manager=package_manager,
3611
4462
  package_name=package_name,
3612
4463
  peer_dependency_options=peer_dependency_options,
@@ -3953,6 +4804,15 @@ class NodePackage(
3953
4804
  '''
3954
4805
  return typing.cast("NpmAccess", jsii.get(self, "npmAccess"))
3955
4806
 
4807
+ @builtins.property
4808
+ @jsii.member(jsii_name="npmProvenance")
4809
+ def npm_provenance(self) -> builtins.bool:
4810
+ '''(experimental) Should provenance statements be generated when package is published.
4811
+
4812
+ :stability: experimental
4813
+ '''
4814
+ return typing.cast(builtins.bool, jsii.get(self, "npmProvenance"))
4815
+
3956
4816
  @builtins.property
3957
4817
  @jsii.member(jsii_name="npmRegistry")
3958
4818
  def npm_registry(self) -> builtins.str:
@@ -3992,12 +4852,23 @@ class NodePackage(
3992
4852
  @builtins.property
3993
4853
  @jsii.member(jsii_name="projenCommand")
3994
4854
  def projen_command(self) -> builtins.str:
3995
- '''(experimental) The command which executes "projen".
4855
+ '''(deprecated) The command which executes "projen".
3996
4856
 
3997
- :stability: experimental
4857
+ :deprecated: use ``project.projenCommand`` instead.
4858
+
4859
+ :stability: deprecated
3998
4860
  '''
3999
4861
  return typing.cast(builtins.str, jsii.get(self, "projenCommand"))
4000
4862
 
4863
+ @builtins.property
4864
+ @jsii.member(jsii_name="bunVersion")
4865
+ def bun_version(self) -> typing.Optional[builtins.str]:
4866
+ '''(experimental) The version of Bun to use if using Bun as a package manager.
4867
+
4868
+ :stability: experimental
4869
+ '''
4870
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "bunVersion"))
4871
+
4001
4872
  @builtins.property
4002
4873
  @jsii.member(jsii_name="codeArtifactOptions")
4003
4874
  def code_artifact_options(self) -> typing.Optional[CodeArtifactOptions]:
@@ -4025,9 +4896,9 @@ class NodePackage(
4025
4896
  @builtins.property
4026
4897
  @jsii.member(jsii_name="maxNodeVersion")
4027
4898
  def max_node_version(self) -> typing.Optional[builtins.str]:
4028
- '''(experimental) Maximum node version required by this package.
4899
+ '''(experimental) Maximum node version supported by this package.
4029
4900
 
4030
- :default: - no maximum.
4901
+ The value indicates the package is incompatible with newer versions.
4031
4902
 
4032
4903
  :stability: experimental
4033
4904
  '''
@@ -4036,9 +4907,9 @@ class NodePackage(
4036
4907
  @builtins.property
4037
4908
  @jsii.member(jsii_name="minNodeVersion")
4038
4909
  def min_node_version(self) -> typing.Optional[builtins.str]:
4039
- '''(experimental) Minimum node.js version required by this package.
4910
+ '''(experimental) The minimum node version required by this package to function.
4040
4911
 
4041
- :default: - no minimum
4912
+ This value indicates the package is incompatible with older versions.
4042
4913
 
4043
4914
  :stability: experimental
4044
4915
  '''
@@ -4058,8 +4929,6 @@ class NodePackage(
4058
4929
  def pnpm_version(self) -> typing.Optional[builtins.str]:
4059
4930
  '''(experimental) The version of PNPM to use if using PNPM as a package manager.
4060
4931
 
4061
- :default: "7"
4062
-
4063
4932
  :stability: experimental
4064
4933
  '''
4065
4934
  return typing.cast(typing.Optional[builtins.str], jsii.get(self, "pnpmVersion"))
@@ -4140,6 +5009,7 @@ class NodePackageManager(enum.Enum):
4140
5009
  "bugs_email": "bugsEmail",
4141
5010
  "bugs_url": "bugsUrl",
4142
5011
  "bundled_deps": "bundledDeps",
5012
+ "bun_version": "bunVersion",
4143
5013
  "code_artifact_options": "codeArtifactOptions",
4144
5014
  "deps": "deps",
4145
5015
  "description": "description",
@@ -4152,9 +5022,11 @@ class NodePackageManager(enum.Enum):
4152
5022
  "max_node_version": "maxNodeVersion",
4153
5023
  "min_node_version": "minNodeVersion",
4154
5024
  "npm_access": "npmAccess",
5025
+ "npm_provenance": "npmProvenance",
4155
5026
  "npm_registry": "npmRegistry",
4156
5027
  "npm_registry_url": "npmRegistryUrl",
4157
5028
  "npm_token_secret": "npmTokenSecret",
5029
+ "npm_trusted_publishing": "npmTrustedPublishing",
4158
5030
  "package_manager": "packageManager",
4159
5031
  "package_name": "packageName",
4160
5032
  "peer_dependency_options": "peerDependencyOptions",
@@ -4182,6 +5054,7 @@ class NodePackageOptions:
4182
5054
  bugs_email: typing.Optional[builtins.str] = None,
4183
5055
  bugs_url: typing.Optional[builtins.str] = None,
4184
5056
  bundled_deps: typing.Optional[typing.Sequence[builtins.str]] = None,
5057
+ bun_version: typing.Optional[builtins.str] = None,
4185
5058
  code_artifact_options: typing.Optional[typing.Union[CodeArtifactOptions, typing.Dict[builtins.str, typing.Any]]] = None,
4186
5059
  deps: typing.Optional[typing.Sequence[builtins.str]] = None,
4187
5060
  description: typing.Optional[builtins.str] = None,
@@ -4194,9 +5067,11 @@ class NodePackageOptions:
4194
5067
  max_node_version: typing.Optional[builtins.str] = None,
4195
5068
  min_node_version: typing.Optional[builtins.str] = None,
4196
5069
  npm_access: typing.Optional["NpmAccess"] = None,
5070
+ npm_provenance: typing.Optional[builtins.bool] = None,
4197
5071
  npm_registry: typing.Optional[builtins.str] = None,
4198
5072
  npm_registry_url: typing.Optional[builtins.str] = None,
4199
5073
  npm_token_secret: typing.Optional[builtins.str] = None,
5074
+ npm_trusted_publishing: typing.Optional[builtins.bool] = None,
4200
5075
  package_manager: typing.Optional[NodePackageManager] = None,
4201
5076
  package_name: typing.Optional[builtins.str] = None,
4202
5077
  peer_dependency_options: typing.Optional[typing.Union["PeerDependencyOptions", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4220,6 +5095,7 @@ class NodePackageOptions:
4220
5095
  :param bugs_email: (experimental) The email address to which issues should be reported.
4221
5096
  :param bugs_url: (experimental) The url to your project's issue tracker.
4222
5097
  :param bundled_deps: (experimental) List of dependencies to bundle into this module. These modules will be added both to the ``dependencies`` section and ``bundledDependencies`` section of your ``package.json``. The recommendation is to only specify the module name here (e.g. ``express``). This will behave similar to ``yarn add`` or ``npm install`` in the sense that it will add the module as a dependency to your ``package.json`` file with the latest version (``^``). You can specify semver requirements in the same syntax passed to ``npm i`` or ``yarn add`` (e.g. ``express@^2``) and this will be what you ``package.json`` will eventually include.
5098
+ :param bun_version: (experimental) The version of Bun to use if using Bun as a package manager. Default: "latest"
4223
5099
  :param code_artifact_options: (experimental) Options for npm packages using AWS CodeArtifact. This is required if publishing packages to, or installing scoped packages from AWS CodeArtifact Default: - undefined
4224
5100
  :param deps: (experimental) Runtime dependencies of this module. The recommendation is to only specify the module name here (e.g. ``express``). This will behave similar to ``yarn add`` or ``npm install`` in the sense that it will add the module as a dependency to your ``package.json`` file with the latest version (``^``). You can specify semver requirements in the same syntax passed to ``npm i`` or ``yarn add`` (e.g. ``express@^2``) and this will be what you ``package.json`` will eventually include. Default: []
4225
5101
  :param description: (experimental) The description is just a string that helps people understand the purpose of the package. It can be used when searching for packages in a package manager as well. See https://classic.yarnpkg.com/en/docs/package-json/#toc-description
@@ -4229,17 +5105,19 @@ class NodePackageOptions:
4229
5105
  :param keywords: (experimental) Keywords to include in ``package.json``.
4230
5106
  :param license: (experimental) License's SPDX identifier. See https://github.com/projen/projen/tree/main/license-text for a list of supported licenses. Use the ``licensed`` option if you want to no license to be specified. Default: "Apache-2.0"
4231
5107
  :param licensed: (experimental) Indicates if a license should be added. Default: true
4232
- :param max_node_version: (experimental) Minimum node.js version to require via ``engines`` (inclusive). Default: - no max
4233
- :param min_node_version: (experimental) Minimum Node.js version to require via package.json ``engines`` (inclusive). Default: - no "engines" specified
5108
+ :param max_node_version: (experimental) The maximum node version supported by this package. Most projects should not use this option. The value indicates that the package is incompatible with any newer versions of node. This requirement is enforced via the engines field. You will normally not need to set this option. Consider this option only if your package is known to not function with newer versions of node. Default: - no maximum version is enforced
5109
+ :param min_node_version: (experimental) The minimum node version required by this package to function. Most projects should not use this option. The value indicates that the package is incompatible with any older versions of node. This requirement is enforced via the engines field. You will normally not need to set this option, even if your package is incompatible with EOL versions of node. Consider this option only if your package depends on a specific feature, that is not available in other LTS versions. Setting this option has very high impact on the consumers of your package, as package managers will actively prevent usage with node versions you have marked as incompatible. To change the node version of your CI/CD workflows, use ``workflowNodeVersion``. Default: - no minimum version is enforced
4234
5110
  :param npm_access: (experimental) Access level of the npm package. Default: - for scoped packages (e.g. ``foo@bar``), the default is ``NpmAccess.RESTRICTED``, for non-scoped packages, the default is ``NpmAccess.PUBLIC``.
5111
+ :param npm_provenance: (experimental) Should provenance statements be generated when the package is published. A supported package manager is required to publish a package with npm provenance statements and you will need to use a supported CI/CD provider. Note that the projen ``Release`` and ``Publisher`` components are using ``publib`` to publish packages, which is using npm internally and supports provenance statements independently of the package manager used. Default: - true for public packages, false otherwise
4235
5112
  :param npm_registry: (deprecated) The host name of the npm registry to publish to. Cannot be set together with ``npmRegistryUrl``.
4236
5113
  :param npm_registry_url: (experimental) The base URL of the npm package registry. Must be a URL (e.g. start with "https://" or "http://") Default: "https://registry.npmjs.org"
4237
5114
  :param npm_token_secret: (experimental) GitHub secret which contains the NPM token to use when publishing packages. Default: "NPM_TOKEN"
5115
+ :param npm_trusted_publishing: (experimental) Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work. Default: - false
4238
5116
  :param package_manager: (experimental) The Node Package Manager used to execute scripts. Default: NodePackageManager.YARN_CLASSIC
4239
5117
  :param package_name: (experimental) The "name" in package.json. Default: - defaults to project name
4240
5118
  :param peer_dependency_options: (experimental) Options for ``peerDeps``.
4241
5119
  :param peer_deps: (experimental) Peer dependencies for this module. Dependencies listed here are required to be installed (and satisfied) by the *consumer* of this library. Using peer dependencies allows you to ensure that only a single module of a certain library exists in the ``node_modules`` tree of your consumers. Note that prior to npm@7, peer dependencies are *not* automatically installed, which means that adding peer dependencies to a library will be a breaking change for your customers. Unless ``peerDependencyOptions.pinnedDevDependency`` is disabled (it is enabled by default), projen will automatically add a dev dependency with a pinned version for each peer dependency. This will ensure that you build & test your module against the lowest peer version required. Default: []
4242
- :param pnpm_version: (experimental) The version of PNPM to use if using PNPM as a package manager. Default: "7"
5120
+ :param pnpm_version: (experimental) The version of PNPM to use if using PNPM as a package manager. Default: "9"
4243
5121
  :param repository: (experimental) The repository is the location where the actual code for your package lives. See https://classic.yarnpkg.com/en/docs/package-json/#toc-repository
4244
5122
  :param repository_directory: (experimental) 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.
4245
5123
  :param scoped_packages_options: (experimental) Options for privately hosted scoped packages. Default: - fetch all scoped packages from the public npm registry
@@ -4267,6 +5145,7 @@ class NodePackageOptions:
4267
5145
  check_type(argname="argument bugs_email", value=bugs_email, expected_type=type_hints["bugs_email"])
4268
5146
  check_type(argname="argument bugs_url", value=bugs_url, expected_type=type_hints["bugs_url"])
4269
5147
  check_type(argname="argument bundled_deps", value=bundled_deps, expected_type=type_hints["bundled_deps"])
5148
+ check_type(argname="argument bun_version", value=bun_version, expected_type=type_hints["bun_version"])
4270
5149
  check_type(argname="argument code_artifact_options", value=code_artifact_options, expected_type=type_hints["code_artifact_options"])
4271
5150
  check_type(argname="argument deps", value=deps, expected_type=type_hints["deps"])
4272
5151
  check_type(argname="argument description", value=description, expected_type=type_hints["description"])
@@ -4279,9 +5158,11 @@ class NodePackageOptions:
4279
5158
  check_type(argname="argument max_node_version", value=max_node_version, expected_type=type_hints["max_node_version"])
4280
5159
  check_type(argname="argument min_node_version", value=min_node_version, expected_type=type_hints["min_node_version"])
4281
5160
  check_type(argname="argument npm_access", value=npm_access, expected_type=type_hints["npm_access"])
5161
+ check_type(argname="argument npm_provenance", value=npm_provenance, expected_type=type_hints["npm_provenance"])
4282
5162
  check_type(argname="argument npm_registry", value=npm_registry, expected_type=type_hints["npm_registry"])
4283
5163
  check_type(argname="argument npm_registry_url", value=npm_registry_url, expected_type=type_hints["npm_registry_url"])
4284
5164
  check_type(argname="argument npm_token_secret", value=npm_token_secret, expected_type=type_hints["npm_token_secret"])
5165
+ check_type(argname="argument npm_trusted_publishing", value=npm_trusted_publishing, expected_type=type_hints["npm_trusted_publishing"])
4285
5166
  check_type(argname="argument package_manager", value=package_manager, expected_type=type_hints["package_manager"])
4286
5167
  check_type(argname="argument package_name", value=package_name, expected_type=type_hints["package_name"])
4287
5168
  check_type(argname="argument peer_dependency_options", value=peer_dependency_options, expected_type=type_hints["peer_dependency_options"])
@@ -4314,6 +5195,8 @@ class NodePackageOptions:
4314
5195
  self._values["bugs_url"] = bugs_url
4315
5196
  if bundled_deps is not None:
4316
5197
  self._values["bundled_deps"] = bundled_deps
5198
+ if bun_version is not None:
5199
+ self._values["bun_version"] = bun_version
4317
5200
  if code_artifact_options is not None:
4318
5201
  self._values["code_artifact_options"] = code_artifact_options
4319
5202
  if deps is not None:
@@ -4338,12 +5221,16 @@ class NodePackageOptions:
4338
5221
  self._values["min_node_version"] = min_node_version
4339
5222
  if npm_access is not None:
4340
5223
  self._values["npm_access"] = npm_access
5224
+ if npm_provenance is not None:
5225
+ self._values["npm_provenance"] = npm_provenance
4341
5226
  if npm_registry is not None:
4342
5227
  self._values["npm_registry"] = npm_registry
4343
5228
  if npm_registry_url is not None:
4344
5229
  self._values["npm_registry_url"] = npm_registry_url
4345
5230
  if npm_token_secret is not None:
4346
5231
  self._values["npm_token_secret"] = npm_token_secret
5232
+ if npm_trusted_publishing is not None:
5233
+ self._values["npm_trusted_publishing"] = npm_trusted_publishing
4347
5234
  if package_manager is not None:
4348
5235
  self._values["package_manager"] = package_manager
4349
5236
  if package_name is not None:
@@ -4479,6 +5366,17 @@ class NodePackageOptions:
4479
5366
  result = self._values.get("bundled_deps")
4480
5367
  return typing.cast(typing.Optional[typing.List[builtins.str]], result)
4481
5368
 
5369
+ @builtins.property
5370
+ def bun_version(self) -> typing.Optional[builtins.str]:
5371
+ '''(experimental) The version of Bun to use if using Bun as a package manager.
5372
+
5373
+ :default: "latest"
5374
+
5375
+ :stability: experimental
5376
+ '''
5377
+ result = self._values.get("bun_version")
5378
+ return typing.cast(typing.Optional[builtins.str], result)
5379
+
4482
5380
  @builtins.property
4483
5381
  def code_artifact_options(self) -> typing.Optional[CodeArtifactOptions]:
4484
5382
  '''(experimental) Options for npm packages using AWS CodeArtifact.
@@ -4613,9 +5511,15 @@ class NodePackageOptions:
4613
5511
 
4614
5512
  @builtins.property
4615
5513
  def max_node_version(self) -> typing.Optional[builtins.str]:
4616
- '''(experimental) Minimum node.js version to require via ``engines`` (inclusive).
5514
+ '''(experimental) The maximum node version supported by this package. Most projects should not use this option.
5515
+
5516
+ The value indicates that the package is incompatible with any newer versions of node.
5517
+ This requirement is enforced via the engines field.
5518
+
5519
+ You will normally not need to set this option.
5520
+ Consider this option only if your package is known to not function with newer versions of node.
4617
5521
 
4618
- :default: - no max
5522
+ :default: - no maximum version is enforced
4619
5523
 
4620
5524
  :stability: experimental
4621
5525
  '''
@@ -4624,9 +5528,19 @@ class NodePackageOptions:
4624
5528
 
4625
5529
  @builtins.property
4626
5530
  def min_node_version(self) -> typing.Optional[builtins.str]:
4627
- '''(experimental) Minimum Node.js version to require via package.json ``engines`` (inclusive).
5531
+ '''(experimental) The minimum node version required by this package to function. Most projects should not use this option.
4628
5532
 
4629
- :default: - no "engines" specified
5533
+ The value indicates that the package is incompatible with any older versions of node.
5534
+ This requirement is enforced via the engines field.
5535
+
5536
+ You will normally not need to set this option, even if your package is incompatible with EOL versions of node.
5537
+ Consider this option only if your package depends on a specific feature, that is not available in other LTS versions.
5538
+ Setting this option has very high impact on the consumers of your package,
5539
+ as package managers will actively prevent usage with node versions you have marked as incompatible.
5540
+
5541
+ To change the node version of your CI/CD workflows, use ``workflowNodeVersion``.
5542
+
5543
+ :default: - no minimum version is enforced
4630
5544
 
4631
5545
  :stability: experimental
4632
5546
  '''
@@ -4648,6 +5562,24 @@ class NodePackageOptions:
4648
5562
  result = self._values.get("npm_access")
4649
5563
  return typing.cast(typing.Optional["NpmAccess"], result)
4650
5564
 
5565
+ @builtins.property
5566
+ def npm_provenance(self) -> typing.Optional[builtins.bool]:
5567
+ '''(experimental) Should provenance statements be generated when the package is published.
5568
+
5569
+ A supported package manager is required to publish a package with npm provenance statements and
5570
+ you will need to use a supported CI/CD provider.
5571
+
5572
+ Note that the projen ``Release`` and ``Publisher`` components are using ``publib`` to publish packages,
5573
+ which is using npm internally and supports provenance statements independently of the package manager used.
5574
+
5575
+ :default: - true for public packages, false otherwise
5576
+
5577
+ :see: https://docs.npmjs.com/generating-provenance-statements
5578
+ :stability: experimental
5579
+ '''
5580
+ result = self._values.get("npm_provenance")
5581
+ return typing.cast(typing.Optional[builtins.bool], result)
5582
+
4651
5583
  @builtins.property
4652
5584
  def npm_registry(self) -> typing.Optional[builtins.str]:
4653
5585
  '''(deprecated) The host name of the npm registry to publish to.
@@ -4678,12 +5610,23 @@ class NodePackageOptions:
4678
5610
  def npm_token_secret(self) -> typing.Optional[builtins.str]:
4679
5611
  '''(experimental) GitHub secret which contains the NPM token to use when publishing packages.
4680
5612
 
4681
- :default: "NPM_TOKEN"
5613
+ :default: "NPM_TOKEN"
5614
+
5615
+ :stability: experimental
5616
+ '''
5617
+ result = self._values.get("npm_token_secret")
5618
+ return typing.cast(typing.Optional[builtins.str], result)
5619
+
5620
+ @builtins.property
5621
+ def npm_trusted_publishing(self) -> typing.Optional[builtins.bool]:
5622
+ '''(experimental) Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work.
5623
+
5624
+ :default: - false
4682
5625
 
4683
5626
  :stability: experimental
4684
5627
  '''
4685
- result = self._values.get("npm_token_secret")
4686
- return typing.cast(typing.Optional[builtins.str], result)
5628
+ result = self._values.get("npm_trusted_publishing")
5629
+ return typing.cast(typing.Optional[builtins.bool], result)
4687
5630
 
4688
5631
  @builtins.property
4689
5632
  def package_manager(self) -> typing.Optional[NodePackageManager]:
@@ -4746,7 +5689,7 @@ class NodePackageOptions:
4746
5689
  def pnpm_version(self) -> typing.Optional[builtins.str]:
4747
5690
  '''(experimental) The version of PNPM to use if using PNPM as a package manager.
4748
5691
 
4749
- :default: "7"
5692
+ :default: "9"
4750
5693
 
4751
5694
  :stability: experimental
4752
5695
  '''
@@ -4851,8 +5794,13 @@ class NodeProject(
4851
5794
  *,
4852
5795
  default_release_branch: builtins.str,
4853
5796
  artifacts_directory: typing.Optional[builtins.str] = None,
5797
+ audit_deps: typing.Optional[builtins.bool] = None,
5798
+ audit_deps_options: typing.Optional[typing.Union[AuditOptions, typing.Dict[builtins.str, typing.Any]]] = None,
4854
5799
  auto_approve_upgrades: typing.Optional[builtins.bool] = None,
5800
+ biome: typing.Optional[builtins.bool] = None,
5801
+ biome_options: typing.Optional[typing.Union[BiomeOptions, typing.Dict[builtins.str, typing.Any]]] = None,
4855
5802
  build_workflow: typing.Optional[builtins.bool] = None,
5803
+ build_workflow_options: typing.Optional[typing.Union[BuildWorkflowOptions, typing.Dict[builtins.str, typing.Any]]] = None,
4856
5804
  build_workflow_triggers: typing.Optional[typing.Union[_Triggers_e9ae7617, typing.Dict[builtins.str, typing.Any]]] = None,
4857
5805
  bundler_options: typing.Optional[typing.Union[BundlerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
4858
5806
  check_licenses: typing.Optional[typing.Union[LicenseCheckerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4914,6 +5862,7 @@ class NodeProject(
4914
5862
  bugs_email: typing.Optional[builtins.str] = None,
4915
5863
  bugs_url: typing.Optional[builtins.str] = None,
4916
5864
  bundled_deps: typing.Optional[typing.Sequence[builtins.str]] = None,
5865
+ bun_version: typing.Optional[builtins.str] = None,
4917
5866
  code_artifact_options: typing.Optional[typing.Union[CodeArtifactOptions, typing.Dict[builtins.str, typing.Any]]] = None,
4918
5867
  deps: typing.Optional[typing.Sequence[builtins.str]] = None,
4919
5868
  description: typing.Optional[builtins.str] = None,
@@ -4926,9 +5875,11 @@ class NodeProject(
4926
5875
  max_node_version: typing.Optional[builtins.str] = None,
4927
5876
  min_node_version: typing.Optional[builtins.str] = None,
4928
5877
  npm_access: typing.Optional["NpmAccess"] = None,
5878
+ npm_provenance: typing.Optional[builtins.bool] = None,
4929
5879
  npm_registry: typing.Optional[builtins.str] = None,
4930
5880
  npm_registry_url: typing.Optional[builtins.str] = None,
4931
5881
  npm_token_secret: typing.Optional[builtins.str] = None,
5882
+ npm_trusted_publishing: typing.Optional[builtins.bool] = None,
4932
5883
  package_manager: typing.Optional[NodePackageManager] = None,
4933
5884
  package_name: typing.Optional[builtins.str] = None,
4934
5885
  peer_dependency_options: typing.Optional[typing.Union["PeerDependencyOptions", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4940,9 +5891,11 @@ class NodeProject(
4940
5891
  scripts: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4941
5892
  stability: typing.Optional[builtins.str] = None,
4942
5893
  yarn_berry_options: typing.Optional[typing.Union["YarnBerryOptions", typing.Dict[builtins.str, typing.Any]]] = None,
5894
+ bump_package: typing.Optional[builtins.str] = None,
4943
5895
  jsii_release_version: typing.Optional[builtins.str] = None,
4944
5896
  major_version: typing.Optional[jsii.Number] = None,
4945
5897
  min_major_version: typing.Optional[jsii.Number] = None,
5898
+ next_version_command: typing.Optional[builtins.str] = None,
4946
5899
  npm_dist_tag: typing.Optional[builtins.str] = None,
4947
5900
  post_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
4948
5901
  prerelease: typing.Optional[builtins.str] = None,
@@ -4950,12 +5903,14 @@ class NodeProject(
4950
5903
  publish_tasks: typing.Optional[builtins.bool] = None,
4951
5904
  releasable_commits: typing.Optional[_ReleasableCommits_d481ce10] = None,
4952
5905
  release_branches: typing.Optional[typing.Mapping[builtins.str, typing.Union[_BranchOptions_13663d08, typing.Dict[builtins.str, typing.Any]]]] = None,
5906
+ release_environment: typing.Optional[builtins.str] = None,
4953
5907
  release_every_commit: typing.Optional[builtins.bool] = None,
4954
5908
  release_failure_issue: typing.Optional[builtins.bool] = None,
4955
5909
  release_failure_issue_label: typing.Optional[builtins.str] = None,
4956
5910
  release_schedule: typing.Optional[builtins.str] = None,
4957
5911
  release_tag_prefix: typing.Optional[builtins.str] = None,
4958
5912
  release_trigger: typing.Optional[_ReleaseTrigger_e4dc221f] = None,
5913
+ release_workflow_env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4959
5914
  release_workflow_name: typing.Optional[builtins.str] = None,
4960
5915
  release_workflow_setup_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
4961
5916
  versionrc_options: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
@@ -4978,13 +5933,18 @@ class NodeProject(
4978
5933
  '''
4979
5934
  :param default_release_branch: (experimental) The name of the main release branch. Default: "main"
4980
5935
  :param artifacts_directory: (experimental) A directory which will contain build artifacts. Default: "dist"
5936
+ :param audit_deps: (experimental) Run security audit on dependencies. When enabled, creates an "audit" task that checks for known security vulnerabilities in dependencies. By default, runs during every build and checks for "high" severity vulnerabilities or above in all dependencies (including dev dependencies). Default: false
5937
+ :param audit_deps_options: (experimental) Security audit options. Default: - default options
4981
5938
  :param auto_approve_upgrades: (experimental) Automatically approve deps upgrade PRs, allowing them to be merged by mergify (if configued). Throw if set to true but ``autoApproveOptions`` are not defined. Default: - true
5939
+ :param biome: (experimental) Setup Biome. Default: false
5940
+ :param biome_options: (experimental) Biome options. Default: - default options
4982
5941
  :param build_workflow: (experimental) Define a GitHub workflow for building PRs. Default: - true if not a subproject
4983
- :param build_workflow_triggers: (experimental) Build workflow triggers. Default: "{ pullRequest: {}, workflowDispatch: {} }"
5942
+ :param build_workflow_options: (experimental) Options for PR build workflow.
5943
+ :param build_workflow_triggers: (deprecated) Build workflow triggers. Default: "{ pullRequest: {}, workflowDispatch: {} }"
4984
5944
  :param bundler_options: (experimental) Options for ``Bundler``.
4985
5945
  :param check_licenses: (experimental) Configure which licenses should be deemed acceptable for use by dependencies. This setting will cause the build to fail, if any prohibited or not allowed licenses ares encountered. Default: - no license checks are run during the build and all licenses will be accepted
4986
- :param code_cov: (experimental) Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v3 A secret is required for private repos. Configured with ``@codeCovTokenSecret``. Default: false
4987
- :param code_cov_token_secret: (experimental) Define the secret name for a specified https://codecov.io/ token A secret is required to send coverage for private repositories. Default: - if this option is not specified, only public repositories are supported
5946
+ :param code_cov: (experimental) 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``. Default: false
5947
+ :param code_cov_token_secret: (experimental) Define the secret name for a specified https://codecov.io/ token. Default: - OIDC auth is used
4988
5948
  :param copyright_owner: (experimental) License copyright owner. Default: - defaults to the value of authorName or "" if ``authorName`` is undefined.
4989
5949
  :param copyright_period: (experimental) The copyright years to put in the LICENSE file. Default: - current year
4990
5950
  :param dependabot: (experimental) Use dependabot to handle dependency upgrades. Cannot be used in conjunction with ``depsUpgrade``. Default: false
@@ -4994,14 +5954,14 @@ class NodeProject(
4994
5954
  :param gitignore: (experimental) Additional entries to .gitignore.
4995
5955
  :param jest: (experimental) Setup jest unit tests. Default: true
4996
5956
  :param jest_options: (experimental) Jest options. Default: - default options
4997
- :param mutable_build: (experimental) Automatically update files modified during builds to pull-request branches. This means that any files synthesized by projen or e.g. test snapshots will always be up-to-date before a PR is merged. Implies that PR builds do not have anti-tamper checks. Default: true
5957
+ :param mutable_build: (deprecated) Automatically update files modified during builds to pull-request branches. This means that any files synthesized by projen or e.g. test snapshots will always be up-to-date before a PR is merged. Implies that PR builds do not have anti-tamper checks. Default: true
4998
5958
  :param npmignore: (deprecated) Additional entries to .npmignore.
4999
5959
  :param npmignore_enabled: (experimental) Defines an .npmignore file. Normally this is only needed for libraries that are packaged as tarballs. Default: true
5000
5960
  :param npm_ignore_options: (experimental) Configuration options for .npmignore file.
5001
5961
  :param package: (experimental) Defines a ``package`` task that will produce an npm tarball under the artifacts directory (e.g. ``dist``). Default: true
5002
5962
  :param prettier: (experimental) Setup prettier. Default: false
5003
5963
  :param prettier_options: (experimental) Prettier options. Default: - default options
5004
- :param projen_dev_dependency: (experimental) Indicates of "projen" should be installed as a devDependency. Default: true
5964
+ :param projen_dev_dependency: (experimental) Indicates of "projen" should be installed as a devDependency. Default: - true if not a subproject
5005
5965
  :param projenrc_js: (experimental) Generate (once) .projenrc.js (in JavaScript). Set to ``false`` in order to disable .projenrc.js generation. Default: - true if projenrcJson is false
5006
5966
  :param projenrc_js_options: (experimental) Options for .projenrc.js. Default: - default options
5007
5967
  :param projen_version: (experimental) Version of projen to install. Default: - Defaults to the latest version.
@@ -5011,8 +5971,8 @@ class NodeProject(
5011
5971
  :param release_to_npm: (experimental) Automatically release to npm when new versions are introduced. Default: false
5012
5972
  :param release_workflow: (deprecated) DEPRECATED: renamed to ``release``. Default: - true if not a subproject
5013
5973
  :param workflow_bootstrap_steps: (experimental) Workflow steps to use in order to bootstrap this repo. Default: "yarn install --frozen-lockfile && yarn projen"
5014
- :param workflow_git_identity: (experimental) The git identity to use in workflows. Default: - GitHub Actions
5015
- :param workflow_node_version: (experimental) The node version to use in GitHub workflows. Default: - same as ``minNodeVersion``
5974
+ :param workflow_git_identity: (experimental) The git identity to use in workflows. Default: - default GitHub Actions user
5975
+ :param workflow_node_version: (experimental) The node version used in GitHub Actions workflows. Always use this option if your GitHub Actions workflows require a specific to run. Default: - ``minNodeVersion`` if set, otherwise ``lts/*``.
5016
5976
  :param workflow_package_cache: (experimental) Enable Node.js package cache in GitHub workflows. Default: false
5017
5977
  :param auto_approve_options: (experimental) Enable and configure the 'auto approve' workflow. Default: - auto approve is disabled
5018
5978
  :param auto_merge: (experimental) Enable automatic merging on GitHub. Has no effect if ``github.mergify`` is set to false. Default: true
@@ -5041,6 +6001,7 @@ class NodeProject(
5041
6001
  :param bugs_email: (experimental) The email address to which issues should be reported.
5042
6002
  :param bugs_url: (experimental) The url to your project's issue tracker.
5043
6003
  :param bundled_deps: (experimental) List of dependencies to bundle into this module. These modules will be added both to the ``dependencies`` section and ``bundledDependencies`` section of your ``package.json``. The recommendation is to only specify the module name here (e.g. ``express``). This will behave similar to ``yarn add`` or ``npm install`` in the sense that it will add the module as a dependency to your ``package.json`` file with the latest version (``^``). You can specify semver requirements in the same syntax passed to ``npm i`` or ``yarn add`` (e.g. ``express@^2``) and this will be what you ``package.json`` will eventually include.
6004
+ :param bun_version: (experimental) The version of Bun to use if using Bun as a package manager. Default: "latest"
5044
6005
  :param code_artifact_options: (experimental) Options for npm packages using AWS CodeArtifact. This is required if publishing packages to, or installing scoped packages from AWS CodeArtifact Default: - undefined
5045
6006
  :param deps: (experimental) Runtime dependencies of this module. The recommendation is to only specify the module name here (e.g. ``express``). This will behave similar to ``yarn add`` or ``npm install`` in the sense that it will add the module as a dependency to your ``package.json`` file with the latest version (``^``). You can specify semver requirements in the same syntax passed to ``npm i`` or ``yarn add`` (e.g. ``express@^2``) and this will be what you ``package.json`` will eventually include. Default: []
5046
6007
  :param description: (experimental) The description is just a string that helps people understand the purpose of the package. It can be used when searching for packages in a package manager as well. See https://classic.yarnpkg.com/en/docs/package-json/#toc-description
@@ -5050,26 +6011,30 @@ class NodeProject(
5050
6011
  :param keywords: (experimental) Keywords to include in ``package.json``.
5051
6012
  :param license: (experimental) License's SPDX identifier. See https://github.com/projen/projen/tree/main/license-text for a list of supported licenses. Use the ``licensed`` option if you want to no license to be specified. Default: "Apache-2.0"
5052
6013
  :param licensed: (experimental) Indicates if a license should be added. Default: true
5053
- :param max_node_version: (experimental) Minimum node.js version to require via ``engines`` (inclusive). Default: - no max
5054
- :param min_node_version: (experimental) Minimum Node.js version to require via package.json ``engines`` (inclusive). Default: - no "engines" specified
6014
+ :param max_node_version: (experimental) The maximum node version supported by this package. Most projects should not use this option. The value indicates that the package is incompatible with any newer versions of node. This requirement is enforced via the engines field. You will normally not need to set this option. Consider this option only if your package is known to not function with newer versions of node. Default: - no maximum version is enforced
6015
+ :param min_node_version: (experimental) The minimum node version required by this package to function. Most projects should not use this option. The value indicates that the package is incompatible with any older versions of node. This requirement is enforced via the engines field. You will normally not need to set this option, even if your package is incompatible with EOL versions of node. Consider this option only if your package depends on a specific feature, that is not available in other LTS versions. Setting this option has very high impact on the consumers of your package, as package managers will actively prevent usage with node versions you have marked as incompatible. To change the node version of your CI/CD workflows, use ``workflowNodeVersion``. Default: - no minimum version is enforced
5055
6016
  :param npm_access: (experimental) Access level of the npm package. Default: - for scoped packages (e.g. ``foo@bar``), the default is ``NpmAccess.RESTRICTED``, for non-scoped packages, the default is ``NpmAccess.PUBLIC``.
6017
+ :param npm_provenance: (experimental) Should provenance statements be generated when the package is published. A supported package manager is required to publish a package with npm provenance statements and you will need to use a supported CI/CD provider. Note that the projen ``Release`` and ``Publisher`` components are using ``publib`` to publish packages, which is using npm internally and supports provenance statements independently of the package manager used. Default: - true for public packages, false otherwise
5056
6018
  :param npm_registry: (deprecated) The host name of the npm registry to publish to. Cannot be set together with ``npmRegistryUrl``.
5057
6019
  :param npm_registry_url: (experimental) The base URL of the npm package registry. Must be a URL (e.g. start with "https://" or "http://") Default: "https://registry.npmjs.org"
5058
6020
  :param npm_token_secret: (experimental) GitHub secret which contains the NPM token to use when publishing packages. Default: "NPM_TOKEN"
6021
+ :param npm_trusted_publishing: (experimental) Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work. Default: - false
5059
6022
  :param package_manager: (experimental) The Node Package Manager used to execute scripts. Default: NodePackageManager.YARN_CLASSIC
5060
6023
  :param package_name: (experimental) The "name" in package.json. Default: - defaults to project name
5061
6024
  :param peer_dependency_options: (experimental) Options for ``peerDeps``.
5062
6025
  :param peer_deps: (experimental) Peer dependencies for this module. Dependencies listed here are required to be installed (and satisfied) by the *consumer* of this library. Using peer dependencies allows you to ensure that only a single module of a certain library exists in the ``node_modules`` tree of your consumers. Note that prior to npm@7, peer dependencies are *not* automatically installed, which means that adding peer dependencies to a library will be a breaking change for your customers. Unless ``peerDependencyOptions.pinnedDevDependency`` is disabled (it is enabled by default), projen will automatically add a dev dependency with a pinned version for each peer dependency. This will ensure that you build & test your module against the lowest peer version required. Default: []
5063
- :param pnpm_version: (experimental) The version of PNPM to use if using PNPM as a package manager. Default: "7"
6026
+ :param pnpm_version: (experimental) The version of PNPM to use if using PNPM as a package manager. Default: "9"
5064
6027
  :param repository: (experimental) The repository is the location where the actual code for your package lives. See https://classic.yarnpkg.com/en/docs/package-json/#toc-repository
5065
6028
  :param repository_directory: (experimental) 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.
5066
6029
  :param scoped_packages_options: (experimental) Options for privately hosted scoped packages. Default: - fetch all scoped packages from the public npm registry
5067
6030
  :param scripts: (deprecated) npm scripts to include. If a script has the same name as a standard script, the standard script will be overwritten. Also adds the script as a task. Default: {}
5068
6031
  :param stability: (experimental) Package's Stability.
5069
6032
  :param yarn_berry_options: (experimental) Options for Yarn Berry. Default: - Yarn Berry v4 with all default options
6033
+ :param bump_package: (experimental) The ``commit-and-tag-version`` compatible package used to bump the package version, as a dependency string. This can be any compatible package version, including the deprecated ``standard-version@9``. Default: - A recent version of "commit-and-tag-version"
5070
6034
  :param jsii_release_version: (experimental) Version requirement of ``publib`` which is used to publish modules to npm. Default: "latest"
5071
6035
  :param major_version: (experimental) Major version to release from the default branch. If this is specified, we bump the latest version of this major version line. If not specified, we bump the global latest version. Default: - Major version is not enforced.
5072
6036
  :param min_major_version: (experimental) Minimal Major version to release. This can be useful to set to 1, as breaking changes before the 1.x major release are not incrementing the major version number. Can not be set together with ``majorVersion``. Default: - No minimum version is being enforced
6037
+ :param next_version_command: (experimental) A shell command to control the next version to release. If present, this shell command will be run before the bump is executed, and it determines what version to release. It will be executed in the following environment: - Working directory: the project directory. - ``$VERSION``: the current version. Looks like ``1.2.3``. - ``$LATEST_TAG``: the most recent tag. Looks like ``prefix-v1.2.3``, or may be unset. - ``$SUGGESTED_BUMP``: the suggested bump action based on commits. One of ``major|minor|patch|none``. The command should print one of the following to ``stdout``: - Nothing: the next version number will be determined based on commit history. - ``x.y.z``: the next version number will be ``x.y.z``. - ``major|minor|patch``: the next version number will be the current version number with the indicated component bumped. This setting cannot be specified together with ``minMajorVersion``; the invoked script can be used to achieve the effects of ``minMajorVersion``. Default: - The next version will be determined based on the commit history and project settings.
5073
6038
  :param npm_dist_tag: (experimental) The npmDistTag to use when publishing from the default branch. To set the npm dist-tag for release branches, set the ``npmDistTag`` property for each branch. Default: "latest"
5074
6039
  :param post_build_steps: (experimental) Steps to execute after build as part of the release workflow. Default: []
5075
6040
  :param prerelease: (experimental) Bump versions from the default branch as pre-releases (e.g. "beta", "alpha", "pre"). Default: - normal semantic versions
@@ -5077,15 +6042,17 @@ class NodeProject(
5077
6042
  :param publish_tasks: (experimental) Define publishing tasks that can be executed manually as well as workflows. Normally, publishing only happens within automated workflows. Enable this in order to create a publishing task for each publishing activity. Default: false
5078
6043
  :param releasable_commits: (experimental) Find commits that should be considered releasable Used to decide if a release is required. Default: ReleasableCommits.everyCommit()
5079
6044
  :param release_branches: (experimental) Defines additional release branches. A workflow will be created for each release branch which will publish releases from commits in this branch. Each release branch *must* be assigned a major version number which is used to enforce that versions published from that branch always use that major version. If multiple branches are used, the ``majorVersion`` field must also be provided for the default branch. Default: - no additional branches are used for release. you can use ``addBranch()`` to add additional branches.
6045
+ :param release_environment: (experimental) The GitHub Actions environment used for the release. This can be used to add an explicit approval step to the release or limit who can initiate a release through environment protection rules. When multiple artifacts are released, the environment can be overwritten on a per artifact basis. Default: - no environment used, unless set at the artifact level
5080
6046
  :param release_every_commit: (deprecated) Automatically release new versions every commit to one of branches in ``releaseBranches``. Default: true
5081
6047
  :param release_failure_issue: (experimental) Create a github issue on every failed publishing task. Default: false
5082
6048
  :param release_failure_issue_label: (experimental) The label to apply to issues indicating publish failures. Only applies if ``releaseFailureIssue`` is true. Default: "failed-release"
5083
6049
  :param release_schedule: (deprecated) CRON schedule to trigger new releases. Default: - no scheduled releases
5084
6050
  :param release_tag_prefix: (experimental) Automatically add the given prefix to release tags. Useful if you are releasing on multiple branches with overlapping version numbers. Note: this prefix is used to detect the latest tagged version when bumping, so if you change this on a project with an existing version history, you may need to manually tag your latest release with the new prefix. Default: "v"
5085
6051
  :param release_trigger: (experimental) The release trigger to use. Default: - Continuous releases (``ReleaseTrigger.continuous()``)
6052
+ :param release_workflow_env: (experimental) Build environment variables for release workflows. Default: {}
5086
6053
  :param release_workflow_name: (experimental) The name of the default release workflow. Default: "release"
5087
6054
  :param release_workflow_setup_steps: (experimental) A set of workflow steps to execute in order to setup the workflow container.
5088
- :param versionrc_options: (experimental) Custom configuration used when creating changelog with standard-version package. Given values either append to default configuration or overwrite values in it. Default: - standard configuration applicable for GitHub repositories
6055
+ :param versionrc_options: (experimental) Custom configuration used when creating changelog with commit-and-tag-version package. Given values either append to default configuration or overwrite values in it. Default: - standard configuration applicable for GitHub repositories
5089
6056
  :param workflow_container_image: (experimental) Container image to use for GitHub workflows. Default: - default image
5090
6057
  :param workflow_runs_on: (experimental) Github Runner selection labels. Default: ["ubuntu-latest"]
5091
6058
  :param workflow_runs_on_group: (experimental) Github Runner Group selection options.
@@ -5107,8 +6074,13 @@ class NodeProject(
5107
6074
  options = NodeProjectOptions(
5108
6075
  default_release_branch=default_release_branch,
5109
6076
  artifacts_directory=artifacts_directory,
6077
+ audit_deps=audit_deps,
6078
+ audit_deps_options=audit_deps_options,
5110
6079
  auto_approve_upgrades=auto_approve_upgrades,
6080
+ biome=biome,
6081
+ biome_options=biome_options,
5111
6082
  build_workflow=build_workflow,
6083
+ build_workflow_options=build_workflow_options,
5112
6084
  build_workflow_triggers=build_workflow_triggers,
5113
6085
  bundler_options=bundler_options,
5114
6086
  check_licenses=check_licenses,
@@ -5170,6 +6142,7 @@ class NodeProject(
5170
6142
  bugs_email=bugs_email,
5171
6143
  bugs_url=bugs_url,
5172
6144
  bundled_deps=bundled_deps,
6145
+ bun_version=bun_version,
5173
6146
  code_artifact_options=code_artifact_options,
5174
6147
  deps=deps,
5175
6148
  description=description,
@@ -5182,9 +6155,11 @@ class NodeProject(
5182
6155
  max_node_version=max_node_version,
5183
6156
  min_node_version=min_node_version,
5184
6157
  npm_access=npm_access,
6158
+ npm_provenance=npm_provenance,
5185
6159
  npm_registry=npm_registry,
5186
6160
  npm_registry_url=npm_registry_url,
5187
6161
  npm_token_secret=npm_token_secret,
6162
+ npm_trusted_publishing=npm_trusted_publishing,
5188
6163
  package_manager=package_manager,
5189
6164
  package_name=package_name,
5190
6165
  peer_dependency_options=peer_dependency_options,
@@ -5196,9 +6171,11 @@ class NodeProject(
5196
6171
  scripts=scripts,
5197
6172
  stability=stability,
5198
6173
  yarn_berry_options=yarn_berry_options,
6174
+ bump_package=bump_package,
5199
6175
  jsii_release_version=jsii_release_version,
5200
6176
  major_version=major_version,
5201
6177
  min_major_version=min_major_version,
6178
+ next_version_command=next_version_command,
5202
6179
  npm_dist_tag=npm_dist_tag,
5203
6180
  post_build_steps=post_build_steps,
5204
6181
  prerelease=prerelease,
@@ -5206,12 +6183,14 @@ class NodeProject(
5206
6183
  publish_tasks=publish_tasks,
5207
6184
  releasable_commits=releasable_commits,
5208
6185
  release_branches=release_branches,
6186
+ release_environment=release_environment,
5209
6187
  release_every_commit=release_every_commit,
5210
6188
  release_failure_issue=release_failure_issue,
5211
6189
  release_failure_issue_label=release_failure_issue_label,
5212
6190
  release_schedule=release_schedule,
5213
6191
  release_tag_prefix=release_tag_prefix,
5214
6192
  release_trigger=release_trigger,
6193
+ release_workflow_env=release_workflow_env,
5215
6194
  release_workflow_name=release_workflow_name,
5216
6195
  release_workflow_setup_steps=release_workflow_setup_steps,
5217
6196
  versionrc_options=versionrc_options,
@@ -5592,6 +6571,14 @@ class NodeProject(
5592
6571
  '''
5593
6572
  return typing.cast(typing.Optional[_AutoMerge_f73f9be0], jsii.get(self, "autoMerge"))
5594
6573
 
6574
+ @builtins.property
6575
+ @jsii.member(jsii_name="biome")
6576
+ def biome(self) -> typing.Optional[Biome]:
6577
+ '''
6578
+ :stability: experimental
6579
+ '''
6580
+ return typing.cast(typing.Optional[Biome], jsii.get(self, "biome"))
6581
+
5595
6582
  @builtins.property
5596
6583
  @jsii.member(jsii_name="buildWorkflow")
5597
6584
  def build_workflow(self) -> typing.Optional[_BuildWorkflow_bdd5e6cc]:
@@ -5624,7 +6611,9 @@ class NodeProject(
5624
6611
  @builtins.property
5625
6612
  @jsii.member(jsii_name="maxNodeVersion")
5626
6613
  def max_node_version(self) -> typing.Optional[builtins.str]:
5627
- '''(experimental) Maximum node version required by this package.
6614
+ '''(experimental) Maximum node version supported by this package.
6615
+
6616
+ The value indicates the package is incompatible with newer versions.
5628
6617
 
5629
6618
  :stability: experimental
5630
6619
  '''
@@ -5633,7 +6622,9 @@ class NodeProject(
5633
6622
  @builtins.property
5634
6623
  @jsii.member(jsii_name="minNodeVersion")
5635
6624
  def min_node_version(self) -> typing.Optional[builtins.str]:
5636
- '''(experimental) Minimum node.js version required by this package.
6625
+ '''(experimental) The minimum node version required by this package to function.
6626
+
6627
+ This value indicates the package is incompatible with older versions.
5637
6628
 
5638
6629
  :stability: experimental
5639
6630
  '''
@@ -5744,6 +6735,7 @@ class NodeProject(
5744
6735
  "bugs_email": "bugsEmail",
5745
6736
  "bugs_url": "bugsUrl",
5746
6737
  "bundled_deps": "bundledDeps",
6738
+ "bun_version": "bunVersion",
5747
6739
  "code_artifact_options": "codeArtifactOptions",
5748
6740
  "deps": "deps",
5749
6741
  "description": "description",
@@ -5756,9 +6748,11 @@ class NodeProject(
5756
6748
  "max_node_version": "maxNodeVersion",
5757
6749
  "min_node_version": "minNodeVersion",
5758
6750
  "npm_access": "npmAccess",
6751
+ "npm_provenance": "npmProvenance",
5759
6752
  "npm_registry": "npmRegistry",
5760
6753
  "npm_registry_url": "npmRegistryUrl",
5761
6754
  "npm_token_secret": "npmTokenSecret",
6755
+ "npm_trusted_publishing": "npmTrustedPublishing",
5762
6756
  "package_manager": "packageManager",
5763
6757
  "package_name": "packageName",
5764
6758
  "peer_dependency_options": "peerDependencyOptions",
@@ -5770,9 +6764,11 @@ class NodeProject(
5770
6764
  "scripts": "scripts",
5771
6765
  "stability": "stability",
5772
6766
  "yarn_berry_options": "yarnBerryOptions",
6767
+ "bump_package": "bumpPackage",
5773
6768
  "jsii_release_version": "jsiiReleaseVersion",
5774
6769
  "major_version": "majorVersion",
5775
6770
  "min_major_version": "minMajorVersion",
6771
+ "next_version_command": "nextVersionCommand",
5776
6772
  "npm_dist_tag": "npmDistTag",
5777
6773
  "post_build_steps": "postBuildSteps",
5778
6774
  "prerelease": "prerelease",
@@ -5780,12 +6776,14 @@ class NodeProject(
5780
6776
  "publish_tasks": "publishTasks",
5781
6777
  "releasable_commits": "releasableCommits",
5782
6778
  "release_branches": "releaseBranches",
6779
+ "release_environment": "releaseEnvironment",
5783
6780
  "release_every_commit": "releaseEveryCommit",
5784
6781
  "release_failure_issue": "releaseFailureIssue",
5785
6782
  "release_failure_issue_label": "releaseFailureIssueLabel",
5786
6783
  "release_schedule": "releaseSchedule",
5787
6784
  "release_tag_prefix": "releaseTagPrefix",
5788
6785
  "release_trigger": "releaseTrigger",
6786
+ "release_workflow_env": "releaseWorkflowEnv",
5789
6787
  "release_workflow_name": "releaseWorkflowName",
5790
6788
  "release_workflow_setup_steps": "releaseWorkflowSetupSteps",
5791
6789
  "versionrc_options": "versionrcOptions",
@@ -5794,8 +6792,13 @@ class NodeProject(
5794
6792
  "workflow_runs_on_group": "workflowRunsOnGroup",
5795
6793
  "default_release_branch": "defaultReleaseBranch",
5796
6794
  "artifacts_directory": "artifactsDirectory",
6795
+ "audit_deps": "auditDeps",
6796
+ "audit_deps_options": "auditDepsOptions",
5797
6797
  "auto_approve_upgrades": "autoApproveUpgrades",
6798
+ "biome": "biome",
6799
+ "biome_options": "biomeOptions",
5798
6800
  "build_workflow": "buildWorkflow",
6801
+ "build_workflow_options": "buildWorkflowOptions",
5799
6802
  "build_workflow_triggers": "buildWorkflowTriggers",
5800
6803
  "bundler_options": "bundlerOptions",
5801
6804
  "check_licenses": "checkLicenses",
@@ -5879,6 +6882,7 @@ class NodeProjectOptions(
5879
6882
  bugs_email: typing.Optional[builtins.str] = None,
5880
6883
  bugs_url: typing.Optional[builtins.str] = None,
5881
6884
  bundled_deps: typing.Optional[typing.Sequence[builtins.str]] = None,
6885
+ bun_version: typing.Optional[builtins.str] = None,
5882
6886
  code_artifact_options: typing.Optional[typing.Union[CodeArtifactOptions, typing.Dict[builtins.str, typing.Any]]] = None,
5883
6887
  deps: typing.Optional[typing.Sequence[builtins.str]] = None,
5884
6888
  description: typing.Optional[builtins.str] = None,
@@ -5891,9 +6895,11 @@ class NodeProjectOptions(
5891
6895
  max_node_version: typing.Optional[builtins.str] = None,
5892
6896
  min_node_version: typing.Optional[builtins.str] = None,
5893
6897
  npm_access: typing.Optional["NpmAccess"] = None,
6898
+ npm_provenance: typing.Optional[builtins.bool] = None,
5894
6899
  npm_registry: typing.Optional[builtins.str] = None,
5895
6900
  npm_registry_url: typing.Optional[builtins.str] = None,
5896
6901
  npm_token_secret: typing.Optional[builtins.str] = None,
6902
+ npm_trusted_publishing: typing.Optional[builtins.bool] = None,
5897
6903
  package_manager: typing.Optional[NodePackageManager] = None,
5898
6904
  package_name: typing.Optional[builtins.str] = None,
5899
6905
  peer_dependency_options: typing.Optional[typing.Union["PeerDependencyOptions", typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5905,9 +6911,11 @@ class NodeProjectOptions(
5905
6911
  scripts: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
5906
6912
  stability: typing.Optional[builtins.str] = None,
5907
6913
  yarn_berry_options: typing.Optional[typing.Union["YarnBerryOptions", typing.Dict[builtins.str, typing.Any]]] = None,
6914
+ bump_package: typing.Optional[builtins.str] = None,
5908
6915
  jsii_release_version: typing.Optional[builtins.str] = None,
5909
6916
  major_version: typing.Optional[jsii.Number] = None,
5910
6917
  min_major_version: typing.Optional[jsii.Number] = None,
6918
+ next_version_command: typing.Optional[builtins.str] = None,
5911
6919
  npm_dist_tag: typing.Optional[builtins.str] = None,
5912
6920
  post_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
5913
6921
  prerelease: typing.Optional[builtins.str] = None,
@@ -5915,12 +6923,14 @@ class NodeProjectOptions(
5915
6923
  publish_tasks: typing.Optional[builtins.bool] = None,
5916
6924
  releasable_commits: typing.Optional[_ReleasableCommits_d481ce10] = None,
5917
6925
  release_branches: typing.Optional[typing.Mapping[builtins.str, typing.Union[_BranchOptions_13663d08, typing.Dict[builtins.str, typing.Any]]]] = None,
6926
+ release_environment: typing.Optional[builtins.str] = None,
5918
6927
  release_every_commit: typing.Optional[builtins.bool] = None,
5919
6928
  release_failure_issue: typing.Optional[builtins.bool] = None,
5920
6929
  release_failure_issue_label: typing.Optional[builtins.str] = None,
5921
6930
  release_schedule: typing.Optional[builtins.str] = None,
5922
6931
  release_tag_prefix: typing.Optional[builtins.str] = None,
5923
6932
  release_trigger: typing.Optional[_ReleaseTrigger_e4dc221f] = None,
6933
+ release_workflow_env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
5924
6934
  release_workflow_name: typing.Optional[builtins.str] = None,
5925
6935
  release_workflow_setup_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
5926
6936
  versionrc_options: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
@@ -5929,8 +6939,13 @@ class NodeProjectOptions(
5929
6939
  workflow_runs_on_group: typing.Optional[typing.Union[_GroupRunnerOptions_148c59c1, typing.Dict[builtins.str, typing.Any]]] = None,
5930
6940
  default_release_branch: builtins.str,
5931
6941
  artifacts_directory: typing.Optional[builtins.str] = None,
6942
+ audit_deps: typing.Optional[builtins.bool] = None,
6943
+ audit_deps_options: typing.Optional[typing.Union[AuditOptions, typing.Dict[builtins.str, typing.Any]]] = None,
5932
6944
  auto_approve_upgrades: typing.Optional[builtins.bool] = None,
6945
+ biome: typing.Optional[builtins.bool] = None,
6946
+ biome_options: typing.Optional[typing.Union[BiomeOptions, typing.Dict[builtins.str, typing.Any]]] = None,
5933
6947
  build_workflow: typing.Optional[builtins.bool] = None,
6948
+ build_workflow_options: typing.Optional[typing.Union[BuildWorkflowOptions, typing.Dict[builtins.str, typing.Any]]] = None,
5934
6949
  build_workflow_triggers: typing.Optional[typing.Union[_Triggers_e9ae7617, typing.Dict[builtins.str, typing.Any]]] = None,
5935
6950
  bundler_options: typing.Optional[typing.Union[BundlerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
5936
6951
  check_licenses: typing.Optional[typing.Union[LicenseCheckerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -6006,6 +7021,7 @@ class NodeProjectOptions(
6006
7021
  :param bugs_email: (experimental) The email address to which issues should be reported.
6007
7022
  :param bugs_url: (experimental) The url to your project's issue tracker.
6008
7023
  :param bundled_deps: (experimental) List of dependencies to bundle into this module. These modules will be added both to the ``dependencies`` section and ``bundledDependencies`` section of your ``package.json``. The recommendation is to only specify the module name here (e.g. ``express``). This will behave similar to ``yarn add`` or ``npm install`` in the sense that it will add the module as a dependency to your ``package.json`` file with the latest version (``^``). You can specify semver requirements in the same syntax passed to ``npm i`` or ``yarn add`` (e.g. ``express@^2``) and this will be what you ``package.json`` will eventually include.
7024
+ :param bun_version: (experimental) The version of Bun to use if using Bun as a package manager. Default: "latest"
6009
7025
  :param code_artifact_options: (experimental) Options for npm packages using AWS CodeArtifact. This is required if publishing packages to, or installing scoped packages from AWS CodeArtifact Default: - undefined
6010
7026
  :param deps: (experimental) Runtime dependencies of this module. The recommendation is to only specify the module name here (e.g. ``express``). This will behave similar to ``yarn add`` or ``npm install`` in the sense that it will add the module as a dependency to your ``package.json`` file with the latest version (``^``). You can specify semver requirements in the same syntax passed to ``npm i`` or ``yarn add`` (e.g. ``express@^2``) and this will be what you ``package.json`` will eventually include. Default: []
6011
7027
  :param description: (experimental) The description is just a string that helps people understand the purpose of the package. It can be used when searching for packages in a package manager as well. See https://classic.yarnpkg.com/en/docs/package-json/#toc-description
@@ -6015,26 +7031,30 @@ class NodeProjectOptions(
6015
7031
  :param keywords: (experimental) Keywords to include in ``package.json``.
6016
7032
  :param license: (experimental) License's SPDX identifier. See https://github.com/projen/projen/tree/main/license-text for a list of supported licenses. Use the ``licensed`` option if you want to no license to be specified. Default: "Apache-2.0"
6017
7033
  :param licensed: (experimental) Indicates if a license should be added. Default: true
6018
- :param max_node_version: (experimental) Minimum node.js version to require via ``engines`` (inclusive). Default: - no max
6019
- :param min_node_version: (experimental) Minimum Node.js version to require via package.json ``engines`` (inclusive). Default: - no "engines" specified
7034
+ :param max_node_version: (experimental) The maximum node version supported by this package. Most projects should not use this option. The value indicates that the package is incompatible with any newer versions of node. This requirement is enforced via the engines field. You will normally not need to set this option. Consider this option only if your package is known to not function with newer versions of node. Default: - no maximum version is enforced
7035
+ :param min_node_version: (experimental) The minimum node version required by this package to function. Most projects should not use this option. The value indicates that the package is incompatible with any older versions of node. This requirement is enforced via the engines field. You will normally not need to set this option, even if your package is incompatible with EOL versions of node. Consider this option only if your package depends on a specific feature, that is not available in other LTS versions. Setting this option has very high impact on the consumers of your package, as package managers will actively prevent usage with node versions you have marked as incompatible. To change the node version of your CI/CD workflows, use ``workflowNodeVersion``. Default: - no minimum version is enforced
6020
7036
  :param npm_access: (experimental) Access level of the npm package. Default: - for scoped packages (e.g. ``foo@bar``), the default is ``NpmAccess.RESTRICTED``, for non-scoped packages, the default is ``NpmAccess.PUBLIC``.
7037
+ :param npm_provenance: (experimental) Should provenance statements be generated when the package is published. A supported package manager is required to publish a package with npm provenance statements and you will need to use a supported CI/CD provider. Note that the projen ``Release`` and ``Publisher`` components are using ``publib`` to publish packages, which is using npm internally and supports provenance statements independently of the package manager used. Default: - true for public packages, false otherwise
6021
7038
  :param npm_registry: (deprecated) The host name of the npm registry to publish to. Cannot be set together with ``npmRegistryUrl``.
6022
7039
  :param npm_registry_url: (experimental) The base URL of the npm package registry. Must be a URL (e.g. start with "https://" or "http://") Default: "https://registry.npmjs.org"
6023
7040
  :param npm_token_secret: (experimental) GitHub secret which contains the NPM token to use when publishing packages. Default: "NPM_TOKEN"
7041
+ :param npm_trusted_publishing: (experimental) Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work. Default: - false
6024
7042
  :param package_manager: (experimental) The Node Package Manager used to execute scripts. Default: NodePackageManager.YARN_CLASSIC
6025
7043
  :param package_name: (experimental) The "name" in package.json. Default: - defaults to project name
6026
7044
  :param peer_dependency_options: (experimental) Options for ``peerDeps``.
6027
7045
  :param peer_deps: (experimental) Peer dependencies for this module. Dependencies listed here are required to be installed (and satisfied) by the *consumer* of this library. Using peer dependencies allows you to ensure that only a single module of a certain library exists in the ``node_modules`` tree of your consumers. Note that prior to npm@7, peer dependencies are *not* automatically installed, which means that adding peer dependencies to a library will be a breaking change for your customers. Unless ``peerDependencyOptions.pinnedDevDependency`` is disabled (it is enabled by default), projen will automatically add a dev dependency with a pinned version for each peer dependency. This will ensure that you build & test your module against the lowest peer version required. Default: []
6028
- :param pnpm_version: (experimental) The version of PNPM to use if using PNPM as a package manager. Default: "7"
7046
+ :param pnpm_version: (experimental) The version of PNPM to use if using PNPM as a package manager. Default: "9"
6029
7047
  :param repository: (experimental) The repository is the location where the actual code for your package lives. See https://classic.yarnpkg.com/en/docs/package-json/#toc-repository
6030
7048
  :param repository_directory: (experimental) 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.
6031
7049
  :param scoped_packages_options: (experimental) Options for privately hosted scoped packages. Default: - fetch all scoped packages from the public npm registry
6032
7050
  :param scripts: (deprecated) npm scripts to include. If a script has the same name as a standard script, the standard script will be overwritten. Also adds the script as a task. Default: {}
6033
7051
  :param stability: (experimental) Package's Stability.
6034
7052
  :param yarn_berry_options: (experimental) Options for Yarn Berry. Default: - Yarn Berry v4 with all default options
7053
+ :param bump_package: (experimental) The ``commit-and-tag-version`` compatible package used to bump the package version, as a dependency string. This can be any compatible package version, including the deprecated ``standard-version@9``. Default: - A recent version of "commit-and-tag-version"
6035
7054
  :param jsii_release_version: (experimental) Version requirement of ``publib`` which is used to publish modules to npm. Default: "latest"
6036
7055
  :param major_version: (experimental) Major version to release from the default branch. If this is specified, we bump the latest version of this major version line. If not specified, we bump the global latest version. Default: - Major version is not enforced.
6037
7056
  :param min_major_version: (experimental) Minimal Major version to release. This can be useful to set to 1, as breaking changes before the 1.x major release are not incrementing the major version number. Can not be set together with ``majorVersion``. Default: - No minimum version is being enforced
7057
+ :param next_version_command: (experimental) A shell command to control the next version to release. If present, this shell command will be run before the bump is executed, and it determines what version to release. It will be executed in the following environment: - Working directory: the project directory. - ``$VERSION``: the current version. Looks like ``1.2.3``. - ``$LATEST_TAG``: the most recent tag. Looks like ``prefix-v1.2.3``, or may be unset. - ``$SUGGESTED_BUMP``: the suggested bump action based on commits. One of ``major|minor|patch|none``. The command should print one of the following to ``stdout``: - Nothing: the next version number will be determined based on commit history. - ``x.y.z``: the next version number will be ``x.y.z``. - ``major|minor|patch``: the next version number will be the current version number with the indicated component bumped. This setting cannot be specified together with ``minMajorVersion``; the invoked script can be used to achieve the effects of ``minMajorVersion``. Default: - The next version will be determined based on the commit history and project settings.
6038
7058
  :param npm_dist_tag: (experimental) The npmDistTag to use when publishing from the default branch. To set the npm dist-tag for release branches, set the ``npmDistTag`` property for each branch. Default: "latest"
6039
7059
  :param post_build_steps: (experimental) Steps to execute after build as part of the release workflow. Default: []
6040
7060
  :param prerelease: (experimental) Bump versions from the default branch as pre-releases (e.g. "beta", "alpha", "pre"). Default: - normal semantic versions
@@ -6042,27 +7062,34 @@ class NodeProjectOptions(
6042
7062
  :param publish_tasks: (experimental) Define publishing tasks that can be executed manually as well as workflows. Normally, publishing only happens within automated workflows. Enable this in order to create a publishing task for each publishing activity. Default: false
6043
7063
  :param releasable_commits: (experimental) Find commits that should be considered releasable Used to decide if a release is required. Default: ReleasableCommits.everyCommit()
6044
7064
  :param release_branches: (experimental) Defines additional release branches. A workflow will be created for each release branch which will publish releases from commits in this branch. Each release branch *must* be assigned a major version number which is used to enforce that versions published from that branch always use that major version. If multiple branches are used, the ``majorVersion`` field must also be provided for the default branch. Default: - no additional branches are used for release. you can use ``addBranch()`` to add additional branches.
7065
+ :param release_environment: (experimental) The GitHub Actions environment used for the release. This can be used to add an explicit approval step to the release or limit who can initiate a release through environment protection rules. When multiple artifacts are released, the environment can be overwritten on a per artifact basis. Default: - no environment used, unless set at the artifact level
6045
7066
  :param release_every_commit: (deprecated) Automatically release new versions every commit to one of branches in ``releaseBranches``. Default: true
6046
7067
  :param release_failure_issue: (experimental) Create a github issue on every failed publishing task. Default: false
6047
7068
  :param release_failure_issue_label: (experimental) The label to apply to issues indicating publish failures. Only applies if ``releaseFailureIssue`` is true. Default: "failed-release"
6048
7069
  :param release_schedule: (deprecated) CRON schedule to trigger new releases. Default: - no scheduled releases
6049
7070
  :param release_tag_prefix: (experimental) Automatically add the given prefix to release tags. Useful if you are releasing on multiple branches with overlapping version numbers. Note: this prefix is used to detect the latest tagged version when bumping, so if you change this on a project with an existing version history, you may need to manually tag your latest release with the new prefix. Default: "v"
6050
7071
  :param release_trigger: (experimental) The release trigger to use. Default: - Continuous releases (``ReleaseTrigger.continuous()``)
7072
+ :param release_workflow_env: (experimental) Build environment variables for release workflows. Default: {}
6051
7073
  :param release_workflow_name: (experimental) The name of the default release workflow. Default: "release"
6052
7074
  :param release_workflow_setup_steps: (experimental) A set of workflow steps to execute in order to setup the workflow container.
6053
- :param versionrc_options: (experimental) Custom configuration used when creating changelog with standard-version package. Given values either append to default configuration or overwrite values in it. Default: - standard configuration applicable for GitHub repositories
7075
+ :param versionrc_options: (experimental) Custom configuration used when creating changelog with commit-and-tag-version package. Given values either append to default configuration or overwrite values in it. Default: - standard configuration applicable for GitHub repositories
6054
7076
  :param workflow_container_image: (experimental) Container image to use for GitHub workflows. Default: - default image
6055
7077
  :param workflow_runs_on: (experimental) Github Runner selection labels. Default: ["ubuntu-latest"]
6056
7078
  :param workflow_runs_on_group: (experimental) Github Runner Group selection options.
6057
7079
  :param default_release_branch: (experimental) The name of the main release branch. Default: "main"
6058
7080
  :param artifacts_directory: (experimental) A directory which will contain build artifacts. Default: "dist"
7081
+ :param audit_deps: (experimental) Run security audit on dependencies. When enabled, creates an "audit" task that checks for known security vulnerabilities in dependencies. By default, runs during every build and checks for "high" severity vulnerabilities or above in all dependencies (including dev dependencies). Default: false
7082
+ :param audit_deps_options: (experimental) Security audit options. Default: - default options
6059
7083
  :param auto_approve_upgrades: (experimental) Automatically approve deps upgrade PRs, allowing them to be merged by mergify (if configued). Throw if set to true but ``autoApproveOptions`` are not defined. Default: - true
7084
+ :param biome: (experimental) Setup Biome. Default: false
7085
+ :param biome_options: (experimental) Biome options. Default: - default options
6060
7086
  :param build_workflow: (experimental) Define a GitHub workflow for building PRs. Default: - true if not a subproject
6061
- :param build_workflow_triggers: (experimental) Build workflow triggers. Default: "{ pullRequest: {}, workflowDispatch: {} }"
7087
+ :param build_workflow_options: (experimental) Options for PR build workflow.
7088
+ :param build_workflow_triggers: (deprecated) Build workflow triggers. Default: "{ pullRequest: {}, workflowDispatch: {} }"
6062
7089
  :param bundler_options: (experimental) Options for ``Bundler``.
6063
7090
  :param check_licenses: (experimental) Configure which licenses should be deemed acceptable for use by dependencies. This setting will cause the build to fail, if any prohibited or not allowed licenses ares encountered. Default: - no license checks are run during the build and all licenses will be accepted
6064
- :param code_cov: (experimental) Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v3 A secret is required for private repos. Configured with ``@codeCovTokenSecret``. Default: false
6065
- :param code_cov_token_secret: (experimental) Define the secret name for a specified https://codecov.io/ token A secret is required to send coverage for private repositories. Default: - if this option is not specified, only public repositories are supported
7091
+ :param code_cov: (experimental) 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``. Default: false
7092
+ :param code_cov_token_secret: (experimental) Define the secret name for a specified https://codecov.io/ token. Default: - OIDC auth is used
6066
7093
  :param copyright_owner: (experimental) License copyright owner. Default: - defaults to the value of authorName or "" if ``authorName`` is undefined.
6067
7094
  :param copyright_period: (experimental) The copyright years to put in the LICENSE file. Default: - current year
6068
7095
  :param dependabot: (experimental) Use dependabot to handle dependency upgrades. Cannot be used in conjunction with ``depsUpgrade``. Default: false
@@ -6072,14 +7099,14 @@ class NodeProjectOptions(
6072
7099
  :param gitignore: (experimental) Additional entries to .gitignore.
6073
7100
  :param jest: (experimental) Setup jest unit tests. Default: true
6074
7101
  :param jest_options: (experimental) Jest options. Default: - default options
6075
- :param mutable_build: (experimental) Automatically update files modified during builds to pull-request branches. This means that any files synthesized by projen or e.g. test snapshots will always be up-to-date before a PR is merged. Implies that PR builds do not have anti-tamper checks. Default: true
7102
+ :param mutable_build: (deprecated) Automatically update files modified during builds to pull-request branches. This means that any files synthesized by projen or e.g. test snapshots will always be up-to-date before a PR is merged. Implies that PR builds do not have anti-tamper checks. Default: true
6076
7103
  :param npmignore: (deprecated) Additional entries to .npmignore.
6077
7104
  :param npmignore_enabled: (experimental) Defines an .npmignore file. Normally this is only needed for libraries that are packaged as tarballs. Default: true
6078
7105
  :param npm_ignore_options: (experimental) Configuration options for .npmignore file.
6079
7106
  :param package: (experimental) Defines a ``package`` task that will produce an npm tarball under the artifacts directory (e.g. ``dist``). Default: true
6080
7107
  :param prettier: (experimental) Setup prettier. Default: false
6081
7108
  :param prettier_options: (experimental) Prettier options. Default: - default options
6082
- :param projen_dev_dependency: (experimental) Indicates of "projen" should be installed as a devDependency. Default: true
7109
+ :param projen_dev_dependency: (experimental) Indicates of "projen" should be installed as a devDependency. Default: - true if not a subproject
6083
7110
  :param projenrc_js: (experimental) Generate (once) .projenrc.js (in JavaScript). Set to ``false`` in order to disable .projenrc.js generation. Default: - true if projenrcJson is false
6084
7111
  :param projenrc_js_options: (experimental) Options for .projenrc.js. Default: - default options
6085
7112
  :param projen_version: (experimental) Version of projen to install. Default: - Defaults to the latest version.
@@ -6089,8 +7116,8 @@ class NodeProjectOptions(
6089
7116
  :param release_to_npm: (experimental) Automatically release to npm when new versions are introduced. Default: false
6090
7117
  :param release_workflow: (deprecated) DEPRECATED: renamed to ``release``. Default: - true if not a subproject
6091
7118
  :param workflow_bootstrap_steps: (experimental) Workflow steps to use in order to bootstrap this repo. Default: "yarn install --frozen-lockfile && yarn projen"
6092
- :param workflow_git_identity: (experimental) The git identity to use in workflows. Default: - GitHub Actions
6093
- :param workflow_node_version: (experimental) The node version to use in GitHub workflows. Default: - same as ``minNodeVersion``
7119
+ :param workflow_git_identity: (experimental) The git identity to use in workflows. Default: - default GitHub Actions user
7120
+ :param workflow_node_version: (experimental) The node version used in GitHub Actions workflows. Always use this option if your GitHub Actions workflows require a specific to run. Default: - ``minNodeVersion`` if set, otherwise ``lts/*``.
6094
7121
  :param workflow_package_cache: (experimental) Enable Node.js package cache in GitHub workflows. Default: false
6095
7122
 
6096
7123
  :stability: experimental
@@ -6125,6 +7152,12 @@ class NodeProjectOptions(
6125
7152
  yarn_berry_options = YarnBerryOptions(**yarn_berry_options)
6126
7153
  if isinstance(workflow_runs_on_group, dict):
6127
7154
  workflow_runs_on_group = _GroupRunnerOptions_148c59c1(**workflow_runs_on_group)
7155
+ if isinstance(audit_deps_options, dict):
7156
+ audit_deps_options = AuditOptions(**audit_deps_options)
7157
+ if isinstance(biome_options, dict):
7158
+ biome_options = BiomeOptions(**biome_options)
7159
+ if isinstance(build_workflow_options, dict):
7160
+ build_workflow_options = BuildWorkflowOptions(**build_workflow_options)
6128
7161
  if isinstance(build_workflow_triggers, dict):
6129
7162
  build_workflow_triggers = _Triggers_e9ae7617(**build_workflow_triggers)
6130
7163
  if isinstance(bundler_options, dict):
@@ -6186,6 +7219,7 @@ class NodeProjectOptions(
6186
7219
  check_type(argname="argument bugs_email", value=bugs_email, expected_type=type_hints["bugs_email"])
6187
7220
  check_type(argname="argument bugs_url", value=bugs_url, expected_type=type_hints["bugs_url"])
6188
7221
  check_type(argname="argument bundled_deps", value=bundled_deps, expected_type=type_hints["bundled_deps"])
7222
+ check_type(argname="argument bun_version", value=bun_version, expected_type=type_hints["bun_version"])
6189
7223
  check_type(argname="argument code_artifact_options", value=code_artifact_options, expected_type=type_hints["code_artifact_options"])
6190
7224
  check_type(argname="argument deps", value=deps, expected_type=type_hints["deps"])
6191
7225
  check_type(argname="argument description", value=description, expected_type=type_hints["description"])
@@ -6198,9 +7232,11 @@ class NodeProjectOptions(
6198
7232
  check_type(argname="argument max_node_version", value=max_node_version, expected_type=type_hints["max_node_version"])
6199
7233
  check_type(argname="argument min_node_version", value=min_node_version, expected_type=type_hints["min_node_version"])
6200
7234
  check_type(argname="argument npm_access", value=npm_access, expected_type=type_hints["npm_access"])
7235
+ check_type(argname="argument npm_provenance", value=npm_provenance, expected_type=type_hints["npm_provenance"])
6201
7236
  check_type(argname="argument npm_registry", value=npm_registry, expected_type=type_hints["npm_registry"])
6202
7237
  check_type(argname="argument npm_registry_url", value=npm_registry_url, expected_type=type_hints["npm_registry_url"])
6203
7238
  check_type(argname="argument npm_token_secret", value=npm_token_secret, expected_type=type_hints["npm_token_secret"])
7239
+ check_type(argname="argument npm_trusted_publishing", value=npm_trusted_publishing, expected_type=type_hints["npm_trusted_publishing"])
6204
7240
  check_type(argname="argument package_manager", value=package_manager, expected_type=type_hints["package_manager"])
6205
7241
  check_type(argname="argument package_name", value=package_name, expected_type=type_hints["package_name"])
6206
7242
  check_type(argname="argument peer_dependency_options", value=peer_dependency_options, expected_type=type_hints["peer_dependency_options"])
@@ -6212,9 +7248,11 @@ class NodeProjectOptions(
6212
7248
  check_type(argname="argument scripts", value=scripts, expected_type=type_hints["scripts"])
6213
7249
  check_type(argname="argument stability", value=stability, expected_type=type_hints["stability"])
6214
7250
  check_type(argname="argument yarn_berry_options", value=yarn_berry_options, expected_type=type_hints["yarn_berry_options"])
7251
+ check_type(argname="argument bump_package", value=bump_package, expected_type=type_hints["bump_package"])
6215
7252
  check_type(argname="argument jsii_release_version", value=jsii_release_version, expected_type=type_hints["jsii_release_version"])
6216
7253
  check_type(argname="argument major_version", value=major_version, expected_type=type_hints["major_version"])
6217
7254
  check_type(argname="argument min_major_version", value=min_major_version, expected_type=type_hints["min_major_version"])
7255
+ check_type(argname="argument next_version_command", value=next_version_command, expected_type=type_hints["next_version_command"])
6218
7256
  check_type(argname="argument npm_dist_tag", value=npm_dist_tag, expected_type=type_hints["npm_dist_tag"])
6219
7257
  check_type(argname="argument post_build_steps", value=post_build_steps, expected_type=type_hints["post_build_steps"])
6220
7258
  check_type(argname="argument prerelease", value=prerelease, expected_type=type_hints["prerelease"])
@@ -6222,12 +7260,14 @@ class NodeProjectOptions(
6222
7260
  check_type(argname="argument publish_tasks", value=publish_tasks, expected_type=type_hints["publish_tasks"])
6223
7261
  check_type(argname="argument releasable_commits", value=releasable_commits, expected_type=type_hints["releasable_commits"])
6224
7262
  check_type(argname="argument release_branches", value=release_branches, expected_type=type_hints["release_branches"])
7263
+ check_type(argname="argument release_environment", value=release_environment, expected_type=type_hints["release_environment"])
6225
7264
  check_type(argname="argument release_every_commit", value=release_every_commit, expected_type=type_hints["release_every_commit"])
6226
7265
  check_type(argname="argument release_failure_issue", value=release_failure_issue, expected_type=type_hints["release_failure_issue"])
6227
7266
  check_type(argname="argument release_failure_issue_label", value=release_failure_issue_label, expected_type=type_hints["release_failure_issue_label"])
6228
7267
  check_type(argname="argument release_schedule", value=release_schedule, expected_type=type_hints["release_schedule"])
6229
7268
  check_type(argname="argument release_tag_prefix", value=release_tag_prefix, expected_type=type_hints["release_tag_prefix"])
6230
7269
  check_type(argname="argument release_trigger", value=release_trigger, expected_type=type_hints["release_trigger"])
7270
+ check_type(argname="argument release_workflow_env", value=release_workflow_env, expected_type=type_hints["release_workflow_env"])
6231
7271
  check_type(argname="argument release_workflow_name", value=release_workflow_name, expected_type=type_hints["release_workflow_name"])
6232
7272
  check_type(argname="argument release_workflow_setup_steps", value=release_workflow_setup_steps, expected_type=type_hints["release_workflow_setup_steps"])
6233
7273
  check_type(argname="argument versionrc_options", value=versionrc_options, expected_type=type_hints["versionrc_options"])
@@ -6236,8 +7276,13 @@ class NodeProjectOptions(
6236
7276
  check_type(argname="argument workflow_runs_on_group", value=workflow_runs_on_group, expected_type=type_hints["workflow_runs_on_group"])
6237
7277
  check_type(argname="argument default_release_branch", value=default_release_branch, expected_type=type_hints["default_release_branch"])
6238
7278
  check_type(argname="argument artifacts_directory", value=artifacts_directory, expected_type=type_hints["artifacts_directory"])
7279
+ check_type(argname="argument audit_deps", value=audit_deps, expected_type=type_hints["audit_deps"])
7280
+ check_type(argname="argument audit_deps_options", value=audit_deps_options, expected_type=type_hints["audit_deps_options"])
6239
7281
  check_type(argname="argument auto_approve_upgrades", value=auto_approve_upgrades, expected_type=type_hints["auto_approve_upgrades"])
7282
+ check_type(argname="argument biome", value=biome, expected_type=type_hints["biome"])
7283
+ check_type(argname="argument biome_options", value=biome_options, expected_type=type_hints["biome_options"])
6240
7284
  check_type(argname="argument build_workflow", value=build_workflow, expected_type=type_hints["build_workflow"])
7285
+ check_type(argname="argument build_workflow_options", value=build_workflow_options, expected_type=type_hints["build_workflow_options"])
6241
7286
  check_type(argname="argument build_workflow_triggers", value=build_workflow_triggers, expected_type=type_hints["build_workflow_triggers"])
6242
7287
  check_type(argname="argument bundler_options", value=bundler_options, expected_type=type_hints["bundler_options"])
6243
7288
  check_type(argname="argument check_licenses", value=check_licenses, expected_type=type_hints["check_licenses"])
@@ -6352,6 +7397,8 @@ class NodeProjectOptions(
6352
7397
  self._values["bugs_url"] = bugs_url
6353
7398
  if bundled_deps is not None:
6354
7399
  self._values["bundled_deps"] = bundled_deps
7400
+ if bun_version is not None:
7401
+ self._values["bun_version"] = bun_version
6355
7402
  if code_artifact_options is not None:
6356
7403
  self._values["code_artifact_options"] = code_artifact_options
6357
7404
  if deps is not None:
@@ -6376,12 +7423,16 @@ class NodeProjectOptions(
6376
7423
  self._values["min_node_version"] = min_node_version
6377
7424
  if npm_access is not None:
6378
7425
  self._values["npm_access"] = npm_access
7426
+ if npm_provenance is not None:
7427
+ self._values["npm_provenance"] = npm_provenance
6379
7428
  if npm_registry is not None:
6380
7429
  self._values["npm_registry"] = npm_registry
6381
7430
  if npm_registry_url is not None:
6382
7431
  self._values["npm_registry_url"] = npm_registry_url
6383
7432
  if npm_token_secret is not None:
6384
7433
  self._values["npm_token_secret"] = npm_token_secret
7434
+ if npm_trusted_publishing is not None:
7435
+ self._values["npm_trusted_publishing"] = npm_trusted_publishing
6385
7436
  if package_manager is not None:
6386
7437
  self._values["package_manager"] = package_manager
6387
7438
  if package_name is not None:
@@ -6404,12 +7455,16 @@ class NodeProjectOptions(
6404
7455
  self._values["stability"] = stability
6405
7456
  if yarn_berry_options is not None:
6406
7457
  self._values["yarn_berry_options"] = yarn_berry_options
7458
+ if bump_package is not None:
7459
+ self._values["bump_package"] = bump_package
6407
7460
  if jsii_release_version is not None:
6408
7461
  self._values["jsii_release_version"] = jsii_release_version
6409
7462
  if major_version is not None:
6410
7463
  self._values["major_version"] = major_version
6411
7464
  if min_major_version is not None:
6412
7465
  self._values["min_major_version"] = min_major_version
7466
+ if next_version_command is not None:
7467
+ self._values["next_version_command"] = next_version_command
6413
7468
  if npm_dist_tag is not None:
6414
7469
  self._values["npm_dist_tag"] = npm_dist_tag
6415
7470
  if post_build_steps is not None:
@@ -6424,6 +7479,8 @@ class NodeProjectOptions(
6424
7479
  self._values["releasable_commits"] = releasable_commits
6425
7480
  if release_branches is not None:
6426
7481
  self._values["release_branches"] = release_branches
7482
+ if release_environment is not None:
7483
+ self._values["release_environment"] = release_environment
6427
7484
  if release_every_commit is not None:
6428
7485
  self._values["release_every_commit"] = release_every_commit
6429
7486
  if release_failure_issue is not None:
@@ -6436,6 +7493,8 @@ class NodeProjectOptions(
6436
7493
  self._values["release_tag_prefix"] = release_tag_prefix
6437
7494
  if release_trigger is not None:
6438
7495
  self._values["release_trigger"] = release_trigger
7496
+ if release_workflow_env is not None:
7497
+ self._values["release_workflow_env"] = release_workflow_env
6439
7498
  if release_workflow_name is not None:
6440
7499
  self._values["release_workflow_name"] = release_workflow_name
6441
7500
  if release_workflow_setup_steps is not None:
@@ -6450,10 +7509,20 @@ class NodeProjectOptions(
6450
7509
  self._values["workflow_runs_on_group"] = workflow_runs_on_group
6451
7510
  if artifacts_directory is not None:
6452
7511
  self._values["artifacts_directory"] = artifacts_directory
7512
+ if audit_deps is not None:
7513
+ self._values["audit_deps"] = audit_deps
7514
+ if audit_deps_options is not None:
7515
+ self._values["audit_deps_options"] = audit_deps_options
6453
7516
  if auto_approve_upgrades is not None:
6454
7517
  self._values["auto_approve_upgrades"] = auto_approve_upgrades
7518
+ if biome is not None:
7519
+ self._values["biome"] = biome
7520
+ if biome_options is not None:
7521
+ self._values["biome_options"] = biome_options
6455
7522
  if build_workflow is not None:
6456
7523
  self._values["build_workflow"] = build_workflow
7524
+ if build_workflow_options is not None:
7525
+ self._values["build_workflow_options"] = build_workflow_options
6457
7526
  if build_workflow_triggers is not None:
6458
7527
  self._values["build_workflow_triggers"] = build_workflow_triggers
6459
7528
  if bundler_options is not None:
@@ -6987,6 +8056,17 @@ class NodeProjectOptions(
6987
8056
  result = self._values.get("bundled_deps")
6988
8057
  return typing.cast(typing.Optional[typing.List[builtins.str]], result)
6989
8058
 
8059
+ @builtins.property
8060
+ def bun_version(self) -> typing.Optional[builtins.str]:
8061
+ '''(experimental) The version of Bun to use if using Bun as a package manager.
8062
+
8063
+ :default: "latest"
8064
+
8065
+ :stability: experimental
8066
+ '''
8067
+ result = self._values.get("bun_version")
8068
+ return typing.cast(typing.Optional[builtins.str], result)
8069
+
6990
8070
  @builtins.property
6991
8071
  def code_artifact_options(self) -> typing.Optional[CodeArtifactOptions]:
6992
8072
  '''(experimental) Options for npm packages using AWS CodeArtifact.
@@ -7121,9 +8201,15 @@ class NodeProjectOptions(
7121
8201
 
7122
8202
  @builtins.property
7123
8203
  def max_node_version(self) -> typing.Optional[builtins.str]:
7124
- '''(experimental) Minimum node.js version to require via ``engines`` (inclusive).
8204
+ '''(experimental) The maximum node version supported by this package. Most projects should not use this option.
8205
+
8206
+ The value indicates that the package is incompatible with any newer versions of node.
8207
+ This requirement is enforced via the engines field.
7125
8208
 
7126
- :default: - no max
8209
+ You will normally not need to set this option.
8210
+ Consider this option only if your package is known to not function with newer versions of node.
8211
+
8212
+ :default: - no maximum version is enforced
7127
8213
 
7128
8214
  :stability: experimental
7129
8215
  '''
@@ -7132,9 +8218,19 @@ class NodeProjectOptions(
7132
8218
 
7133
8219
  @builtins.property
7134
8220
  def min_node_version(self) -> typing.Optional[builtins.str]:
7135
- '''(experimental) Minimum Node.js version to require via package.json ``engines`` (inclusive).
8221
+ '''(experimental) The minimum node version required by this package to function. Most projects should not use this option.
8222
+
8223
+ The value indicates that the package is incompatible with any older versions of node.
8224
+ This requirement is enforced via the engines field.
8225
+
8226
+ You will normally not need to set this option, even if your package is incompatible with EOL versions of node.
8227
+ Consider this option only if your package depends on a specific feature, that is not available in other LTS versions.
8228
+ Setting this option has very high impact on the consumers of your package,
8229
+ as package managers will actively prevent usage with node versions you have marked as incompatible.
8230
+
8231
+ To change the node version of your CI/CD workflows, use ``workflowNodeVersion``.
7136
8232
 
7137
- :default: - no "engines" specified
8233
+ :default: - no minimum version is enforced
7138
8234
 
7139
8235
  :stability: experimental
7140
8236
  '''
@@ -7156,6 +8252,24 @@ class NodeProjectOptions(
7156
8252
  result = self._values.get("npm_access")
7157
8253
  return typing.cast(typing.Optional["NpmAccess"], result)
7158
8254
 
8255
+ @builtins.property
8256
+ def npm_provenance(self) -> typing.Optional[builtins.bool]:
8257
+ '''(experimental) Should provenance statements be generated when the package is published.
8258
+
8259
+ A supported package manager is required to publish a package with npm provenance statements and
8260
+ you will need to use a supported CI/CD provider.
8261
+
8262
+ Note that the projen ``Release`` and ``Publisher`` components are using ``publib`` to publish packages,
8263
+ which is using npm internally and supports provenance statements independently of the package manager used.
8264
+
8265
+ :default: - true for public packages, false otherwise
8266
+
8267
+ :see: https://docs.npmjs.com/generating-provenance-statements
8268
+ :stability: experimental
8269
+ '''
8270
+ result = self._values.get("npm_provenance")
8271
+ return typing.cast(typing.Optional[builtins.bool], result)
8272
+
7159
8273
  @builtins.property
7160
8274
  def npm_registry(self) -> typing.Optional[builtins.str]:
7161
8275
  '''(deprecated) The host name of the npm registry to publish to.
@@ -7193,6 +8307,17 @@ class NodeProjectOptions(
7193
8307
  result = self._values.get("npm_token_secret")
7194
8308
  return typing.cast(typing.Optional[builtins.str], result)
7195
8309
 
8310
+ @builtins.property
8311
+ def npm_trusted_publishing(self) -> typing.Optional[builtins.bool]:
8312
+ '''(experimental) Use trusted publishing for publishing to npmjs.com Needs to be pre-configured on npm.js to work.
8313
+
8314
+ :default: - false
8315
+
8316
+ :stability: experimental
8317
+ '''
8318
+ result = self._values.get("npm_trusted_publishing")
8319
+ return typing.cast(typing.Optional[builtins.bool], result)
8320
+
7196
8321
  @builtins.property
7197
8322
  def package_manager(self) -> typing.Optional[NodePackageManager]:
7198
8323
  '''(experimental) The Node Package Manager used to execute scripts.
@@ -7254,7 +8379,7 @@ class NodeProjectOptions(
7254
8379
  def pnpm_version(self) -> typing.Optional[builtins.str]:
7255
8380
  '''(experimental) The version of PNPM to use if using PNPM as a package manager.
7256
8381
 
7257
- :default: "7"
8382
+ :default: "9"
7258
8383
 
7259
8384
  :stability: experimental
7260
8385
  '''
@@ -7331,6 +8456,19 @@ class NodeProjectOptions(
7331
8456
  result = self._values.get("yarn_berry_options")
7332
8457
  return typing.cast(typing.Optional["YarnBerryOptions"], result)
7333
8458
 
8459
+ @builtins.property
8460
+ def bump_package(self) -> typing.Optional[builtins.str]:
8461
+ '''(experimental) The ``commit-and-tag-version`` compatible package used to bump the package version, as a dependency string.
8462
+
8463
+ This can be any compatible package version, including the deprecated ``standard-version@9``.
8464
+
8465
+ :default: - A recent version of "commit-and-tag-version"
8466
+
8467
+ :stability: experimental
8468
+ '''
8469
+ result = self._values.get("bump_package")
8470
+ return typing.cast(typing.Optional[builtins.str], result)
8471
+
7334
8472
  @builtins.property
7335
8473
  def jsii_release_version(self) -> typing.Optional[builtins.str]:
7336
8474
  '''(experimental) Version requirement of ``publib`` which is used to publish modules to npm.
@@ -7372,6 +8510,36 @@ class NodeProjectOptions(
7372
8510
  result = self._values.get("min_major_version")
7373
8511
  return typing.cast(typing.Optional[jsii.Number], result)
7374
8512
 
8513
+ @builtins.property
8514
+ def next_version_command(self) -> typing.Optional[builtins.str]:
8515
+ '''(experimental) A shell command to control the next version to release.
8516
+
8517
+ If present, this shell command will be run before the bump is executed, and
8518
+ it determines what version to release. It will be executed in the following
8519
+ environment:
8520
+
8521
+ - Working directory: the project directory.
8522
+ - ``$VERSION``: the current version. Looks like ``1.2.3``.
8523
+ - ``$LATEST_TAG``: the most recent tag. Looks like ``prefix-v1.2.3``, or may be unset.
8524
+ - ``$SUGGESTED_BUMP``: the suggested bump action based on commits. One of ``major|minor|patch|none``.
8525
+
8526
+ The command should print one of the following to ``stdout``:
8527
+
8528
+ - Nothing: the next version number will be determined based on commit history.
8529
+ - ``x.y.z``: the next version number will be ``x.y.z``.
8530
+ - ``major|minor|patch``: the next version number will be the current version number
8531
+ with the indicated component bumped.
8532
+
8533
+ This setting cannot be specified together with ``minMajorVersion``; the invoked
8534
+ script can be used to achieve the effects of ``minMajorVersion``.
8535
+
8536
+ :default: - The next version will be determined based on the commit history and project settings.
8537
+
8538
+ :stability: experimental
8539
+ '''
8540
+ result = self._values.get("next_version_command")
8541
+ return typing.cast(typing.Optional[builtins.str], result)
8542
+
7375
8543
  @builtins.property
7376
8544
  def npm_dist_tag(self) -> typing.Optional[builtins.str]:
7377
8545
  '''(experimental) The npmDistTag to use when publishing from the default branch.
@@ -7467,6 +8635,23 @@ class NodeProjectOptions(
7467
8635
  result = self._values.get("release_branches")
7468
8636
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, _BranchOptions_13663d08]], result)
7469
8637
 
8638
+ @builtins.property
8639
+ def release_environment(self) -> typing.Optional[builtins.str]:
8640
+ '''(experimental) The GitHub Actions environment used for the release.
8641
+
8642
+ This can be used to add an explicit approval step to the release
8643
+ or limit who can initiate a release through environment protection rules.
8644
+
8645
+ When multiple artifacts are released, the environment can be overwritten
8646
+ on a per artifact basis.
8647
+
8648
+ :default: - no environment used, unless set at the artifact level
8649
+
8650
+ :stability: experimental
8651
+ '''
8652
+ result = self._values.get("release_environment")
8653
+ return typing.cast(typing.Optional[builtins.str], result)
8654
+
7470
8655
  @builtins.property
7471
8656
  def release_every_commit(self) -> typing.Optional[builtins.bool]:
7472
8657
  '''(deprecated) Automatically release new versions every commit to one of branches in ``releaseBranches``.
@@ -7544,6 +8729,19 @@ class NodeProjectOptions(
7544
8729
  result = self._values.get("release_trigger")
7545
8730
  return typing.cast(typing.Optional[_ReleaseTrigger_e4dc221f], result)
7546
8731
 
8732
+ @builtins.property
8733
+ def release_workflow_env(
8734
+ self,
8735
+ ) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
8736
+ '''(experimental) Build environment variables for release workflows.
8737
+
8738
+ :default: {}
8739
+
8740
+ :stability: experimental
8741
+ '''
8742
+ result = self._values.get("release_workflow_env")
8743
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
8744
+
7547
8745
  @builtins.property
7548
8746
  def release_workflow_name(self) -> typing.Optional[builtins.str]:
7549
8747
  '''(experimental) The name of the default release workflow.
@@ -7570,7 +8768,7 @@ class NodeProjectOptions(
7570
8768
  def versionrc_options(
7571
8769
  self,
7572
8770
  ) -> typing.Optional[typing.Mapping[builtins.str, typing.Any]]:
7573
- '''(experimental) Custom configuration used when creating changelog with standard-version package.
8771
+ '''(experimental) Custom configuration used when creating changelog with commit-and-tag-version package.
7574
8772
 
7575
8773
  Given values either append to default configuration or overwrite values in it.
7576
8774
 
@@ -7639,6 +8837,32 @@ class NodeProjectOptions(
7639
8837
  result = self._values.get("artifacts_directory")
7640
8838
  return typing.cast(typing.Optional[builtins.str], result)
7641
8839
 
8840
+ @builtins.property
8841
+ def audit_deps(self) -> typing.Optional[builtins.bool]:
8842
+ '''(experimental) Run security audit on dependencies.
8843
+
8844
+ When enabled, creates an "audit" task that checks for known security vulnerabilities
8845
+ in dependencies. By default, runs during every build and checks for "high" severity
8846
+ vulnerabilities or above in all dependencies (including dev dependencies).
8847
+
8848
+ :default: false
8849
+
8850
+ :stability: experimental
8851
+ '''
8852
+ result = self._values.get("audit_deps")
8853
+ return typing.cast(typing.Optional[builtins.bool], result)
8854
+
8855
+ @builtins.property
8856
+ def audit_deps_options(self) -> typing.Optional[AuditOptions]:
8857
+ '''(experimental) Security audit options.
8858
+
8859
+ :default: - default options
8860
+
8861
+ :stability: experimental
8862
+ '''
8863
+ result = self._values.get("audit_deps_options")
8864
+ return typing.cast(typing.Optional[AuditOptions], result)
8865
+
7642
8866
  @builtins.property
7643
8867
  def auto_approve_upgrades(self) -> typing.Optional[builtins.bool]:
7644
8868
  '''(experimental) Automatically approve deps upgrade PRs, allowing them to be merged by mergify (if configued).
@@ -7652,6 +8876,28 @@ class NodeProjectOptions(
7652
8876
  result = self._values.get("auto_approve_upgrades")
7653
8877
  return typing.cast(typing.Optional[builtins.bool], result)
7654
8878
 
8879
+ @builtins.property
8880
+ def biome(self) -> typing.Optional[builtins.bool]:
8881
+ '''(experimental) Setup Biome.
8882
+
8883
+ :default: false
8884
+
8885
+ :stability: experimental
8886
+ '''
8887
+ result = self._values.get("biome")
8888
+ return typing.cast(typing.Optional[builtins.bool], result)
8889
+
8890
+ @builtins.property
8891
+ def biome_options(self) -> typing.Optional[BiomeOptions]:
8892
+ '''(experimental) Biome options.
8893
+
8894
+ :default: - default options
8895
+
8896
+ :stability: experimental
8897
+ '''
8898
+ result = self._values.get("biome_options")
8899
+ return typing.cast(typing.Optional[BiomeOptions], result)
8900
+
7655
8901
  @builtins.property
7656
8902
  def build_workflow(self) -> typing.Optional[builtins.bool]:
7657
8903
  '''(experimental) Define a GitHub workflow for building PRs.
@@ -7663,13 +8909,24 @@ class NodeProjectOptions(
7663
8909
  result = self._values.get("build_workflow")
7664
8910
  return typing.cast(typing.Optional[builtins.bool], result)
7665
8911
 
8912
+ @builtins.property
8913
+ def build_workflow_options(self) -> typing.Optional[BuildWorkflowOptions]:
8914
+ '''(experimental) Options for PR build workflow.
8915
+
8916
+ :stability: experimental
8917
+ '''
8918
+ result = self._values.get("build_workflow_options")
8919
+ return typing.cast(typing.Optional[BuildWorkflowOptions], result)
8920
+
7666
8921
  @builtins.property
7667
8922
  def build_workflow_triggers(self) -> typing.Optional[_Triggers_e9ae7617]:
7668
- '''(experimental) Build workflow triggers.
8923
+ '''(deprecated) Build workflow triggers.
7669
8924
 
7670
8925
  :default: "{ pullRequest: {}, workflowDispatch: {} }"
7671
8926
 
7672
- :stability: experimental
8927
+ :deprecated: - Use ``buildWorkflowOptions.workflowTriggers``
8928
+
8929
+ :stability: deprecated
7673
8930
  '''
7674
8931
  result = self._values.get("build_workflow_triggers")
7675
8932
  return typing.cast(typing.Optional[_Triggers_e9ae7617], result)
@@ -7698,7 +8955,7 @@ class NodeProjectOptions(
7698
8955
 
7699
8956
  @builtins.property
7700
8957
  def code_cov(self) -> typing.Optional[builtins.bool]:
7701
- '''(experimental) Define a GitHub workflow step for sending code coverage metrics to https://codecov.io/ Uses codecov/codecov-action@v3 A secret is required for private repos. Configured with ``@codeCovTokenSecret``.
8958
+ '''(experimental) 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``.
7702
8959
 
7703
8960
  :default: false
7704
8961
 
@@ -7709,9 +8966,9 @@ class NodeProjectOptions(
7709
8966
 
7710
8967
  @builtins.property
7711
8968
  def code_cov_token_secret(self) -> typing.Optional[builtins.str]:
7712
- '''(experimental) Define the secret name for a specified https://codecov.io/ token A secret is required to send coverage for private repositories.
8969
+ '''(experimental) Define the secret name for a specified https://codecov.io/ token.
7713
8970
 
7714
- :default: - if this option is not specified, only public repositories are supported
8971
+ :default: - OIDC auth is used
7715
8972
 
7716
8973
  :stability: experimental
7717
8974
  '''
@@ -7821,7 +9078,7 @@ class NodeProjectOptions(
7821
9078
 
7822
9079
  @builtins.property
7823
9080
  def mutable_build(self) -> typing.Optional[builtins.bool]:
7824
- '''(experimental) Automatically update files modified during builds to pull-request branches.
9081
+ '''(deprecated) Automatically update files modified during builds to pull-request branches.
7825
9082
 
7826
9083
  This means
7827
9084
  that any files synthesized by projen or e.g. test snapshots will always be up-to-date
@@ -7831,7 +9088,9 @@ class NodeProjectOptions(
7831
9088
 
7832
9089
  :default: true
7833
9090
 
7834
- :stability: experimental
9091
+ :deprecated: - Use ``buildWorkflowOptions.mutableBuild``
9092
+
9093
+ :stability: deprecated
7835
9094
  '''
7836
9095
  result = self._values.get("mutable_build")
7837
9096
  return typing.cast(typing.Optional[builtins.bool], result)
@@ -7904,7 +9163,7 @@ class NodeProjectOptions(
7904
9163
  def projen_dev_dependency(self) -> typing.Optional[builtins.bool]:
7905
9164
  '''(experimental) Indicates of "projen" should be installed as a devDependency.
7906
9165
 
7907
- :default: true
9166
+ :default: - true if not a subproject
7908
9167
 
7909
9168
  :stability: experimental
7910
9169
  '''
@@ -8020,7 +9279,7 @@ class NodeProjectOptions(
8020
9279
  def workflow_git_identity(self) -> typing.Optional[_GitIdentity_6effc3de]:
8021
9280
  '''(experimental) The git identity to use in workflows.
8022
9281
 
8023
- :default: - GitHub Actions
9282
+ :default: - default GitHub Actions user
8024
9283
 
8025
9284
  :stability: experimental
8026
9285
  '''
@@ -8029,9 +9288,11 @@ class NodeProjectOptions(
8029
9288
 
8030
9289
  @builtins.property
8031
9290
  def workflow_node_version(self) -> typing.Optional[builtins.str]:
8032
- '''(experimental) The node version to use in GitHub workflows.
9291
+ '''(experimental) The node version used in GitHub Actions workflows.
8033
9292
 
8034
- :default: - same as ``minNodeVersion``
9293
+ Always use this option if your GitHub Actions workflows require a specific to run.
9294
+
9295
+ :default: - ``minNodeVersion`` if set, otherwise ``lts/*``.
8035
9296
 
8036
9297
  :stability: experimental
8037
9298
  '''
@@ -9069,7 +10330,10 @@ class Projenrc(
9069
10330
  metaclass=jsii.JSIIMeta,
9070
10331
  jsii_type="projen.javascript.Projenrc",
9071
10332
  ):
9072
- '''(experimental) Sets up a javascript project to use TypeScript for projenrc.
10333
+ '''(experimental) A projenrc file written in JavaScript.
10334
+
10335
+ This component can be instantiated in any type of project
10336
+ and has no expectations around the project's main language.
9073
10337
 
9074
10338
  :stability: experimental
9075
10339
  '''
@@ -9273,6 +10537,61 @@ class RenderWorkflowSetupOptions:
9273
10537
  )
9274
10538
 
9275
10539
 
10540
+ @jsii.enum(jsii_type="projen.javascript.RunBundleTask")
10541
+ class RunBundleTask(enum.Enum):
10542
+ '''(experimental) Options for BundlerOptions.runBundleTask.
10543
+
10544
+ :stability: experimental
10545
+ '''
10546
+
10547
+ MANUAL = "MANUAL"
10548
+ '''(experimental) Don't bundle automatically as part of the build.
10549
+
10550
+ :stability: experimental
10551
+ '''
10552
+ PRE_COMPILE = "PRE_COMPILE"
10553
+ '''(experimental) Bundle automatically before compilation.
10554
+
10555
+ :stability: experimental
10556
+ '''
10557
+ POST_COMPILE = "POST_COMPILE"
10558
+ '''(experimental) Bundle automatically after compilation. This is useful if you want to bundle the compiled results.
10559
+
10560
+ Thus will run compilation tasks (using tsc, etc.) before running file
10561
+ through bundling step.
10562
+
10563
+ This is only required unless you are using new experimental features that
10564
+ are not supported by ``esbuild`` but are supported by typescript's ``tsc``
10565
+ compiler. One example of such feature is ``emitDecoratorMetadata``::
10566
+
10567
+ // In a TypeScript project with output configured
10568
+ // to go to the "lib" directory:
10569
+ const project = new TypeScriptProject({
10570
+ name: "test",
10571
+ defaultReleaseBranch: "main",
10572
+ tsconfig: {
10573
+ compilerOptions: {
10574
+ outDir: "lib",
10575
+ },
10576
+ },
10577
+ bundlerOptions: {
10578
+ // ensure we compile with `tsc` before bundling
10579
+ runBundleTask: RunBundleTask.POST_COMPILE,
10580
+ },
10581
+ });
10582
+
10583
+ // Tell the bundler to bundle the compiled results (from the "lib" directory)
10584
+ project.bundler.addBundle("./lib/index.js", {
10585
+ platform: "node",
10586
+ target: "node22",
10587
+ sourcemap: false,
10588
+ format: "esm",
10589
+ });
10590
+
10591
+ :stability: experimental
10592
+ '''
10593
+
10594
+
9276
10595
  @jsii.data_type(
9277
10596
  jsii_type="projen.javascript.ScopedPackagesOptions",
9278
10597
  jsii_struct_bases=[],
@@ -9332,6 +10651,36 @@ class ScopedPackagesOptions:
9332
10651
  )
9333
10652
 
9334
10653
 
10654
+ @jsii.enum(jsii_type="projen.javascript.SourceMapMode")
10655
+ class SourceMapMode(enum.Enum):
10656
+ '''(experimental) SourceMap mode for esbuild.
10657
+
10658
+ :see: https://esbuild.github.io/api/#sourcemap
10659
+ :stability: experimental
10660
+ '''
10661
+
10662
+ DEFAULT = "DEFAULT"
10663
+ '''(experimental) Default sourceMap mode - will generate a .js.map file alongside any generated .js file and add a special //# sourceMappingURL= comment to the bottom of the .js file pointing to the .js.map file.
10664
+
10665
+ :stability: experimental
10666
+ '''
10667
+ EXTERNAL = "EXTERNAL"
10668
+ '''(experimental) External sourceMap mode - If you want to omit the special //# sourceMappingURL= comment from the generated .js file but you still want to generate the .js.map files.
10669
+
10670
+ :stability: experimental
10671
+ '''
10672
+ INLINE = "INLINE"
10673
+ '''(experimental) Inline sourceMap mode - If you want to insert the entire source map into the .js file instead of generating a separate .js.map file.
10674
+
10675
+ :stability: experimental
10676
+ '''
10677
+ BOTH = "BOTH"
10678
+ '''(experimental) Both sourceMap mode - If you want to have the effect of both inline and external simultaneously.
10679
+
10680
+ :stability: experimental
10681
+ '''
10682
+
10683
+
9335
10684
  @jsii.enum(jsii_type="projen.javascript.TrailingComma")
9336
10685
  class TrailingComma(enum.Enum):
9337
10686
  '''
@@ -9382,12 +10731,16 @@ class Transform(metaclass=jsii.JSIIMeta, jsii_type="projen.javascript.Transform"
9382
10731
  "allow_importing_ts_extensions": "allowImportingTsExtensions",
9383
10732
  "allow_js": "allowJs",
9384
10733
  "allow_synthetic_default_imports": "allowSyntheticDefaultImports",
10734
+ "allow_unreachable_code": "allowUnreachableCode",
10735
+ "allow_unused_labels": "allowUnusedLabels",
9385
10736
  "always_strict": "alwaysStrict",
9386
10737
  "base_url": "baseUrl",
10738
+ "check_js": "checkJs",
9387
10739
  "custom_conditions": "customConditions",
9388
10740
  "declaration": "declaration",
9389
10741
  "declaration_dir": "declarationDir",
9390
10742
  "declaration_map": "declarationMap",
10743
+ "downlevel_iteration": "downlevelIteration",
9391
10744
  "emit_declaration_only": "emitDeclarationOnly",
9392
10745
  "emit_decorator_metadata": "emitDecoratorMetadata",
9393
10746
  "es_module_interop": "esModuleInterop",
@@ -9395,6 +10748,7 @@ class Transform(metaclass=jsii.JSIIMeta, jsii_type="projen.javascript.Transform"
9395
10748
  "experimental_decorators": "experimentalDecorators",
9396
10749
  "force_consistent_casing_in_file_names": "forceConsistentCasingInFileNames",
9397
10750
  "imports_not_used_as_values": "importsNotUsedAsValues",
10751
+ "incremental": "incremental",
9398
10752
  "inline_source_map": "inlineSourceMap",
9399
10753
  "inline_sources": "inlineSources",
9400
10754
  "isolated_modules": "isolatedModules",
@@ -9402,6 +10756,7 @@ class Transform(metaclass=jsii.JSIIMeta, jsii_type="projen.javascript.Transform"
9402
10756
  "jsx_import_source": "jsxImportSource",
9403
10757
  "lib": "lib",
9404
10758
  "module": "module",
10759
+ "module_detection": "moduleDetection",
9405
10760
  "module_resolution": "moduleResolution",
9406
10761
  "no_emit": "noEmit",
9407
10762
  "no_emit_on_error": "noEmitOnError",
@@ -9428,6 +10783,8 @@ class Transform(metaclass=jsii.JSIIMeta, jsii_type="projen.javascript.Transform"
9428
10783
  "strict_property_initialization": "strictPropertyInitialization",
9429
10784
  "strip_internal": "stripInternal",
9430
10785
  "target": "target",
10786
+ "ts_build_info_file": "tsBuildInfoFile",
10787
+ "type_roots": "typeRoots",
9431
10788
  "types": "types",
9432
10789
  "use_unknown_in_catch_variables": "useUnknownInCatchVariables",
9433
10790
  "verbatim_module_syntax": "verbatimModuleSyntax",
@@ -9441,12 +10798,16 @@ class TypeScriptCompilerOptions:
9441
10798
  allow_importing_ts_extensions: typing.Optional[builtins.bool] = None,
9442
10799
  allow_js: typing.Optional[builtins.bool] = None,
9443
10800
  allow_synthetic_default_imports: typing.Optional[builtins.bool] = None,
10801
+ allow_unreachable_code: typing.Optional[builtins.bool] = None,
10802
+ allow_unused_labels: typing.Optional[builtins.bool] = None,
9444
10803
  always_strict: typing.Optional[builtins.bool] = None,
9445
10804
  base_url: typing.Optional[builtins.str] = None,
10805
+ check_js: typing.Optional[builtins.bool] = None,
9446
10806
  custom_conditions: typing.Optional[typing.Sequence[builtins.str]] = None,
9447
10807
  declaration: typing.Optional[builtins.bool] = None,
9448
10808
  declaration_dir: typing.Optional[builtins.str] = None,
9449
10809
  declaration_map: typing.Optional[builtins.bool] = None,
10810
+ downlevel_iteration: typing.Optional[builtins.bool] = None,
9450
10811
  emit_declaration_only: typing.Optional[builtins.bool] = None,
9451
10812
  emit_decorator_metadata: typing.Optional[builtins.bool] = None,
9452
10813
  es_module_interop: typing.Optional[builtins.bool] = None,
@@ -9454,6 +10815,7 @@ class TypeScriptCompilerOptions:
9454
10815
  experimental_decorators: typing.Optional[builtins.bool] = None,
9455
10816
  force_consistent_casing_in_file_names: typing.Optional[builtins.bool] = None,
9456
10817
  imports_not_used_as_values: typing.Optional["TypeScriptImportsNotUsedAsValues"] = None,
10818
+ incremental: typing.Optional[builtins.bool] = None,
9457
10819
  inline_source_map: typing.Optional[builtins.bool] = None,
9458
10820
  inline_sources: typing.Optional[builtins.bool] = None,
9459
10821
  isolated_modules: typing.Optional[builtins.bool] = None,
@@ -9461,6 +10823,7 @@ class TypeScriptCompilerOptions:
9461
10823
  jsx_import_source: typing.Optional[builtins.str] = None,
9462
10824
  lib: typing.Optional[typing.Sequence[builtins.str]] = None,
9463
10825
  module: typing.Optional[builtins.str] = None,
10826
+ module_detection: typing.Optional["TypeScriptModuleDetection"] = None,
9464
10827
  module_resolution: typing.Optional["TypeScriptModuleResolution"] = None,
9465
10828
  no_emit: typing.Optional[builtins.bool] = None,
9466
10829
  no_emit_on_error: typing.Optional[builtins.bool] = None,
@@ -9487,6 +10850,8 @@ class TypeScriptCompilerOptions:
9487
10850
  strict_property_initialization: typing.Optional[builtins.bool] = None,
9488
10851
  strip_internal: typing.Optional[builtins.bool] = None,
9489
10852
  target: typing.Optional[builtins.str] = None,
10853
+ ts_build_info_file: typing.Optional[builtins.str] = None,
10854
+ type_roots: typing.Optional[typing.Sequence[builtins.str]] = None,
9490
10855
  types: typing.Optional[typing.Sequence[builtins.str]] = None,
9491
10856
  use_unknown_in_catch_variables: typing.Optional[builtins.bool] = None,
9492
10857
  verbatim_module_syntax: typing.Optional[builtins.bool] = None,
@@ -9496,12 +10861,16 @@ class TypeScriptCompilerOptions:
9496
10861
  :param allow_importing_ts_extensions: (experimental) Allows TypeScript files to import each other with TypeScript-specific extensions (``.ts``, ``.mts``, ``.tsx``). Requires ``noEmit`` or ``emitDeclarationOnly``. Default: undefined
9497
10862
  :param allow_js: (experimental) Allow JavaScript files to be compiled. Default: false
9498
10863
  :param allow_synthetic_default_imports: (experimental) Allow default imports from modules with no default export. This does not affect code emit, just typechecking.
10864
+ :param allow_unreachable_code: (experimental) Allow Unreachable Code. When: - ``undefined`` (default) provide suggestions as warnings to editors - ``true`` unreachable code is ignored - ``false`` raises compiler errors about unreachable code These warnings are only about code which is provably unreachable due to the use of JavaScript syntax.
10865
+ :param allow_unused_labels: (experimental) Allow Unused Labels. When: - ``undefined`` (default) provide suggestions as warnings to editors - ``true`` unused labels are ignored - ``false`` raises compiler errors about unused labels Labels are very rare in JavaScript and typically indicate an attempt to write an object literal:: function verifyAge(age: number) { // Forgot 'return' statement if (age > 18) { verified: true; // ^^^^^^^^ Unused label. } }
9499
10866
  :param always_strict: (experimental) Ensures that your files are parsed in the ECMAScript strict mode, and emit “use strict” for each source file. Default: true
9500
10867
  :param base_url: (experimental) Lets you set a base directory to resolve non-absolute module names. You can define a root folder where you can do absolute file resolution.
10868
+ :param check_js: (experimental) Check JS. Works in tandem with `allowJs <https://www.typescriptlang.org/tsconfig#allowJs>`_. When checkJs is enabled then errors are reported in JavaScript files. This is the equivalent of including //
9501
10869
  :param custom_conditions: (experimental) List of additional conditions that should succeed when TypeScript resolves from an ``exports`` or ``imports`` field of a ``package.json``. Default: undefined
9502
10870
  :param declaration: (experimental) To be specified along with the above.
9503
10871
  :param declaration_dir: (experimental) Offers a way to configure the root directory for where declaration files are emitted.
9504
10872
  :param declaration_map: (experimental) Generates a source map for .d.ts files which map back to the original .ts source file. This will allow editors such as VS Code to go to the original .ts file when using features like Go to Definition.
10873
+ :param downlevel_iteration: (experimental) Downleveling is TypeScript’s term for transpiling to an older version of JavaScript. This flag is to enable support for a more accurate implementation of how modern JavaScript iterates through new concepts in older JavaScript runtimes. ECMAScript 6 added several new iteration primitives: the for / of loop (for (el of arr)), Array spread ([a, ...b]), argument spread (fn(...args)), and Symbol.iterator. downlevelIteration allows for these iteration primitives to be used more accurately in ES5 environments if a Symbol.iterator implementation is present.
9505
10874
  :param emit_declaration_only: (experimental) Only emit .d.ts files; do not emit .js files. Default: false
9506
10875
  :param emit_decorator_metadata: (experimental) Enables experimental support for decorators, which is in stage 2 of the TC39 standardization process. Decorators are a language feature which hasn’t yet been fully ratified into the JavaScript specification. This means that the implementation version in TypeScript may differ from the implementation in JavaScript when it it decided by TC39. You can find out more about decorator support in TypeScript in the handbook. Default: undefined
9507
10876
  :param es_module_interop: (experimental) Emit __importStar and __importDefault helpers for runtime babel ecosystem compatibility and enable --allowSyntheticDefaultImports for typesystem compatibility. Default: false
@@ -9509,6 +10878,7 @@ class TypeScriptCompilerOptions:
9509
10878
  :param experimental_decorators: (experimental) Enables experimental support for decorators, which is in stage 2 of the TC39 standardization process. Default: true
9510
10879
  :param force_consistent_casing_in_file_names: (experimental) Disallow inconsistently-cased references to the same file. Default: false
9511
10880
  :param imports_not_used_as_values: (experimental) This flag works because you can use ``import type`` to explicitly create an ``import`` statement which should never be emitted into JavaScript. Default: "remove"
10881
+ :param incremental: (experimental) Tells TypeScript to save information about the project graph from the last compilation to files stored on disk. This creates a series of .tsbuildinfo files in the same folder as your compilation output. They are not used by your JavaScript at runtime and can be safely deleted. You can read more about the flag in the 3.4 release notes.
9512
10882
  :param inline_source_map: (experimental) When set, instead of writing out a .js.map file to provide source maps, TypeScript will embed the source map content in the .js files. Default: true
9513
10883
  :param inline_sources: (experimental) When set, TypeScript will include the original content of the .ts file as an embedded string in the source map. This is often useful in the same cases as inlineSourceMap. Default: true
9514
10884
  :param isolated_modules: (experimental) Perform additional checks to ensure that separate compilation (such as with transpileModule or. Default: false
@@ -9516,6 +10886,7 @@ class TypeScriptCompilerOptions:
9516
10886
  :param jsx_import_source: (experimental) Declares the module specifier to be used for importing the jsx and jsxs factory functions when using jsx. Default: undefined
9517
10887
  :param lib: (experimental) Reference for type definitions / libraries to use (eg. ES2016, ES5, ES2018). Default: [ "es2018" ]
9518
10888
  :param module: (experimental) Sets the module system for the program. See https://www.typescriptlang.org/docs/handbook/modules.html#ambient-modules. Default: "CommonJS"
10889
+ :param module_detection: (experimental) This setting controls how TypeScript determines whether a file is a `script or a module <https://www.typescriptlang.org/docs/handbook/modules/theory.html#scripts-and-modules-in-javascript>`_. Default: "auto"
9519
10890
  :param module_resolution: (experimental) Determine how modules get resolved. Either "Node" for Node.js/io.js style resolution, or "Classic". Default: "node"
9520
10891
  :param no_emit: (experimental) Do not emit outputs. Default: false
9521
10892
  :param no_emit_on_error: (experimental) Do not emit compiler output files like JavaScript source code, source-maps or declarations if any errors were reported. Default: true
@@ -9542,6 +10913,8 @@ class TypeScriptCompilerOptions:
9542
10913
  :param strict_property_initialization: (experimental) When set to true, TypeScript will raise an error when a class property was declared but not set in the constructor. Default: true
9543
10914
  :param strip_internal: (experimental) Do not emit declarations for code that has an ``@internal`` annotation in it’s JSDoc comment. Default: true
9544
10915
  :param target: (experimental) Modern browsers support all ES6 features, so ES6 is a good choice. You might choose to set a lower target if your code is deployed to older environments, or a higher target if your code is guaranteed to run in newer environments. Default: "ES2018"
10916
+ :param ts_build_info_file: (experimental) This setting lets you specify a file for storing incremental compilation information as a part of composite projects which enables faster building of larger TypeScript codebases. You can read more about composite projects in the handbook.
10917
+ :param type_roots: (experimental) If typeRoots is specified, only packages under typeRoots will be included.
9545
10918
  :param types: (experimental) If types is specified, only packages listed will be included in the global scope.
9546
10919
  :param use_unknown_in_catch_variables: (experimental) Change the type of the variable in a catch clause from any to unknown Available with TypeScript 4.4 and newer. Default: true
9547
10920
  :param verbatim_module_syntax: (experimental) Simplifies TypeScript's handling of import/export ``type`` modifiers. Default: undefined
@@ -9554,12 +10927,16 @@ class TypeScriptCompilerOptions:
9554
10927
  check_type(argname="argument allow_importing_ts_extensions", value=allow_importing_ts_extensions, expected_type=type_hints["allow_importing_ts_extensions"])
9555
10928
  check_type(argname="argument allow_js", value=allow_js, expected_type=type_hints["allow_js"])
9556
10929
  check_type(argname="argument allow_synthetic_default_imports", value=allow_synthetic_default_imports, expected_type=type_hints["allow_synthetic_default_imports"])
10930
+ check_type(argname="argument allow_unreachable_code", value=allow_unreachable_code, expected_type=type_hints["allow_unreachable_code"])
10931
+ check_type(argname="argument allow_unused_labels", value=allow_unused_labels, expected_type=type_hints["allow_unused_labels"])
9557
10932
  check_type(argname="argument always_strict", value=always_strict, expected_type=type_hints["always_strict"])
9558
10933
  check_type(argname="argument base_url", value=base_url, expected_type=type_hints["base_url"])
10934
+ check_type(argname="argument check_js", value=check_js, expected_type=type_hints["check_js"])
9559
10935
  check_type(argname="argument custom_conditions", value=custom_conditions, expected_type=type_hints["custom_conditions"])
9560
10936
  check_type(argname="argument declaration", value=declaration, expected_type=type_hints["declaration"])
9561
10937
  check_type(argname="argument declaration_dir", value=declaration_dir, expected_type=type_hints["declaration_dir"])
9562
10938
  check_type(argname="argument declaration_map", value=declaration_map, expected_type=type_hints["declaration_map"])
10939
+ check_type(argname="argument downlevel_iteration", value=downlevel_iteration, expected_type=type_hints["downlevel_iteration"])
9563
10940
  check_type(argname="argument emit_declaration_only", value=emit_declaration_only, expected_type=type_hints["emit_declaration_only"])
9564
10941
  check_type(argname="argument emit_decorator_metadata", value=emit_decorator_metadata, expected_type=type_hints["emit_decorator_metadata"])
9565
10942
  check_type(argname="argument es_module_interop", value=es_module_interop, expected_type=type_hints["es_module_interop"])
@@ -9567,6 +10944,7 @@ class TypeScriptCompilerOptions:
9567
10944
  check_type(argname="argument experimental_decorators", value=experimental_decorators, expected_type=type_hints["experimental_decorators"])
9568
10945
  check_type(argname="argument force_consistent_casing_in_file_names", value=force_consistent_casing_in_file_names, expected_type=type_hints["force_consistent_casing_in_file_names"])
9569
10946
  check_type(argname="argument imports_not_used_as_values", value=imports_not_used_as_values, expected_type=type_hints["imports_not_used_as_values"])
10947
+ check_type(argname="argument incremental", value=incremental, expected_type=type_hints["incremental"])
9570
10948
  check_type(argname="argument inline_source_map", value=inline_source_map, expected_type=type_hints["inline_source_map"])
9571
10949
  check_type(argname="argument inline_sources", value=inline_sources, expected_type=type_hints["inline_sources"])
9572
10950
  check_type(argname="argument isolated_modules", value=isolated_modules, expected_type=type_hints["isolated_modules"])
@@ -9574,6 +10952,7 @@ class TypeScriptCompilerOptions:
9574
10952
  check_type(argname="argument jsx_import_source", value=jsx_import_source, expected_type=type_hints["jsx_import_source"])
9575
10953
  check_type(argname="argument lib", value=lib, expected_type=type_hints["lib"])
9576
10954
  check_type(argname="argument module", value=module, expected_type=type_hints["module"])
10955
+ check_type(argname="argument module_detection", value=module_detection, expected_type=type_hints["module_detection"])
9577
10956
  check_type(argname="argument module_resolution", value=module_resolution, expected_type=type_hints["module_resolution"])
9578
10957
  check_type(argname="argument no_emit", value=no_emit, expected_type=type_hints["no_emit"])
9579
10958
  check_type(argname="argument no_emit_on_error", value=no_emit_on_error, expected_type=type_hints["no_emit_on_error"])
@@ -9600,6 +10979,8 @@ class TypeScriptCompilerOptions:
9600
10979
  check_type(argname="argument strict_property_initialization", value=strict_property_initialization, expected_type=type_hints["strict_property_initialization"])
9601
10980
  check_type(argname="argument strip_internal", value=strip_internal, expected_type=type_hints["strip_internal"])
9602
10981
  check_type(argname="argument target", value=target, expected_type=type_hints["target"])
10982
+ check_type(argname="argument ts_build_info_file", value=ts_build_info_file, expected_type=type_hints["ts_build_info_file"])
10983
+ check_type(argname="argument type_roots", value=type_roots, expected_type=type_hints["type_roots"])
9603
10984
  check_type(argname="argument types", value=types, expected_type=type_hints["types"])
9604
10985
  check_type(argname="argument use_unknown_in_catch_variables", value=use_unknown_in_catch_variables, expected_type=type_hints["use_unknown_in_catch_variables"])
9605
10986
  check_type(argname="argument verbatim_module_syntax", value=verbatim_module_syntax, expected_type=type_hints["verbatim_module_syntax"])
@@ -9612,10 +10993,16 @@ class TypeScriptCompilerOptions:
9612
10993
  self._values["allow_js"] = allow_js
9613
10994
  if allow_synthetic_default_imports is not None:
9614
10995
  self._values["allow_synthetic_default_imports"] = allow_synthetic_default_imports
10996
+ if allow_unreachable_code is not None:
10997
+ self._values["allow_unreachable_code"] = allow_unreachable_code
10998
+ if allow_unused_labels is not None:
10999
+ self._values["allow_unused_labels"] = allow_unused_labels
9615
11000
  if always_strict is not None:
9616
11001
  self._values["always_strict"] = always_strict
9617
11002
  if base_url is not None:
9618
11003
  self._values["base_url"] = base_url
11004
+ if check_js is not None:
11005
+ self._values["check_js"] = check_js
9619
11006
  if custom_conditions is not None:
9620
11007
  self._values["custom_conditions"] = custom_conditions
9621
11008
  if declaration is not None:
@@ -9624,6 +11011,8 @@ class TypeScriptCompilerOptions:
9624
11011
  self._values["declaration_dir"] = declaration_dir
9625
11012
  if declaration_map is not None:
9626
11013
  self._values["declaration_map"] = declaration_map
11014
+ if downlevel_iteration is not None:
11015
+ self._values["downlevel_iteration"] = downlevel_iteration
9627
11016
  if emit_declaration_only is not None:
9628
11017
  self._values["emit_declaration_only"] = emit_declaration_only
9629
11018
  if emit_decorator_metadata is not None:
@@ -9638,6 +11027,8 @@ class TypeScriptCompilerOptions:
9638
11027
  self._values["force_consistent_casing_in_file_names"] = force_consistent_casing_in_file_names
9639
11028
  if imports_not_used_as_values is not None:
9640
11029
  self._values["imports_not_used_as_values"] = imports_not_used_as_values
11030
+ if incremental is not None:
11031
+ self._values["incremental"] = incremental
9641
11032
  if inline_source_map is not None:
9642
11033
  self._values["inline_source_map"] = inline_source_map
9643
11034
  if inline_sources is not None:
@@ -9652,6 +11043,8 @@ class TypeScriptCompilerOptions:
9652
11043
  self._values["lib"] = lib
9653
11044
  if module is not None:
9654
11045
  self._values["module"] = module
11046
+ if module_detection is not None:
11047
+ self._values["module_detection"] = module_detection
9655
11048
  if module_resolution is not None:
9656
11049
  self._values["module_resolution"] = module_resolution
9657
11050
  if no_emit is not None:
@@ -9704,6 +11097,10 @@ class TypeScriptCompilerOptions:
9704
11097
  self._values["strip_internal"] = strip_internal
9705
11098
  if target is not None:
9706
11099
  self._values["target"] = target
11100
+ if ts_build_info_file is not None:
11101
+ self._values["ts_build_info_file"] = ts_build_info_file
11102
+ if type_roots is not None:
11103
+ self._values["type_roots"] = type_roots
9707
11104
  if types is not None:
9708
11105
  self._values["types"] = types
9709
11106
  if use_unknown_in_catch_variables is not None:
@@ -9756,6 +11153,50 @@ class TypeScriptCompilerOptions:
9756
11153
  result = self._values.get("allow_synthetic_default_imports")
9757
11154
  return typing.cast(typing.Optional[builtins.bool], result)
9758
11155
 
11156
+ @builtins.property
11157
+ def allow_unreachable_code(self) -> typing.Optional[builtins.bool]:
11158
+ '''(experimental) Allow Unreachable Code.
11159
+
11160
+ When:
11161
+
11162
+ - ``undefined`` (default) provide suggestions as warnings to editors
11163
+ - ``true`` unreachable code is ignored
11164
+ - ``false`` raises compiler errors about unreachable code
11165
+
11166
+ These warnings are only about code which is provably unreachable due to the use of JavaScript syntax.
11167
+
11168
+ :see: https://www.typescriptlang.org/tsconfig#allowUnreachableCode
11169
+ :stability: experimental
11170
+ '''
11171
+ result = self._values.get("allow_unreachable_code")
11172
+ return typing.cast(typing.Optional[builtins.bool], result)
11173
+
11174
+ @builtins.property
11175
+ def allow_unused_labels(self) -> typing.Optional[builtins.bool]:
11176
+ '''(experimental) Allow Unused Labels.
11177
+
11178
+ When:
11179
+
11180
+ - ``undefined`` (default) provide suggestions as warnings to editors
11181
+ - ``true`` unused labels are ignored
11182
+ - ``false`` raises compiler errors about unused labels
11183
+
11184
+ Labels are very rare in JavaScript and typically indicate an attempt to write an object literal::
11185
+
11186
+ function verifyAge(age: number) {
11187
+ // Forgot 'return' statement
11188
+ if (age > 18) {
11189
+ verified: true;
11190
+ // ^^^^^^^^ Unused label.
11191
+ }
11192
+ }
11193
+
11194
+ :see: https://www.typescriptlang.org/tsconfig#allowUnusedLabels
11195
+ :stability: experimental
11196
+ '''
11197
+ result = self._values.get("allow_unused_labels")
11198
+ return typing.cast(typing.Optional[builtins.bool], result)
11199
+
9759
11200
  @builtins.property
9760
11201
  def always_strict(self) -> typing.Optional[builtins.bool]:
9761
11202
  '''(experimental) Ensures that your files are parsed in the ECMAScript strict mode, and emit “use strict” for each source file.
@@ -9778,6 +11219,23 @@ class TypeScriptCompilerOptions:
9778
11219
  result = self._values.get("base_url")
9779
11220
  return typing.cast(typing.Optional[builtins.str], result)
9780
11221
 
11222
+ @builtins.property
11223
+ def check_js(self) -> typing.Optional[builtins.bool]:
11224
+ '''(experimental) Check JS.
11225
+
11226
+ Works in tandem with `allowJs <https://www.typescriptlang.org/tsconfig#allowJs>`_. When checkJs is enabled then
11227
+ errors are reported in JavaScript files. This is the equivalent of including //
11228
+
11229
+ :see: https://www.typescriptlang.org/tsconfig#checkJs
11230
+ :stability: experimental
11231
+ :ts-check:
11232
+
11233
+ at the top of all
11234
+ JavaScript files which are included in your project.
11235
+ '''
11236
+ result = self._values.get("check_js")
11237
+ return typing.cast(typing.Optional[builtins.bool], result)
11238
+
9781
11239
  @builtins.property
9782
11240
  def custom_conditions(self) -> typing.Optional[typing.List[builtins.str]]:
9783
11241
  '''(experimental) List of additional conditions that should succeed when TypeScript resolves from an ``exports`` or ``imports`` field of a ``package.json``.
@@ -9818,6 +11276,20 @@ class TypeScriptCompilerOptions:
9818
11276
  result = self._values.get("declaration_map")
9819
11277
  return typing.cast(typing.Optional[builtins.bool], result)
9820
11278
 
11279
+ @builtins.property
11280
+ def downlevel_iteration(self) -> typing.Optional[builtins.bool]:
11281
+ '''(experimental) Downleveling is TypeScript’s term for transpiling to an older version of JavaScript.
11282
+
11283
+ This flag is to enable support for a more accurate implementation of how modern JavaScript iterates through new concepts in older JavaScript runtimes.
11284
+
11285
+ ECMAScript 6 added several new iteration primitives: the for / of loop (for (el of arr)), Array spread ([a, ...b]), argument spread (fn(...args)), and Symbol.iterator.
11286
+ downlevelIteration allows for these iteration primitives to be used more accurately in ES5 environments if a Symbol.iterator implementation is present.
11287
+
11288
+ :stability: experimental
11289
+ '''
11290
+ result = self._values.get("downlevel_iteration")
11291
+ return typing.cast(typing.Optional[builtins.bool], result)
11292
+
9821
11293
  @builtins.property
9822
11294
  def emit_declaration_only(self) -> typing.Optional[builtins.bool]:
9823
11295
  '''(experimental) Only emit .d.ts files; do not emit .js files.
@@ -9907,6 +11379,24 @@ class TypeScriptCompilerOptions:
9907
11379
  result = self._values.get("imports_not_used_as_values")
9908
11380
  return typing.cast(typing.Optional["TypeScriptImportsNotUsedAsValues"], result)
9909
11381
 
11382
+ @builtins.property
11383
+ def incremental(self) -> typing.Optional[builtins.bool]:
11384
+ '''(experimental) Tells TypeScript to save information about the project graph from the last compilation to files stored on disk.
11385
+
11386
+ This creates a series of .tsbuildinfo files in the same folder as your compilation output.
11387
+ They are not used by your JavaScript at runtime and can be safely deleted.
11388
+ You can read more about the flag in the 3.4 release notes.
11389
+
11390
+ :see:
11391
+
11392
+ https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#faster-subsequent-builds-with-the---incremental-flag
11393
+
11394
+ To control which folders you want to the files to be built to, use the config option tsBuildInfoFile.
11395
+ :stability: experimental
11396
+ '''
11397
+ result = self._values.get("incremental")
11398
+ return typing.cast(typing.Optional[builtins.bool], result)
11399
+
9910
11400
  @builtins.property
9911
11401
  def inline_source_map(self) -> typing.Optional[builtins.bool]:
9912
11402
  '''(experimental) When set, instead of writing out a .js.map file to provide source maps, TypeScript will embed the source map content in the .js files.
@@ -9989,6 +11479,17 @@ class TypeScriptCompilerOptions:
9989
11479
  result = self._values.get("module")
9990
11480
  return typing.cast(typing.Optional[builtins.str], result)
9991
11481
 
11482
+ @builtins.property
11483
+ def module_detection(self) -> typing.Optional["TypeScriptModuleDetection"]:
11484
+ '''(experimental) This setting controls how TypeScript determines whether a file is a `script or a module <https://www.typescriptlang.org/docs/handbook/modules/theory.html#scripts-and-modules-in-javascript>`_.
11485
+
11486
+ :default: "auto"
11487
+
11488
+ :stability: experimental
11489
+ '''
11490
+ result = self._values.get("module_detection")
11491
+ return typing.cast(typing.Optional["TypeScriptModuleDetection"], result)
11492
+
9992
11493
  @builtins.property
9993
11494
  def module_resolution(self) -> typing.Optional["TypeScriptModuleResolution"]:
9994
11495
  '''(experimental) Determine how modules get resolved.
@@ -10297,11 +11798,32 @@ class TypeScriptCompilerOptions:
10297
11798
  result = self._values.get("target")
10298
11799
  return typing.cast(typing.Optional[builtins.str], result)
10299
11800
 
11801
+ @builtins.property
11802
+ def ts_build_info_file(self) -> typing.Optional[builtins.str]:
11803
+ '''(experimental) This setting lets you specify a file for storing incremental compilation information as a part of composite projects which enables faster building of larger TypeScript codebases.
11804
+
11805
+ You can read more about composite projects in the handbook.
11806
+
11807
+ :stability: experimental
11808
+ '''
11809
+ result = self._values.get("ts_build_info_file")
11810
+ return typing.cast(typing.Optional[builtins.str], result)
11811
+
11812
+ @builtins.property
11813
+ def type_roots(self) -> typing.Optional[typing.List[builtins.str]]:
11814
+ '''(experimental) If typeRoots is specified, only packages under typeRoots will be included.
11815
+
11816
+ :see: https://www.typescriptlang.org/tsconfig/#typeRoots
11817
+ :stability: experimental
11818
+ '''
11819
+ result = self._values.get("type_roots")
11820
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
11821
+
10300
11822
  @builtins.property
10301
11823
  def types(self) -> typing.Optional[typing.List[builtins.str]]:
10302
11824
  '''(experimental) If types is specified, only packages listed will be included in the global scope.
10303
11825
 
10304
- :see: {@link https://www.typescriptlang.org/tsconfig#types}
11826
+ :see: https://www.typescriptlang.org/tsconfig#types
10305
11827
  :stability: experimental
10306
11828
  '''
10307
11829
  result = self._values.get("types")
@@ -10379,30 +11901,58 @@ class TypeScriptJsxMode(enum.Enum):
10379
11901
  :stability: experimental
10380
11902
  '''
10381
11903
 
10382
- PRESERVE = "PRESERVE"
10383
- '''(experimental) Keeps the JSX as part of the output to be further consumed by another transform step (e.g. Babel).
11904
+ PRESERVE = "PRESERVE"
11905
+ '''(experimental) Keeps the JSX as part of the output to be further consumed by another transform step (e.g. Babel).
11906
+
11907
+ :stability: experimental
11908
+ '''
11909
+ REACT = "REACT"
11910
+ '''(experimental) Converts JSX syntax into React.createElement, does not need to go through a JSX transformation before use, and the output will have a .js file extension.
11911
+
11912
+ :stability: experimental
11913
+ '''
11914
+ REACT_NATIVE = "REACT_NATIVE"
11915
+ '''(experimental) Keeps all JSX like 'preserve' mode, but output will have a .js extension.
11916
+
11917
+ :stability: experimental
11918
+ '''
11919
+ REACT_JSX = "REACT_JSX"
11920
+ '''(experimental) Passes ``key`` separately from props and always passes ``children`` as props (since React 17).
11921
+
11922
+ :see: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-1.html#react-17-jsx-factories
11923
+ :stability: experimental
11924
+ '''
11925
+ REACT_JSXDEV = "REACT_JSXDEV"
11926
+ '''(experimental) Same as ``REACT_JSX`` with additional debug data.
11927
+
11928
+ :stability: experimental
11929
+ '''
11930
+
10384
11931
 
10385
- :stability: experimental
10386
- '''
10387
- REACT = "REACT"
10388
- '''(experimental) Converts JSX syntax into React.createElement, does not need to go through a JSX transformation before use, and the output will have a .js file extension.
11932
+ @jsii.enum(jsii_type="projen.javascript.TypeScriptModuleDetection")
11933
+ class TypeScriptModuleDetection(enum.Enum):
11934
+ '''(experimental) This setting controls how TypeScript determines whether a file is a script or a module.
10389
11935
 
11936
+ :see: https://www.typescriptlang.org/docs/handbook/modules/theory.html#scripts-and-modules-in-javascript
10390
11937
  :stability: experimental
10391
11938
  '''
10392
- REACT_NATIVE = "REACT_NATIVE"
10393
- '''(experimental) Keeps all JSX like 'preserve' mode, but output will have a .js extension.
10394
11939
 
11940
+ AUTO = "AUTO"
11941
+ '''(experimental) TypeScript will not only look for import and export statements, but it will also check whether the "type" field in a package.json is set to "module" when running with module: nodenext or node16, and check whether the current file is a JSX file when running under jsx: react-jsx.
11942
+
11943
+ :see: https://www.typescriptlang.org/tsconfig/#moduleDetection
10395
11944
  :stability: experimental
10396
11945
  '''
10397
- REACT_JSX = "REACT_JSX"
10398
- '''(experimental) Passes ``key`` separately from props and always passes ``children`` as props (since React 17).
11946
+ LEGACY = "LEGACY"
11947
+ '''(experimental) The same behavior as 4.6 and prior, usings import and export statements to determine whether a file is a module.
10399
11948
 
10400
- :see: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-1.html#react-17-jsx-factories
11949
+ :see: https://www.typescriptlang.org/tsconfig/#moduleDetection
10401
11950
  :stability: experimental
10402
11951
  '''
10403
- REACT_JSXDEV = "REACT_JSXDEV"
10404
- '''(experimental) Same as ``REACT_JSX`` with additional debug data.
11952
+ FORCE = "FORCE"
11953
+ '''(experimental) Ensures that every non-declaration file is treated as a module.
10405
11954
 
11955
+ :see: https://www.typescriptlang.org/tsconfig/#moduleDetection
10406
11956
  :stability: experimental
10407
11957
  '''
10408
11958
 
@@ -10427,6 +11977,12 @@ class TypeScriptModuleResolution(enum.Enum):
10427
11977
  :see: https://www.typescriptlang.org/docs/handbook/module-resolution.html#node
10428
11978
  :stability: experimental
10429
11979
  '''
11980
+ NODE10 = "NODE10"
11981
+ '''(experimental) ``--moduleResolution node`` was renamed to ``node10`` (keeping ``node`` as an alias for backward compatibility) in TypeScript 5.0. It reflects the CommonJS module resolution algorithm as it existed in Node.js versions earlier than v12. It should no longer be used.
11982
+
11983
+ :see: https://www.typescriptlang.org/docs/handbook/modules/reference.html#node10-formerly-known-as-node
11984
+ :stability: experimental
11985
+ '''
10430
11986
  NODE16 = "NODE16"
10431
11987
  '''(experimental) Node.js’ ECMAScript Module Support from TypeScript 4.7 onwards.
10432
11988
 
@@ -10462,7 +12018,7 @@ class TypescriptConfig(
10462
12018
  self,
10463
12019
  project: _Project_57d89203,
10464
12020
  *,
10465
- compiler_options: typing.Union[TypeScriptCompilerOptions, typing.Dict[builtins.str, typing.Any]],
12021
+ compiler_options: typing.Optional[typing.Union[TypeScriptCompilerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10466
12022
  exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
10467
12023
  extends: typing.Optional["TypescriptConfigExtends"] = None,
10468
12024
  file_name: typing.Optional[builtins.str] = None,
@@ -10493,9 +12049,11 @@ class TypescriptConfig(
10493
12049
 
10494
12050
  @jsii.member(jsii_name="addExclude")
10495
12051
  def add_exclude(self, pattern: builtins.str) -> None:
10496
- '''
10497
- :param pattern: -
12052
+ '''(experimental) Add an exclude pattern to the ``exclude`` array of the TSConfig.
10498
12053
 
12054
+ :param pattern: The pattern to add.
12055
+
12056
+ :see: https://www.typescriptlang.org/tsconfig#exclude
10499
12057
  :stability: experimental
10500
12058
  '''
10501
12059
  if __debug__:
@@ -10519,9 +12077,11 @@ class TypescriptConfig(
10519
12077
 
10520
12078
  @jsii.member(jsii_name="addInclude")
10521
12079
  def add_include(self, pattern: builtins.str) -> None:
10522
- '''
10523
- :param pattern: -
12080
+ '''(experimental) Add an include pattern to the ``include`` array of the TSConfig.
12081
+
12082
+ :param pattern: The pattern to add.
10524
12083
 
12084
+ :see: https://www.typescriptlang.org/tsconfig#include
10525
12085
  :stability: experimental
10526
12086
  '''
10527
12087
  if __debug__:
@@ -10537,6 +12097,34 @@ class TypescriptConfig(
10537
12097
  '''
10538
12098
  return typing.cast(None, jsii.invoke(self, "preSynthesize", []))
10539
12099
 
12100
+ @jsii.member(jsii_name="removeExclude")
12101
+ def remove_exclude(self, pattern: builtins.str) -> None:
12102
+ '''(experimental) Remove an exclude pattern from the ``exclude`` array of the TSConfig.
12103
+
12104
+ :param pattern: The pattern to remove.
12105
+
12106
+ :see: https://www.typescriptlang.org/tsconfig#exclude
12107
+ :stability: experimental
12108
+ '''
12109
+ if __debug__:
12110
+ type_hints = typing.get_type_hints(_typecheckingstub__9f78586828830a46219bc19d7af8c53b4b5a1cc2bc1a03491930c9271790f10a)
12111
+ check_type(argname="argument pattern", value=pattern, expected_type=type_hints["pattern"])
12112
+ return typing.cast(None, jsii.invoke(self, "removeExclude", [pattern]))
12113
+
12114
+ @jsii.member(jsii_name="removeInclude")
12115
+ def remove_include(self, pattern: builtins.str) -> None:
12116
+ '''(experimental) Remove an include pattern from the ``include`` array of the TSConfig.
12117
+
12118
+ :param pattern: The pattern to remove.
12119
+
12120
+ :see: https://www.typescriptlang.org/tsconfig#include
12121
+ :stability: experimental
12122
+ '''
12123
+ if __debug__:
12124
+ type_hints = typing.get_type_hints(_typecheckingstub__85556ff93e412b3ea5e894bc7d7669275e51dfae8c077378748d8053a46e4946)
12125
+ check_type(argname="argument pattern", value=pattern, expected_type=type_hints["pattern"])
12126
+ return typing.cast(None, jsii.invoke(self, "removeInclude", [pattern]))
12127
+
10540
12128
  @jsii.member(jsii_name="resolveExtendsPath")
10541
12129
  def resolve_extends_path(self, config_path: builtins.str) -> builtins.str:
10542
12130
  '''(experimental) Resolve valid TypeScript extends paths relative to this config.
@@ -10555,14 +12143,6 @@ class TypescriptConfig(
10555
12143
  check_type(argname="argument config_path", value=config_path, expected_type=type_hints["config_path"])
10556
12144
  return typing.cast(builtins.str, jsii.invoke(self, "resolveExtendsPath", [config_path]))
10557
12145
 
10558
- @builtins.property
10559
- @jsii.member(jsii_name="compilerOptions")
10560
- def compiler_options(self) -> TypeScriptCompilerOptions:
10561
- '''
10562
- :stability: experimental
10563
- '''
10564
- return typing.cast(TypeScriptCompilerOptions, jsii.get(self, "compilerOptions"))
10565
-
10566
12146
  @builtins.property
10567
12147
  @jsii.member(jsii_name="exclude")
10568
12148
  def exclude(self) -> typing.List[builtins.str]:
@@ -10604,6 +12184,14 @@ class TypescriptConfig(
10604
12184
  '''
10605
12185
  return typing.cast(typing.List[builtins.str], jsii.get(self, "include"))
10606
12186
 
12187
+ @builtins.property
12188
+ @jsii.member(jsii_name="compilerOptions")
12189
+ def compiler_options(self) -> typing.Optional[TypeScriptCompilerOptions]:
12190
+ '''
12191
+ :stability: experimental
12192
+ '''
12193
+ return typing.cast(typing.Optional[TypeScriptCompilerOptions], jsii.get(self, "compilerOptions"))
12194
+
10607
12195
 
10608
12196
  class TypescriptConfigExtends(
10609
12197
  metaclass=jsii.JSIIMeta,
@@ -10673,7 +12261,7 @@ class TypescriptConfigOptions:
10673
12261
  def __init__(
10674
12262
  self,
10675
12263
  *,
10676
- compiler_options: typing.Union[TypeScriptCompilerOptions, typing.Dict[builtins.str, typing.Any]],
12264
+ compiler_options: typing.Optional[typing.Union[TypeScriptCompilerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
10677
12265
  exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
10678
12266
  extends: typing.Optional[TypescriptConfigExtends] = None,
10679
12267
  file_name: typing.Optional[builtins.str] = None,
@@ -10697,9 +12285,9 @@ class TypescriptConfigOptions:
10697
12285
  check_type(argname="argument extends", value=extends, expected_type=type_hints["extends"])
10698
12286
  check_type(argname="argument file_name", value=file_name, expected_type=type_hints["file_name"])
10699
12287
  check_type(argname="argument include", value=include, expected_type=type_hints["include"])
10700
- self._values: typing.Dict[builtins.str, typing.Any] = {
10701
- "compiler_options": compiler_options,
10702
- }
12288
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
12289
+ if compiler_options is not None:
12290
+ self._values["compiler_options"] = compiler_options
10703
12291
  if exclude is not None:
10704
12292
  self._values["exclude"] = exclude
10705
12293
  if extends is not None:
@@ -10710,14 +12298,14 @@ class TypescriptConfigOptions:
10710
12298
  self._values["include"] = include
10711
12299
 
10712
12300
  @builtins.property
10713
- def compiler_options(self) -> TypeScriptCompilerOptions:
12301
+ def compiler_options(self) -> typing.Optional[TypeScriptCompilerOptions]:
10714
12302
  '''(experimental) Compiler options to use.
10715
12303
 
10716
12304
  :stability: experimental
12305
+ :remarks: Must provide either ``extends`` or ``compilerOptions`` (or both).
10717
12306
  '''
10718
12307
  result = self._values.get("compiler_options")
10719
- assert result is not None, "Required property 'compiler_options' is missing"
10720
- return typing.cast(TypeScriptCompilerOptions, result)
12308
+ return typing.cast(typing.Optional[TypeScriptCompilerOptions], result)
10721
12309
 
10722
12310
  @builtins.property
10723
12311
  def exclude(self) -> typing.Optional[typing.List[builtins.str]]:
@@ -10735,6 +12323,7 @@ class TypescriptConfigOptions:
10735
12323
  '''(experimental) Base ``tsconfig.json`` configuration(s) to inherit from.
10736
12324
 
10737
12325
  :stability: experimental
12326
+ :remarks: Must provide either ``extends`` or ``compilerOptions`` (or both).
10738
12327
  '''
10739
12328
  result = self._values.get("extends")
10740
12329
  return typing.cast(typing.Optional[TypescriptConfigExtends], result)
@@ -10804,8 +12393,10 @@ class UpgradeDependencies(
10804
12393
  self,
10805
12394
  project: NodeProject,
10806
12395
  *,
12396
+ cooldown: typing.Optional[jsii.Number] = None,
10807
12397
  exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
10808
12398
  include: typing.Optional[typing.Sequence[builtins.str]] = None,
12399
+ include_deprecated_versions: typing.Optional[builtins.bool] = None,
10809
12400
  pull_request_title: typing.Optional[builtins.str] = None,
10810
12401
  satisfy_peer_dependencies: typing.Optional[builtins.bool] = None,
10811
12402
  semantic_commit: typing.Optional[builtins.str] = None,
@@ -10818,8 +12409,10 @@ class UpgradeDependencies(
10818
12409
  ) -> None:
10819
12410
  '''
10820
12411
  :param project: -
12412
+ :param cooldown: (experimental) Exclude package versions published within the specified number of days. This may provide some protection against supply chain attacks, simply by avoiding newly published packages that may be malicious. It gives the ecosystem more time to detect malicious packages. However it comes at the cost of updating other packages slower, which might also contain vulnerabilities or bugs in need of a fix. The cooldown period applies to both npm-check-updates discovery and the package manager update command. Default: - No cooldown period.
10821
12413
  :param exclude: (experimental) List of package names to exclude during the upgrade. Default: - Nothing is excluded.
10822
12414
  :param include: (experimental) List of package names to include during the upgrade. Default: - Everything is included.
12415
+ :param include_deprecated_versions: (experimental) Include deprecated packages. By default, deprecated versions will be excluded from upgrades. Default: false
10823
12416
  :param pull_request_title: (experimental) Title of the pull request to use (should be all lower-case). Default: "upgrade dependencies"
10824
12417
  :param satisfy_peer_dependencies: (experimental) Check peer dependencies of installed packages and filter updates to compatible versions. By default, the upgrade workflow will adhere to version constraints from peer dependencies. Sometimes this is not desirable and can be disabled. Default: true
10825
12418
  :param semantic_commit: (experimental) The semantic commit type. Default: 'chore'
@@ -10836,8 +12429,10 @@ class UpgradeDependencies(
10836
12429
  type_hints = typing.get_type_hints(_typecheckingstub__497e18a2c8dc3200cff8b21dfad7c418d29517aa6d67e2a2555ee78fa63ff385)
10837
12430
  check_type(argname="argument project", value=project, expected_type=type_hints["project"])
10838
12431
  options = UpgradeDependenciesOptions(
12432
+ cooldown=cooldown,
10839
12433
  exclude=exclude,
10840
12434
  include=include,
12435
+ include_deprecated_versions=include_deprecated_versions,
10841
12436
  pull_request_title=pull_request_title,
10842
12437
  satisfy_peer_dependencies=satisfy_peer_dependencies,
10843
12438
  semantic_commit=semantic_commit,
@@ -10873,6 +12468,14 @@ class UpgradeDependencies(
10873
12468
  '''
10874
12469
  return typing.cast(_Task_9fa875b6, jsii.get(self, "postUpgradeTask"))
10875
12470
 
12471
+ @builtins.property
12472
+ @jsii.member(jsii_name="project")
12473
+ def project(self) -> NodeProject:
12474
+ '''
12475
+ :stability: experimental
12476
+ '''
12477
+ return typing.cast(NodeProject, jsii.get(self, "project"))
12478
+
10876
12479
  @builtins.property
10877
12480
  @jsii.member(jsii_name="upgradeTask")
10878
12481
  def upgrade_task(self) -> _Task_9fa875b6:
@@ -10910,15 +12513,17 @@ class UpgradeDependencies(
10910
12513
  if __debug__:
10911
12514
  type_hints = typing.get_type_hints(_typecheckingstub__66ba20de6f144f37e582e192e3ed592a6be0e8bc3d10e3b730af62082afa0010)
10912
12515
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
10913
- jsii.set(self, "containerOptions", value)
12516
+ jsii.set(self, "containerOptions", value) # pyright: ignore[reportArgumentType]
10914
12517
 
10915
12518
 
10916
12519
  @jsii.data_type(
10917
12520
  jsii_type="projen.javascript.UpgradeDependenciesOptions",
10918
12521
  jsii_struct_bases=[],
10919
12522
  name_mapping={
12523
+ "cooldown": "cooldown",
10920
12524
  "exclude": "exclude",
10921
12525
  "include": "include",
12526
+ "include_deprecated_versions": "includeDeprecatedVersions",
10922
12527
  "pull_request_title": "pullRequestTitle",
10923
12528
  "satisfy_peer_dependencies": "satisfyPeerDependencies",
10924
12529
  "semantic_commit": "semanticCommit",
@@ -10934,8 +12539,10 @@ class UpgradeDependenciesOptions:
10934
12539
  def __init__(
10935
12540
  self,
10936
12541
  *,
12542
+ cooldown: typing.Optional[jsii.Number] = None,
10937
12543
  exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
10938
12544
  include: typing.Optional[typing.Sequence[builtins.str]] = None,
12545
+ include_deprecated_versions: typing.Optional[builtins.bool] = None,
10939
12546
  pull_request_title: typing.Optional[builtins.str] = None,
10940
12547
  satisfy_peer_dependencies: typing.Optional[builtins.bool] = None,
10941
12548
  semantic_commit: typing.Optional[builtins.str] = None,
@@ -10948,8 +12555,10 @@ class UpgradeDependenciesOptions:
10948
12555
  ) -> None:
10949
12556
  '''(experimental) Options for ``UpgradeDependencies``.
10950
12557
 
12558
+ :param cooldown: (experimental) Exclude package versions published within the specified number of days. This may provide some protection against supply chain attacks, simply by avoiding newly published packages that may be malicious. It gives the ecosystem more time to detect malicious packages. However it comes at the cost of updating other packages slower, which might also contain vulnerabilities or bugs in need of a fix. The cooldown period applies to both npm-check-updates discovery and the package manager update command. Default: - No cooldown period.
10951
12559
  :param exclude: (experimental) List of package names to exclude during the upgrade. Default: - Nothing is excluded.
10952
12560
  :param include: (experimental) List of package names to include during the upgrade. Default: - Everything is included.
12561
+ :param include_deprecated_versions: (experimental) Include deprecated packages. By default, deprecated versions will be excluded from upgrades. Default: false
10953
12562
  :param pull_request_title: (experimental) Title of the pull request to use (should be all lower-case). Default: "upgrade dependencies"
10954
12563
  :param satisfy_peer_dependencies: (experimental) Check peer dependencies of installed packages and filter updates to compatible versions. By default, the upgrade workflow will adhere to version constraints from peer dependencies. Sometimes this is not desirable and can be disabled. Default: true
10955
12564
  :param semantic_commit: (experimental) The semantic commit type. Default: 'chore'
@@ -10966,8 +12575,10 @@ class UpgradeDependenciesOptions:
10966
12575
  workflow_options = UpgradeDependenciesWorkflowOptions(**workflow_options)
10967
12576
  if __debug__:
10968
12577
  type_hints = typing.get_type_hints(_typecheckingstub__0f7b896c11469470869bc4bfc86c9bb13fd308223e316ba71124c00b5709af1e)
12578
+ check_type(argname="argument cooldown", value=cooldown, expected_type=type_hints["cooldown"])
10969
12579
  check_type(argname="argument exclude", value=exclude, expected_type=type_hints["exclude"])
10970
12580
  check_type(argname="argument include", value=include, expected_type=type_hints["include"])
12581
+ check_type(argname="argument include_deprecated_versions", value=include_deprecated_versions, expected_type=type_hints["include_deprecated_versions"])
10971
12582
  check_type(argname="argument pull_request_title", value=pull_request_title, expected_type=type_hints["pull_request_title"])
10972
12583
  check_type(argname="argument satisfy_peer_dependencies", value=satisfy_peer_dependencies, expected_type=type_hints["satisfy_peer_dependencies"])
10973
12584
  check_type(argname="argument semantic_commit", value=semantic_commit, expected_type=type_hints["semantic_commit"])
@@ -10978,10 +12589,14 @@ class UpgradeDependenciesOptions:
10978
12589
  check_type(argname="argument workflow", value=workflow, expected_type=type_hints["workflow"])
10979
12590
  check_type(argname="argument workflow_options", value=workflow_options, expected_type=type_hints["workflow_options"])
10980
12591
  self._values: typing.Dict[builtins.str, typing.Any] = {}
12592
+ if cooldown is not None:
12593
+ self._values["cooldown"] = cooldown
10981
12594
  if exclude is not None:
10982
12595
  self._values["exclude"] = exclude
10983
12596
  if include is not None:
10984
12597
  self._values["include"] = include
12598
+ if include_deprecated_versions is not None:
12599
+ self._values["include_deprecated_versions"] = include_deprecated_versions
10985
12600
  if pull_request_title is not None:
10986
12601
  self._values["pull_request_title"] = pull_request_title
10987
12602
  if satisfy_peer_dependencies is not None:
@@ -11001,6 +12616,26 @@ class UpgradeDependenciesOptions:
11001
12616
  if workflow_options is not None:
11002
12617
  self._values["workflow_options"] = workflow_options
11003
12618
 
12619
+ @builtins.property
12620
+ def cooldown(self) -> typing.Optional[jsii.Number]:
12621
+ '''(experimental) Exclude package versions published within the specified number of days.
12622
+
12623
+ This may provide some protection against supply chain attacks, simply by avoiding
12624
+ newly published packages that may be malicious. It gives the ecosystem more time
12625
+ to detect malicious packages. However it comes at the cost of updating other
12626
+ packages slower, which might also contain vulnerabilities or bugs in need of a fix.
12627
+
12628
+ The cooldown period applies to both npm-check-updates discovery
12629
+ and the package manager update command.
12630
+
12631
+ :default: - No cooldown period.
12632
+
12633
+ :see: https://yarnpkg.com/configuration/yarnrc#npmMinimalAgeGate
12634
+ :stability: experimental
12635
+ '''
12636
+ result = self._values.get("cooldown")
12637
+ return typing.cast(typing.Optional[jsii.Number], result)
12638
+
11004
12639
  @builtins.property
11005
12640
  def exclude(self) -> typing.Optional[typing.List[builtins.str]]:
11006
12641
  '''(experimental) List of package names to exclude during the upgrade.
@@ -11023,6 +12658,20 @@ class UpgradeDependenciesOptions:
11023
12658
  result = self._values.get("include")
11024
12659
  return typing.cast(typing.Optional[typing.List[builtins.str]], result)
11025
12660
 
12661
+ @builtins.property
12662
+ def include_deprecated_versions(self) -> typing.Optional[builtins.bool]:
12663
+ '''(experimental) Include deprecated packages.
12664
+
12665
+ By default, deprecated versions will be excluded from upgrades.
12666
+
12667
+ :default: false
12668
+
12669
+ :see: https://github.com/raineorshine/npm-check-updates?tab=readme-ov-file#options
12670
+ :stability: experimental
12671
+ '''
12672
+ result = self._values.get("include_deprecated_versions")
12673
+ return typing.cast(typing.Optional[builtins.bool], result)
12674
+
11026
12675
  @builtins.property
11027
12676
  def pull_request_title(self) -> typing.Optional[builtins.str]:
11028
12677
  '''(experimental) Title of the pull request to use (should be all lower-case).
@@ -11233,6 +12882,7 @@ class UpgradeDependenciesSchedule(
11233
12882
  "assignees": "assignees",
11234
12883
  "branches": "branches",
11235
12884
  "container": "container",
12885
+ "env": "env",
11236
12886
  "git_identity": "gitIdentity",
11237
12887
  "labels": "labels",
11238
12888
  "permissions": "permissions",
@@ -11249,6 +12899,7 @@ class UpgradeDependenciesWorkflowOptions:
11249
12899
  assignees: typing.Optional[typing.Sequence[builtins.str]] = None,
11250
12900
  branches: typing.Optional[typing.Sequence[builtins.str]] = None,
11251
12901
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
12902
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
11252
12903
  git_identity: typing.Optional[typing.Union[_GitIdentity_6effc3de, typing.Dict[builtins.str, typing.Any]]] = None,
11253
12904
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
11254
12905
  permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -11262,7 +12913,8 @@ class UpgradeDependenciesWorkflowOptions:
11262
12913
  :param assignees: (experimental) Assignees to add on the PR. Default: - no assignees
11263
12914
  :param branches: (experimental) List of branches to create PR's for. Default: - All release branches configured for the project.
11264
12915
  :param container: (experimental) Job container options. Default: - defaults
11265
- :param git_identity: (experimental) The git identity to use for commits. Default: "github-actions@github.com"
12916
+ :param env: (experimental) Build environment variables for the upgrade job. Default: {}
12917
+ :param git_identity: (experimental) The git identity to use for commits. Default: - default GitHub Actions user
11266
12918
  :param labels: (experimental) Labels to apply on the PR. Default: - no labels.
11267
12919
  :param permissions: (experimental) Permissions granted to the upgrade job To limit job permissions for ``contents``, the desired permissions have to be explicitly set, e.g.: ``{ contents: JobPermission.NONE }``. Default: ``{ contents: JobPermission.READ }``
11268
12920
  :param projen_credentials: (experimental) Choose a method for authenticating with GitHub for creating the PR. When using the default github token, PR's created by this workflow will not trigger any subsequent workflows (i.e the build workflow), so projen requires API access to be provided through e.g. a personal access token or other method. Default: - personal access token named PROJEN_GITHUB_TOKEN
@@ -11285,6 +12937,7 @@ class UpgradeDependenciesWorkflowOptions:
11285
12937
  check_type(argname="argument assignees", value=assignees, expected_type=type_hints["assignees"])
11286
12938
  check_type(argname="argument branches", value=branches, expected_type=type_hints["branches"])
11287
12939
  check_type(argname="argument container", value=container, expected_type=type_hints["container"])
12940
+ check_type(argname="argument env", value=env, expected_type=type_hints["env"])
11288
12941
  check_type(argname="argument git_identity", value=git_identity, expected_type=type_hints["git_identity"])
11289
12942
  check_type(argname="argument labels", value=labels, expected_type=type_hints["labels"])
11290
12943
  check_type(argname="argument permissions", value=permissions, expected_type=type_hints["permissions"])
@@ -11299,6 +12952,8 @@ class UpgradeDependenciesWorkflowOptions:
11299
12952
  self._values["branches"] = branches
11300
12953
  if container is not None:
11301
12954
  self._values["container"] = container
12955
+ if env is not None:
12956
+ self._values["env"] = env
11302
12957
  if git_identity is not None:
11303
12958
  self._values["git_identity"] = git_identity
11304
12959
  if labels is not None:
@@ -11347,11 +13002,22 @@ class UpgradeDependenciesWorkflowOptions:
11347
13002
  result = self._values.get("container")
11348
13003
  return typing.cast(typing.Optional[_ContainerOptions_f50907af], result)
11349
13004
 
13005
+ @builtins.property
13006
+ def env(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
13007
+ '''(experimental) Build environment variables for the upgrade job.
13008
+
13009
+ :default: {}
13010
+
13011
+ :stability: experimental
13012
+ '''
13013
+ result = self._values.get("env")
13014
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
13015
+
11350
13016
  @builtins.property
11351
13017
  def git_identity(self) -> typing.Optional[_GitIdentity_6effc3de]:
11352
13018
  '''(experimental) The git identity to use for commits.
11353
13019
 
11354
- :default: "github-actions@github.com"
13020
+ :default: - default GitHub Actions user
11355
13021
 
11356
13022
  :stability: experimental
11357
13023
  '''
@@ -14156,10 +15822,23 @@ class YarnrcOptions:
14156
15822
  "watch_task": "watchTask",
14157
15823
  "platform": "platform",
14158
15824
  "target": "target",
15825
+ "banner": "banner",
15826
+ "charset": "charset",
15827
+ "define": "define",
15828
+ "esbuild_args": "esbuildArgs",
14159
15829
  "executable": "executable",
15830
+ "footer": "footer",
14160
15831
  "format": "format",
15832
+ "inject": "inject",
15833
+ "keep_names": "keepNames",
14161
15834
  "loaders": "loaders",
15835
+ "log_level": "logLevel",
15836
+ "main_fields": "mainFields",
15837
+ "metafile": "metafile",
15838
+ "minify": "minify",
14162
15839
  "outfile": "outfile",
15840
+ "source_map_mode": "sourceMapMode",
15841
+ "sources_content": "sourcesContent",
14163
15842
  "tsconfig_path": "tsconfigPath",
14164
15843
  },
14165
15844
  )
@@ -14172,10 +15851,23 @@ class AddBundleOptions(BundlingOptions):
14172
15851
  watch_task: typing.Optional[builtins.bool] = None,
14173
15852
  platform: builtins.str,
14174
15853
  target: builtins.str,
15854
+ banner: typing.Optional[builtins.str] = None,
15855
+ charset: typing.Optional[Charset] = None,
15856
+ define: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15857
+ esbuild_args: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.bool]]] = None,
14175
15858
  executable: typing.Optional[builtins.bool] = None,
15859
+ footer: typing.Optional[builtins.str] = None,
14176
15860
  format: typing.Optional[builtins.str] = None,
15861
+ inject: typing.Optional[typing.Sequence[builtins.str]] = None,
15862
+ keep_names: typing.Optional[builtins.bool] = None,
14177
15863
  loaders: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15864
+ log_level: typing.Optional[BundleLogLevel] = None,
15865
+ main_fields: typing.Optional[typing.Sequence[builtins.str]] = None,
15866
+ metafile: typing.Optional[builtins.bool] = None,
15867
+ minify: typing.Optional[builtins.bool] = None,
14178
15868
  outfile: typing.Optional[builtins.str] = None,
15869
+ source_map_mode: typing.Optional[SourceMapMode] = None,
15870
+ sources_content: typing.Optional[builtins.bool] = None,
14179
15871
  tsconfig_path: typing.Optional[builtins.str] = None,
14180
15872
  ) -> None:
14181
15873
  '''(experimental) Options for ``addBundle()``.
@@ -14185,10 +15877,23 @@ class AddBundleOptions(BundlingOptions):
14185
15877
  :param watch_task: (experimental) In addition to the ``bundle:xyz`` task, creates ``bundle:xyz:watch`` task which will invoke the same esbuild command with the ``--watch`` flag. This can be used to continusouly watch for changes. Default: true
14186
15878
  :param platform: (experimental) esbuild platform.
14187
15879
  :param target: (experimental) esbuild target.
15880
+ :param banner: (experimental) Use this to insert an arbitrary string at the beginning of generated JavaScript files. This is similar to footer which inserts at the end instead of the beginning. This is commonly used to insert comments: Default: - no comments are passed
15881
+ :param charset: (experimental) The charset to use for esbuild's output. By default esbuild's output is ASCII-only. Any non-ASCII characters are escaped using backslash escape sequences. Using escape sequences makes the generated output slightly bigger, and also makes it harder to read. If you would like for esbuild to print the original characters without using escape sequences, use ``Charset.UTF8``. Default: Charset.ASCII
15882
+ :param define: (experimental) Replace global identifiers with constant expressions. For example, ``{ 'process.env.DEBUG': 'true' }``. Another example, ``{ 'process.env.API_KEY': JSON.stringify('xxx-xxxx-xxx') }``. Default: - no replacements are made
15883
+ :param esbuild_args: (experimental) Build arguments to pass into esbuild. For example, to add the `--log-limit <https://esbuild.github.io/api/#log-limit>`_ flag:: project.bundler.addBundle("./src/hello.ts", { platform: "node", target: "node22", sourcemap: true, format: "esm", esbuildArgs: { "--log-limit": "0", }, }); Default: - no additional esbuild arguments are passed
14188
15884
  :param executable: (experimental) Mark the output file as executable. Default: false
15885
+ :param footer: (experimental) Use this to insert an arbitrary string at the end of generated JavaScript files. This is similar to banner which inserts at the beginning instead of the end. This is commonly used to insert comments Default: - no comments are passed
14189
15886
  :param format: (experimental) Output format for the generated JavaScript files. There are currently three possible values that can be configured: ``"iife"``, ``"cjs"``, and ``"esm"``. If not set (``undefined``), esbuild picks an output format for you based on ``platform``: - ``"cjs"`` if ``platform`` is ``"node"`` - ``"iife"`` if ``platform`` is ``"browser"`` - ``"esm"`` if ``platform`` is ``"neutral"`` Note: If making a bundle to run under node with ESM, set ``format`` to ``"esm"`` instead of setting ``platform`` to ``"neutral"``. Default: undefined
15887
+ :param inject: (experimental) This option allows you to automatically replace a global variable with an import from another file. Default: - no code is injected
15888
+ :param keep_names: (experimental) Whether to preserve the original ``name`` values even in minified code. In JavaScript the ``name`` property on functions and classes defaults to a nearby identifier in the source code. However, minification renames symbols to reduce code size and bundling sometimes need to rename symbols to avoid collisions. That changes value of the ``name`` property for many of these cases. This is usually fine because the ``name`` property is normally only used for debugging. However, some frameworks rely on the ``name`` property for registration and binding purposes. If this is the case, you can enable this option to preserve the original ``name`` values even in minified code. Default: false
14190
15889
  :param loaders: (experimental) Map of file extensions (without dot) and loaders to use for this file type. Loaders are appended to the esbuild command by ``--loader:.extension=loader``
15890
+ :param log_level: (experimental) Log level for esbuild. This is also propagated to the package manager and applies to its specific install command. Default: LogLevel.WARNING
15891
+ :param main_fields: (experimental) How to determine the entry point for modules. Try ['module', 'main'] to default to ES module versions. Default: []
15892
+ :param metafile: (experimental) This option tells esbuild to write out a JSON file relative to output directory with metadata about the build. The metadata in this JSON file follows this schema (specified using TypeScript syntax):: { outputs: { [path: string]: { bytes: number inputs: { [path: string]: { bytesInOutput: number } } imports: { path: string }[] exports: string[] } } } This data can then be analyzed by other tools. For example, bundle buddy can consume esbuild's metadata format and generates a treemap visualization of the modules in your bundle and how much space each one takes up. Default: false
15893
+ :param minify: (experimental) Whether to minify files when bundling. Default: false
14191
15894
  :param outfile: (experimental) Bundler output path relative to the asset's output directory. Default: "index.js"
15895
+ :param source_map_mode: (experimental) Source map mode to be used when bundling. Default: SourceMapMode.DEFAULT
15896
+ :param sources_content: (experimental) Whether to include original source code in source maps when bundling. Default: true
14192
15897
  :param tsconfig_path: (experimental) The path of the tsconfig.json file to use for bundling. Default: "tsconfig.json"
14193
15898
 
14194
15899
  :stability: experimental
@@ -14200,10 +15905,23 @@ class AddBundleOptions(BundlingOptions):
14200
15905
  check_type(argname="argument watch_task", value=watch_task, expected_type=type_hints["watch_task"])
14201
15906
  check_type(argname="argument platform", value=platform, expected_type=type_hints["platform"])
14202
15907
  check_type(argname="argument target", value=target, expected_type=type_hints["target"])
15908
+ check_type(argname="argument banner", value=banner, expected_type=type_hints["banner"])
15909
+ check_type(argname="argument charset", value=charset, expected_type=type_hints["charset"])
15910
+ check_type(argname="argument define", value=define, expected_type=type_hints["define"])
15911
+ check_type(argname="argument esbuild_args", value=esbuild_args, expected_type=type_hints["esbuild_args"])
14203
15912
  check_type(argname="argument executable", value=executable, expected_type=type_hints["executable"])
15913
+ check_type(argname="argument footer", value=footer, expected_type=type_hints["footer"])
14204
15914
  check_type(argname="argument format", value=format, expected_type=type_hints["format"])
15915
+ check_type(argname="argument inject", value=inject, expected_type=type_hints["inject"])
15916
+ check_type(argname="argument keep_names", value=keep_names, expected_type=type_hints["keep_names"])
14205
15917
  check_type(argname="argument loaders", value=loaders, expected_type=type_hints["loaders"])
15918
+ check_type(argname="argument log_level", value=log_level, expected_type=type_hints["log_level"])
15919
+ check_type(argname="argument main_fields", value=main_fields, expected_type=type_hints["main_fields"])
15920
+ check_type(argname="argument metafile", value=metafile, expected_type=type_hints["metafile"])
15921
+ check_type(argname="argument minify", value=minify, expected_type=type_hints["minify"])
14206
15922
  check_type(argname="argument outfile", value=outfile, expected_type=type_hints["outfile"])
15923
+ check_type(argname="argument source_map_mode", value=source_map_mode, expected_type=type_hints["source_map_mode"])
15924
+ check_type(argname="argument sources_content", value=sources_content, expected_type=type_hints["sources_content"])
14207
15925
  check_type(argname="argument tsconfig_path", value=tsconfig_path, expected_type=type_hints["tsconfig_path"])
14208
15926
  self._values: typing.Dict[builtins.str, typing.Any] = {
14209
15927
  "platform": platform,
@@ -14215,14 +15933,40 @@ class AddBundleOptions(BundlingOptions):
14215
15933
  self._values["sourcemap"] = sourcemap
14216
15934
  if watch_task is not None:
14217
15935
  self._values["watch_task"] = watch_task
15936
+ if banner is not None:
15937
+ self._values["banner"] = banner
15938
+ if charset is not None:
15939
+ self._values["charset"] = charset
15940
+ if define is not None:
15941
+ self._values["define"] = define
15942
+ if esbuild_args is not None:
15943
+ self._values["esbuild_args"] = esbuild_args
14218
15944
  if executable is not None:
14219
15945
  self._values["executable"] = executable
15946
+ if footer is not None:
15947
+ self._values["footer"] = footer
14220
15948
  if format is not None:
14221
15949
  self._values["format"] = format
15950
+ if inject is not None:
15951
+ self._values["inject"] = inject
15952
+ if keep_names is not None:
15953
+ self._values["keep_names"] = keep_names
14222
15954
  if loaders is not None:
14223
15955
  self._values["loaders"] = loaders
15956
+ if log_level is not None:
15957
+ self._values["log_level"] = log_level
15958
+ if main_fields is not None:
15959
+ self._values["main_fields"] = main_fields
15960
+ if metafile is not None:
15961
+ self._values["metafile"] = metafile
15962
+ if minify is not None:
15963
+ self._values["minify"] = minify
14224
15964
  if outfile is not None:
14225
15965
  self._values["outfile"] = outfile
15966
+ if source_map_mode is not None:
15967
+ self._values["source_map_mode"] = source_map_mode
15968
+ if sources_content is not None:
15969
+ self._values["sources_content"] = sources_content
14226
15970
  if tsconfig_path is not None:
14227
15971
  self._values["tsconfig_path"] = tsconfig_path
14228
15972
 
@@ -14302,6 +16046,78 @@ class AddBundleOptions(BundlingOptions):
14302
16046
  assert result is not None, "Required property 'target' is missing"
14303
16047
  return typing.cast(builtins.str, result)
14304
16048
 
16049
+ @builtins.property
16050
+ def banner(self) -> typing.Optional[builtins.str]:
16051
+ '''(experimental) Use this to insert an arbitrary string at the beginning of generated JavaScript files.
16052
+
16053
+ This is similar to footer which inserts at the end instead of the beginning.
16054
+
16055
+ This is commonly used to insert comments:
16056
+
16057
+ :default: - no comments are passed
16058
+
16059
+ :stability: experimental
16060
+ '''
16061
+ result = self._values.get("banner")
16062
+ return typing.cast(typing.Optional[builtins.str], result)
16063
+
16064
+ @builtins.property
16065
+ def charset(self) -> typing.Optional[Charset]:
16066
+ '''(experimental) The charset to use for esbuild's output.
16067
+
16068
+ By default esbuild's output is ASCII-only. Any non-ASCII characters are escaped
16069
+ using backslash escape sequences. Using escape sequences makes the generated output
16070
+ slightly bigger, and also makes it harder to read. If you would like for esbuild to print
16071
+ the original characters without using escape sequences, use ``Charset.UTF8``.
16072
+
16073
+ :default: Charset.ASCII
16074
+
16075
+ :see: https://esbuild.github.io/api/#charset
16076
+ :stability: experimental
16077
+ '''
16078
+ result = self._values.get("charset")
16079
+ return typing.cast(typing.Optional[Charset], result)
16080
+
16081
+ @builtins.property
16082
+ def define(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
16083
+ '''(experimental) Replace global identifiers with constant expressions.
16084
+
16085
+ For example, ``{ 'process.env.DEBUG': 'true' }``.
16086
+
16087
+ Another example, ``{ 'process.env.API_KEY': JSON.stringify('xxx-xxxx-xxx') }``.
16088
+
16089
+ :default: - no replacements are made
16090
+
16091
+ :stability: experimental
16092
+ '''
16093
+ result = self._values.get("define")
16094
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
16095
+
16096
+ @builtins.property
16097
+ def esbuild_args(
16098
+ self,
16099
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.bool]]]:
16100
+ '''(experimental) Build arguments to pass into esbuild.
16101
+
16102
+ For example, to add the `--log-limit <https://esbuild.github.io/api/#log-limit>`_ flag::
16103
+
16104
+ project.bundler.addBundle("./src/hello.ts", {
16105
+ platform: "node",
16106
+ target: "node22",
16107
+ sourcemap: true,
16108
+ format: "esm",
16109
+ esbuildArgs: {
16110
+ "--log-limit": "0",
16111
+ },
16112
+ });
16113
+
16114
+ :default: - no additional esbuild arguments are passed
16115
+
16116
+ :stability: experimental
16117
+ '''
16118
+ result = self._values.get("esbuild_args")
16119
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.bool]]], result)
16120
+
14305
16121
  @builtins.property
14306
16122
  def executable(self) -> typing.Optional[builtins.bool]:
14307
16123
  '''(experimental) Mark the output file as executable.
@@ -14313,6 +16129,21 @@ class AddBundleOptions(BundlingOptions):
14313
16129
  result = self._values.get("executable")
14314
16130
  return typing.cast(typing.Optional[builtins.bool], result)
14315
16131
 
16132
+ @builtins.property
16133
+ def footer(self) -> typing.Optional[builtins.str]:
16134
+ '''(experimental) Use this to insert an arbitrary string at the end of generated JavaScript files.
16135
+
16136
+ This is similar to banner which inserts at the beginning instead of the end.
16137
+
16138
+ This is commonly used to insert comments
16139
+
16140
+ :default: - no comments are passed
16141
+
16142
+ :stability: experimental
16143
+ '''
16144
+ result = self._values.get("footer")
16145
+ return typing.cast(typing.Optional[builtins.str], result)
16146
+
14316
16147
  @builtins.property
14317
16148
  def format(self) -> typing.Optional[builtins.str]:
14318
16149
  '''(experimental) Output format for the generated JavaScript files.
@@ -14335,6 +16166,40 @@ class AddBundleOptions(BundlingOptions):
14335
16166
  result = self._values.get("format")
14336
16167
  return typing.cast(typing.Optional[builtins.str], result)
14337
16168
 
16169
+ @builtins.property
16170
+ def inject(self) -> typing.Optional[typing.List[builtins.str]]:
16171
+ '''(experimental) This option allows you to automatically replace a global variable with an import from another file.
16172
+
16173
+ :default: - no code is injected
16174
+
16175
+ :see: https://esbuild.github.io/api/#inject
16176
+ :stability: experimental
16177
+ '''
16178
+ result = self._values.get("inject")
16179
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
16180
+
16181
+ @builtins.property
16182
+ def keep_names(self) -> typing.Optional[builtins.bool]:
16183
+ '''(experimental) Whether to preserve the original ``name`` values even in minified code.
16184
+
16185
+ In JavaScript the ``name`` property on functions and classes defaults to a
16186
+ nearby identifier in the source code.
16187
+
16188
+ However, minification renames symbols to reduce code size and bundling
16189
+ sometimes need to rename symbols to avoid collisions. That changes value of
16190
+ the ``name`` property for many of these cases. This is usually fine because
16191
+ the ``name`` property is normally only used for debugging. However, some
16192
+ frameworks rely on the ``name`` property for registration and binding purposes.
16193
+ If this is the case, you can enable this option to preserve the original
16194
+ ``name`` values even in minified code.
16195
+
16196
+ :default: false
16197
+
16198
+ :stability: experimental
16199
+ '''
16200
+ result = self._values.get("keep_names")
16201
+ return typing.cast(typing.Optional[builtins.bool], result)
16202
+
14338
16203
  @builtins.property
14339
16204
  def loaders(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
14340
16205
  '''(experimental) Map of file extensions (without dot) and loaders to use for this file type.
@@ -14346,6 +16211,75 @@ class AddBundleOptions(BundlingOptions):
14346
16211
  result = self._values.get("loaders")
14347
16212
  return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
14348
16213
 
16214
+ @builtins.property
16215
+ def log_level(self) -> typing.Optional[BundleLogLevel]:
16216
+ '''(experimental) Log level for esbuild.
16217
+
16218
+ This is also propagated to the package manager and
16219
+ applies to its specific install command.
16220
+
16221
+ :default: LogLevel.WARNING
16222
+
16223
+ :stability: experimental
16224
+ '''
16225
+ result = self._values.get("log_level")
16226
+ return typing.cast(typing.Optional[BundleLogLevel], result)
16227
+
16228
+ @builtins.property
16229
+ def main_fields(self) -> typing.Optional[typing.List[builtins.str]]:
16230
+ '''(experimental) How to determine the entry point for modules.
16231
+
16232
+ Try ['module', 'main'] to default to ES module versions.
16233
+
16234
+ :default: []
16235
+
16236
+ :stability: experimental
16237
+ '''
16238
+ result = self._values.get("main_fields")
16239
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
16240
+
16241
+ @builtins.property
16242
+ def metafile(self) -> typing.Optional[builtins.bool]:
16243
+ '''(experimental) This option tells esbuild to write out a JSON file relative to output directory with metadata about the build.
16244
+
16245
+ The metadata in this JSON file follows this schema (specified using TypeScript syntax)::
16246
+
16247
+ {
16248
+ outputs: {
16249
+ [path: string]: {
16250
+ bytes: number
16251
+ inputs: {
16252
+ [path: string]: { bytesInOutput: number }
16253
+ }
16254
+ imports: { path: string }[]
16255
+ exports: string[]
16256
+ }
16257
+ }
16258
+ }
16259
+
16260
+ This data can then be analyzed by other tools. For example,
16261
+ bundle buddy can consume esbuild's metadata format and generates a treemap visualization
16262
+ of the modules in your bundle and how much space each one takes up.
16263
+
16264
+ :default: false
16265
+
16266
+ :see: https://esbuild.github.io/api/#metafile
16267
+ :stability: experimental
16268
+ '''
16269
+ result = self._values.get("metafile")
16270
+ return typing.cast(typing.Optional[builtins.bool], result)
16271
+
16272
+ @builtins.property
16273
+ def minify(self) -> typing.Optional[builtins.bool]:
16274
+ '''(experimental) Whether to minify files when bundling.
16275
+
16276
+ :default: false
16277
+
16278
+ :stability: experimental
16279
+ '''
16280
+ result = self._values.get("minify")
16281
+ return typing.cast(typing.Optional[builtins.bool], result)
16282
+
14349
16283
  @builtins.property
14350
16284
  def outfile(self) -> typing.Optional[builtins.str]:
14351
16285
  '''(experimental) Bundler output path relative to the asset's output directory.
@@ -14357,6 +16291,30 @@ class AddBundleOptions(BundlingOptions):
14357
16291
  result = self._values.get("outfile")
14358
16292
  return typing.cast(typing.Optional[builtins.str], result)
14359
16293
 
16294
+ @builtins.property
16295
+ def source_map_mode(self) -> typing.Optional[SourceMapMode]:
16296
+ '''(experimental) Source map mode to be used when bundling.
16297
+
16298
+ :default: SourceMapMode.DEFAULT
16299
+
16300
+ :see: https://esbuild.github.io/api/#sourcemap
16301
+ :stability: experimental
16302
+ '''
16303
+ result = self._values.get("source_map_mode")
16304
+ return typing.cast(typing.Optional[SourceMapMode], result)
16305
+
16306
+ @builtins.property
16307
+ def sources_content(self) -> typing.Optional[builtins.bool]:
16308
+ '''(experimental) Whether to include original source code in source maps when bundling.
16309
+
16310
+ :default: true
16311
+
16312
+ :see: https://esbuild.github.io/api/#sources-content
16313
+ :stability: experimental
16314
+ '''
16315
+ result = self._values.get("sources_content")
16316
+ return typing.cast(typing.Optional[builtins.bool], result)
16317
+
14360
16318
  @builtins.property
14361
16319
  def tsconfig_path(self) -> typing.Optional[builtins.str]:
14362
16320
  '''(experimental) The path of the tsconfig.json file to use for bundling.
@@ -14383,23 +16341,31 @@ class AddBundleOptions(BundlingOptions):
14383
16341
  __all__ = [
14384
16342
  "AddBundleOptions",
14385
16343
  "ArrowParens",
16344
+ "AuditOptions",
14386
16345
  "AutoRelease",
16346
+ "Biome",
16347
+ "BiomeOptions",
16348
+ "BuildWorkflowOptions",
14387
16349
  "Bundle",
16350
+ "BundleLogLevel",
14388
16351
  "Bundler",
14389
16352
  "BundlerOptions",
14390
16353
  "BundlingOptions",
16354
+ "Charset",
14391
16355
  "CodeArtifactAuthProvider",
14392
16356
  "CodeArtifactOptions",
14393
16357
  "CoverageThreshold",
14394
16358
  "EmbeddedLanguageFormatting",
14395
16359
  "EndOfLine",
14396
16360
  "Eslint",
16361
+ "EslintCommandOptions",
14397
16362
  "EslintOptions",
14398
16363
  "EslintOverride",
14399
16364
  "HTMLWhitespaceSensitivity",
14400
16365
  "HasteConfig",
14401
16366
  "Jest",
14402
16367
  "JestConfigOptions",
16368
+ "JestDiscoverTestMatchPatternsForDirsOptions",
14403
16369
  "JestOptions",
14404
16370
  "JestReporter",
14405
16371
  "LicenseChecker",
@@ -14422,12 +16388,15 @@ __all__ = [
14422
16388
  "ProseWrap",
14423
16389
  "QuoteProps",
14424
16390
  "RenderWorkflowSetupOptions",
16391
+ "RunBundleTask",
14425
16392
  "ScopedPackagesOptions",
16393
+ "SourceMapMode",
14426
16394
  "TrailingComma",
14427
16395
  "Transform",
14428
16396
  "TypeScriptCompilerOptions",
14429
16397
  "TypeScriptImportsNotUsedAsValues",
14430
16398
  "TypeScriptJsxMode",
16399
+ "TypeScriptModuleDetection",
14431
16400
  "TypeScriptModuleResolution",
14432
16401
  "TypescriptConfig",
14433
16402
  "TypescriptConfigExtends",
@@ -14461,10 +16430,74 @@ __all__ = [
14461
16430
  "YarnWorkerPoolMode",
14462
16431
  "Yarnrc",
14463
16432
  "YarnrcOptions",
16433
+ "biome_config",
14464
16434
  ]
14465
16435
 
14466
16436
  publication.publish()
14467
16437
 
16438
+ # Loading modules to ensure their types are registered with the jsii runtime library
16439
+ from . import biome_config
16440
+
16441
+ def _typecheckingstub__fa4156d4e0a4a5a2efe965ea98ba35b587dcbfe01e1b4d659a959bcf54294ed2(
16442
+ *,
16443
+ level: typing.Optional[builtins.str] = None,
16444
+ prod_only: typing.Optional[builtins.bool] = None,
16445
+ run_on: typing.Optional[builtins.str] = None,
16446
+ ) -> None:
16447
+ """Type checking stubs"""
16448
+ pass
16449
+
16450
+ def _typecheckingstub__9f2264088409136f62af7e2ac4488206c06c3b9a69056be8b9ead20ab895f1bc(
16451
+ project: NodeProject,
16452
+ *,
16453
+ assist: typing.Optional[builtins.bool] = None,
16454
+ biome_config: typing.Optional[typing.Union[_BiomeConfiguration_dd1a6c83, typing.Dict[builtins.str, typing.Any]]] = None,
16455
+ formatter: typing.Optional[builtins.bool] = None,
16456
+ ignore_generated_files: typing.Optional[builtins.bool] = None,
16457
+ linter: typing.Optional[builtins.bool] = None,
16458
+ merge_arrays_in_configuration: typing.Optional[builtins.bool] = None,
16459
+ version: typing.Optional[builtins.str] = None,
16460
+ ) -> None:
16461
+ """Type checking stubs"""
16462
+ pass
16463
+
16464
+ def _typecheckingstub__02197aa3a69f17c43ff359679227be724559aba6ef0881da4e04e9a0bf66d078(
16465
+ project: _Project_57d89203,
16466
+ ) -> None:
16467
+ """Type checking stubs"""
16468
+ pass
16469
+
16470
+ def _typecheckingstub__5609a4432d207b19ee177e477fdf5e275031b8ec1346b00ac4bbfdf93f688757(
16471
+ pattern: builtins.str,
16472
+ ) -> None:
16473
+ """Type checking stubs"""
16474
+ pass
16475
+
16476
+ def _typecheckingstub__b53a2988afa9afc23bda2fe96e2de8ffaff18ab919e00b69a6c8d3d229f3dcc1(
16477
+ *,
16478
+ assist: typing.Optional[builtins.bool] = None,
16479
+ biome_config: typing.Optional[typing.Union[_BiomeConfiguration_dd1a6c83, typing.Dict[builtins.str, typing.Any]]] = None,
16480
+ formatter: typing.Optional[builtins.bool] = None,
16481
+ ignore_generated_files: typing.Optional[builtins.bool] = None,
16482
+ linter: typing.Optional[builtins.bool] = None,
16483
+ merge_arrays_in_configuration: typing.Optional[builtins.bool] = None,
16484
+ version: typing.Optional[builtins.str] = None,
16485
+ ) -> None:
16486
+ """Type checking stubs"""
16487
+ pass
16488
+
16489
+ def _typecheckingstub__12c3595783c38c358dfa0cc66282771c2ed2020f0770e8379920bb5731b72372(
16490
+ *,
16491
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16492
+ name: typing.Optional[builtins.str] = None,
16493
+ permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
16494
+ pre_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
16495
+ workflow_triggers: typing.Optional[typing.Union[_Triggers_e9ae7617, typing.Dict[builtins.str, typing.Any]]] = None,
16496
+ mutable_build: typing.Optional[builtins.bool] = None,
16497
+ ) -> None:
16498
+ """Type checking stubs"""
16499
+ pass
16500
+
14468
16501
  def _typecheckingstub__61e51544f8a1488a41b14a0ee08df5b86eb83b8852c5ea8c95747007b7c012de(
14469
16502
  *,
14470
16503
  bundle_task: _Task_9fa875b6,
@@ -14482,6 +16515,7 @@ def _typecheckingstub__b39a2a4441a612906ad5a7b87f1a6c53ed88fb86f4e31bd1a7283a06a
14482
16515
  assets_dir: typing.Optional[builtins.str] = None,
14483
16516
  esbuild_version: typing.Optional[builtins.str] = None,
14484
16517
  loaders: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16518
+ run_bundle_task: typing.Optional[RunBundleTask] = None,
14485
16519
  ) -> None:
14486
16520
  """Type checking stubs"""
14487
16521
  pass
@@ -14497,10 +16531,23 @@ def _typecheckingstub__5b3fe067eb8c7b6b184c855eea4d40743f016f5de6e522e14523a7e76
14497
16531
  *,
14498
16532
  platform: builtins.str,
14499
16533
  target: builtins.str,
16534
+ banner: typing.Optional[builtins.str] = None,
16535
+ charset: typing.Optional[Charset] = None,
16536
+ define: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16537
+ esbuild_args: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.bool]]] = None,
14500
16538
  executable: typing.Optional[builtins.bool] = None,
16539
+ footer: typing.Optional[builtins.str] = None,
14501
16540
  format: typing.Optional[builtins.str] = None,
16541
+ inject: typing.Optional[typing.Sequence[builtins.str]] = None,
16542
+ keep_names: typing.Optional[builtins.bool] = None,
14502
16543
  loaders: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16544
+ log_level: typing.Optional[BundleLogLevel] = None,
16545
+ main_fields: typing.Optional[typing.Sequence[builtins.str]] = None,
16546
+ metafile: typing.Optional[builtins.bool] = None,
16547
+ minify: typing.Optional[builtins.bool] = None,
14503
16548
  outfile: typing.Optional[builtins.str] = None,
16549
+ source_map_mode: typing.Optional[SourceMapMode] = None,
16550
+ sources_content: typing.Optional[builtins.bool] = None,
14504
16551
  tsconfig_path: typing.Optional[builtins.str] = None,
14505
16552
  externals: typing.Optional[typing.Sequence[builtins.str]] = None,
14506
16553
  sourcemap: typing.Optional[builtins.bool] = None,
@@ -14515,6 +16562,7 @@ def _typecheckingstub__10a14ca8f2b867bbbf0d45b5661abe92e6975540f78ea16f7ed21f5f2
14515
16562
  assets_dir: typing.Optional[builtins.str] = None,
14516
16563
  esbuild_version: typing.Optional[builtins.str] = None,
14517
16564
  loaders: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16565
+ run_bundle_task: typing.Optional[RunBundleTask] = None,
14518
16566
  ) -> None:
14519
16567
  """Type checking stubs"""
14520
16568
  pass
@@ -14554,12 +16602,14 @@ def _typecheckingstub__41d20792db723180b2558eb351d1b15e6cc51985fdc95dd8481c5fae7
14554
16602
  dirs: typing.Sequence[builtins.str],
14555
16603
  alias_extensions: typing.Optional[typing.Sequence[builtins.str]] = None,
14556
16604
  alias_map: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16605
+ command_options: typing.Optional[typing.Union[EslintCommandOptions, typing.Dict[builtins.str, typing.Any]]] = None,
14557
16606
  devdirs: typing.Optional[typing.Sequence[builtins.str]] = None,
14558
16607
  file_extensions: typing.Optional[typing.Sequence[builtins.str]] = None,
14559
16608
  ignore_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
14560
16609
  lint_projen_rc: typing.Optional[builtins.bool] = None,
14561
16610
  lint_projen_rc_file: typing.Optional[builtins.str] = None,
14562
16611
  prettier: typing.Optional[builtins.bool] = None,
16612
+ sort_extends: typing.Optional[_ICompareString_f119e19c] = None,
14563
16613
  ts_always_try_types: typing.Optional[builtins.bool] = None,
14564
16614
  tsconfig_path: typing.Optional[builtins.str] = None,
14565
16615
  yaml: typing.Optional[builtins.bool] = None,
@@ -14609,17 +16659,27 @@ def _typecheckingstub__45c512f160dd2d4145e1c0d43de9571ffe4d89e10b34c7d9a7b9fbba3
14609
16659
  """Type checking stubs"""
14610
16660
  pass
14611
16661
 
16662
+ def _typecheckingstub__ab5437a5e5c0bee91b2bed562cbb0dc9e80e748c8ca3251df4c2eb91ea3a4160(
16663
+ *,
16664
+ extra_args: typing.Optional[typing.Sequence[builtins.str]] = None,
16665
+ fix: typing.Optional[builtins.bool] = None,
16666
+ ) -> None:
16667
+ """Type checking stubs"""
16668
+ pass
16669
+
14612
16670
  def _typecheckingstub__26892c968b7bf4d64dd2597bbdabf1f1e9ced92002225a4eedfae6cbe3c22894(
14613
16671
  *,
14614
16672
  dirs: typing.Sequence[builtins.str],
14615
16673
  alias_extensions: typing.Optional[typing.Sequence[builtins.str]] = None,
14616
16674
  alias_map: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
16675
+ command_options: typing.Optional[typing.Union[EslintCommandOptions, typing.Dict[builtins.str, typing.Any]]] = None,
14617
16676
  devdirs: typing.Optional[typing.Sequence[builtins.str]] = None,
14618
16677
  file_extensions: typing.Optional[typing.Sequence[builtins.str]] = None,
14619
16678
  ignore_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
14620
16679
  lint_projen_rc: typing.Optional[builtins.bool] = None,
14621
16680
  lint_projen_rc_file: typing.Optional[builtins.str] = None,
14622
16681
  prettier: typing.Optional[builtins.bool] = None,
16682
+ sort_extends: typing.Optional[_ICompareString_f119e19c] = None,
14623
16683
  ts_always_try_types: typing.Optional[builtins.bool] = None,
14624
16684
  tsconfig_path: typing.Optional[builtins.str] = None,
14625
16685
  yaml: typing.Optional[builtins.bool] = None,
@@ -14651,7 +16711,7 @@ def _typecheckingstub__1d0f97663aee053bcca0e3b33c8be45ef5c6271b8e0c683a67d717aa9
14651
16711
  pass
14652
16712
 
14653
16713
  def _typecheckingstub__7f22158e02967239263c228b0eadfa82f5edd4d7b172b8506a5b32bc46ab7738(
14654
- project: NodeProject,
16714
+ scope: _constructs_77d1e7e8.IConstruct,
14655
16715
  *,
14656
16716
  config_file_path: typing.Optional[builtins.str] = None,
14657
16717
  coverage: typing.Optional[builtins.bool] = None,
@@ -14661,6 +16721,7 @@ def _typecheckingstub__7f22158e02967239263c228b0eadfa82f5edd4d7b172b8506a5b32bc4
14661
16721
  jest_config: typing.Optional[typing.Union[JestConfigOptions, typing.Dict[builtins.str, typing.Any]]] = None,
14662
16722
  jest_version: typing.Optional[builtins.str] = None,
14663
16723
  junit_reporting: typing.Optional[builtins.bool] = None,
16724
+ pass_with_no_tests: typing.Optional[builtins.bool] = None,
14664
16725
  preserve_default_reporters: typing.Optional[builtins.bool] = None,
14665
16726
  update_snapshot: typing.Optional[UpdateSnapshot] = None,
14666
16727
  ) -> None:
@@ -14733,6 +16794,14 @@ def _typecheckingstub__340f8ef9eed036d2e1af02ee13866e070b25e032c7262d1181adf28bb
14733
16794
  """Type checking stubs"""
14734
16795
  pass
14735
16796
 
16797
+ def _typecheckingstub__0681a729d70e1f1999defc63f8a0f12400f6e0b609f4fb8dbf7f858c435cd9b1(
16798
+ dirs: typing.Sequence[builtins.str],
16799
+ *,
16800
+ file_extension_pattern: typing.Optional[builtins.str] = None,
16801
+ ) -> None:
16802
+ """Type checking stubs"""
16803
+ pass
16804
+
14736
16805
  def _typecheckingstub__38439e86b40e7bc302e4faa48880e15ba8a10e5a2769a5b73cbf33a01a318752(
14737
16806
  *,
14738
16807
  additional_options: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
@@ -14805,6 +16874,13 @@ def _typecheckingstub__38439e86b40e7bc302e4faa48880e15ba8a10e5a2769a5b73cbf33a01
14805
16874
  """Type checking stubs"""
14806
16875
  pass
14807
16876
 
16877
+ def _typecheckingstub__987ab5c64454683ddeb28bad78f44cdd78a2099af6a0e44ff92f50bc40f8e486(
16878
+ *,
16879
+ file_extension_pattern: typing.Optional[builtins.str] = None,
16880
+ ) -> None:
16881
+ """Type checking stubs"""
16882
+ pass
16883
+
14808
16884
  def _typecheckingstub__6fea73c8bcc51e881c3829384cb90956e3310a1a08296d32da54fc51bd1b0872(
14809
16885
  *,
14810
16886
  config_file_path: typing.Optional[builtins.str] = None,
@@ -14815,6 +16891,7 @@ def _typecheckingstub__6fea73c8bcc51e881c3829384cb90956e3310a1a08296d32da54fc51b
14815
16891
  jest_config: typing.Optional[typing.Union[JestConfigOptions, typing.Dict[builtins.str, typing.Any]]] = None,
14816
16892
  jest_version: typing.Optional[builtins.str] = None,
14817
16893
  junit_reporting: typing.Optional[builtins.bool] = None,
16894
+ pass_with_no_tests: typing.Optional[builtins.bool] = None,
14818
16895
  preserve_default_reporters: typing.Optional[builtins.bool] = None,
14819
16896
  update_snapshot: typing.Optional[UpdateSnapshot] = None,
14820
16897
  ) -> None:
@@ -14864,6 +16941,7 @@ def _typecheckingstub__d10cd20471c8ed8e2de153476379f00bfa1b587c92e8982006812a0e3
14864
16941
  bugs_email: typing.Optional[builtins.str] = None,
14865
16942
  bugs_url: typing.Optional[builtins.str] = None,
14866
16943
  bundled_deps: typing.Optional[typing.Sequence[builtins.str]] = None,
16944
+ bun_version: typing.Optional[builtins.str] = None,
14867
16945
  code_artifact_options: typing.Optional[typing.Union[CodeArtifactOptions, typing.Dict[builtins.str, typing.Any]]] = None,
14868
16946
  deps: typing.Optional[typing.Sequence[builtins.str]] = None,
14869
16947
  description: typing.Optional[builtins.str] = None,
@@ -14876,9 +16954,11 @@ def _typecheckingstub__d10cd20471c8ed8e2de153476379f00bfa1b587c92e8982006812a0e3
14876
16954
  max_node_version: typing.Optional[builtins.str] = None,
14877
16955
  min_node_version: typing.Optional[builtins.str] = None,
14878
16956
  npm_access: typing.Optional[NpmAccess] = None,
16957
+ npm_provenance: typing.Optional[builtins.bool] = None,
14879
16958
  npm_registry: typing.Optional[builtins.str] = None,
14880
16959
  npm_registry_url: typing.Optional[builtins.str] = None,
14881
16960
  npm_token_secret: typing.Optional[builtins.str] = None,
16961
+ npm_trusted_publishing: typing.Optional[builtins.bool] = None,
14882
16962
  package_manager: typing.Optional[NodePackageManager] = None,
14883
16963
  package_name: typing.Optional[builtins.str] = None,
14884
16964
  peer_dependency_options: typing.Optional[typing.Union[PeerDependencyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -14999,6 +17079,7 @@ def _typecheckingstub__32555a77b63910142de45100c4a6d74880ddece00a3cbae9c27803467
14999
17079
  bugs_email: typing.Optional[builtins.str] = None,
15000
17080
  bugs_url: typing.Optional[builtins.str] = None,
15001
17081
  bundled_deps: typing.Optional[typing.Sequence[builtins.str]] = None,
17082
+ bun_version: typing.Optional[builtins.str] = None,
15002
17083
  code_artifact_options: typing.Optional[typing.Union[CodeArtifactOptions, typing.Dict[builtins.str, typing.Any]]] = None,
15003
17084
  deps: typing.Optional[typing.Sequence[builtins.str]] = None,
15004
17085
  description: typing.Optional[builtins.str] = None,
@@ -15011,9 +17092,11 @@ def _typecheckingstub__32555a77b63910142de45100c4a6d74880ddece00a3cbae9c27803467
15011
17092
  max_node_version: typing.Optional[builtins.str] = None,
15012
17093
  min_node_version: typing.Optional[builtins.str] = None,
15013
17094
  npm_access: typing.Optional[NpmAccess] = None,
17095
+ npm_provenance: typing.Optional[builtins.bool] = None,
15014
17096
  npm_registry: typing.Optional[builtins.str] = None,
15015
17097
  npm_registry_url: typing.Optional[builtins.str] = None,
15016
17098
  npm_token_secret: typing.Optional[builtins.str] = None,
17099
+ npm_trusted_publishing: typing.Optional[builtins.bool] = None,
15017
17100
  package_manager: typing.Optional[NodePackageManager] = None,
15018
17101
  package_name: typing.Optional[builtins.str] = None,
15019
17102
  peer_dependency_options: typing.Optional[typing.Union[PeerDependencyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -15161,6 +17244,7 @@ def _typecheckingstub__05c2eb8aa04095bbe6af788737363089516ccd341e3a6624f153e8ff7
15161
17244
  bugs_email: typing.Optional[builtins.str] = None,
15162
17245
  bugs_url: typing.Optional[builtins.str] = None,
15163
17246
  bundled_deps: typing.Optional[typing.Sequence[builtins.str]] = None,
17247
+ bun_version: typing.Optional[builtins.str] = None,
15164
17248
  code_artifact_options: typing.Optional[typing.Union[CodeArtifactOptions, typing.Dict[builtins.str, typing.Any]]] = None,
15165
17249
  deps: typing.Optional[typing.Sequence[builtins.str]] = None,
15166
17250
  description: typing.Optional[builtins.str] = None,
@@ -15173,9 +17257,11 @@ def _typecheckingstub__05c2eb8aa04095bbe6af788737363089516ccd341e3a6624f153e8ff7
15173
17257
  max_node_version: typing.Optional[builtins.str] = None,
15174
17258
  min_node_version: typing.Optional[builtins.str] = None,
15175
17259
  npm_access: typing.Optional[NpmAccess] = None,
17260
+ npm_provenance: typing.Optional[builtins.bool] = None,
15176
17261
  npm_registry: typing.Optional[builtins.str] = None,
15177
17262
  npm_registry_url: typing.Optional[builtins.str] = None,
15178
17263
  npm_token_secret: typing.Optional[builtins.str] = None,
17264
+ npm_trusted_publishing: typing.Optional[builtins.bool] = None,
15179
17265
  package_manager: typing.Optional[NodePackageManager] = None,
15180
17266
  package_name: typing.Optional[builtins.str] = None,
15181
17267
  peer_dependency_options: typing.Optional[typing.Union[PeerDependencyOptions, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -15187,9 +17273,11 @@ def _typecheckingstub__05c2eb8aa04095bbe6af788737363089516ccd341e3a6624f153e8ff7
15187
17273
  scripts: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15188
17274
  stability: typing.Optional[builtins.str] = None,
15189
17275
  yarn_berry_options: typing.Optional[typing.Union[YarnBerryOptions, typing.Dict[builtins.str, typing.Any]]] = None,
17276
+ bump_package: typing.Optional[builtins.str] = None,
15190
17277
  jsii_release_version: typing.Optional[builtins.str] = None,
15191
17278
  major_version: typing.Optional[jsii.Number] = None,
15192
17279
  min_major_version: typing.Optional[jsii.Number] = None,
17280
+ next_version_command: typing.Optional[builtins.str] = None,
15193
17281
  npm_dist_tag: typing.Optional[builtins.str] = None,
15194
17282
  post_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
15195
17283
  prerelease: typing.Optional[builtins.str] = None,
@@ -15197,12 +17285,14 @@ def _typecheckingstub__05c2eb8aa04095bbe6af788737363089516ccd341e3a6624f153e8ff7
15197
17285
  publish_tasks: typing.Optional[builtins.bool] = None,
15198
17286
  releasable_commits: typing.Optional[_ReleasableCommits_d481ce10] = None,
15199
17287
  release_branches: typing.Optional[typing.Mapping[builtins.str, typing.Union[_BranchOptions_13663d08, typing.Dict[builtins.str, typing.Any]]]] = None,
17288
+ release_environment: typing.Optional[builtins.str] = None,
15200
17289
  release_every_commit: typing.Optional[builtins.bool] = None,
15201
17290
  release_failure_issue: typing.Optional[builtins.bool] = None,
15202
17291
  release_failure_issue_label: typing.Optional[builtins.str] = None,
15203
17292
  release_schedule: typing.Optional[builtins.str] = None,
15204
17293
  release_tag_prefix: typing.Optional[builtins.str] = None,
15205
17294
  release_trigger: typing.Optional[_ReleaseTrigger_e4dc221f] = None,
17295
+ release_workflow_env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15206
17296
  release_workflow_name: typing.Optional[builtins.str] = None,
15207
17297
  release_workflow_setup_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
15208
17298
  versionrc_options: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
@@ -15211,8 +17301,13 @@ def _typecheckingstub__05c2eb8aa04095bbe6af788737363089516ccd341e3a6624f153e8ff7
15211
17301
  workflow_runs_on_group: typing.Optional[typing.Union[_GroupRunnerOptions_148c59c1, typing.Dict[builtins.str, typing.Any]]] = None,
15212
17302
  default_release_branch: builtins.str,
15213
17303
  artifacts_directory: typing.Optional[builtins.str] = None,
17304
+ audit_deps: typing.Optional[builtins.bool] = None,
17305
+ audit_deps_options: typing.Optional[typing.Union[AuditOptions, typing.Dict[builtins.str, typing.Any]]] = None,
15214
17306
  auto_approve_upgrades: typing.Optional[builtins.bool] = None,
17307
+ biome: typing.Optional[builtins.bool] = None,
17308
+ biome_options: typing.Optional[typing.Union[BiomeOptions, typing.Dict[builtins.str, typing.Any]]] = None,
15215
17309
  build_workflow: typing.Optional[builtins.bool] = None,
17310
+ build_workflow_options: typing.Optional[typing.Union[BuildWorkflowOptions, typing.Dict[builtins.str, typing.Any]]] = None,
15216
17311
  build_workflow_triggers: typing.Optional[typing.Union[_Triggers_e9ae7617, typing.Dict[builtins.str, typing.Any]]] = None,
15217
17312
  bundler_options: typing.Optional[typing.Union[BundlerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
15218
17313
  check_licenses: typing.Optional[typing.Union[LicenseCheckerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -15408,12 +17503,16 @@ def _typecheckingstub__c3368fe3a3107764de1a64c16f7fe4c15d510477a888b2a74df2afb14
15408
17503
  allow_importing_ts_extensions: typing.Optional[builtins.bool] = None,
15409
17504
  allow_js: typing.Optional[builtins.bool] = None,
15410
17505
  allow_synthetic_default_imports: typing.Optional[builtins.bool] = None,
17506
+ allow_unreachable_code: typing.Optional[builtins.bool] = None,
17507
+ allow_unused_labels: typing.Optional[builtins.bool] = None,
15411
17508
  always_strict: typing.Optional[builtins.bool] = None,
15412
17509
  base_url: typing.Optional[builtins.str] = None,
17510
+ check_js: typing.Optional[builtins.bool] = None,
15413
17511
  custom_conditions: typing.Optional[typing.Sequence[builtins.str]] = None,
15414
17512
  declaration: typing.Optional[builtins.bool] = None,
15415
17513
  declaration_dir: typing.Optional[builtins.str] = None,
15416
17514
  declaration_map: typing.Optional[builtins.bool] = None,
17515
+ downlevel_iteration: typing.Optional[builtins.bool] = None,
15417
17516
  emit_declaration_only: typing.Optional[builtins.bool] = None,
15418
17517
  emit_decorator_metadata: typing.Optional[builtins.bool] = None,
15419
17518
  es_module_interop: typing.Optional[builtins.bool] = None,
@@ -15421,6 +17520,7 @@ def _typecheckingstub__c3368fe3a3107764de1a64c16f7fe4c15d510477a888b2a74df2afb14
15421
17520
  experimental_decorators: typing.Optional[builtins.bool] = None,
15422
17521
  force_consistent_casing_in_file_names: typing.Optional[builtins.bool] = None,
15423
17522
  imports_not_used_as_values: typing.Optional[TypeScriptImportsNotUsedAsValues] = None,
17523
+ incremental: typing.Optional[builtins.bool] = None,
15424
17524
  inline_source_map: typing.Optional[builtins.bool] = None,
15425
17525
  inline_sources: typing.Optional[builtins.bool] = None,
15426
17526
  isolated_modules: typing.Optional[builtins.bool] = None,
@@ -15428,6 +17528,7 @@ def _typecheckingstub__c3368fe3a3107764de1a64c16f7fe4c15d510477a888b2a74df2afb14
15428
17528
  jsx_import_source: typing.Optional[builtins.str] = None,
15429
17529
  lib: typing.Optional[typing.Sequence[builtins.str]] = None,
15430
17530
  module: typing.Optional[builtins.str] = None,
17531
+ module_detection: typing.Optional[TypeScriptModuleDetection] = None,
15431
17532
  module_resolution: typing.Optional[TypeScriptModuleResolution] = None,
15432
17533
  no_emit: typing.Optional[builtins.bool] = None,
15433
17534
  no_emit_on_error: typing.Optional[builtins.bool] = None,
@@ -15454,6 +17555,8 @@ def _typecheckingstub__c3368fe3a3107764de1a64c16f7fe4c15d510477a888b2a74df2afb14
15454
17555
  strict_property_initialization: typing.Optional[builtins.bool] = None,
15455
17556
  strip_internal: typing.Optional[builtins.bool] = None,
15456
17557
  target: typing.Optional[builtins.str] = None,
17558
+ ts_build_info_file: typing.Optional[builtins.str] = None,
17559
+ type_roots: typing.Optional[typing.Sequence[builtins.str]] = None,
15457
17560
  types: typing.Optional[typing.Sequence[builtins.str]] = None,
15458
17561
  use_unknown_in_catch_variables: typing.Optional[builtins.bool] = None,
15459
17562
  verbatim_module_syntax: typing.Optional[builtins.bool] = None,
@@ -15464,7 +17567,7 @@ def _typecheckingstub__c3368fe3a3107764de1a64c16f7fe4c15d510477a888b2a74df2afb14
15464
17567
  def _typecheckingstub__bdd8e9cd126102b8184e52538d49523cef64724ec6ad410a5e2d5169e1ef0fe0(
15465
17568
  project: _Project_57d89203,
15466
17569
  *,
15467
- compiler_options: typing.Union[TypeScriptCompilerOptions, typing.Dict[builtins.str, typing.Any]],
17570
+ compiler_options: typing.Optional[typing.Union[TypeScriptCompilerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
15468
17571
  exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
15469
17572
  extends: typing.Optional[TypescriptConfigExtends] = None,
15470
17573
  file_name: typing.Optional[builtins.str] = None,
@@ -15491,6 +17594,18 @@ def _typecheckingstub__ecc6431d5d9f322d469f99e5739da10bb780beb09da03305a82dac281
15491
17594
  """Type checking stubs"""
15492
17595
  pass
15493
17596
 
17597
+ def _typecheckingstub__9f78586828830a46219bc19d7af8c53b4b5a1cc2bc1a03491930c9271790f10a(
17598
+ pattern: builtins.str,
17599
+ ) -> None:
17600
+ """Type checking stubs"""
17601
+ pass
17602
+
17603
+ def _typecheckingstub__85556ff93e412b3ea5e894bc7d7669275e51dfae8c077378748d8053a46e4946(
17604
+ pattern: builtins.str,
17605
+ ) -> None:
17606
+ """Type checking stubs"""
17607
+ pass
17608
+
15494
17609
  def _typecheckingstub__c4b076d47872be6e9462b52280fba0e6d5509d09e6f0c405542d8edb8b704f3d(
15495
17610
  config_path: builtins.str,
15496
17611
  ) -> None:
@@ -15511,7 +17626,7 @@ def _typecheckingstub__4bb44c1fe8356fe5ed46d657b7a5c3f2198926eaf1f5780cf30a365a3
15511
17626
 
15512
17627
  def _typecheckingstub__f928658806d66c2cd4f3977b17ae3d10092cf4b9afb10e736c01729b7451dbb9(
15513
17628
  *,
15514
- compiler_options: typing.Union[TypeScriptCompilerOptions, typing.Dict[builtins.str, typing.Any]],
17629
+ compiler_options: typing.Optional[typing.Union[TypeScriptCompilerOptions, typing.Dict[builtins.str, typing.Any]]] = None,
15515
17630
  exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
15516
17631
  extends: typing.Optional[TypescriptConfigExtends] = None,
15517
17632
  file_name: typing.Optional[builtins.str] = None,
@@ -15523,8 +17638,10 @@ def _typecheckingstub__f928658806d66c2cd4f3977b17ae3d10092cf4b9afb10e736c01729b7
15523
17638
  def _typecheckingstub__497e18a2c8dc3200cff8b21dfad7c418d29517aa6d67e2a2555ee78fa63ff385(
15524
17639
  project: NodeProject,
15525
17640
  *,
17641
+ cooldown: typing.Optional[jsii.Number] = None,
15526
17642
  exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
15527
17643
  include: typing.Optional[typing.Sequence[builtins.str]] = None,
17644
+ include_deprecated_versions: typing.Optional[builtins.bool] = None,
15528
17645
  pull_request_title: typing.Optional[builtins.str] = None,
15529
17646
  satisfy_peer_dependencies: typing.Optional[builtins.bool] = None,
15530
17647
  semantic_commit: typing.Optional[builtins.str] = None,
@@ -15552,8 +17669,10 @@ def _typecheckingstub__66ba20de6f144f37e582e192e3ed592a6be0e8bc3d10e3b730af62082
15552
17669
 
15553
17670
  def _typecheckingstub__0f7b896c11469470869bc4bfc86c9bb13fd308223e316ba71124c00b5709af1e(
15554
17671
  *,
17672
+ cooldown: typing.Optional[jsii.Number] = None,
15555
17673
  exclude: typing.Optional[typing.Sequence[builtins.str]] = None,
15556
17674
  include: typing.Optional[typing.Sequence[builtins.str]] = None,
17675
+ include_deprecated_versions: typing.Optional[builtins.bool] = None,
15557
17676
  pull_request_title: typing.Optional[builtins.str] = None,
15558
17677
  satisfy_peer_dependencies: typing.Optional[builtins.bool] = None,
15559
17678
  semantic_commit: typing.Optional[builtins.str] = None,
@@ -15578,6 +17697,7 @@ def _typecheckingstub__59fa39c2475322c21b2f7d03f2f2ada171b7e546b1d88beb8a75baa82
15578
17697
  assignees: typing.Optional[typing.Sequence[builtins.str]] = None,
15579
17698
  branches: typing.Optional[typing.Sequence[builtins.str]] = None,
15580
17699
  container: typing.Optional[typing.Union[_ContainerOptions_f50907af, typing.Dict[builtins.str, typing.Any]]] = None,
17700
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
15581
17701
  git_identity: typing.Optional[typing.Union[_GitIdentity_6effc3de, typing.Dict[builtins.str, typing.Any]]] = None,
15582
17702
  labels: typing.Optional[typing.Sequence[builtins.str]] = None,
15583
17703
  permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -15878,10 +17998,23 @@ def _typecheckingstub__fda879bb1fe52a68839c7634ab5ab9f2cedf7154361c8a0487248d72b
15878
17998
  watch_task: typing.Optional[builtins.bool] = None,
15879
17999
  platform: builtins.str,
15880
18000
  target: builtins.str,
18001
+ banner: typing.Optional[builtins.str] = None,
18002
+ charset: typing.Optional[Charset] = None,
18003
+ define: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
18004
+ esbuild_args: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.bool]]] = None,
15881
18005
  executable: typing.Optional[builtins.bool] = None,
18006
+ footer: typing.Optional[builtins.str] = None,
15882
18007
  format: typing.Optional[builtins.str] = None,
18008
+ inject: typing.Optional[typing.Sequence[builtins.str]] = None,
18009
+ keep_names: typing.Optional[builtins.bool] = None,
15883
18010
  loaders: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
18011
+ log_level: typing.Optional[BundleLogLevel] = None,
18012
+ main_fields: typing.Optional[typing.Sequence[builtins.str]] = None,
18013
+ metafile: typing.Optional[builtins.bool] = None,
18014
+ minify: typing.Optional[builtins.bool] = None,
15884
18015
  outfile: typing.Optional[builtins.str] = None,
18016
+ source_map_mode: typing.Optional[SourceMapMode] = None,
18017
+ sources_content: typing.Optional[builtins.bool] = None,
15885
18018
  tsconfig_path: typing.Optional[builtins.str] = None,
15886
18019
  ) -> None:
15887
18020
  """Type checking stubs"""