@contractkit/plugin-bruno 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">86.73% </span>
26
+ <span class="strong">87.27% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>268/309</span>
28
+ <span class='fraction'>288/330</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">76.56% </span>
33
+ <span class="strong">76.29% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>196/256</span>
35
+ <span class='fraction'>206/270</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">91.3% </span>
40
+ <span class="strong">92.15% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>42/46</span>
42
+ <span class='fraction'>47/51</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">88.19% </span>
47
+ <span class="strong">88.54% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>239/271</span>
49
+ <span class='fraction'>255/288</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file high" data-value="codegen-bruno.ts"><a href="codegen-bruno.ts.html">codegen-bruno.ts</a></td>
83
- <td data-value="86.73" class="pic high">
84
- <div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
83
+ <td data-value="87.27" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 87%"></div><div class="cover-empty" style="width: 13%"></div></div>
85
85
  </td>
86
- <td data-value="86.73" class="pct high">86.73%</td>
87
- <td data-value="309" class="abs high">268/309</td>
88
- <td data-value="76.56" class="pct medium">76.56%</td>
89
- <td data-value="256" class="abs medium">196/256</td>
90
- <td data-value="91.3" class="pct high">91.3%</td>
91
- <td data-value="46" class="abs high">42/46</td>
92
- <td data-value="88.19" class="pct high">88.19%</td>
93
- <td data-value="271" class="abs high">239/271</td>
86
+ <td data-value="87.27" class="pct high">87.27%</td>
87
+ <td data-value="330" class="abs high">288/330</td>
88
+ <td data-value="76.29" class="pct medium">76.29%</td>
89
+ <td data-value="270" class="abs medium">206/270</td>
90
+ <td data-value="92.15" class="pct high">92.15%</td>
91
+ <td data-value="51" class="abs high">47/51</td>
92
+ <td data-value="88.54" class="pct high">88.54%</td>
93
+ <td data-value="288" class="abs high">255/288</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-05-01T18:49:12.628Z
104
+ at 2026-05-01T19:55:27.966Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -266,7 +266,7 @@
266
266
  <span class="cline-any cline-neutral">&nbsp;</span>
267
267
  <span class="cline-any cline-neutral">&nbsp;</span>
268
268
  <span class="cline-any cline-neutral">&nbsp;</span>
269
- <span class="cline-any cline-yes">244x</span>
269
+ <span class="cline-any cline-yes">258x</span>
270
270
  <span class="cline-any cline-neutral">&nbsp;</span>
271
271
  <span class="cline-any cline-neutral">&nbsp;</span>
272
272
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -384,10 +384,10 @@
384
384
  <span class="cline-any cline-neutral">&nbsp;</span>
385
385
  <span class="cline-any cline-neutral">&nbsp;</span>
386
386
  <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-yes">92x</span>
388
- <span class="cline-any cline-yes">92x</span>
389
- <span class="cline-any cline-yes">92x</span>
390
- <span class="cline-any cline-yes">92x</span>
387
+ <span class="cline-any cline-yes">99x</span>
388
+ <span class="cline-any cline-yes">99x</span>
389
+ <span class="cline-any cline-yes">99x</span>
390
+ <span class="cline-any cline-yes">99x</span>
391
391
  <span class="cline-any cline-neutral">&nbsp;</span>
392
392
  <span class="cline-any cline-neutral">&nbsp;</span>
393
393
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -402,12 +402,12 @@
402
402
  <span class="cline-any cline-neutral">&nbsp;</span>
403
403
  <span class="cline-any cline-neutral">&nbsp;</span>
404
404
  <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-yes">88x</span>
406
- <span class="cline-any cline-yes">88x</span>
405
+ <span class="cline-any cline-yes">95x</span>
406
+ <span class="cline-any cline-yes">95x</span>
407
407
  <span class="cline-any cline-neutral">&nbsp;</span>
408
408
  <span class="cline-any cline-neutral">&nbsp;</span>
409
409
  <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-yes">87x</span>
410
+ <span class="cline-any cline-yes">92x</span>
411
411
  <span class="cline-any cline-neutral">&nbsp;</span>
412
412
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type {
413
413
  ContractRootNode,
@@ -589,7 +589,7 @@ export function opRoot(routes: OpRouteNode[], file = 'users.op', meta: Record&lt
589
589
  <div class='footer quiet pad2 space-top1 center small'>
590
590
  Code coverage generated by
591
591
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
592
- at 2026-05-01T18:49:12.628Z
592
+ at 2026-05-01T19:55:27.966Z
593
593
  </div>
594
594
  <script src="../prettify.js"></script>
595
595
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-05-01T18:49:12.628Z
104
+ at 2026-05-01T19:55:27.966Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -37,6 +37,17 @@ export interface OpenCollectionOptions {
37
37
  * benefit from full coverage. Set to `false` to omit internal ops.
38
38
  */
39
39
  includeInternal?: boolean;
40
+ /**
41
+ * Map of environment name → variables. Each entry produces a
42
+ * `environments/<name>.yml` file with the variables in declaration order.
43
+ * Values are coerced to strings.
44
+ *
45
+ * When omitted, a default `environments/local.yml` is emitted with
46
+ * `baseUrl=http://localhost:3000` plus any auth env-var placeholders the
47
+ * default scheme requires. When provided, the default is replaced entirely
48
+ * — auth vars are not auto-injected, so include them explicitly if needed.
49
+ */
50
+ environments?: Record<string, Record<string, unknown>>;
40
51
  }
41
52
  /**
42
53
  * Generates an OpenCollection (https://spec.opencollection.com/) API collection
@@ -1 +1 @@
1
- {"version":3,"file":"codegen-bruno.d.ts","sourceRoot":"","sources":["../src/codegen-bruno.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,UAAU,EAMV,gBAAgB,EAGnB,MAAM,mBAAmB,CAAC;AAK3B,iGAAiG;AACjG,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,8JAA8J;AAC9J,eAAO,MAAM,iBAAiB,qCAAqC,CAAC;AAEpE,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kHAAkH;AAClH,MAAM,WAAW,gBAAgB;IAC7B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACjD;AAED,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,qBAAqB,GAAG,kBAAkB,EAAE,CAqDhH;AAED,sLAAsL;AACtL,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAUvD;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAOxF;AAubD,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASjD"}
1
+ {"version":3,"file":"codegen-bruno.d.ts","sourceRoot":"","sources":["../src/codegen-bruno.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,UAAU,EAMV,gBAAgB,EAGnB,MAAM,mBAAmB,CAAC;AAK3B,iGAAiG;AACjG,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,8JAA8J;AAC9J,eAAO,MAAM,iBAAiB,qCAAqC,CAAC;AAEpE,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kHAAkH;AAClH,MAAM,WAAW,gBAAgB;IAC7B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACjD;AAED,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,qBAAqB,GAAG,kBAAkB,EAAE,CAuEhH;AAED,sLAAsL;AACtL,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAUvD;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAOxF;AA2cD,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASjD"}
package/dist/index.d.ts CHANGED
@@ -17,6 +17,14 @@ export interface BrunoPluginConfig {
17
17
  * benefit from full coverage. Set to `false` to omit internal ops.
18
18
  */
19
19
  includeInternal?: boolean;
20
+ /**
21
+ * Map of environment name → variables. Each entry produces a
22
+ * `environments/<name>.yml` file. When omitted, a default `local.yml` is
23
+ * emitted with `baseUrl=http://localhost:3000` and any auth env-var
24
+ * placeholders. When provided, the default is replaced entirely; include
25
+ * auth variables (e.g. `token`) explicitly if you need them.
26
+ */
27
+ environments?: Record<string, Record<string, unknown>>;
20
28
  }
21
29
  /** Full plugin options shape read from `ctx.options` — extends {@link BrunoPluginConfig} with the `auth` block. */
22
30
  export interface BrunoPluginOptions extends BrunoPluginConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,8GAA8G;AAC9G,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,mHAAmH;AACnH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IACzD,IAAI,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;KAAE,CAAC;CACnF;AAID,QAAA,MAAM,MAAM,EAAE,iBAsBb,CAAC;AAEF,eAAe,MAAM,CAAC;AAItB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAAE,GAChF,iBAAiB,CAsBnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,8GAA8G;AAC9G,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1D;AAED,mHAAmH;AACnH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IACzD,IAAI,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;KAAE,CAAC;CACnF;AAID,QAAA,MAAM,MAAM,EAAE,iBAuBb,CAAC;AAEF,eAAe,MAAM,CAAC;AAItB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAAE,GAChF,iBAAiB,CAwBnB"}
package/dist/index.js CHANGED
@@ -21,12 +21,20 @@ function generateOpenCollection(roots, options) {
21
21
  relativePath: "opencollection.yml",
22
22
  content: generateCollectionRoot(options.collectionName, defaultScheme)
23
23
  });
24
- files.push({
25
- relativePath: "environments/local.yml",
26
- content: generateEnvFile(defaultScheme)
24
+ for (const envFile of generateEnvFiles(options.environments, defaultScheme)) {
25
+ files.push(envFile);
26
+ }
27
+ const sortedRoots = [
28
+ ...roots
29
+ ].sort((a, b) => {
30
+ const aArea = a.meta["area"] ?? deriveFolderName(a.file);
31
+ const bArea = b.meta["area"] ?? deriveFolderName(b.file);
32
+ const cmp = aArea.localeCompare(bArea);
33
+ if (cmp !== 0) return cmp;
34
+ return (a.meta["subarea"] ?? "").localeCompare(b.meta["subarea"] ?? "");
27
35
  });
28
- for (let rootIdx = 0; rootIdx < roots.length; rootIdx++) {
29
- const root = roots[rootIdx];
36
+ for (let rootIdx = 0; rootIdx < sortedRoots.length; rootIdx++) {
37
+ const root = sortedRoots[rootIdx];
30
38
  const folder = root.meta["area"] ? slugifyName(root.meta["area"]) : deriveFolderName(root.file);
31
39
  const displayName = (root.meta["area"] ?? folder).charAt(0).toUpperCase() + (root.meta["area"] ?? folder).slice(1);
32
40
  files.push({
@@ -43,24 +51,32 @@ function generateOpenCollection(roots, options) {
43
51
  content: generateFolderFile(subareaDisplayName, 1)
44
52
  });
45
53
  }
46
- let seq = 1;
54
+ const requests = [];
47
55
  for (const route of root.routes) {
48
56
  for (const op of route.operations) {
49
57
  if (!includeInternal && resolveModifiers(route, op).includes("internal")) continue;
50
- const requestName = op.name ?? route.path;
51
- const fileName = op.name ? `${slugifyName(op.name)}.yml` : `${op.method}-${sanitizePath(route.path)}.yml`;
52
- let content = generateRequestFile(route, op, requestName, seq, modelMap, root, defaultScheme, randomExamples);
53
- const pluginOverride = op.pluginFiles?.["bruno"];
54
- if (pluginOverride !== void 0) {
55
- content = mergePluginFile(content, pluginOverride);
56
- }
57
- files.push({
58
- relativePath: `${requestDir}/${fileName}`,
59
- content
58
+ requests.push({
59
+ route,
60
+ op,
61
+ requestName: op.name ?? route.path
60
62
  });
61
- seq++;
62
63
  }
63
64
  }
65
+ requests.sort((a, b) => a.requestName.localeCompare(b.requestName));
66
+ let seq = 1;
67
+ for (const { route, op, requestName } of requests) {
68
+ const fileName = op.name ? `${slugifyName(op.name)}.yml` : `${op.method}-${sanitizePath(route.path)}.yml`;
69
+ let content = generateRequestFile(route, op, requestName, seq, modelMap, root, defaultScheme, randomExamples);
70
+ const pluginOverride = op.pluginFiles?.["bruno"];
71
+ if (pluginOverride !== void 0) {
72
+ content = mergePluginFile(content, pluginOverride);
73
+ }
74
+ files.push({
75
+ relativePath: `${requestDir}/${fileName}`,
76
+ content
77
+ });
78
+ seq++;
79
+ }
64
80
  }
65
81
  const trackedPaths = [
66
82
  ...files.map((f) => f.relativePath),
@@ -125,23 +141,45 @@ function generateCollectionRoot(name, scheme) {
125
141
  return lines.join("\n");
126
142
  }
127
143
  __name(generateCollectionRoot, "generateCollectionRoot");
128
- function generateEnvFile(scheme) {
129
- const lines = [
130
- `name: Local`,
131
- `variables:`,
132
- ` - name: baseUrl`,
133
- ` value: "http://localhost:3000"`
134
- ];
144
+ function generateEnvFiles(environments, scheme) {
145
+ if (environments && Object.keys(environments).length > 0) {
146
+ return Object.entries(environments).map(([name, variables]) => ({
147
+ relativePath: `environments/${name}.yml`,
148
+ content: renderEnvFile(displayNameFor(name), variables)
149
+ }));
150
+ }
151
+ const defaultVars = {
152
+ baseUrl: "http://localhost:3000"
153
+ };
135
154
  if (scheme) {
136
- for (const varName of authEnvVarNames(scheme)) {
137
- lines.push(` - name: ${varName}`);
138
- lines.push(` value: ""`);
155
+ for (const varName of authEnvVarNames(scheme)) defaultVars[varName] = "";
156
+ }
157
+ return [
158
+ {
159
+ relativePath: "environments/local.yml",
160
+ content: renderEnvFile("Local", defaultVars)
139
161
  }
162
+ ];
163
+ }
164
+ __name(generateEnvFiles, "generateEnvFiles");
165
+ function renderEnvFile(name, variables) {
166
+ const lines = [
167
+ `name: ${name}`,
168
+ `variables:`
169
+ ];
170
+ for (const [key, value] of Object.entries(variables)) {
171
+ const escaped = String(value).replace(/\\/g, "\\\\").replace(/"/g, '\\"');
172
+ lines.push(` - name: ${key}`);
173
+ lines.push(` value: "${escaped}"`);
140
174
  }
141
175
  lines.push(``);
142
176
  return lines.join("\n");
143
177
  }
144
- __name(generateEnvFile, "generateEnvFile");
178
+ __name(renderEnvFile, "renderEnvFile");
179
+ function displayNameFor(envKey) {
180
+ return envKey.charAt(0).toUpperCase() + envKey.slice(1);
181
+ }
182
+ __name(displayNameFor, "displayNameFor");
145
183
  function generateFolderFile(name, seq) {
146
184
  return [
147
185
  `info:`,
@@ -586,7 +624,8 @@ var plugin = {
586
624
  contractRoots,
587
625
  auth,
588
626
  randomExamples: config.randomExamples ?? true,
589
- includeInternal: config.includeInternal
627
+ includeInternal: config.includeInternal,
628
+ environments: config.environments
590
629
  });
591
630
  for (const { relativePath, content } of files) {
592
631
  ctx.emitFile(resolve(outDir, relativePath), content);
@@ -607,7 +646,9 @@ function createBrunoPlugin(config, rootDir, auth) {
607
646
  collectionName,
608
647
  contractRoots,
609
648
  auth,
610
- randomExamples: config.randomExamples ?? true
649
+ randomExamples: config.randomExamples ?? true,
650
+ includeInternal: config.includeInternal,
651
+ environments: config.environments
611
652
  });
612
653
  for (const { relativePath, content } of files) {
613
654
  ctx.emitFile(resolve(outDir, relativePath), content);