projen-pipelines 0.3.24 → 0.3.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/.jsii +51 -31
  2. package/API.md +72 -0
  3. package/lib/assign-approver/base.js +1 -1
  4. package/lib/assign-approver/github.js +1 -1
  5. package/lib/awscdk/base.d.ts +9 -0
  6. package/lib/awscdk/base.js +7 -4
  7. package/lib/awscdk/bash.js +1 -1
  8. package/lib/awscdk/github.js +1 -1
  9. package/lib/awscdk/gitlab.js +1 -1
  10. package/lib/drift/base.js +1 -1
  11. package/lib/drift/bash.js +1 -1
  12. package/lib/drift/github.js +1 -1
  13. package/lib/drift/gitlab.js +1 -1
  14. package/lib/drift/step.js +1 -1
  15. package/lib/steps/amplify-deploy.step.js +1 -1
  16. package/lib/steps/artifact-steps.js +2 -2
  17. package/lib/steps/aws-assume-role.step.js +1 -1
  18. package/lib/steps/github-summary.step.js +1 -1
  19. package/lib/steps/package-manager-setup.step.js +2 -2
  20. package/lib/steps/registries.js +3 -3
  21. package/lib/steps/step.js +4 -4
  22. package/lib/versioning/computation.js +3 -3
  23. package/lib/versioning/config.js +2 -2
  24. package/lib/versioning/outputs.js +5 -5
  25. package/lib/versioning/setup.js +1 -1
  26. package/lib/versioning/strategy.js +1 -1
  27. package/lib/versioning/version-info.js +2 -2
  28. package/node_modules/dotgitignore/node_modules/brace-expansion/index.js +78 -22
  29. package/node_modules/dotgitignore/node_modules/brace-expansion/package.json +1 -1
  30. package/node_modules/is-core-module/CHANGELOG.md +135 -241
  31. package/node_modules/is-core-module/README.md +18 -0
  32. package/node_modules/is-core-module/core.json +1 -0
  33. package/node_modules/is-core-module/index.d.ts +12 -0
  34. package/node_modules/is-core-module/index.js +10 -3
  35. package/node_modules/is-core-module/package.json +24 -10
  36. package/node_modules/meow/node_modules/resolve/lib/core.json +13 -12
  37. package/node_modules/meow/node_modules/resolve/package.json +5 -5
  38. package/node_modules/read-pkg/node_modules/resolve/lib/core.json +13 -12
  39. package/node_modules/read-pkg/node_modules/resolve/package.json +5 -5
  40. package/node_modules/safe-buffer/index.js +0 -3
  41. package/node_modules/safe-buffer/package.json +4 -18
  42. package/node_modules/string_decoder/package.json +2 -5
  43. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +19 -18
  44. package/node_modules/yaml/browser/dist/nodes/Alias.js +25 -23
  45. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +19 -18
  46. package/node_modules/yaml/dist/nodes/Alias.js +25 -23
  47. package/node_modules/yaml/package.json +1 -1
  48. package/package.json +3 -3
  49. package/node_modules/is-core-module/.eslintrc +0 -18
  50. package/node_modules/is-core-module/.nycrc +0 -9
  51. package/node_modules/is-core-module/test/index.js +0 -258
  52. package/node_modules/meow/node_modules/resolve/.claude/notes.md +0 -26
  53. package/node_modules/meow/node_modules/resolve/.claude/settings.local.json +0 -26
  54. package/node_modules/read-pkg/node_modules/resolve/.claude/notes.md +0 -26
  55. package/node_modules/read-pkg/node_modules/resolve/.claude/settings.local.json +0 -26
  56. package/node_modules/through2/node_modules/safe-buffer/LICENSE +0 -21
  57. package/node_modules/through2/node_modules/safe-buffer/README.md +0 -584
  58. package/node_modules/through2/node_modules/safe-buffer/index.d.ts +0 -187
  59. package/node_modules/through2/node_modules/safe-buffer/index.js +0 -62
  60. package/node_modules/through2/node_modules/safe-buffer/package.json +0 -37
  61. package/node_modules/through2/node_modules/string_decoder/LICENSE +0 -48
  62. package/node_modules/through2/node_modules/string_decoder/README.md +0 -47
  63. package/node_modules/through2/node_modules/string_decoder/lib/string_decoder.js +0 -296
  64. package/node_modules/through2/node_modules/string_decoder/package.json +0 -31
  65. /package/node_modules/{through2/node_modules/string_decoder → string_decoder}/.travis.yml +0 -0
@@ -8,7 +8,7 @@ const version_info_1 = require("./version-info");
8
8
  */
9
9
  class VersionComputationStrategy {
10
10
  strategy;
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersionComputationStrategy", version: "0.3.24" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersionComputationStrategy", version: "0.3.26" };
12
12
  constructor(strategy) {
13
13
  this.strategy = strategy;
14
14
  }
@@ -40,7 +40,7 @@ exports.VersionComputationStrategy = VersionComputationStrategy;
40
40
  * Composite version computation that combines multiple strategies
41
41
  */
42
42
  class CompositeComputation extends VersionComputationStrategy {
43
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.CompositeComputation", version: "0.3.24" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.CompositeComputation", version: "0.3.26" };
44
44
  constructor(strategy) {
45
45
  super(strategy);
46
46
  }
@@ -92,7 +92,7 @@ exports.CompositeComputation = CompositeComputation;
92
92
  * Main version computer that handles strategy selection
93
93
  */
94
94
  class VersionComputer {
95
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersionComputer", version: "0.3.24" };
95
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersionComputer", version: "0.3.26" };
96
96
  strategy;
97
97
  constructor(strategy) {
98
98
  this.strategy = this.createStrategy(strategy);
@@ -8,7 +8,7 @@ const strategy_1 = require("./strategy");
8
8
  * Main versioning configuration class with factory methods
9
9
  */
10
10
  class VersioningConfigurations {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningConfigurations", version: "0.3.24" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningConfigurations", version: "0.3.26" };
12
12
  /**
13
13
  * Standard configuration with commit count strategy
14
14
  */
@@ -49,7 +49,7 @@ exports.VersioningConfigurations = VersioningConfigurations;
49
49
  * Utility functions for versioning configuration
50
50
  */
51
51
  class VersioningConfigUtils {
52
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningConfigUtils", version: "0.3.24" };
52
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningConfigUtils", version: "0.3.26" };
53
53
  /**
54
54
  * Resolve configuration for a specific stage
55
55
  */
@@ -7,7 +7,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
7
  */
8
8
  class OutputConfigBase {
9
9
  type;
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.OutputConfigBase", version: "0.3.24" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.OutputConfigBase", version: "0.3.26" };
11
11
  constructor(type) {
12
12
  this.type = type;
13
13
  }
@@ -18,7 +18,7 @@ exports.OutputConfigBase = OutputConfigBase;
18
18
  */
19
19
  class CloudFormationOutput extends OutputConfigBase {
20
20
  config;
21
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.CloudFormationOutput", version: "0.3.24" };
21
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.CloudFormationOutput", version: "0.3.26" };
22
22
  static TYPE = 'cloudformation';
23
23
  /**
24
24
  * Enable CloudFormation outputs with default configuration
@@ -55,7 +55,7 @@ exports.CloudFormationOutput = CloudFormationOutput;
55
55
  */
56
56
  class ParameterStoreOutput extends OutputConfigBase {
57
57
  config;
58
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.ParameterStoreOutput", version: "0.3.24" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.ParameterStoreOutput", version: "0.3.26" };
59
59
  static TYPE = 'parameterStore';
60
60
  /**
61
61
  * Enable Parameter Store outputs with parameter name
@@ -103,7 +103,7 @@ exports.ParameterStoreOutput = ParameterStoreOutput;
103
103
  * Output format types
104
104
  */
105
105
  class OutputFormat {
106
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.OutputFormat", version: "0.3.24" };
106
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.OutputFormat", version: "0.3.26" };
107
107
  static PLAIN = 'plain';
108
108
  static STRUCTURED = 'structured';
109
109
  constructor() { }
@@ -113,7 +113,7 @@ exports.OutputFormat = OutputFormat;
113
113
  * Factory class for output configurations
114
114
  */
115
115
  class VersioningOutputs {
116
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningOutputs", version: "0.3.24" };
116
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningOutputs", version: "0.3.26" };
117
117
  /**
118
118
  * Create output configuration with CloudFormation and SSM Parameter Store
119
119
  */
@@ -8,7 +8,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
8
8
  class VersioningSetup {
9
9
  project;
10
10
  config;
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningSetup", version: "0.3.24" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningSetup", version: "0.3.26" };
12
12
  constructor(project, config) {
13
13
  this.project = project;
14
14
  this.config = config;
@@ -8,7 +8,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
8
8
  class VersioningStrategy {
9
9
  format;
10
10
  components;
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningStrategy", version: "0.3.24" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersioningStrategy", version: "0.3.26" };
12
12
  /**
13
13
  * Create a composite strategy with custom format and components
14
14
  */
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  * Represents complete version information for a deployment
7
7
  */
8
8
  class VersionInfo {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersionInfo", version: "0.3.24" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersionInfo", version: "0.3.26" };
10
10
  /**
11
11
  * Create a VersionInfo instance from raw data
12
12
  */
@@ -185,7 +185,7 @@ exports.VersionInfo = VersionInfo;
185
185
  * Builder class for creating VersionInfo instances
186
186
  */
187
187
  class VersionInfoBuilder {
188
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersionInfoBuilder", version: "0.3.24" };
188
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.VersionInfoBuilder", version: "0.3.26" };
189
189
  props = {};
190
190
  /**
191
191
  * Set the version string
@@ -23,6 +23,26 @@ var EXPANSION_MAX = 100000
23
23
  // characters) so legitimate input is unaffected.
24
24
  var EXPANSION_MAX_LENGTH = 4000000
25
25
 
26
+ // `expand` recurses once per level of brace *nesting* - both when expanding a
27
+ // set's comma members and when re-wrapping a set whose body is a single part.
28
+ // The CVE-2026-14257 fix made the *tail* iterative (recursion on `m.post`, one
29
+ // level per chained group), which left nesting depth unbounded: about 3,100
30
+ // levels of `{{{...a,b...}}}` - only ~6KB of input - exhausted the native stack
31
+ // and crashed the process. `EXPANSION_MAX_DEPTH` bounds how deep the parser
32
+ // will follow nesting. It sits far above any realistic pattern and well below
33
+ // the depth at which the stack runs out.
34
+ var EXPANSION_MAX_DEPTH = 1000
35
+
36
+ // Bash keeps a quirk where a brace group followed by a comma set still expands
37
+ // (`{a},b}`). The parser implements it by rewriting the string and restarting
38
+ // the scan, absorbing one `}` per pass. `n` trailing braces therefore cost `n`
39
+ // full passes over a string that itself grows by one `escClose` sentinel each
40
+ // time - quadratic in `n`, with a ~26x constant from the sentinel's length.
41
+ // 128KB of `'{a}' + '}'.repeat(n) + ',z}'` blocked the event loop for 27
42
+ // seconds to produce two results. `EXPANSION_MAX_REWRITES` bounds how many
43
+ // times the scan may restart. Real `{a},b}` input needs a handful.
44
+ var EXPANSION_MAX_REWRITES = 1000
45
+
26
46
  function numeric(str) {
27
47
  return parseInt(str, 10) == str
28
48
  ? parseInt(str, 10)
@@ -46,34 +66,54 @@ function unescapeBraces(str) {
46
66
  }
47
67
 
48
68
 
69
+ // Like `target.push(...items)` but doesn't overflow the stack
70
+ function pushAll(target, items) {
71
+ for (var i = 0; i < items.length; i++) {
72
+ target.push(items[i]);
73
+ }
74
+ }
75
+
49
76
  // Basically just str.split(","), but handling cases
50
77
  // where we have nested braced sections, which should be
51
78
  // treated as individual members, like {a,{b,c},d}
52
79
  function parseCommaParts(str) {
53
- if (!str)
54
- return [''];
55
-
56
80
  var parts = [];
57
- var m = balanced('{', '}', str);
58
81
 
59
- if (!m)
60
- return str.split(',');
82
+ // Walk the brace groups iteratively. Recursing on `post` once per group let a
83
+ // chain of them exhaust the stack - the parsing-side counterpart to
84
+ // the `expand` overflow fixed for CVE-2026-14257, and not something `max` or
85
+ // `maxLength` can bound, since it happens before expansion.
86
+ //
87
+ // The part the next chunk continues
88
+ var carry = '';
61
89
 
62
- var pre = m.pre;
63
- var body = m.body;
64
- var post = m.post;
65
- var p = pre.split(',');
90
+ for (;;) {
91
+ var m = balanced('{', '}', str);
66
92
 
67
- p[p.length-1] += '{' + body + '}';
68
- var postParts = parseCommaParts(post);
69
- if (post.length) {
70
- p[p.length-1] += postParts.shift();
71
- p.push.apply(p, postParts);
72
- }
93
+ if (!m) {
94
+ var tail = str.split(',');
95
+ tail[0] = carry + tail[0];
96
+ pushAll(parts, tail);
97
+ return parts;
98
+ }
73
99
 
74
- parts.push.apply(parts, p);
100
+ var pre = m.pre;
101
+ var body = m.body;
102
+ var post = m.post;
103
+ var p = pre.split(',');
75
104
 
76
- return parts;
105
+ p[0] = carry + p[0];
106
+ p[p.length-1] += '{' + body + '}';
107
+
108
+ if (!post.length) {
109
+ pushAll(parts, p);
110
+ return parts;
111
+ }
112
+
113
+ carry = p.pop();
114
+ pushAll(parts, p);
115
+ str = post;
116
+ }
77
117
  }
78
118
 
79
119
  function expandTop(str, options) {
@@ -83,6 +123,8 @@ function expandTop(str, options) {
83
123
  options = options || {};
84
124
  var max = options.max == null ? EXPANSION_MAX : options.max;
85
125
  var maxLength = options.maxLength == null ? EXPANSION_MAX_LENGTH : options.maxLength;
126
+ var maxDepth = options.maxDepth == null ? EXPANSION_MAX_DEPTH : options.maxDepth;
127
+ var maxRewrites = options.maxRewrites == null ? EXPANSION_MAX_REWRITES : options.maxRewrites;
86
128
 
87
129
  // I don't know why Bash 4.3 does this, but it does.
88
130
  // Anything starting with {} will have the first two bytes preserved
@@ -94,7 +136,7 @@ function expandTop(str, options) {
94
136
  str = '\\{\\}' + str.substr(2);
95
137
  }
96
138
 
97
- return expand(escapeBraces(str), max, maxLength, true).map(unescapeBraces);
139
+ return expand(escapeBraces(str), max, maxLength, maxDepth, 0, maxRewrites, true).map(unescapeBraces);
98
140
  }
99
141
 
100
142
  function identity(e) {
@@ -218,8 +260,18 @@ function expand(
218
260
  str,
219
261
  max,
220
262
  maxLength,
263
+ maxDepth,
264
+ depth,
265
+ maxRewrites,
221
266
  isTop
222
267
  ) {
268
+ // Too deeply nested to keep following: treat the rest as literal, the same
269
+ // way a group that cannot expand is already handled. Truncating rather than
270
+ // throwing keeps expansion total, matching `max` and `maxLength`.
271
+ if (depth > maxDepth) {
272
+ return [str];
273
+ }
274
+
223
275
  // Consume the string's top-level brace groups left to right, threading a
224
276
  // running set of combined prefixes (`acc`). Expanding the tail iteratively -
225
277
  // rather than recursing on `m.post` once per group - keeps the native stack
@@ -240,6 +292,9 @@ function expand(
240
292
  // `accBase[a]` records how much of `acc[a]` predates the current run;
241
293
  // `combine` treats an expansion as empty when it adds nothing past that.
242
294
  var accBase = [0]
295
+ // How many times the `{a},b}` rewrite below has restarted the scan. Each pass
296
+ // re-reads the whole string, so leaving this unbounded is quadratic.
297
+ var rewrites = 0
243
298
  var dropEmpties = false
244
299
  var firstGroup = true
245
300
  var nextBase
@@ -271,7 +326,8 @@ function expand(
271
326
  var isOptions = m.body.indexOf(',') >= 0;
272
327
  if (!isSequence && !isOptions) {
273
328
  // {a},b}
274
- if (m.post.match(/,(?!,).*\}/)) {
329
+ if (rewrites < maxRewrites && m.post.match(/,(?!,).*\}/)) {
330
+ rewrites++;
275
331
  str = m.pre + '{' + m.body + escClose + m.post;
276
332
  // The rewritten string is expanded as if it were a fresh top-level one,
277
333
  // so start a new empty-drop run: anchor the baseline at what `acc`
@@ -310,7 +366,7 @@ function expand(
310
366
  var n = parseCommaParts(m.body);
311
367
  if (n.length === 1 && n[0] !== undefined) {
312
368
  // x{{a,b}}y ==> x{a}y x{b}y
313
- n = expand(n[0], max, maxLength, false).map(embrace);
369
+ n = expand(n[0], max, maxLength, maxDepth, depth + 1, maxRewrites, false).map(embrace);
314
370
  //XXX is this necessary? Can't seem to hit it in tests.
315
371
  /* c8 ignore start */
316
372
  if (n.length === 1) {
@@ -349,7 +405,7 @@ function expand(
349
405
  values = []
350
406
  var valuesLength = 0
351
407
  outer: for (var j = 0; j < n.length; j++) {
352
- var expanded = expand(n[j], max, maxLength, false)
408
+ var expanded = expand(n[j], max, maxLength, maxDepth, depth + 1, maxRewrites, false)
353
409
  for (var k = 0; k < expanded.length; k++) {
354
410
  var v = expanded[k]
355
411
  if (dropsEmpties && !v) continue
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "brace-expansion",
3
3
  "description": "Brace expansion as known from sh/bash",
4
- "version": "1.1.18",
4
+ "version": "1.1.21",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git://github.com/juliangruber/brace-expansion.git"