@stackwright-pro/openapi 0.2.0 → 0.2.2-alpha.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.
package/dist/index.mjs CHANGED
@@ -1,3 +1,13 @@
1
+ import SwaggerParser from '@apidevtools/swagger-parser';
2
+ import { createAuxiliaryTypeStore, zodToTs, printNode } from 'zod-to-ts';
3
+ import fs, { realpathSync } from 'fs';
4
+ import path2 from 'path';
5
+ import crypto from 'crypto';
6
+ import https from 'https';
7
+ import http from 'http';
8
+ import { URL as URL$1 } from 'url';
9
+ import { isIP } from 'net';
10
+
1
11
  var __create = Object.create;
2
12
  var __defProp = Object.defineProperty;
3
13
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -20,14 +30,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
20
30
  // file that has been converted to a CommonJS file using a Babel-
21
31
  // compatible transform (i.e. "__esModule" has not been set), then set
22
32
  // "default" to the CommonJS "module.exports" for node compatibility.
23
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
33
+ !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
34
  mod
25
35
  ));
26
36
 
27
37
  // ../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer.js
28
38
  var require_analyzer = __commonJS({
29
- "../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer.js"(exports, module) {
30
- "use strict";
39
+ "../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer.js"(exports$1, module) {
31
40
  var AnalyzerOptions = class {
32
41
  constructor(heuristic_replimit) {
33
42
  this.heuristic_replimit = heuristic_replimit;
@@ -91,8 +100,7 @@ var require_analyzer = __commonJS({
91
100
 
92
101
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-dotall-s-transform.js
93
102
  var require_compat_dotall_s_transform = __commonJS({
94
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-dotall-s-transform.js"(exports, module) {
95
- "use strict";
103
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-dotall-s-transform.js"(exports$1, module) {
96
104
  module.exports = {
97
105
  // Whether `u` flag present. In which case we transform to
98
106
  // \u{10FFFF} instead of \uFFFF.
@@ -143,8 +151,7 @@ var require_compat_dotall_s_transform = __commonJS({
143
151
 
144
152
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-named-capturing-groups-transform.js
145
153
  var require_compat_named_capturing_groups_transform = __commonJS({
146
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-named-capturing-groups-transform.js"(exports, module) {
147
- "use strict";
154
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-named-capturing-groups-transform.js"(exports$1, module) {
148
155
  module.exports = {
149
156
  // To track the names of the groups, and return them
150
157
  // in the transform result state.
@@ -187,8 +194,7 @@ var require_compat_named_capturing_groups_transform = __commonJS({
187
194
 
188
195
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-x-flag-transform.js
189
196
  var require_compat_x_flag_transform = __commonJS({
190
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-x-flag-transform.js"(exports, module) {
191
- "use strict";
197
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-x-flag-transform.js"(exports$1, module) {
192
198
  module.exports = {
193
199
  RegExp: function RegExp2(_ref) {
194
200
  var node = _ref.node;
@@ -202,8 +208,7 @@ var require_compat_x_flag_transform = __commonJS({
202
208
 
203
209
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/index.js
204
210
  var require_transforms = __commonJS({
205
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/index.js"(exports, module) {
206
- "use strict";
211
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/index.js"(exports$1, module) {
207
212
  module.exports = {
208
213
  // "dotAll" `s` flag
209
214
  dotAll: require_compat_dotall_s_transform(),
@@ -217,8 +222,7 @@ var require_transforms = __commonJS({
217
222
 
218
223
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/generator/index.js
219
224
  var require_generator = __commonJS({
220
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/generator/index.js"(exports, module) {
221
- "use strict";
225
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/generator/index.js"(exports$1, module) {
222
226
  function gen(node) {
223
227
  return node ? generator[node.type](node) : "";
224
228
  }
@@ -357,8 +361,7 @@ var require_generator = __commonJS({
357
361
 
358
362
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/unicode/parser-unicode-properties.js
359
363
  var require_parser_unicode_properties = __commonJS({
360
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/unicode/parser-unicode-properties.js"(exports, module) {
361
- "use strict";
364
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/unicode/parser-unicode-properties.js"(exports$1, module) {
362
365
  var NON_BINARY_PROP_NAMES_TO_ALIASES = {
363
366
  General_Category: "gc",
364
367
  Script: "sc",
@@ -704,8 +707,7 @@ var require_parser_unicode_properties = __commonJS({
704
707
 
705
708
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/generated/regexp-tree.js
706
709
  var require_regexp_tree = __commonJS({
707
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/generated/regexp-tree.js"(exports, module) {
708
- "use strict";
710
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/generated/regexp-tree.js"(exports$1, module) {
709
711
  var _slicedToArray = /* @__PURE__ */ (function() {
710
712
  function sliceIterator(arr, i) {
711
713
  var _arr = [];
@@ -750,7 +752,6 @@ var require_regexp_tree = __commonJS({
750
752
  }
751
753
  }
752
754
  var yytext = void 0;
753
- var yyleng = void 0;
754
755
  var yy = {};
755
756
  var __ = void 0;
756
757
  var __loc = void 0;
@@ -805,7 +806,6 @@ var require_regexp_tree = __commonJS({
805
806
  if (_2loc) {
806
807
  _loc = loc(_1loc || _2loc, _3loc || _2loc);
807
808
  }
808
- ;
809
809
  __ = Node({
810
810
  type: "Disjunction",
811
811
  left: _1,
@@ -1274,7 +1274,7 @@ var require_regexp_tree = __commonJS({
1274
1274
  }
1275
1275
  if (matched !== null) {
1276
1276
  yytext = matched;
1277
- yyleng = yytext.length;
1277
+ yytext.length;
1278
1278
  var token = lexRule[1].call(this);
1279
1279
  if (!token) {
1280
1280
  return this.getNextToken();
@@ -1456,7 +1456,7 @@ var require_regexp_tree = __commonJS({
1456
1456
  var reduceStackEntry = { symbol: production[0] };
1457
1457
  if (hasSemanticAction) {
1458
1458
  yytext = shiftedToken ? shiftedToken.value : null;
1459
- yyleng = shiftedToken ? shiftedToken.value.length : null;
1459
+ shiftedToken ? shiftedToken.value.length : null;
1460
1460
  var semanticActionArgs = locationArgs !== null ? semanticValueArgs.concat(locationArgs) : semanticValueArgs;
1461
1461
  production[2].apply(production, _toConsumableArray(semanticActionArgs));
1462
1462
  reduceStackEntry.semanticValue = __;
@@ -1851,8 +1851,7 @@ var require_regexp_tree = __commonJS({
1851
1851
 
1852
1852
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/index.js
1853
1853
  var require_parser = __commonJS({
1854
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/index.js"(exports, module) {
1855
- "use strict";
1854
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/index.js"(exports$1, module) {
1856
1855
  var regexpTreeParser = require_regexp_tree();
1857
1856
  var generatedParseFn = regexpTreeParser.parse.bind(regexpTreeParser);
1858
1857
  regexpTreeParser.parse = function(regexp, options) {
@@ -1865,8 +1864,7 @@ var require_parser = __commonJS({
1865
1864
 
1866
1865
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/node-path.js
1867
1866
  var require_node_path = __commonJS({
1868
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/node-path.js"(exports, module) {
1869
- "use strict";
1867
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/node-path.js"(exports$1, module) {
1870
1868
  var _createClass = /* @__PURE__ */ (function() {
1871
1869
  function defineProperties(target, props) {
1872
1870
  for (var i = 0; i < props.length; i++) {
@@ -2198,8 +2196,7 @@ var require_node_path = __commonJS({
2198
2196
 
2199
2197
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/index.js
2200
2198
  var require_traverse = __commonJS({
2201
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/index.js"(exports, module) {
2202
- "use strict";
2199
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/index.js"(exports$1, module) {
2203
2200
  var NodePath = require_node_path();
2204
2201
  function astTraverse(root) {
2205
2202
  var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
@@ -2433,8 +2430,7 @@ var require_traverse = __commonJS({
2433
2430
 
2434
2431
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/index.js
2435
2432
  var require_transform = __commonJS({
2436
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/index.js"(exports, module) {
2437
- "use strict";
2433
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/index.js"(exports$1, module) {
2438
2434
  var _createClass = /* @__PURE__ */ (function() {
2439
2435
  function defineProperties(target, props) {
2440
2436
  for (var i = 0; i < props.length; i++) {
@@ -2567,8 +2563,7 @@ var require_transform = __commonJS({
2567
2563
 
2568
2564
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/index.js
2569
2565
  var require_compat_transpiler = __commonJS({
2570
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/index.js"(exports, module) {
2571
- "use strict";
2566
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/index.js"(exports$1, module) {
2572
2567
  var compatTransforms = require_transforms();
2573
2568
  var _transform = require_transform();
2574
2569
  module.exports = {
@@ -2603,8 +2598,7 @@ var require_compat_transpiler = __commonJS({
2603
2598
 
2604
2599
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/utils/clone.js
2605
2600
  var require_clone = __commonJS({
2606
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/utils/clone.js"(exports, module) {
2607
- "use strict";
2601
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/utils/clone.js"(exports$1, module) {
2608
2602
  module.exports = function clone(obj) {
2609
2603
  if (obj === null || typeof obj !== "object") {
2610
2604
  return obj;
@@ -2625,8 +2619,7 @@ var require_clone = __commonJS({
2625
2619
 
2626
2620
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-surrogate-pair-to-single-unicode-transform.js
2627
2621
  var require_char_surrogate_pair_to_single_unicode_transform = __commonJS({
2628
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-surrogate-pair-to-single-unicode-transform.js"(exports, module) {
2629
- "use strict";
2622
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-surrogate-pair-to-single-unicode-transform.js"(exports$1, module) {
2630
2623
  module.exports = {
2631
2624
  shouldRun: function shouldRun(ast) {
2632
2625
  return ast.flags.includes("u");
@@ -2645,8 +2638,7 @@ var require_char_surrogate_pair_to_single_unicode_transform = __commonJS({
2645
2638
 
2646
2639
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-code-to-simple-char-transform.js
2647
2640
  var require_char_code_to_simple_char_transform = __commonJS({
2648
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-code-to-simple-char-transform.js"(exports, module) {
2649
- "use strict";
2641
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-code-to-simple-char-transform.js"(exports$1, module) {
2650
2642
  var UPPER_A_CP = "A".codePointAt(0);
2651
2643
  var UPPER_Z_CP = "Z".codePointAt(0);
2652
2644
  var LOWER_A_CP = "a".codePointAt(0);
@@ -2699,8 +2691,7 @@ var require_char_code_to_simple_char_transform = __commonJS({
2699
2691
 
2700
2692
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-case-insensitive-lowercase-transform.js
2701
2693
  var require_char_case_insensitive_lowercase_transform = __commonJS({
2702
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-case-insensitive-lowercase-transform.js"(exports, module) {
2703
- "use strict";
2694
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-case-insensitive-lowercase-transform.js"(exports$1, module) {
2704
2695
  var UPPER_A_CP = "A".codePointAt(0);
2705
2696
  var UPPER_Z_CP = "Z".codePointAt(0);
2706
2697
  module.exports = {
@@ -2776,8 +2767,7 @@ var require_char_case_insensitive_lowercase_transform = __commonJS({
2776
2767
 
2777
2768
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-remove-duplicates-transform.js
2778
2769
  var require_char_class_remove_duplicates_transform = __commonJS({
2779
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-remove-duplicates-transform.js"(exports, module) {
2780
- "use strict";
2770
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-remove-duplicates-transform.js"(exports$1, module) {
2781
2771
  module.exports = {
2782
2772
  CharacterClass: function CharacterClass(path3) {
2783
2773
  var node = path3.node;
@@ -2798,8 +2788,7 @@ var require_char_class_remove_duplicates_transform = __commonJS({
2798
2788
 
2799
2789
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/utils.js
2800
2790
  var require_utils = __commonJS({
2801
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/utils.js"(exports, module) {
2802
- "use strict";
2791
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/utils.js"(exports$1, module) {
2803
2792
  function _toConsumableArray(arr) {
2804
2793
  if (Array.isArray(arr)) {
2805
2794
  for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
@@ -2859,8 +2848,7 @@ var require_utils = __commonJS({
2859
2848
 
2860
2849
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifiers-merge-transform.js
2861
2850
  var require_quantifiers_merge_transform = __commonJS({
2862
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifiers-merge-transform.js"(exports, module) {
2863
- "use strict";
2851
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifiers-merge-transform.js"(exports$1, module) {
2864
2852
  var _require = require_utils();
2865
2853
  var increaseQuantifierByOne = _require.increaseQuantifierByOne;
2866
2854
  module.exports = {
@@ -2927,8 +2915,7 @@ var require_quantifiers_merge_transform = __commonJS({
2927
2915
 
2928
2916
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifier-range-to-symbol-transform.js
2929
2917
  var require_quantifier_range_to_symbol_transform = __commonJS({
2930
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifier-range-to-symbol-transform.js"(exports, module) {
2931
- "use strict";
2918
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifier-range-to-symbol-transform.js"(exports$1, module) {
2932
2919
  module.exports = {
2933
2920
  Quantifier: function Quantifier(path3) {
2934
2921
  var node = path3.node;
@@ -2968,8 +2955,7 @@ var require_quantifier_range_to_symbol_transform = __commonJS({
2968
2955
 
2969
2956
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-to-chars-transform.js
2970
2957
  var require_char_class_classranges_to_chars_transform = __commonJS({
2971
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-to-chars-transform.js"(exports, module) {
2972
- "use strict";
2958
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-to-chars-transform.js"(exports$1, module) {
2973
2959
  module.exports = {
2974
2960
  ClassRange: function ClassRange(path3) {
2975
2961
  var node = path3.node;
@@ -2986,8 +2972,7 @@ var require_char_class_classranges_to_chars_transform = __commonJS({
2986
2972
 
2987
2973
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-meta-transform.js
2988
2974
  var require_char_class_to_meta_transform = __commonJS({
2989
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-meta-transform.js"(exports, module) {
2990
- "use strict";
2975
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-meta-transform.js"(exports$1, module) {
2991
2976
  function _toConsumableArray(arr) {
2992
2977
  if (Array.isArray(arr)) {
2993
2978
  for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
@@ -3130,8 +3115,7 @@ var require_char_class_to_meta_transform = __commonJS({
3130
3115
 
3131
3116
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-single-char-transform.js
3132
3117
  var require_char_class_to_single_char_transform = __commonJS({
3133
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-single-char-transform.js"(exports, module) {
3134
- "use strict";
3118
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-single-char-transform.js"(exports$1, module) {
3135
3119
  module.exports = {
3136
3120
  CharacterClass: function CharacterClass(path3) {
3137
3121
  var node = path3.node;
@@ -3189,8 +3173,7 @@ var require_char_class_to_single_char_transform = __commonJS({
3189
3173
 
3190
3174
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-escape-unescape-transform.js
3191
3175
  var require_char_escape_unescape_transform = __commonJS({
3192
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-escape-unescape-transform.js"(exports, module) {
3193
- "use strict";
3176
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-escape-unescape-transform.js"(exports$1, module) {
3194
3177
  module.exports = {
3195
3178
  _hasXFlag: false,
3196
3179
  init: function init(ast) {
@@ -3289,8 +3272,7 @@ var require_char_escape_unescape_transform = __commonJS({
3289
3272
 
3290
3273
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-merge-transform.js
3291
3274
  var require_char_class_classranges_merge_transform = __commonJS({
3292
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-merge-transform.js"(exports, module) {
3293
- "use strict";
3275
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-merge-transform.js"(exports$1, module) {
3294
3276
  module.exports = {
3295
3277
  _hasIUFlags: false,
3296
3278
  init: function init(ast) {
@@ -3508,8 +3490,7 @@ var require_char_class_classranges_merge_transform = __commonJS({
3508
3490
 
3509
3491
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
3510
3492
  var require_disjunction_remove_duplicates_transform = __commonJS({
3511
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js"(exports, module) {
3512
- "use strict";
3493
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js"(exports$1, module) {
3513
3494
  var NodePath = require_node_path();
3514
3495
  var _require = require_utils();
3515
3496
  var disjunctionToList = _require.disjunctionToList;
@@ -3534,8 +3515,7 @@ var require_disjunction_remove_duplicates_transform = __commonJS({
3534
3515
 
3535
3516
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/group-single-chars-to-char-class.js
3536
3517
  var require_group_single_chars_to_char_class = __commonJS({
3537
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/group-single-chars-to-char-class.js"(exports, module) {
3538
- "use strict";
3518
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/group-single-chars-to-char-class.js"(exports$1, module) {
3539
3519
  module.exports = {
3540
3520
  Disjunction: function Disjunction(path3) {
3541
3521
  var node = path3.node, parent = path3.parent;
@@ -3596,8 +3576,7 @@ var require_group_single_chars_to_char_class = __commonJS({
3596
3576
 
3597
3577
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/remove-empty-group-transform.js
3598
3578
  var require_remove_empty_group_transform = __commonJS({
3599
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/remove-empty-group-transform.js"(exports, module) {
3600
- "use strict";
3579
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/remove-empty-group-transform.js"(exports$1, module) {
3601
3580
  module.exports = {
3602
3581
  Group: function Group(path3) {
3603
3582
  var node = path3.node, parent = path3.parent;
@@ -3617,8 +3596,7 @@ var require_remove_empty_group_transform = __commonJS({
3617
3596
 
3618
3597
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/ungroup-transform.js
3619
3598
  var require_ungroup_transform = __commonJS({
3620
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/ungroup-transform.js"(exports, module) {
3621
- "use strict";
3599
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/ungroup-transform.js"(exports$1, module) {
3622
3600
  function _toConsumableArray(arr) {
3623
3601
  if (Array.isArray(arr)) {
3624
3602
  for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
@@ -3680,8 +3658,7 @@ var require_ungroup_transform = __commonJS({
3680
3658
 
3681
3659
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/combine-repeating-patterns-transform.js
3682
3660
  var require_combine_repeating_patterns_transform = __commonJS({
3683
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/combine-repeating-patterns-transform.js"(exports, module) {
3684
- "use strict";
3661
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/combine-repeating-patterns-transform.js"(exports$1, module) {
3685
3662
  function _toConsumableArray(arr) {
3686
3663
  if (Array.isArray(arr)) {
3687
3664
  for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
@@ -3832,8 +3809,7 @@ var require_combine_repeating_patterns_transform = __commonJS({
3832
3809
 
3833
3810
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/index.js
3834
3811
  var require_transforms2 = __commonJS({
3835
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/index.js"(exports, module) {
3836
- "use strict";
3812
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/index.js"(exports$1, module) {
3837
3813
  module.exports = /* @__PURE__ */ new Map([
3838
3814
  // \ud83d\ude80 -> \u{1f680}
3839
3815
  ["charSurrogatePairToSingleUnicode", require_char_surrogate_pair_to_single_unicode_transform()],
@@ -3873,8 +3849,7 @@ var require_transforms2 = __commonJS({
3873
3849
 
3874
3850
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/index.js
3875
3851
  var require_optimizer = __commonJS({
3876
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/index.js"(exports, module) {
3877
- "use strict";
3852
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/index.js"(exports$1, module) {
3878
3853
  var clone = require_clone();
3879
3854
  var parser = require_parser();
3880
3855
  var transform = require_transform();
@@ -3937,8 +3912,7 @@ var require_optimizer = __commonJS({
3937
3912
 
3938
3913
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/special-symbols.js
3939
3914
  var require_special_symbols = __commonJS({
3940
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/special-symbols.js"(exports, module) {
3941
- "use strict";
3915
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/special-symbols.js"(exports$1, module) {
3942
3916
  var EPSILON = "\u03B5";
3943
3917
  var EPSILON_CLOSURE = EPSILON + "*";
3944
3918
  module.exports = {
@@ -3950,8 +3924,7 @@ var require_special_symbols = __commonJS({
3950
3924
 
3951
3925
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa.js
3952
3926
  var require_nfa = __commonJS({
3953
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa.js"(exports, module) {
3954
- "use strict";
3927
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa.js"(exports$1, module) {
3955
3928
  var _slicedToArray = /* @__PURE__ */ (function() {
3956
3929
  function sliceIterator(arr, i) {
3957
3930
  var _arr = [];
@@ -4187,8 +4160,7 @@ var require_nfa = __commonJS({
4187
4160
 
4188
4161
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa-minimizer.js
4189
4162
  var require_dfa_minimizer = __commonJS({
4190
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa-minimizer.js"(exports, module) {
4191
- "use strict";
4163
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa-minimizer.js"(exports$1, module) {
4192
4164
  var _slicedToArray = /* @__PURE__ */ (function() {
4193
4165
  function sliceIterator(arr, i) {
4194
4166
  var _arr = [];
@@ -4527,8 +4499,7 @@ var require_dfa_minimizer = __commonJS({
4527
4499
 
4528
4500
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa.js
4529
4501
  var require_dfa = __commonJS({
4530
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa.js"(exports, module) {
4531
- "use strict";
4502
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa.js"(exports$1, module) {
4532
4503
  var _createClass = /* @__PURE__ */ (function() {
4533
4504
  function defineProperties(target, props) {
4534
4505
  for (var i = 0; i < props.length; i++) {
@@ -4844,8 +4815,7 @@ var require_dfa = __commonJS({
4844
4815
 
4845
4816
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/state.js
4846
4817
  var require_state = __commonJS({
4847
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/state.js"(exports, module) {
4848
- "use strict";
4818
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/state.js"(exports$1, module) {
4849
4819
  var _createClass = /* @__PURE__ */ (function() {
4850
4820
  function defineProperties(target, props) {
4851
4821
  for (var i = 0; i < props.length; i++) {
@@ -4910,8 +4880,7 @@ var require_state = __commonJS({
4910
4880
 
4911
4881
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-state.js
4912
4882
  var require_nfa_state = __commonJS({
4913
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-state.js"(exports, module) {
4914
- "use strict";
4883
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-state.js"(exports$1, module) {
4915
4884
  var _createClass = /* @__PURE__ */ (function() {
4916
4885
  function defineProperties(target, props) {
4917
4886
  for (var i = 0; i < props.length; i++) {
@@ -5109,8 +5078,7 @@ var require_nfa_state = __commonJS({
5109
5078
 
5110
5079
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/builders.js
5111
5080
  var require_builders = __commonJS({
5112
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/builders.js"(exports, module) {
5113
- "use strict";
5081
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/builders.js"(exports$1, module) {
5114
5082
  var NFA = require_nfa();
5115
5083
  var NFAState = require_nfa_state();
5116
5084
  var _require = require_special_symbols();
@@ -5239,8 +5207,7 @@ var require_builders = __commonJS({
5239
5207
 
5240
5208
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-from-regexp.js
5241
5209
  var require_nfa_from_regexp = __commonJS({
5242
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-from-regexp.js"(exports, module) {
5243
- "use strict";
5210
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-from-regexp.js"(exports$1, module) {
5244
5211
  function _toConsumableArray(arr) {
5245
5212
  if (Array.isArray(arr)) {
5246
5213
  for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
@@ -5323,8 +5290,7 @@ var require_nfa_from_regexp = __commonJS({
5323
5290
 
5324
5291
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/index.js
5325
5292
  var require_finite_automaton = __commonJS({
5326
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/index.js"(exports, module) {
5327
- "use strict";
5293
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/index.js"(exports$1, module) {
5328
5294
  var NFA = require_nfa();
5329
5295
  var DFA = require_dfa();
5330
5296
  var nfaFromRegExp = require_nfa_from_regexp();
@@ -5373,8 +5339,7 @@ var require_finite_automaton = __commonJS({
5373
5339
 
5374
5340
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/runtime/index.js
5375
5341
  var require_runtime = __commonJS({
5376
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/runtime/index.js"(exports, module) {
5377
- "use strict";
5342
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/runtime/index.js"(exports$1, module) {
5378
5343
  var _createClass = /* @__PURE__ */ (function() {
5379
5344
  function defineProperties(target, props) {
5380
5345
  for (var i = 0; i < props.length; i++) {
@@ -5463,8 +5428,7 @@ var require_runtime = __commonJS({
5463
5428
 
5464
5429
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/regexp-tree.js
5465
5430
  var require_regexp_tree2 = __commonJS({
5466
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/regexp-tree.js"(exports, module) {
5467
- "use strict";
5431
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/regexp-tree.js"(exports$1, module) {
5468
5432
  var compatTranspiler = require_compat_transpiler();
5469
5433
  var generator = require_generator();
5470
5434
  var optimizer = require_optimizer();
@@ -5615,16 +5579,14 @@ var require_regexp_tree2 = __commonJS({
5615
5579
 
5616
5580
  // ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/index.js
5617
5581
  var require_regexp_tree3 = __commonJS({
5618
- "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/index.js"(exports, module) {
5619
- "use strict";
5582
+ "../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/index.js"(exports$1, module) {
5620
5583
  module.exports = require_regexp_tree2();
5621
5584
  }
5622
5585
  });
5623
5586
 
5624
5587
  // ../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/heuristic-analyzer.js
5625
5588
  var require_heuristic_analyzer = __commonJS({
5626
- "../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/heuristic-analyzer.js"(exports, module) {
5627
- "use strict";
5589
+ "../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/heuristic-analyzer.js"(exports$1, module) {
5628
5590
  var regexpTree2 = require_regexp_tree3();
5629
5591
  var analyzer = require_analyzer();
5630
5592
  var HeuristicAnalyzer = class extends analyzer.Analyzer {
@@ -5683,8 +5645,7 @@ var require_heuristic_analyzer = __commonJS({
5683
5645
 
5684
5646
  // ../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer-family.js
5685
5647
  var require_analyzer_family = __commonJS({
5686
- "../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer-family.js"(exports, module) {
5687
- "use strict";
5648
+ "../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer-family.js"(exports$1, module) {
5688
5649
  var heuristicAnalyzer = require_heuristic_analyzer();
5689
5650
  module.exports = [heuristicAnalyzer];
5690
5651
  }
@@ -5692,8 +5653,7 @@ var require_analyzer_family = __commonJS({
5692
5653
 
5693
5654
  // ../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/index.js
5694
5655
  var require_safe_regex = __commonJS({
5695
- "../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/index.js"(exports, module) {
5696
- "use strict";
5656
+ "../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/index.js"(exports$1, module) {
5697
5657
  var analyzer = require_analyzer();
5698
5658
  var analyzerFamily = require_analyzer_family();
5699
5659
  var DEFAULT_SAFE_REP_LIMIT = 25;
@@ -5748,9 +5708,6 @@ var require_safe_regex = __commonJS({
5748
5708
  module.exports = safeRegex;
5749
5709
  }
5750
5710
  });
5751
-
5752
- // src/parser/OpenAPIParser.ts
5753
- import SwaggerParser from "@apidevtools/swagger-parser";
5754
5711
  var OpenAPIParser = class {
5755
5712
  /**
5756
5713
  * Parse an OpenAPI specification from URL or file path
@@ -5793,8 +5750,9 @@ var OpenAPIParser = class {
5793
5750
  * Detect OpenAPI version from document
5794
5751
  */
5795
5752
  detectVersion(document) {
5796
- if ("openapi" in document) {
5797
- return document.openapi;
5753
+ const openapiVersion = "openapi" in document ? document.openapi : void 0;
5754
+ if (openapiVersion !== void 0) {
5755
+ return openapiVersion;
5798
5756
  }
5799
5757
  throw new Error("Invalid OpenAPI document: missing openapi version field");
5800
5758
  }
@@ -5805,7 +5763,9 @@ var OpenAPIParser = class {
5805
5763
  if (error instanceof Error) {
5806
5764
  const message = `Failed to parse OpenAPI spec from "${specPath}": ${error.message}`;
5807
5765
  const enhancedError = new Error(message);
5808
- enhancedError.stack = error.stack;
5766
+ if (error.stack !== void 0) {
5767
+ enhancedError.stack = error.stack;
5768
+ }
5809
5769
  return enhancedError;
5810
5770
  }
5811
5771
  return new Error(`Failed to parse OpenAPI spec from "${specPath}": ${String(error)}`);
@@ -5878,9 +5838,9 @@ var SchemaResolver = class {
5878
5838
  endpoints.push({
5879
5839
  path: path3,
5880
5840
  method,
5881
- operationId: operation.operationId,
5882
- summary: operation.summary,
5883
- description: operation.description
5841
+ ...operation.operationId !== void 0 && { operationId: operation.operationId },
5842
+ ...operation.summary !== void 0 && { summary: operation.summary },
5843
+ ...operation.description !== void 0 && { description: operation.description }
5884
5844
  });
5885
5845
  }
5886
5846
  }
@@ -6112,9 +6072,6 @@ ${fields}
6112
6072
  }
6113
6073
  }
6114
6074
  };
6115
-
6116
- // src/compiler/TypeGenerator.ts
6117
- import { printNode, zodToTs, createAuxiliaryTypeStore } from "zod-to-ts";
6118
6075
  var TypeGenerator = class {
6119
6076
  /**
6120
6077
  * Generate TypeScript type definition from a Zod schema
@@ -6225,18 +6182,21 @@ var CollectionProviderGenerator = class {
6225
6182
  }
6226
6183
  const isArray = schema.type === "array";
6227
6184
  const schemaName = `${this.capitalize(collectionName)}Schema`;
6228
- return this.generateProviderCode({
6185
+ const params = {
6229
6186
  providerName,
6230
6187
  collectionName,
6231
6188
  endpoint,
6232
6189
  slugField,
6233
6190
  method,
6234
6191
  baseUrl,
6235
- auth,
6236
6192
  schemaName,
6237
6193
  isArray,
6238
6194
  bare
6239
- });
6195
+ };
6196
+ if (auth !== void 0) {
6197
+ params.auth = auth;
6198
+ }
6199
+ return this.generateProviderCode(params);
6240
6200
  }
6241
6201
  /**
6242
6202
  * Generate the complete provider code
@@ -6258,12 +6218,12 @@ var CollectionProviderGenerator = class {
6258
6218
  const arraySchemaName = `${schemaName.replace(/Schema$/, "")}ArraySchema`;
6259
6219
  const validationSchema = isArray ? arraySchemaName : schemaName;
6260
6220
  const imports = bare ? "" : `import type { CollectionProvider, CollectionItem } from '@stackwright/collections';
6261
- import { ${isArray ? arraySchemaName : schemaName} } from './schemas';
6221
+ import { ${isArray ? arraySchemaName : schemaName}} } from './schemas';
6262
6222
 
6263
6223
  `;
6264
6224
  return `${imports}/**
6265
6225
  * CollectionProvider for ${collectionName}
6266
- *
6226
+ *
6267
6227
  * Generated from OpenAPI endpoint: ${method.toUpperCase()} ${endpoint}
6268
6228
  */
6269
6229
  export class ${providerName} implements CollectionProvider {
@@ -6409,7 +6369,10 @@ export class ${providerName} implements CollectionProvider {
6409
6369
  */
6410
6370
  getBaseUrl() {
6411
6371
  if ("servers" in this.document && this.document.servers && this.document.servers.length > 0) {
6412
- return this.document.servers[0].url;
6372
+ const firstServer = this.document.servers[0];
6373
+ if (firstServer !== void 0) {
6374
+ return firstServer.url;
6375
+ }
6413
6376
  }
6414
6377
  return "http://localhost:3000";
6415
6378
  }
@@ -6437,7 +6400,8 @@ export class ${providerName} implements CollectionProvider {
6437
6400
  */
6438
6401
  guessTitle(slugField) {
6439
6402
  const titleFields = ["title", "name", "label", "displayName"];
6440
- return titleFields[0] + ` || item.${slugField}`;
6403
+ const firstField = titleFields[0];
6404
+ return firstField !== void 0 ? firstField : `item.${slugField}`;
6441
6405
  }
6442
6406
  };
6443
6407
 
@@ -6447,7 +6411,9 @@ var ClientGenerator = class {
6447
6411
  constructor(document, schemaMapping) {
6448
6412
  this.document = document;
6449
6413
  this.resolver = new SchemaResolver(document);
6450
- this.schemaMapping = schemaMapping;
6414
+ if (schemaMapping !== void 0) {
6415
+ this.schemaMapping = schemaMapping;
6416
+ }
6451
6417
  this.requiredSchemas = /* @__PURE__ */ new Set();
6452
6418
  this.generatedRequestSchemas = /* @__PURE__ */ new Set();
6453
6419
  }
@@ -6539,7 +6505,7 @@ var ClientGenerator = class {
6539
6505
  code += "// Request Schemas (Zod Validation)\n";
6540
6506
  code += "// ============================================================================\n\n";
6541
6507
  for (const endpoint of endpoints) {
6542
- const operationId = endpoint.operationId || this.getMethodName(endpoint);
6508
+ endpoint.operationId || this.getMethodName(endpoint);
6543
6509
  const typeName = this.getOperationTypeName(endpoint);
6544
6510
  const schemaName = `${typeName}RequestSchema`;
6545
6511
  const schemaCode = this.generateRequestSchemaForEndpoint(endpoint);
@@ -6805,7 +6771,8 @@ ${paramSchemas.join(",\n")}
6805
6771
  */
6806
6772
  extractComponentName(ref) {
6807
6773
  const parts = ref.split("/");
6808
- return parts[parts.length - 1];
6774
+ const lastPart = parts[parts.length - 1];
6775
+ return lastPart ?? ref;
6809
6776
  }
6810
6777
  /**
6811
6778
  * Escape string for use in Zod .describe()
@@ -7552,9 +7519,9 @@ ${paramSchemas.join(",\n")}
7552
7519
  endpoints.push({
7553
7520
  path: path3,
7554
7521
  method,
7555
- operationId: operation.operationId,
7556
- summary: operation.summary,
7557
- description: operation.description,
7522
+ ...operation.operationId !== void 0 && { operationId: operation.operationId },
7523
+ ...operation.summary !== void 0 && { summary: operation.summary },
7524
+ ...operation.description !== void 0 && { description: operation.description },
7558
7525
  operation
7559
7526
  });
7560
7527
  }
@@ -7642,7 +7609,8 @@ ${paramSchemas.join(",\n")}
7642
7609
  */
7643
7610
  getDefaultBaseUrl() {
7644
7611
  if ("servers" in this.document && this.document.servers && this.document.servers.length > 0) {
7645
- return this.document.servers[0].url;
7612
+ const firstServer = this.document.servers[0];
7613
+ return firstServer ? firstServer.url : "http://localhost:3000";
7646
7614
  }
7647
7615
  return "http://localhost:3000";
7648
7616
  }
@@ -7680,10 +7648,6 @@ var OpenAPICollectionProvider = class {
7680
7648
  }
7681
7649
  };
7682
7650
 
7683
- // src/prebuild/OpenAPIPlugin.ts
7684
- import fs2 from "fs";
7685
- import path2 from "path";
7686
-
7687
7651
  // src/utils/EndpointFilter.ts
7688
7652
  var EndpointFilter = class {
7689
7653
  include;
@@ -7737,13 +7701,18 @@ var EndpointFilter = class {
7737
7701
  let matches = true;
7738
7702
  for (let i = 0; i < patternSegments.length; i++) {
7739
7703
  const pSeg = patternSegments[i];
7704
+ if (pSeg === void 0) {
7705
+ matches = false;
7706
+ break;
7707
+ }
7740
7708
  if (pSeg === "*" || pSeg === "**") {
7741
7709
  continue;
7742
7710
  }
7743
7711
  if (pSeg.startsWith("{") && pSeg.endsWith("}")) {
7744
7712
  continue;
7745
7713
  }
7746
- if (pSeg !== pathSegments[i]) {
7714
+ const pathSeg = pathSegments[i];
7715
+ if (pSeg !== pathSeg) {
7747
7716
  matches = false;
7748
7717
  break;
7749
7718
  }
@@ -7780,16 +7749,6 @@ var EndpointFilter = class {
7780
7749
  return new RegExp(`^${result}$`);
7781
7750
  }
7782
7751
  };
7783
-
7784
- // src/utils/ApprovedSpecsValidator.ts
7785
- import crypto from "crypto";
7786
- import fs from "fs";
7787
- import https from "https";
7788
- import http from "http";
7789
- import { URL as URL2 } from "url";
7790
- import path from "path";
7791
- import { realpathSync } from "fs";
7792
- import { isIP } from "net";
7793
7752
  var ApprovedSpecsValidator = class {
7794
7753
  allowlist;
7795
7754
  cache = /* @__PURE__ */ new Map();
@@ -7814,7 +7773,7 @@ var ApprovedSpecsValidator = class {
7814
7773
  */
7815
7774
  buildAllowedDirs() {
7816
7775
  const cwd = process.cwd();
7817
- return [cwd, path.join(cwd, "specs"), path.join(cwd, ".stackwright")];
7776
+ return [cwd, path2.join(cwd, "specs"), path2.join(cwd, ".stackwright")];
7818
7777
  }
7819
7778
  /**
7820
7779
  * Validate that a file path is within allowed directories (path traversal prevention).
@@ -7828,7 +7787,7 @@ var ApprovedSpecsValidator = class {
7828
7787
  const realPath = realpathSync(filePath);
7829
7788
  return this.ALLOWED_DIRS.some((dir) => {
7830
7789
  const realDir = realpathSync(dir);
7831
- return realPath.startsWith(realDir + path.sep) || realPath === realDir;
7790
+ return realPath.startsWith(realDir + path2.sep) || realPath === realDir;
7832
7791
  });
7833
7792
  } catch {
7834
7793
  return false;
@@ -7879,7 +7838,7 @@ var ApprovedSpecsValidator = class {
7879
7838
  */
7880
7839
  isRedirectSafe(location, originalProtocol) {
7881
7840
  try {
7882
- const redirectUrl = new URL2(location);
7841
+ const redirectUrl = new URL$1(location);
7883
7842
  if (redirectUrl.protocol === "http:" && originalProtocol === "https:") {
7884
7843
  return false;
7885
7844
  }
@@ -7901,19 +7860,20 @@ var ApprovedSpecsValidator = class {
7901
7860
  }
7902
7861
  }
7903
7862
  const ipv4Match = redirectUrl.hostname.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
7904
- if (ipv4Match) {
7863
+ if (ipv4Match && ipv4Match.length >= 5) {
7905
7864
  const octets = ipv4Match.slice(1, 5).map(Number);
7906
- const [first, second] = octets;
7907
- if (first === 10) {
7865
+ const first = octets[0];
7866
+ const second = octets[1];
7867
+ if (first !== void 0 && first === 10) {
7908
7868
  return false;
7909
7869
  }
7910
- if (first === 172 && second >= 16 && second <= 31) {
7870
+ if (first !== void 0 && second !== void 0 && first === 172 && second >= 16 && second <= 31) {
7911
7871
  return false;
7912
7872
  }
7913
- if (first === 192 && second === 168) {
7873
+ if (first !== void 0 && second !== void 0 && first === 192 && second === 168) {
7914
7874
  return false;
7915
7875
  }
7916
- if (first === 127) {
7876
+ if (first !== void 0 && first === 127) {
7917
7877
  return false;
7918
7878
  }
7919
7879
  }
@@ -8101,7 +8061,7 @@ var ApprovedSpecsValidator = class {
8101
8061
  if (!url.startsWith("http://") && !url.startsWith("https://")) {
8102
8062
  return { error: `Invalid URL protocol. Expected http:// or https://, got: ${url}` };
8103
8063
  }
8104
- const parsed = new URL2(url);
8064
+ const parsed = new URL$1(url);
8105
8065
  const requestProtocol = originalProtocol || parsed.protocol;
8106
8066
  return new Promise((resolve) => {
8107
8067
  const client = url.startsWith("https") ? https : http;
@@ -8147,7 +8107,7 @@ var ApprovedSpecsValidator = class {
8147
8107
  urlsMatch(url1, url2) {
8148
8108
  const normalize = (u) => {
8149
8109
  try {
8150
- const parsed = new URL2(u);
8110
+ const parsed = new URL$1(u);
8151
8111
  const normalized = `${parsed.protocol}//${parsed.hostname}${parsed.pathname}`;
8152
8112
  return normalized.replace(/\/$/, "").toLowerCase();
8153
8113
  } catch {
@@ -8313,7 +8273,7 @@ var OpenAPIPlugin = class {
8313
8273
  console.log(` > Filter: include [${includeStr}]${excludeStr}`);
8314
8274
  }
8315
8275
  const outputDir = path2.join(projectRoot, "src", "generated", name);
8316
- fs2.mkdirSync(outputDir, { recursive: true });
8276
+ fs.mkdirSync(outputDir, { recursive: true });
8317
8277
  const schemaMapping = await this.generateSchemas(
8318
8278
  document,
8319
8279
  collections || [],
@@ -8436,7 +8396,7 @@ import { z } from 'zod';
8436
8396
  };
8437
8397
  }
8438
8398
  }
8439
- fs2.writeFileSync(path2.join(outputDir, "schemas.ts"), schemasCode);
8399
+ fs.writeFileSync(path2.join(outputDir, "schemas.ts"), schemasCode);
8440
8400
  return schemaMapping;
8441
8401
  }
8442
8402
  async generateTypes(document, collections, outputDir, integrationName) {
@@ -8461,7 +8421,7 @@ import type * as schemas from './schemas';
8461
8421
  `;
8462
8422
  }
8463
8423
  }
8464
- fs2.writeFileSync(path2.join(outputDir, "types.ts"), typesCode);
8424
+ fs.writeFileSync(path2.join(outputDir, "types.ts"), typesCode);
8465
8425
  }
8466
8426
  async generateProvider(document, config, outputDir, integrationName) {
8467
8427
  const generator = new CollectionProviderGenerator(document);
@@ -8477,12 +8437,12 @@ import type * as schemas from './schemas';
8477
8437
  slugField: collection.slug_field,
8478
8438
  filters: collection.filters
8479
8439
  };
8480
- let providerOptions = { bare: true };
8440
+ const providerOptions = { bare: true };
8481
8441
  if (auth) {
8482
8442
  if (auth.type === "bearer" || auth.type === "apiKey") {
8483
8443
  providerOptions.auth = {
8484
8444
  type: auth.type,
8485
- headerName: auth.type === "apiKey" ? "X-API-Key" : void 0
8445
+ ...auth.type === "apiKey" && { headerName: "X-API-Key" }
8486
8446
  };
8487
8447
  } else if (auth.type === "oauth2") {
8488
8448
  console.warn(
@@ -8515,7 +8475,7 @@ import { ${Array.from(schemaImports).join(", ")} } from './schemas';
8515
8475
 
8516
8476
  `;
8517
8477
  providerCode += classBlocks.join("\n");
8518
- fs2.writeFileSync(path2.join(outputDir, "provider.ts"), providerCode);
8478
+ fs.writeFileSync(path2.join(outputDir, "provider.ts"), providerCode);
8519
8479
  }
8520
8480
  async generateClient(document, outputDir, integrationName, schemaMapping, endpointFilter) {
8521
8481
  const paths = document.paths || {};
@@ -8539,11 +8499,12 @@ import { ${Array.from(schemaImports).join(", ")} } from './schemas';
8539
8499
  validateResponses: true,
8540
8500
  strictValidation: false
8541
8501
  });
8542
- fs2.writeFileSync(path2.join(outputDir, "client.ts"), clientCode);
8502
+ fs.writeFileSync(path2.join(outputDir, "client.ts"), clientCode);
8543
8503
  }
8544
8504
  extractComponentName(ref) {
8545
8505
  const parts = ref.split("/");
8546
- return parts[parts.length - 1];
8506
+ const lastPart = parts[parts.length - 1];
8507
+ return lastPart ?? ref;
8547
8508
  }
8548
8509
  getOperationTypeName(operationId) {
8549
8510
  return operationId.charAt(0).toUpperCase() + operationId.slice(1);
@@ -8570,8 +8531,6 @@ import { ${Array.from(schemaImports).join(", ")} } from './schemas';
8570
8531
  function createOpenAPIPlugin() {
8571
8532
  return new OpenAPIPlugin();
8572
8533
  }
8573
-
8574
- // src/sources/openapi.ts
8575
8534
  var BLOCKED_HOST_PATTERNS = [
8576
8535
  /^localhost$/i,
8577
8536
  /^127\./,
@@ -8596,63 +8555,115 @@ var BLOCKED_HOST_PATTERNS = [
8596
8555
  // AWS metadata endpoint
8597
8556
  /^metadata\.googleapis\.com$/i,
8598
8557
  // GCP metadata endpoint
8558
+ /^metadata\.azure\.com$/i,
8559
+ // Azure metadata endpoint
8560
+ /^imds\.azure\.com$/i,
8561
+ // Azure IMDS endpoint
8599
8562
  /^100\.100\.100\.200$/
8600
8563
  // Alibaba Cloud metadata
8601
8564
  ];
8565
+ var BLOCKED_IPV6_PREFIXES = [
8566
+ "::1",
8567
+ // Loopback
8568
+ "fe80:",
8569
+ // Link-local
8570
+ "fc",
8571
+ // Unique local (fc00::/7 — covers fc00:: through fcff::)
8572
+ "fd"
8573
+ // Unique local (short form)
8574
+ ];
8602
8575
  var ALLOWED_PROTOCOLS = ["http:", "https:"];
8603
- function validateFetchUrl(baseUrl) {
8576
+ function validateUrlSafe(baseUrl) {
8604
8577
  let url;
8605
8578
  try {
8606
8579
  url = new URL(baseUrl);
8607
8580
  } catch {
8608
- throw new Error("SSRF Prevention: baseUrl must be a valid absolute URL");
8581
+ throw new Error("SECURITY: baseUrl must be a valid absolute URL");
8609
8582
  }
8610
8583
  if (!ALLOWED_PROTOCOLS.includes(url.protocol)) {
8611
- throw new Error(
8612
- "SSRF Prevention: Only HTTP and HTTPS protocols are allowed, got " + url.protocol
8613
- );
8584
+ throw new Error("SECURITY: Only HTTP and HTTPS protocols are allowed, got " + url.protocol);
8614
8585
  }
8615
8586
  const hostname = url.hostname.toLowerCase();
8616
8587
  for (const pattern of BLOCKED_HOST_PATTERNS) {
8617
8588
  if (pattern.test(hostname)) {
8618
- throw new Error("SSRF Prevention: Blocked internal network address: " + hostname);
8589
+ throw new Error("SECURITY: Blocked internal network address: " + hostname);
8619
8590
  }
8620
8591
  }
8621
8592
  const ip = url.hostname;
8622
8593
  if (/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(ip)) {
8623
8594
  const octets = ip.split(".").map(Number);
8624
- if (octets[0] === 127) {
8625
- throw new Error("SSRF Prevention: Blocked loopback address: " + ip);
8626
- }
8627
- if (octets[0] === 10) {
8628
- throw new Error("SSRF Prevention: Blocked private address: " + ip);
8629
- }
8630
- if (octets[0] === 172 && octets[1] >= 16 && octets[1] <= 31) {
8631
- throw new Error("SSRF Prevention: Blocked private address: " + ip);
8632
- }
8633
- if (octets[0] === 192 && octets[1] === 168) {
8634
- throw new Error("SSRF Prevention: Blocked private address: " + ip);
8635
- }
8636
- if (octets[0] === 169 && octets[1] === 254) {
8637
- throw new Error("SSRF Prevention: Blocked link-local address: " + ip);
8638
- }
8639
- if (octets[0] === 0) {
8640
- throw new Error("SSRF Prevention: Blocked current network address: " + ip);
8595
+ const first = octets[0];
8596
+ const second = octets[1];
8597
+ if (first !== void 0 && first === 127) {
8598
+ throw new Error("SECURITY: Base URL resolves to private IP");
8599
+ }
8600
+ if (first !== void 0 && first === 10) {
8601
+ throw new Error("SECURITY: Base URL resolves to private IP");
8602
+ }
8603
+ if (first !== void 0 && second !== void 0 && first === 172 && second >= 16 && second <= 31) {
8604
+ throw new Error("SECURITY: Base URL resolves to private IP");
8605
+ }
8606
+ if (first !== void 0 && second !== void 0 && first === 192 && second === 168) {
8607
+ throw new Error("SECURITY: Base URL resolves to private IP");
8608
+ }
8609
+ if (first !== void 0 && second !== void 0 && first === 169 && second === 254) {
8610
+ throw new Error("SECURITY: Base URL resolves to private IP");
8611
+ }
8612
+ if (first !== void 0 && first === 0) {
8613
+ throw new Error("SECURITY: Base URL resolves to private IP");
8614
+ }
8615
+ }
8616
+ const cleanHostname = hostname.replace(/^\[|\]$/g, "");
8617
+ const ipVersion = isIP(cleanHostname);
8618
+ if (ipVersion === 6) {
8619
+ for (const prefix of BLOCKED_IPV6_PREFIXES) {
8620
+ if (cleanHostname.startsWith(prefix)) {
8621
+ throw new Error("SECURITY: Base URL resolves to private IP");
8622
+ }
8623
+ }
8624
+ if (cleanHostname.startsWith("::ffff:")) {
8625
+ const mapped = cleanHostname.slice("::ffff:".length);
8626
+ let octets = null;
8627
+ const decMatch = mapped.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
8628
+ if (decMatch) {
8629
+ octets = decMatch.slice(1, 5).map(Number);
8630
+ }
8631
+ const hexMatch = mapped.match(/^([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i);
8632
+ if (!octets && hexMatch && hexMatch[1] !== void 0 && hexMatch[2] !== void 0) {
8633
+ const high = parseInt(hexMatch[1], 16);
8634
+ const low = parseInt(hexMatch[2], 16);
8635
+ octets = [high >> 8 & 255, high & 255, low >> 8 & 255, low & 255];
8636
+ }
8637
+ if (octets !== null) {
8638
+ const o0 = octets[0];
8639
+ const o1 = octets[1];
8640
+ if (o0 === 127 || // 127.0.0.0/8 loopback
8641
+ o0 === 10 || // 10.0.0.0/8 private
8642
+ o0 === 0 || // 0.0.0.0/8 current network
8643
+ o0 === 172 && o1 !== void 0 && o1 >= 16 && o1 <= 31 || // 172.16/12 private
8644
+ o0 === 192 && o1 === 168 || // 192.168/16 private
8645
+ o0 === 169 && o1 === 254) {
8646
+ throw new Error("SECURITY: Base URL resolves to private IP");
8647
+ }
8648
+ } else {
8649
+ throw new Error("SECURITY: Base URL resolves to unrecognisable IPv4-mapped address");
8650
+ }
8641
8651
  }
8642
8652
  }
8643
8653
  return url;
8644
8654
  }
8655
+ var isUrlSafe = validateUrlSafe;
8645
8656
  function validateEndpoint(endpoint) {
8646
8657
  if (endpoint.includes("..")) {
8647
- throw new Error("SSRF Prevention: Path traversal detected in endpoint");
8658
+ throw new Error("SECURITY: Path traversal detected in endpoint");
8648
8659
  }
8649
8660
  if (endpoint.includes("\\")) {
8650
- throw new Error("SSRF Prevention: Backslash detected in endpoint");
8661
+ throw new Error("SECURITY: Backslash detected in endpoint");
8651
8662
  }
8652
8663
  }
8653
8664
  function createOpenAPIFetcher(config) {
8654
8665
  const { baseUrl, endpoint, method = "get", params, body, headers = {}, auth, schema } = config;
8655
- const validatedBaseUrl = validateFetchUrl(baseUrl);
8666
+ const validatedBaseUrl = validateUrlSafe(baseUrl);
8656
8667
  validateEndpoint(endpoint);
8657
8668
  return async () => {
8658
8669
  const url = new URL(endpoint, validatedBaseUrl.toString());
@@ -8677,7 +8688,9 @@ function createOpenAPIFetcher(config) {
8677
8688
  const response = await fetch(url.toString(), {
8678
8689
  method: method.toUpperCase(),
8679
8690
  headers: requestHeaders,
8680
- body: supportsBody && body ? JSON.stringify(body) : void 0
8691
+ body: supportsBody && body ? JSON.stringify(body) : null,
8692
+ redirect: "error"
8693
+ // Prevent SSRF via 301/302 redirect to internal addresses
8681
8694
  });
8682
8695
  if (!response.ok) {
8683
8696
  const safeStatus = response.status;
@@ -8690,17 +8703,7 @@ function createOpenAPIFetcher(config) {
8690
8703
  return result;
8691
8704
  };
8692
8705
  }
8693
- export {
8694
- ApprovedSpecsValidator,
8695
- ClientGenerator,
8696
- CollectionProviderGenerator,
8697
- EndpointFilter,
8698
- OpenAPICollectionProvider,
8699
- OpenAPIParser,
8700
- OpenAPIPlugin,
8701
- SchemaResolver,
8702
- TypeGenerator,
8703
- ZodSchemaGenerator,
8704
- createOpenAPIFetcher,
8705
- createOpenAPIPlugin
8706
- };
8706
+
8707
+ export { ApprovedSpecsValidator, ClientGenerator, CollectionProviderGenerator, EndpointFilter, OpenAPICollectionProvider, OpenAPIParser, OpenAPIPlugin, SchemaResolver, TypeGenerator, ZodSchemaGenerator, createOpenAPIFetcher, createOpenAPIPlugin, isUrlSafe, validateUrlSafe };
8708
+ //# sourceMappingURL=index.mjs.map
8709
+ //# sourceMappingURL=index.mjs.map