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.
- package/.jsii +51 -31
- package/API.md +72 -0
- package/lib/assign-approver/base.js +1 -1
- package/lib/assign-approver/github.js +1 -1
- package/lib/awscdk/base.d.ts +9 -0
- package/lib/awscdk/base.js +7 -4
- package/lib/awscdk/bash.js +1 -1
- package/lib/awscdk/github.js +1 -1
- package/lib/awscdk/gitlab.js +1 -1
- package/lib/drift/base.js +1 -1
- package/lib/drift/bash.js +1 -1
- package/lib/drift/github.js +1 -1
- package/lib/drift/gitlab.js +1 -1
- package/lib/drift/step.js +1 -1
- package/lib/steps/amplify-deploy.step.js +1 -1
- package/lib/steps/artifact-steps.js +2 -2
- package/lib/steps/aws-assume-role.step.js +1 -1
- package/lib/steps/github-summary.step.js +1 -1
- package/lib/steps/package-manager-setup.step.js +2 -2
- package/lib/steps/registries.js +3 -3
- package/lib/steps/step.js +4 -4
- package/lib/versioning/computation.js +3 -3
- package/lib/versioning/config.js +2 -2
- package/lib/versioning/outputs.js +5 -5
- package/lib/versioning/setup.js +1 -1
- package/lib/versioning/strategy.js +1 -1
- package/lib/versioning/version-info.js +2 -2
- package/node_modules/dotgitignore/node_modules/brace-expansion/index.js +78 -22
- package/node_modules/dotgitignore/node_modules/brace-expansion/package.json +1 -1
- package/node_modules/is-core-module/CHANGELOG.md +135 -241
- package/node_modules/is-core-module/README.md +18 -0
- package/node_modules/is-core-module/core.json +1 -0
- package/node_modules/is-core-module/index.d.ts +12 -0
- package/node_modules/is-core-module/index.js +10 -3
- package/node_modules/is-core-module/package.json +24 -10
- package/node_modules/meow/node_modules/resolve/lib/core.json +13 -12
- package/node_modules/meow/node_modules/resolve/package.json +5 -5
- package/node_modules/read-pkg/node_modules/resolve/lib/core.json +13 -12
- package/node_modules/read-pkg/node_modules/resolve/package.json +5 -5
- package/node_modules/safe-buffer/index.js +0 -3
- package/node_modules/safe-buffer/package.json +4 -18
- package/node_modules/string_decoder/package.json +2 -5
- package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +19 -18
- package/node_modules/yaml/browser/dist/nodes/Alias.js +25 -23
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +19 -18
- package/node_modules/yaml/dist/nodes/Alias.js +25 -23
- package/node_modules/yaml/package.json +1 -1
- package/package.json +3 -3
- package/node_modules/is-core-module/.eslintrc +0 -18
- package/node_modules/is-core-module/.nycrc +0 -9
- package/node_modules/is-core-module/test/index.js +0 -258
- package/node_modules/meow/node_modules/resolve/.claude/notes.md +0 -26
- package/node_modules/meow/node_modules/resolve/.claude/settings.local.json +0 -26
- package/node_modules/read-pkg/node_modules/resolve/.claude/notes.md +0 -26
- package/node_modules/read-pkg/node_modules/resolve/.claude/settings.local.json +0 -26
- package/node_modules/through2/node_modules/safe-buffer/LICENSE +0 -21
- package/node_modules/through2/node_modules/safe-buffer/README.md +0 -584
- package/node_modules/through2/node_modules/safe-buffer/index.d.ts +0 -187
- package/node_modules/through2/node_modules/safe-buffer/index.js +0 -62
- package/node_modules/through2/node_modules/safe-buffer/package.json +0 -37
- package/node_modules/through2/node_modules/string_decoder/LICENSE +0 -48
- package/node_modules/through2/node_modules/string_decoder/README.md +0 -47
- package/node_modules/through2/node_modules/string_decoder/lib/string_decoder.js +0 -296
- package/node_modules/through2/node_modules/string_decoder/package.json +0 -31
- /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.
|
|
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.
|
|
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.
|
|
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);
|
package/lib/versioning/config.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
*/
|
package/lib/versioning/setup.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
60
|
-
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
var post = m.post;
|
|
65
|
-
var p = pre.split(',');
|
|
90
|
+
for (;;) {
|
|
91
|
+
var m = balanced('{', '}', str);
|
|
66
92
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
100
|
+
var pre = m.pre;
|
|
101
|
+
var body = m.body;
|
|
102
|
+
var post = m.post;
|
|
103
|
+
var p = pre.split(',');
|
|
75
104
|
|
|
76
|
-
|
|
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
|