@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.d.mts +19 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.js +308 -306
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +207 -204
- package/dist/index.mjs.map +1 -0
- package/package.json +8 -4
package/dist/index.js
CHANGED
|
@@ -1,4 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var SwaggerParser = require('@apidevtools/swagger-parser');
|
|
4
|
+
var zodToTs = require('zod-to-ts');
|
|
5
|
+
var fs = require('fs');
|
|
6
|
+
var path2 = require('path');
|
|
7
|
+
var crypto = require('crypto');
|
|
8
|
+
var https = require('https');
|
|
9
|
+
var http = require('http');
|
|
10
|
+
var url = require('url');
|
|
11
|
+
var net = require('net');
|
|
12
|
+
|
|
13
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
|
|
15
|
+
var SwaggerParser__default = /*#__PURE__*/_interopDefault(SwaggerParser);
|
|
16
|
+
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
17
|
+
var path2__default = /*#__PURE__*/_interopDefault(path2);
|
|
18
|
+
var crypto__default = /*#__PURE__*/_interopDefault(crypto);
|
|
19
|
+
var https__default = /*#__PURE__*/_interopDefault(https);
|
|
20
|
+
var http__default = /*#__PURE__*/_interopDefault(http);
|
|
21
|
+
|
|
2
22
|
var __create = Object.create;
|
|
3
23
|
var __defProp = Object.defineProperty;
|
|
4
24
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -8,10 +28,6 @@ var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
8
28
|
var __commonJS = (cb, mod) => function __require() {
|
|
9
29
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
30
|
};
|
|
11
|
-
var __export = (target, all) => {
|
|
12
|
-
for (var name in all)
|
|
13
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
-
};
|
|
15
31
|
var __copyProps = (to, from, except, desc) => {
|
|
16
32
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
33
|
for (let key of __getOwnPropNames(from))
|
|
@@ -25,15 +41,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
25
41
|
// file that has been converted to a CommonJS file using a Babel-
|
|
26
42
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
27
43
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
28
|
-
|
|
44
|
+
!mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
29
45
|
mod
|
|
30
46
|
));
|
|
31
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
32
47
|
|
|
33
48
|
// ../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer.js
|
|
34
49
|
var require_analyzer = __commonJS({
|
|
35
|
-
"../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer.js"(
|
|
36
|
-
"use strict";
|
|
50
|
+
"../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer.js"(exports$1, module) {
|
|
37
51
|
var AnalyzerOptions = class {
|
|
38
52
|
constructor(heuristic_replimit) {
|
|
39
53
|
this.heuristic_replimit = heuristic_replimit;
|
|
@@ -54,7 +68,7 @@ var require_analyzer = __commonJS({
|
|
|
54
68
|
return null;
|
|
55
69
|
}
|
|
56
70
|
};
|
|
57
|
-
|
|
71
|
+
module.exports = function(re, replimit) {
|
|
58
72
|
let myRegExp = null;
|
|
59
73
|
let ast = null;
|
|
60
74
|
try {
|
|
@@ -88,7 +102,7 @@ var require_analyzer = __commonJS({
|
|
|
88
102
|
});
|
|
89
103
|
return maxObservedStarHeight <= 1 && repetitionCount <= replimit;
|
|
90
104
|
};
|
|
91
|
-
|
|
105
|
+
module.exports = {
|
|
92
106
|
"AnalyzerOptions": AnalyzerOptions,
|
|
93
107
|
"Analyzer": Analyzer
|
|
94
108
|
};
|
|
@@ -97,9 +111,8 @@ var require_analyzer = __commonJS({
|
|
|
97
111
|
|
|
98
112
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-dotall-s-transform.js
|
|
99
113
|
var require_compat_dotall_s_transform = __commonJS({
|
|
100
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-dotall-s-transform.js"(
|
|
101
|
-
|
|
102
|
-
module2.exports = {
|
|
114
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-dotall-s-transform.js"(exports$1, module) {
|
|
115
|
+
module.exports = {
|
|
103
116
|
// Whether `u` flag present. In which case we transform to
|
|
104
117
|
// \u{10FFFF} instead of \uFFFF.
|
|
105
118
|
_hasUFlag: false,
|
|
@@ -149,9 +162,8 @@ var require_compat_dotall_s_transform = __commonJS({
|
|
|
149
162
|
|
|
150
163
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-named-capturing-groups-transform.js
|
|
151
164
|
var require_compat_named_capturing_groups_transform = __commonJS({
|
|
152
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-named-capturing-groups-transform.js"(
|
|
153
|
-
|
|
154
|
-
module2.exports = {
|
|
165
|
+
"../../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) {
|
|
166
|
+
module.exports = {
|
|
155
167
|
// To track the names of the groups, and return them
|
|
156
168
|
// in the transform result state.
|
|
157
169
|
//
|
|
@@ -193,9 +205,8 @@ var require_compat_named_capturing_groups_transform = __commonJS({
|
|
|
193
205
|
|
|
194
206
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-x-flag-transform.js
|
|
195
207
|
var require_compat_x_flag_transform = __commonJS({
|
|
196
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-x-flag-transform.js"(
|
|
197
|
-
|
|
198
|
-
module2.exports = {
|
|
208
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-x-flag-transform.js"(exports$1, module) {
|
|
209
|
+
module.exports = {
|
|
199
210
|
RegExp: function RegExp2(_ref) {
|
|
200
211
|
var node = _ref.node;
|
|
201
212
|
if (node.flags.includes("x")) {
|
|
@@ -208,9 +219,8 @@ var require_compat_x_flag_transform = __commonJS({
|
|
|
208
219
|
|
|
209
220
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/index.js
|
|
210
221
|
var require_transforms = __commonJS({
|
|
211
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/index.js"(
|
|
212
|
-
|
|
213
|
-
module2.exports = {
|
|
222
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/transforms/index.js"(exports$1, module) {
|
|
223
|
+
module.exports = {
|
|
214
224
|
// "dotAll" `s` flag
|
|
215
225
|
dotAll: require_compat_dotall_s_transform(),
|
|
216
226
|
// Named capturing groups.
|
|
@@ -223,8 +233,7 @@ var require_transforms = __commonJS({
|
|
|
223
233
|
|
|
224
234
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/generator/index.js
|
|
225
235
|
var require_generator = __commonJS({
|
|
226
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/generator/index.js"(
|
|
227
|
-
"use strict";
|
|
236
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/generator/index.js"(exports$1, module) {
|
|
228
237
|
function gen(node) {
|
|
229
238
|
return node ? generator[node.type](node) : "";
|
|
230
239
|
}
|
|
@@ -350,7 +359,7 @@ var require_generator = __commonJS({
|
|
|
350
359
|
return "\\" + escapeChar + "{" + namePart + node.value + "}";
|
|
351
360
|
}
|
|
352
361
|
};
|
|
353
|
-
|
|
362
|
+
module.exports = {
|
|
354
363
|
/**
|
|
355
364
|
* Generates a regexp string from an AST.
|
|
356
365
|
*
|
|
@@ -363,8 +372,7 @@ var require_generator = __commonJS({
|
|
|
363
372
|
|
|
364
373
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/unicode/parser-unicode-properties.js
|
|
365
374
|
var require_parser_unicode_properties = __commonJS({
|
|
366
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/unicode/parser-unicode-properties.js"(
|
|
367
|
-
"use strict";
|
|
375
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/unicode/parser-unicode-properties.js"(exports$1, module) {
|
|
368
376
|
var NON_BINARY_PROP_NAMES_TO_ALIASES = {
|
|
369
377
|
General_Category: "gc",
|
|
370
378
|
Script: "sc",
|
|
@@ -687,7 +695,7 @@ var require_parser_unicode_properties = __commonJS({
|
|
|
687
695
|
}
|
|
688
696
|
return null;
|
|
689
697
|
}
|
|
690
|
-
|
|
698
|
+
module.exports = {
|
|
691
699
|
isAlias,
|
|
692
700
|
isValidName,
|
|
693
701
|
isValidValue,
|
|
@@ -710,8 +718,7 @@ var require_parser_unicode_properties = __commonJS({
|
|
|
710
718
|
|
|
711
719
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/generated/regexp-tree.js
|
|
712
720
|
var require_regexp_tree = __commonJS({
|
|
713
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/generated/regexp-tree.js"(
|
|
714
|
-
"use strict";
|
|
721
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/generated/regexp-tree.js"(exports$1, module) {
|
|
715
722
|
var _slicedToArray = /* @__PURE__ */ (function() {
|
|
716
723
|
function sliceIterator(arr, i) {
|
|
717
724
|
var _arr = [];
|
|
@@ -756,7 +763,6 @@ var require_regexp_tree = __commonJS({
|
|
|
756
763
|
}
|
|
757
764
|
}
|
|
758
765
|
var yytext = void 0;
|
|
759
|
-
var yyleng = void 0;
|
|
760
766
|
var yy = {};
|
|
761
767
|
var __ = void 0;
|
|
762
768
|
var __loc = void 0;
|
|
@@ -811,7 +817,6 @@ var require_regexp_tree = __commonJS({
|
|
|
811
817
|
if (_2loc) {
|
|
812
818
|
_loc = loc(_1loc || _2loc, _3loc || _2loc);
|
|
813
819
|
}
|
|
814
|
-
;
|
|
815
820
|
__ = Node({
|
|
816
821
|
type: "Disjunction",
|
|
817
822
|
left: _1,
|
|
@@ -1280,7 +1285,7 @@ var require_regexp_tree = __commonJS({
|
|
|
1280
1285
|
}
|
|
1281
1286
|
if (matched !== null) {
|
|
1282
1287
|
yytext = matched;
|
|
1283
|
-
|
|
1288
|
+
yytext.length;
|
|
1284
1289
|
var token = lexRule[1].call(this);
|
|
1285
1290
|
if (!token) {
|
|
1286
1291
|
return this.getNextToken();
|
|
@@ -1462,7 +1467,7 @@ var require_regexp_tree = __commonJS({
|
|
|
1462
1467
|
var reduceStackEntry = { symbol: production[0] };
|
|
1463
1468
|
if (hasSemanticAction) {
|
|
1464
1469
|
yytext = shiftedToken ? shiftedToken.value : null;
|
|
1465
|
-
|
|
1470
|
+
shiftedToken ? shiftedToken.value.length : null;
|
|
1466
1471
|
var semanticActionArgs = locationArgs !== null ? semanticValueArgs.concat(locationArgs) : semanticValueArgs;
|
|
1467
1472
|
production[2].apply(production, _toConsumableArray(semanticActionArgs));
|
|
1468
1473
|
reduceStackEntry.semanticValue = __;
|
|
@@ -1851,28 +1856,26 @@ var require_regexp_tree = __commonJS({
|
|
|
1851
1856
|
function parseError(message) {
|
|
1852
1857
|
throw new SyntaxError(message);
|
|
1853
1858
|
}
|
|
1854
|
-
|
|
1859
|
+
module.exports = yyparse;
|
|
1855
1860
|
}
|
|
1856
1861
|
});
|
|
1857
1862
|
|
|
1858
1863
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/index.js
|
|
1859
1864
|
var require_parser = __commonJS({
|
|
1860
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/index.js"(
|
|
1861
|
-
"use strict";
|
|
1865
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/parser/index.js"(exports$1, module) {
|
|
1862
1866
|
var regexpTreeParser = require_regexp_tree();
|
|
1863
1867
|
var generatedParseFn = regexpTreeParser.parse.bind(regexpTreeParser);
|
|
1864
1868
|
regexpTreeParser.parse = function(regexp, options) {
|
|
1865
1869
|
return generatedParseFn("" + regexp, options);
|
|
1866
1870
|
};
|
|
1867
1871
|
regexpTreeParser.setOptions({ captureLocations: false });
|
|
1868
|
-
|
|
1872
|
+
module.exports = regexpTreeParser;
|
|
1869
1873
|
}
|
|
1870
1874
|
});
|
|
1871
1875
|
|
|
1872
1876
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/node-path.js
|
|
1873
1877
|
var require_node_path = __commonJS({
|
|
1874
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/node-path.js"(
|
|
1875
|
-
"use strict";
|
|
1878
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/node-path.js"(exports$1, module) {
|
|
1876
1879
|
var _createClass = /* @__PURE__ */ (function() {
|
|
1877
1880
|
function defineProperties(target, props) {
|
|
1878
1881
|
for (var i = 0; i < props.length; i++) {
|
|
@@ -2198,14 +2201,13 @@ var require_node_path = __commonJS({
|
|
|
2198
2201
|
}
|
|
2199
2202
|
return value;
|
|
2200
2203
|
}
|
|
2201
|
-
|
|
2204
|
+
module.exports = NodePath;
|
|
2202
2205
|
}
|
|
2203
2206
|
});
|
|
2204
2207
|
|
|
2205
2208
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/index.js
|
|
2206
2209
|
var require_traverse = __commonJS({
|
|
2207
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/index.js"(
|
|
2208
|
-
"use strict";
|
|
2210
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/traverse/index.js"(exports$1, module) {
|
|
2209
2211
|
var NodePath = require_node_path();
|
|
2210
2212
|
function astTraverse(root) {
|
|
2211
2213
|
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
@@ -2254,7 +2256,7 @@ var require_traverse = __commonJS({
|
|
|
2254
2256
|
}
|
|
2255
2257
|
visit(root, null);
|
|
2256
2258
|
}
|
|
2257
|
-
|
|
2259
|
+
module.exports = {
|
|
2258
2260
|
/**
|
|
2259
2261
|
* Traverses an AST.
|
|
2260
2262
|
*
|
|
@@ -2439,8 +2441,7 @@ var require_traverse = __commonJS({
|
|
|
2439
2441
|
|
|
2440
2442
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/index.js
|
|
2441
2443
|
var require_transform = __commonJS({
|
|
2442
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/index.js"(
|
|
2443
|
-
"use strict";
|
|
2444
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/index.js"(exports$1, module) {
|
|
2444
2445
|
var _createClass = /* @__PURE__ */ (function() {
|
|
2445
2446
|
function defineProperties(target, props) {
|
|
2446
2447
|
for (var i = 0; i < props.length; i++) {
|
|
@@ -2522,7 +2523,7 @@ var require_transform = __commonJS({
|
|
|
2522
2523
|
}]);
|
|
2523
2524
|
return TransformResult2;
|
|
2524
2525
|
})();
|
|
2525
|
-
|
|
2526
|
+
module.exports = {
|
|
2526
2527
|
/**
|
|
2527
2528
|
* Expose `TransformResult`.
|
|
2528
2529
|
*/
|
|
@@ -2573,11 +2574,10 @@ var require_transform = __commonJS({
|
|
|
2573
2574
|
|
|
2574
2575
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/index.js
|
|
2575
2576
|
var require_compat_transpiler = __commonJS({
|
|
2576
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/index.js"(
|
|
2577
|
-
"use strict";
|
|
2577
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/index.js"(exports$1, module) {
|
|
2578
2578
|
var compatTransforms = require_transforms();
|
|
2579
2579
|
var _transform = require_transform();
|
|
2580
|
-
|
|
2580
|
+
module.exports = {
|
|
2581
2581
|
/**
|
|
2582
2582
|
* Translates a regexp in new syntax to equivalent regexp in old syntax.
|
|
2583
2583
|
*
|
|
@@ -2609,9 +2609,8 @@ var require_compat_transpiler = __commonJS({
|
|
|
2609
2609
|
|
|
2610
2610
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/utils/clone.js
|
|
2611
2611
|
var require_clone = __commonJS({
|
|
2612
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/utils/clone.js"(
|
|
2613
|
-
|
|
2614
|
-
module2.exports = function clone(obj) {
|
|
2612
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/utils/clone.js"(exports$1, module) {
|
|
2613
|
+
module.exports = function clone(obj) {
|
|
2615
2614
|
if (obj === null || typeof obj !== "object") {
|
|
2616
2615
|
return obj;
|
|
2617
2616
|
}
|
|
@@ -2631,9 +2630,8 @@ var require_clone = __commonJS({
|
|
|
2631
2630
|
|
|
2632
2631
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-surrogate-pair-to-single-unicode-transform.js
|
|
2633
2632
|
var require_char_surrogate_pair_to_single_unicode_transform = __commonJS({
|
|
2634
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-surrogate-pair-to-single-unicode-transform.js"(
|
|
2635
|
-
|
|
2636
|
-
module2.exports = {
|
|
2633
|
+
"../../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) {
|
|
2634
|
+
module.exports = {
|
|
2637
2635
|
shouldRun: function shouldRun(ast) {
|
|
2638
2636
|
return ast.flags.includes("u");
|
|
2639
2637
|
},
|
|
@@ -2651,15 +2649,14 @@ var require_char_surrogate_pair_to_single_unicode_transform = __commonJS({
|
|
|
2651
2649
|
|
|
2652
2650
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-code-to-simple-char-transform.js
|
|
2653
2651
|
var require_char_code_to_simple_char_transform = __commonJS({
|
|
2654
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-code-to-simple-char-transform.js"(
|
|
2655
|
-
"use strict";
|
|
2652
|
+
"../../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) {
|
|
2656
2653
|
var UPPER_A_CP = "A".codePointAt(0);
|
|
2657
2654
|
var UPPER_Z_CP = "Z".codePointAt(0);
|
|
2658
2655
|
var LOWER_A_CP = "a".codePointAt(0);
|
|
2659
2656
|
var LOWER_Z_CP = "z".codePointAt(0);
|
|
2660
2657
|
var DIGIT_0_CP = "0".codePointAt(0);
|
|
2661
2658
|
var DIGIT_9_CP = "9".codePointAt(0);
|
|
2662
|
-
|
|
2659
|
+
module.exports = {
|
|
2663
2660
|
Char: function Char(path3) {
|
|
2664
2661
|
var node = path3.node, parent = path3.parent;
|
|
2665
2662
|
if (isNaN(node.codePoint) || node.kind === "simple") {
|
|
@@ -2705,11 +2702,10 @@ var require_char_code_to_simple_char_transform = __commonJS({
|
|
|
2705
2702
|
|
|
2706
2703
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-case-insensitive-lowercase-transform.js
|
|
2707
2704
|
var require_char_case_insensitive_lowercase_transform = __commonJS({
|
|
2708
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-case-insensitive-lowercase-transform.js"(
|
|
2709
|
-
"use strict";
|
|
2705
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-case-insensitive-lowercase-transform.js"(exports$1, module) {
|
|
2710
2706
|
var UPPER_A_CP = "A".codePointAt(0);
|
|
2711
2707
|
var UPPER_Z_CP = "Z".codePointAt(0);
|
|
2712
|
-
|
|
2708
|
+
module.exports = {
|
|
2713
2709
|
_AZClassRanges: null,
|
|
2714
2710
|
_hasUFlag: false,
|
|
2715
2711
|
init: function init(ast) {
|
|
@@ -2782,9 +2778,8 @@ var require_char_case_insensitive_lowercase_transform = __commonJS({
|
|
|
2782
2778
|
|
|
2783
2779
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-remove-duplicates-transform.js
|
|
2784
2780
|
var require_char_class_remove_duplicates_transform = __commonJS({
|
|
2785
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-remove-duplicates-transform.js"(
|
|
2786
|
-
|
|
2787
|
-
module2.exports = {
|
|
2781
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-remove-duplicates-transform.js"(exports$1, module) {
|
|
2782
|
+
module.exports = {
|
|
2788
2783
|
CharacterClass: function CharacterClass(path3) {
|
|
2789
2784
|
var node = path3.node;
|
|
2790
2785
|
var sources = {};
|
|
@@ -2804,8 +2799,7 @@ var require_char_class_remove_duplicates_transform = __commonJS({
|
|
|
2804
2799
|
|
|
2805
2800
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/utils.js
|
|
2806
2801
|
var require_utils = __commonJS({
|
|
2807
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/utils.js"(
|
|
2808
|
-
"use strict";
|
|
2802
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/transform/utils.js"(exports$1, module) {
|
|
2809
2803
|
function _toConsumableArray(arr) {
|
|
2810
2804
|
if (Array.isArray(arr)) {
|
|
2811
2805
|
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
|
|
@@ -2855,7 +2849,7 @@ var require_utils = __commonJS({
|
|
|
2855
2849
|
}
|
|
2856
2850
|
}
|
|
2857
2851
|
}
|
|
2858
|
-
|
|
2852
|
+
module.exports = {
|
|
2859
2853
|
disjunctionToList,
|
|
2860
2854
|
listToDisjunction,
|
|
2861
2855
|
increaseQuantifierByOne
|
|
@@ -2865,11 +2859,10 @@ var require_utils = __commonJS({
|
|
|
2865
2859
|
|
|
2866
2860
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifiers-merge-transform.js
|
|
2867
2861
|
var require_quantifiers_merge_transform = __commonJS({
|
|
2868
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifiers-merge-transform.js"(
|
|
2869
|
-
"use strict";
|
|
2862
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifiers-merge-transform.js"(exports$1, module) {
|
|
2870
2863
|
var _require = require_utils();
|
|
2871
2864
|
var increaseQuantifierByOne = _require.increaseQuantifierByOne;
|
|
2872
|
-
|
|
2865
|
+
module.exports = {
|
|
2873
2866
|
Repetition: function Repetition(path3) {
|
|
2874
2867
|
var node = path3.node, parent = path3.parent;
|
|
2875
2868
|
if (parent.type !== "Alternative" || !path3.index) {
|
|
@@ -2933,9 +2926,8 @@ var require_quantifiers_merge_transform = __commonJS({
|
|
|
2933
2926
|
|
|
2934
2927
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifier-range-to-symbol-transform.js
|
|
2935
2928
|
var require_quantifier_range_to_symbol_transform = __commonJS({
|
|
2936
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifier-range-to-symbol-transform.js"(
|
|
2937
|
-
|
|
2938
|
-
module2.exports = {
|
|
2929
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/quantifier-range-to-symbol-transform.js"(exports$1, module) {
|
|
2930
|
+
module.exports = {
|
|
2939
2931
|
Quantifier: function Quantifier(path3) {
|
|
2940
2932
|
var node = path3.node;
|
|
2941
2933
|
if (node.kind !== "Range") {
|
|
@@ -2974,9 +2966,8 @@ var require_quantifier_range_to_symbol_transform = __commonJS({
|
|
|
2974
2966
|
|
|
2975
2967
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-to-chars-transform.js
|
|
2976
2968
|
var require_char_class_classranges_to_chars_transform = __commonJS({
|
|
2977
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-to-chars-transform.js"(
|
|
2978
|
-
|
|
2979
|
-
module2.exports = {
|
|
2969
|
+
"../../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) {
|
|
2970
|
+
module.exports = {
|
|
2980
2971
|
ClassRange: function ClassRange(path3) {
|
|
2981
2972
|
var node = path3.node;
|
|
2982
2973
|
if (node.from.codePoint === node.to.codePoint) {
|
|
@@ -2992,8 +2983,7 @@ var require_char_class_classranges_to_chars_transform = __commonJS({
|
|
|
2992
2983
|
|
|
2993
2984
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-meta-transform.js
|
|
2994
2985
|
var require_char_class_to_meta_transform = __commonJS({
|
|
2995
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-meta-transform.js"(
|
|
2996
|
-
"use strict";
|
|
2986
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-meta-transform.js"(exports$1, module) {
|
|
2997
2987
|
function _toConsumableArray(arr) {
|
|
2998
2988
|
if (Array.isArray(arr)) {
|
|
2999
2989
|
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
|
|
@@ -3004,7 +2994,7 @@ var require_char_class_to_meta_transform = __commonJS({
|
|
|
3004
2994
|
return Array.from(arr);
|
|
3005
2995
|
}
|
|
3006
2996
|
}
|
|
3007
|
-
|
|
2997
|
+
module.exports = {
|
|
3008
2998
|
_hasIFlag: false,
|
|
3009
2999
|
_hasUFlag: false,
|
|
3010
3000
|
init: function init(ast) {
|
|
@@ -3136,9 +3126,8 @@ var require_char_class_to_meta_transform = __commonJS({
|
|
|
3136
3126
|
|
|
3137
3127
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-single-char-transform.js
|
|
3138
3128
|
var require_char_class_to_single_char_transform = __commonJS({
|
|
3139
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-single-char-transform.js"(
|
|
3140
|
-
|
|
3141
|
-
module2.exports = {
|
|
3129
|
+
"../../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) {
|
|
3130
|
+
module.exports = {
|
|
3142
3131
|
CharacterClass: function CharacterClass(path3) {
|
|
3143
3132
|
var node = path3.node;
|
|
3144
3133
|
if (node.expressions.length !== 1 || !hasAppropriateSiblings(path3) || !isAppropriateChar(node.expressions[0])) {
|
|
@@ -3195,9 +3184,8 @@ var require_char_class_to_single_char_transform = __commonJS({
|
|
|
3195
3184
|
|
|
3196
3185
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-escape-unescape-transform.js
|
|
3197
3186
|
var require_char_escape_unescape_transform = __commonJS({
|
|
3198
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-escape-unescape-transform.js"(
|
|
3199
|
-
|
|
3200
|
-
module2.exports = {
|
|
3187
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-escape-unescape-transform.js"(exports$1, module) {
|
|
3188
|
+
module.exports = {
|
|
3201
3189
|
_hasXFlag: false,
|
|
3202
3190
|
init: function init(ast) {
|
|
3203
3191
|
this._hasXFlag = ast.flags.includes("x");
|
|
@@ -3295,9 +3283,8 @@ var require_char_escape_unescape_transform = __commonJS({
|
|
|
3295
3283
|
|
|
3296
3284
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-merge-transform.js
|
|
3297
3285
|
var require_char_class_classranges_merge_transform = __commonJS({
|
|
3298
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-merge-transform.js"(
|
|
3299
|
-
|
|
3300
|
-
module2.exports = {
|
|
3286
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-merge-transform.js"(exports$1, module) {
|
|
3287
|
+
module.exports = {
|
|
3301
3288
|
_hasIUFlags: false,
|
|
3302
3289
|
init: function init(ast) {
|
|
3303
3290
|
this._hasIUFlags = ast.flags.includes("i") && ast.flags.includes("u");
|
|
@@ -3514,13 +3501,12 @@ var require_char_class_classranges_merge_transform = __commonJS({
|
|
|
3514
3501
|
|
|
3515
3502
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js
|
|
3516
3503
|
var require_disjunction_remove_duplicates_transform = __commonJS({
|
|
3517
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js"(
|
|
3518
|
-
"use strict";
|
|
3504
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js"(exports$1, module) {
|
|
3519
3505
|
var NodePath = require_node_path();
|
|
3520
3506
|
var _require = require_utils();
|
|
3521
3507
|
var disjunctionToList = _require.disjunctionToList;
|
|
3522
3508
|
var listToDisjunction = _require.listToDisjunction;
|
|
3523
|
-
|
|
3509
|
+
module.exports = {
|
|
3524
3510
|
Disjunction: function Disjunction(path3) {
|
|
3525
3511
|
var node = path3.node;
|
|
3526
3512
|
var uniqueNodesMap = {};
|
|
@@ -3540,9 +3526,8 @@ var require_disjunction_remove_duplicates_transform = __commonJS({
|
|
|
3540
3526
|
|
|
3541
3527
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/group-single-chars-to-char-class.js
|
|
3542
3528
|
var require_group_single_chars_to_char_class = __commonJS({
|
|
3543
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/group-single-chars-to-char-class.js"(
|
|
3544
|
-
|
|
3545
|
-
module2.exports = {
|
|
3529
|
+
"../../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) {
|
|
3530
|
+
module.exports = {
|
|
3546
3531
|
Disjunction: function Disjunction(path3) {
|
|
3547
3532
|
var node = path3.node, parent = path3.parent;
|
|
3548
3533
|
if (!handlers[parent.type]) {
|
|
@@ -3602,9 +3587,8 @@ var require_group_single_chars_to_char_class = __commonJS({
|
|
|
3602
3587
|
|
|
3603
3588
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/remove-empty-group-transform.js
|
|
3604
3589
|
var require_remove_empty_group_transform = __commonJS({
|
|
3605
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/remove-empty-group-transform.js"(
|
|
3606
|
-
|
|
3607
|
-
module2.exports = {
|
|
3590
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/remove-empty-group-transform.js"(exports$1, module) {
|
|
3591
|
+
module.exports = {
|
|
3608
3592
|
Group: function Group(path3) {
|
|
3609
3593
|
var node = path3.node, parent = path3.parent;
|
|
3610
3594
|
var childPath = path3.getChild();
|
|
@@ -3623,8 +3607,7 @@ var require_remove_empty_group_transform = __commonJS({
|
|
|
3623
3607
|
|
|
3624
3608
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/ungroup-transform.js
|
|
3625
3609
|
var require_ungroup_transform = __commonJS({
|
|
3626
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/ungroup-transform.js"(
|
|
3627
|
-
"use strict";
|
|
3610
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/ungroup-transform.js"(exports$1, module) {
|
|
3628
3611
|
function _toConsumableArray(arr) {
|
|
3629
3612
|
if (Array.isArray(arr)) {
|
|
3630
3613
|
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
|
|
@@ -3635,7 +3618,7 @@ var require_ungroup_transform = __commonJS({
|
|
|
3635
3618
|
return Array.from(arr);
|
|
3636
3619
|
}
|
|
3637
3620
|
}
|
|
3638
|
-
|
|
3621
|
+
module.exports = {
|
|
3639
3622
|
Group: function Group(path3) {
|
|
3640
3623
|
var node = path3.node, parent = path3.parent;
|
|
3641
3624
|
var childPath = path3.getChild();
|
|
@@ -3686,8 +3669,7 @@ var require_ungroup_transform = __commonJS({
|
|
|
3686
3669
|
|
|
3687
3670
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/combine-repeating-patterns-transform.js
|
|
3688
3671
|
var require_combine_repeating_patterns_transform = __commonJS({
|
|
3689
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/combine-repeating-patterns-transform.js"(
|
|
3690
|
-
"use strict";
|
|
3672
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/combine-repeating-patterns-transform.js"(exports$1, module) {
|
|
3691
3673
|
function _toConsumableArray(arr) {
|
|
3692
3674
|
if (Array.isArray(arr)) {
|
|
3693
3675
|
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
|
|
@@ -3701,7 +3683,7 @@ var require_combine_repeating_patterns_transform = __commonJS({
|
|
|
3701
3683
|
var NodePath = require_node_path();
|
|
3702
3684
|
var _require = require_utils();
|
|
3703
3685
|
var increaseQuantifierByOne = _require.increaseQuantifierByOne;
|
|
3704
|
-
|
|
3686
|
+
module.exports = {
|
|
3705
3687
|
Alternative: function Alternative(path3) {
|
|
3706
3688
|
var node = path3.node;
|
|
3707
3689
|
var index = 1;
|
|
@@ -3838,9 +3820,8 @@ var require_combine_repeating_patterns_transform = __commonJS({
|
|
|
3838
3820
|
|
|
3839
3821
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/index.js
|
|
3840
3822
|
var require_transforms2 = __commonJS({
|
|
3841
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/index.js"(
|
|
3842
|
-
|
|
3843
|
-
module2.exports = /* @__PURE__ */ new Map([
|
|
3823
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/transforms/index.js"(exports$1, module) {
|
|
3824
|
+
module.exports = /* @__PURE__ */ new Map([
|
|
3844
3825
|
// \ud83d\ude80 -> \u{1f680}
|
|
3845
3826
|
["charSurrogatePairToSingleUnicode", require_char_surrogate_pair_to_single_unicode_transform()],
|
|
3846
3827
|
// \u0061 -> a
|
|
@@ -3879,13 +3860,12 @@ var require_transforms2 = __commonJS({
|
|
|
3879
3860
|
|
|
3880
3861
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/index.js
|
|
3881
3862
|
var require_optimizer = __commonJS({
|
|
3882
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/index.js"(
|
|
3883
|
-
"use strict";
|
|
3863
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/optimizer/index.js"(exports$1, module) {
|
|
3884
3864
|
var clone = require_clone();
|
|
3885
3865
|
var parser = require_parser();
|
|
3886
3866
|
var transform = require_transform();
|
|
3887
3867
|
var optimizationTransforms = require_transforms2();
|
|
3888
|
-
|
|
3868
|
+
module.exports = {
|
|
3889
3869
|
/**
|
|
3890
3870
|
* Optimizer transforms a regular expression into an optimized version,
|
|
3891
3871
|
* replacing some sub-expressions with their idiomatic patterns.
|
|
@@ -3943,11 +3923,10 @@ var require_optimizer = __commonJS({
|
|
|
3943
3923
|
|
|
3944
3924
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/special-symbols.js
|
|
3945
3925
|
var require_special_symbols = __commonJS({
|
|
3946
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/special-symbols.js"(
|
|
3947
|
-
"use strict";
|
|
3926
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/special-symbols.js"(exports$1, module) {
|
|
3948
3927
|
var EPSILON = "\u03B5";
|
|
3949
3928
|
var EPSILON_CLOSURE = EPSILON + "*";
|
|
3950
|
-
|
|
3929
|
+
module.exports = {
|
|
3951
3930
|
EPSILON,
|
|
3952
3931
|
EPSILON_CLOSURE
|
|
3953
3932
|
};
|
|
@@ -3956,8 +3935,7 @@ var require_special_symbols = __commonJS({
|
|
|
3956
3935
|
|
|
3957
3936
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa.js
|
|
3958
3937
|
var require_nfa = __commonJS({
|
|
3959
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa.js"(
|
|
3960
|
-
"use strict";
|
|
3938
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa.js"(exports$1, module) {
|
|
3961
3939
|
var _slicedToArray = /* @__PURE__ */ (function() {
|
|
3962
3940
|
function sliceIterator(arr, i) {
|
|
3963
3941
|
var _arr = [];
|
|
@@ -4187,14 +4165,13 @@ var require_nfa = __commonJS({
|
|
|
4187
4165
|
}]);
|
|
4188
4166
|
return NFA2;
|
|
4189
4167
|
})();
|
|
4190
|
-
|
|
4168
|
+
module.exports = NFA;
|
|
4191
4169
|
}
|
|
4192
4170
|
});
|
|
4193
4171
|
|
|
4194
4172
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa-minimizer.js
|
|
4195
4173
|
var require_dfa_minimizer = __commonJS({
|
|
4196
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa-minimizer.js"(
|
|
4197
|
-
"use strict";
|
|
4174
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa-minimizer.js"(exports$1, module) {
|
|
4198
4175
|
var _slicedToArray = /* @__PURE__ */ (function() {
|
|
4199
4176
|
function sliceIterator(arr, i) {
|
|
4200
4177
|
var _arr = [];
|
|
@@ -4525,7 +4502,7 @@ var require_dfa_minimizer = __commonJS({
|
|
|
4525
4502
|
}
|
|
4526
4503
|
return currentTransitionMap[s1].has(originalTransitionS1) && currentTransitionMap[s2].has(originalTransitionS2);
|
|
4527
4504
|
}
|
|
4528
|
-
|
|
4505
|
+
module.exports = {
|
|
4529
4506
|
minimize
|
|
4530
4507
|
};
|
|
4531
4508
|
}
|
|
@@ -4533,8 +4510,7 @@ var require_dfa_minimizer = __commonJS({
|
|
|
4533
4510
|
|
|
4534
4511
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa.js
|
|
4535
4512
|
var require_dfa = __commonJS({
|
|
4536
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa.js"(
|
|
4537
|
-
"use strict";
|
|
4513
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa.js"(exports$1, module) {
|
|
4538
4514
|
var _createClass = /* @__PURE__ */ (function() {
|
|
4539
4515
|
function defineProperties(target, props) {
|
|
4540
4516
|
for (var i = 0; i < props.length; i++) {
|
|
@@ -4844,14 +4820,13 @@ var require_dfa = __commonJS({
|
|
|
4844
4820
|
}]);
|
|
4845
4821
|
return DFA2;
|
|
4846
4822
|
})();
|
|
4847
|
-
|
|
4823
|
+
module.exports = DFA;
|
|
4848
4824
|
}
|
|
4849
4825
|
});
|
|
4850
4826
|
|
|
4851
4827
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/state.js
|
|
4852
4828
|
var require_state = __commonJS({
|
|
4853
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/state.js"(
|
|
4854
|
-
"use strict";
|
|
4829
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/state.js"(exports$1, module) {
|
|
4855
4830
|
var _createClass = /* @__PURE__ */ (function() {
|
|
4856
4831
|
function defineProperties(target, props) {
|
|
4857
4832
|
for (var i = 0; i < props.length; i++) {
|
|
@@ -4910,14 +4885,13 @@ var require_state = __commonJS({
|
|
|
4910
4885
|
}]);
|
|
4911
4886
|
return State2;
|
|
4912
4887
|
})();
|
|
4913
|
-
|
|
4888
|
+
module.exports = State;
|
|
4914
4889
|
}
|
|
4915
4890
|
});
|
|
4916
4891
|
|
|
4917
4892
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-state.js
|
|
4918
4893
|
var require_nfa_state = __commonJS({
|
|
4919
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-state.js"(
|
|
4920
|
-
"use strict";
|
|
4894
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-state.js"(exports$1, module) {
|
|
4921
4895
|
var _createClass = /* @__PURE__ */ (function() {
|
|
4922
4896
|
function defineProperties(target, props) {
|
|
4923
4897
|
for (var i = 0; i < props.length; i++) {
|
|
@@ -5109,14 +5083,13 @@ var require_nfa_state = __commonJS({
|
|
|
5109
5083
|
}]);
|
|
5110
5084
|
return NFAState2;
|
|
5111
5085
|
})(State);
|
|
5112
|
-
|
|
5086
|
+
module.exports = NFAState;
|
|
5113
5087
|
}
|
|
5114
5088
|
});
|
|
5115
5089
|
|
|
5116
5090
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/builders.js
|
|
5117
5091
|
var require_builders = __commonJS({
|
|
5118
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/builders.js"(
|
|
5119
|
-
"use strict";
|
|
5092
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/builders.js"(exports$1, module) {
|
|
5120
5093
|
var NFA = require_nfa();
|
|
5121
5094
|
var NFAState = require_nfa_state();
|
|
5122
5095
|
var _require = require_special_symbols();
|
|
@@ -5230,7 +5203,7 @@ var require_builders = __commonJS({
|
|
|
5230
5203
|
fragment.in.addTransition(EPSILON, fragment.out);
|
|
5231
5204
|
return fragment;
|
|
5232
5205
|
}
|
|
5233
|
-
|
|
5206
|
+
module.exports = {
|
|
5234
5207
|
alt,
|
|
5235
5208
|
char,
|
|
5236
5209
|
e,
|
|
@@ -5245,8 +5218,7 @@ var require_builders = __commonJS({
|
|
|
5245
5218
|
|
|
5246
5219
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-from-regexp.js
|
|
5247
5220
|
var require_nfa_from_regexp = __commonJS({
|
|
5248
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-from-regexp.js"(
|
|
5249
|
-
"use strict";
|
|
5221
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-from-regexp.js"(exports$1, module) {
|
|
5250
5222
|
function _toConsumableArray(arr) {
|
|
5251
5223
|
if (Array.isArray(arr)) {
|
|
5252
5224
|
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
|
|
@@ -5307,7 +5279,7 @@ var require_nfa_from_regexp = __commonJS({
|
|
|
5307
5279
|
return gen(node.expression);
|
|
5308
5280
|
}
|
|
5309
5281
|
};
|
|
5310
|
-
|
|
5282
|
+
module.exports = {
|
|
5311
5283
|
/**
|
|
5312
5284
|
* Builds an NFA from the passed regexp.
|
|
5313
5285
|
*/
|
|
@@ -5329,13 +5301,12 @@ var require_nfa_from_regexp = __commonJS({
|
|
|
5329
5301
|
|
|
5330
5302
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/index.js
|
|
5331
5303
|
var require_finite_automaton = __commonJS({
|
|
5332
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/index.js"(
|
|
5333
|
-
"use strict";
|
|
5304
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/interpreter/finite-automaton/index.js"(exports$1, module) {
|
|
5334
5305
|
var NFA = require_nfa();
|
|
5335
5306
|
var DFA = require_dfa();
|
|
5336
5307
|
var nfaFromRegExp = require_nfa_from_regexp();
|
|
5337
5308
|
var builders = require_builders();
|
|
5338
|
-
|
|
5309
|
+
module.exports = {
|
|
5339
5310
|
/**
|
|
5340
5311
|
* Export NFA and DFA classes.
|
|
5341
5312
|
*/
|
|
@@ -5379,8 +5350,7 @@ var require_finite_automaton = __commonJS({
|
|
|
5379
5350
|
|
|
5380
5351
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/runtime/index.js
|
|
5381
5352
|
var require_runtime = __commonJS({
|
|
5382
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/runtime/index.js"(
|
|
5383
|
-
"use strict";
|
|
5353
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/compat-transpiler/runtime/index.js"(exports$1, module) {
|
|
5384
5354
|
var _createClass = /* @__PURE__ */ (function() {
|
|
5385
5355
|
function defineProperties(target, props) {
|
|
5386
5356
|
for (var i = 0; i < props.length; i++) {
|
|
@@ -5461,7 +5431,7 @@ var require_runtime = __commonJS({
|
|
|
5461
5431
|
}]);
|
|
5462
5432
|
return RegExpTree2;
|
|
5463
5433
|
})();
|
|
5464
|
-
|
|
5434
|
+
module.exports = {
|
|
5465
5435
|
RegExpTree
|
|
5466
5436
|
};
|
|
5467
5437
|
}
|
|
@@ -5469,8 +5439,7 @@ var require_runtime = __commonJS({
|
|
|
5469
5439
|
|
|
5470
5440
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/regexp-tree.js
|
|
5471
5441
|
var require_regexp_tree2 = __commonJS({
|
|
5472
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/regexp-tree.js"(
|
|
5473
|
-
"use strict";
|
|
5442
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/dist/regexp-tree.js"(exports$1, module) {
|
|
5474
5443
|
var compatTranspiler = require_compat_transpiler();
|
|
5475
5444
|
var generator = require_generator();
|
|
5476
5445
|
var optimizer = require_optimizer();
|
|
@@ -5615,22 +5584,20 @@ var require_regexp_tree2 = __commonJS({
|
|
|
5615
5584
|
return re.exec(string);
|
|
5616
5585
|
}
|
|
5617
5586
|
};
|
|
5618
|
-
|
|
5587
|
+
module.exports = regexpTree2;
|
|
5619
5588
|
}
|
|
5620
5589
|
});
|
|
5621
5590
|
|
|
5622
5591
|
// ../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/index.js
|
|
5623
5592
|
var require_regexp_tree3 = __commonJS({
|
|
5624
|
-
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/index.js"(
|
|
5625
|
-
|
|
5626
|
-
module2.exports = require_regexp_tree2();
|
|
5593
|
+
"../../node_modules/.pnpm/regexp-tree@0.1.27/node_modules/regexp-tree/index.js"(exports$1, module) {
|
|
5594
|
+
module.exports = require_regexp_tree2();
|
|
5627
5595
|
}
|
|
5628
5596
|
});
|
|
5629
5597
|
|
|
5630
5598
|
// ../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/heuristic-analyzer.js
|
|
5631
5599
|
var require_heuristic_analyzer = __commonJS({
|
|
5632
|
-
"../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/heuristic-analyzer.js"(
|
|
5633
|
-
"use strict";
|
|
5600
|
+
"../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/heuristic-analyzer.js"(exports$1, module) {
|
|
5634
5601
|
var regexpTree2 = require_regexp_tree3();
|
|
5635
5602
|
var analyzer = require_analyzer();
|
|
5636
5603
|
var HeuristicAnalyzer = class extends analyzer.Analyzer {
|
|
@@ -5683,23 +5650,21 @@ var require_heuristic_analyzer = __commonJS({
|
|
|
5683
5650
|
return nRepetitions;
|
|
5684
5651
|
}
|
|
5685
5652
|
};
|
|
5686
|
-
|
|
5653
|
+
module.exports = HeuristicAnalyzer;
|
|
5687
5654
|
}
|
|
5688
5655
|
});
|
|
5689
5656
|
|
|
5690
5657
|
// ../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer-family.js
|
|
5691
5658
|
var require_analyzer_family = __commonJS({
|
|
5692
|
-
"../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer-family.js"(
|
|
5693
|
-
"use strict";
|
|
5659
|
+
"../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/lib/analyzer-family.js"(exports$1, module) {
|
|
5694
5660
|
var heuristicAnalyzer = require_heuristic_analyzer();
|
|
5695
|
-
|
|
5661
|
+
module.exports = [heuristicAnalyzer];
|
|
5696
5662
|
}
|
|
5697
5663
|
});
|
|
5698
5664
|
|
|
5699
5665
|
// ../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/index.js
|
|
5700
5666
|
var require_safe_regex = __commonJS({
|
|
5701
|
-
"../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/index.js"(
|
|
5702
|
-
"use strict";
|
|
5667
|
+
"../../node_modules/.pnpm/safe-regex@2.1.1/node_modules/safe-regex/index.js"(exports$1, module) {
|
|
5703
5668
|
var analyzer = require_analyzer();
|
|
5704
5669
|
var analyzerFamily = require_analyzer_family();
|
|
5705
5670
|
var DEFAULT_SAFE_REP_LIMIT = 25;
|
|
@@ -5751,30 +5716,9 @@ var require_safe_regex = __commonJS({
|
|
|
5751
5716
|
}
|
|
5752
5717
|
return analyzerSaysVulnerable;
|
|
5753
5718
|
}
|
|
5754
|
-
|
|
5719
|
+
module.exports = safeRegex;
|
|
5755
5720
|
}
|
|
5756
5721
|
});
|
|
5757
|
-
|
|
5758
|
-
// src/index.ts
|
|
5759
|
-
var index_exports = {};
|
|
5760
|
-
__export(index_exports, {
|
|
5761
|
-
ApprovedSpecsValidator: () => ApprovedSpecsValidator,
|
|
5762
|
-
ClientGenerator: () => ClientGenerator,
|
|
5763
|
-
CollectionProviderGenerator: () => CollectionProviderGenerator,
|
|
5764
|
-
EndpointFilter: () => EndpointFilter,
|
|
5765
|
-
OpenAPICollectionProvider: () => OpenAPICollectionProvider,
|
|
5766
|
-
OpenAPIParser: () => OpenAPIParser,
|
|
5767
|
-
OpenAPIPlugin: () => OpenAPIPlugin,
|
|
5768
|
-
SchemaResolver: () => SchemaResolver,
|
|
5769
|
-
TypeGenerator: () => TypeGenerator,
|
|
5770
|
-
ZodSchemaGenerator: () => ZodSchemaGenerator,
|
|
5771
|
-
createOpenAPIFetcher: () => createOpenAPIFetcher,
|
|
5772
|
-
createOpenAPIPlugin: () => createOpenAPIPlugin
|
|
5773
|
-
});
|
|
5774
|
-
module.exports = __toCommonJS(index_exports);
|
|
5775
|
-
|
|
5776
|
-
// src/parser/OpenAPIParser.ts
|
|
5777
|
-
var import_swagger_parser = __toESM(require("@apidevtools/swagger-parser"));
|
|
5778
5722
|
var OpenAPIParser = class {
|
|
5779
5723
|
/**
|
|
5780
5724
|
* Parse an OpenAPI specification from URL or file path
|
|
@@ -5793,13 +5737,13 @@ var OpenAPIParser = class {
|
|
|
5793
5737
|
async parse(specPath, options = {}) {
|
|
5794
5738
|
const { dereference = true, validate = true } = options;
|
|
5795
5739
|
try {
|
|
5796
|
-
const api = await
|
|
5740
|
+
const api = await SwaggerParser__default.default.parse(specPath);
|
|
5797
5741
|
if (validate) {
|
|
5798
|
-
await
|
|
5742
|
+
await SwaggerParser__default.default.validate(api);
|
|
5799
5743
|
}
|
|
5800
5744
|
let document;
|
|
5801
5745
|
if (dereference) {
|
|
5802
|
-
document = await
|
|
5746
|
+
document = await SwaggerParser__default.default.dereference(api);
|
|
5803
5747
|
} else {
|
|
5804
5748
|
document = api;
|
|
5805
5749
|
}
|
|
@@ -5817,8 +5761,9 @@ var OpenAPIParser = class {
|
|
|
5817
5761
|
* Detect OpenAPI version from document
|
|
5818
5762
|
*/
|
|
5819
5763
|
detectVersion(document) {
|
|
5820
|
-
|
|
5821
|
-
|
|
5764
|
+
const openapiVersion = "openapi" in document ? document.openapi : void 0;
|
|
5765
|
+
if (openapiVersion !== void 0) {
|
|
5766
|
+
return openapiVersion;
|
|
5822
5767
|
}
|
|
5823
5768
|
throw new Error("Invalid OpenAPI document: missing openapi version field");
|
|
5824
5769
|
}
|
|
@@ -5829,7 +5774,9 @@ var OpenAPIParser = class {
|
|
|
5829
5774
|
if (error instanceof Error) {
|
|
5830
5775
|
const message = `Failed to parse OpenAPI spec from "${specPath}": ${error.message}`;
|
|
5831
5776
|
const enhancedError = new Error(message);
|
|
5832
|
-
|
|
5777
|
+
if (error.stack !== void 0) {
|
|
5778
|
+
enhancedError.stack = error.stack;
|
|
5779
|
+
}
|
|
5833
5780
|
return enhancedError;
|
|
5834
5781
|
}
|
|
5835
5782
|
return new Error(`Failed to parse OpenAPI spec from "${specPath}": ${String(error)}`);
|
|
@@ -5902,9 +5849,9 @@ var SchemaResolver = class {
|
|
|
5902
5849
|
endpoints.push({
|
|
5903
5850
|
path: path3,
|
|
5904
5851
|
method,
|
|
5905
|
-
operationId: operation.operationId,
|
|
5906
|
-
summary: operation.summary,
|
|
5907
|
-
description: operation.description
|
|
5852
|
+
...operation.operationId !== void 0 && { operationId: operation.operationId },
|
|
5853
|
+
...operation.summary !== void 0 && { summary: operation.summary },
|
|
5854
|
+
...operation.description !== void 0 && { description: operation.description }
|
|
5908
5855
|
});
|
|
5909
5856
|
}
|
|
5910
5857
|
}
|
|
@@ -6136,9 +6083,6 @@ ${fields}
|
|
|
6136
6083
|
}
|
|
6137
6084
|
}
|
|
6138
6085
|
};
|
|
6139
|
-
|
|
6140
|
-
// src/compiler/TypeGenerator.ts
|
|
6141
|
-
var import_zod_to_ts = require("zod-to-ts");
|
|
6142
6086
|
var TypeGenerator = class {
|
|
6143
6087
|
/**
|
|
6144
6088
|
* Generate TypeScript type definition from a Zod schema
|
|
@@ -6158,9 +6102,9 @@ var TypeGenerator = class {
|
|
|
6158
6102
|
generate(zodSchema, options = {}) {
|
|
6159
6103
|
const { typeName = "GeneratedType", includeJsDoc = true } = options;
|
|
6160
6104
|
try {
|
|
6161
|
-
const auxiliaryTypeStore =
|
|
6162
|
-
const { node } =
|
|
6163
|
-
const typeCode =
|
|
6105
|
+
const auxiliaryTypeStore = zodToTs.createAuxiliaryTypeStore();
|
|
6106
|
+
const { node } = zodToTs.zodToTs(zodSchema, { auxiliaryTypeStore });
|
|
6107
|
+
const typeCode = zodToTs.printNode(node);
|
|
6164
6108
|
let result = "";
|
|
6165
6109
|
if (includeJsDoc && zodSchema.description) {
|
|
6166
6110
|
result += `/**
|
|
@@ -6212,12 +6156,12 @@ var TypeGenerator = class {
|
|
|
6212
6156
|
* @returns Complete TypeScript module code
|
|
6213
6157
|
*/
|
|
6214
6158
|
createModule(types, imports = []) {
|
|
6215
|
-
let
|
|
6159
|
+
let module = "";
|
|
6216
6160
|
if (imports.length > 0) {
|
|
6217
|
-
|
|
6161
|
+
module += imports.join("\n") + "\n\n";
|
|
6218
6162
|
}
|
|
6219
|
-
|
|
6220
|
-
return
|
|
6163
|
+
module += Object.values(types).join("\n");
|
|
6164
|
+
return module;
|
|
6221
6165
|
}
|
|
6222
6166
|
};
|
|
6223
6167
|
|
|
@@ -6249,18 +6193,21 @@ var CollectionProviderGenerator = class {
|
|
|
6249
6193
|
}
|
|
6250
6194
|
const isArray = schema.type === "array";
|
|
6251
6195
|
const schemaName = `${this.capitalize(collectionName)}Schema`;
|
|
6252
|
-
|
|
6196
|
+
const params = {
|
|
6253
6197
|
providerName,
|
|
6254
6198
|
collectionName,
|
|
6255
6199
|
endpoint,
|
|
6256
6200
|
slugField,
|
|
6257
6201
|
method,
|
|
6258
6202
|
baseUrl,
|
|
6259
|
-
auth,
|
|
6260
6203
|
schemaName,
|
|
6261
6204
|
isArray,
|
|
6262
6205
|
bare
|
|
6263
|
-
}
|
|
6206
|
+
};
|
|
6207
|
+
if (auth !== void 0) {
|
|
6208
|
+
params.auth = auth;
|
|
6209
|
+
}
|
|
6210
|
+
return this.generateProviderCode(params);
|
|
6264
6211
|
}
|
|
6265
6212
|
/**
|
|
6266
6213
|
* Generate the complete provider code
|
|
@@ -6282,12 +6229,12 @@ var CollectionProviderGenerator = class {
|
|
|
6282
6229
|
const arraySchemaName = `${schemaName.replace(/Schema$/, "")}ArraySchema`;
|
|
6283
6230
|
const validationSchema = isArray ? arraySchemaName : schemaName;
|
|
6284
6231
|
const imports = bare ? "" : `import type { CollectionProvider, CollectionItem } from '@stackwright/collections';
|
|
6285
|
-
import { ${isArray ? arraySchemaName : schemaName} } from './schemas';
|
|
6232
|
+
import { ${isArray ? arraySchemaName : schemaName}} } from './schemas';
|
|
6286
6233
|
|
|
6287
6234
|
`;
|
|
6288
6235
|
return `${imports}/**
|
|
6289
6236
|
* CollectionProvider for ${collectionName}
|
|
6290
|
-
*
|
|
6237
|
+
*
|
|
6291
6238
|
* Generated from OpenAPI endpoint: ${method.toUpperCase()} ${endpoint}
|
|
6292
6239
|
*/
|
|
6293
6240
|
export class ${providerName} implements CollectionProvider {
|
|
@@ -6433,7 +6380,10 @@ export class ${providerName} implements CollectionProvider {
|
|
|
6433
6380
|
*/
|
|
6434
6381
|
getBaseUrl() {
|
|
6435
6382
|
if ("servers" in this.document && this.document.servers && this.document.servers.length > 0) {
|
|
6436
|
-
|
|
6383
|
+
const firstServer = this.document.servers[0];
|
|
6384
|
+
if (firstServer !== void 0) {
|
|
6385
|
+
return firstServer.url;
|
|
6386
|
+
}
|
|
6437
6387
|
}
|
|
6438
6388
|
return "http://localhost:3000";
|
|
6439
6389
|
}
|
|
@@ -6461,7 +6411,8 @@ export class ${providerName} implements CollectionProvider {
|
|
|
6461
6411
|
*/
|
|
6462
6412
|
guessTitle(slugField) {
|
|
6463
6413
|
const titleFields = ["title", "name", "label", "displayName"];
|
|
6464
|
-
|
|
6414
|
+
const firstField = titleFields[0];
|
|
6415
|
+
return firstField !== void 0 ? firstField : `item.${slugField}`;
|
|
6465
6416
|
}
|
|
6466
6417
|
};
|
|
6467
6418
|
|
|
@@ -6471,7 +6422,9 @@ var ClientGenerator = class {
|
|
|
6471
6422
|
constructor(document, schemaMapping) {
|
|
6472
6423
|
this.document = document;
|
|
6473
6424
|
this.resolver = new SchemaResolver(document);
|
|
6474
|
-
|
|
6425
|
+
if (schemaMapping !== void 0) {
|
|
6426
|
+
this.schemaMapping = schemaMapping;
|
|
6427
|
+
}
|
|
6475
6428
|
this.requiredSchemas = /* @__PURE__ */ new Set();
|
|
6476
6429
|
this.generatedRequestSchemas = /* @__PURE__ */ new Set();
|
|
6477
6430
|
}
|
|
@@ -6563,7 +6516,7 @@ var ClientGenerator = class {
|
|
|
6563
6516
|
code += "// Request Schemas (Zod Validation)\n";
|
|
6564
6517
|
code += "// ============================================================================\n\n";
|
|
6565
6518
|
for (const endpoint of endpoints) {
|
|
6566
|
-
|
|
6519
|
+
endpoint.operationId || this.getMethodName(endpoint);
|
|
6567
6520
|
const typeName = this.getOperationTypeName(endpoint);
|
|
6568
6521
|
const schemaName = `${typeName}RequestSchema`;
|
|
6569
6522
|
const schemaCode = this.generateRequestSchemaForEndpoint(endpoint);
|
|
@@ -6829,7 +6782,8 @@ ${paramSchemas.join(",\n")}
|
|
|
6829
6782
|
*/
|
|
6830
6783
|
extractComponentName(ref) {
|
|
6831
6784
|
const parts = ref.split("/");
|
|
6832
|
-
|
|
6785
|
+
const lastPart = parts[parts.length - 1];
|
|
6786
|
+
return lastPart ?? ref;
|
|
6833
6787
|
}
|
|
6834
6788
|
/**
|
|
6835
6789
|
* Escape string for use in Zod .describe()
|
|
@@ -7576,9 +7530,9 @@ ${paramSchemas.join(",\n")}
|
|
|
7576
7530
|
endpoints.push({
|
|
7577
7531
|
path: path3,
|
|
7578
7532
|
method,
|
|
7579
|
-
operationId: operation.operationId,
|
|
7580
|
-
summary: operation.summary,
|
|
7581
|
-
description: operation.description,
|
|
7533
|
+
...operation.operationId !== void 0 && { operationId: operation.operationId },
|
|
7534
|
+
...operation.summary !== void 0 && { summary: operation.summary },
|
|
7535
|
+
...operation.description !== void 0 && { description: operation.description },
|
|
7582
7536
|
operation
|
|
7583
7537
|
});
|
|
7584
7538
|
}
|
|
@@ -7666,7 +7620,8 @@ ${paramSchemas.join(",\n")}
|
|
|
7666
7620
|
*/
|
|
7667
7621
|
getDefaultBaseUrl() {
|
|
7668
7622
|
if ("servers" in this.document && this.document.servers && this.document.servers.length > 0) {
|
|
7669
|
-
|
|
7623
|
+
const firstServer = this.document.servers[0];
|
|
7624
|
+
return firstServer ? firstServer.url : "http://localhost:3000";
|
|
7670
7625
|
}
|
|
7671
7626
|
return "http://localhost:3000";
|
|
7672
7627
|
}
|
|
@@ -7704,10 +7659,6 @@ var OpenAPICollectionProvider = class {
|
|
|
7704
7659
|
}
|
|
7705
7660
|
};
|
|
7706
7661
|
|
|
7707
|
-
// src/prebuild/OpenAPIPlugin.ts
|
|
7708
|
-
var import_fs3 = __toESM(require("fs"));
|
|
7709
|
-
var import_path2 = __toESM(require("path"));
|
|
7710
|
-
|
|
7711
7662
|
// src/utils/EndpointFilter.ts
|
|
7712
7663
|
var EndpointFilter = class {
|
|
7713
7664
|
include;
|
|
@@ -7761,13 +7712,18 @@ var EndpointFilter = class {
|
|
|
7761
7712
|
let matches = true;
|
|
7762
7713
|
for (let i = 0; i < patternSegments.length; i++) {
|
|
7763
7714
|
const pSeg = patternSegments[i];
|
|
7715
|
+
if (pSeg === void 0) {
|
|
7716
|
+
matches = false;
|
|
7717
|
+
break;
|
|
7718
|
+
}
|
|
7764
7719
|
if (pSeg === "*" || pSeg === "**") {
|
|
7765
7720
|
continue;
|
|
7766
7721
|
}
|
|
7767
7722
|
if (pSeg.startsWith("{") && pSeg.endsWith("}")) {
|
|
7768
7723
|
continue;
|
|
7769
7724
|
}
|
|
7770
|
-
|
|
7725
|
+
const pathSeg = pathSegments[i];
|
|
7726
|
+
if (pSeg !== pathSeg) {
|
|
7771
7727
|
matches = false;
|
|
7772
7728
|
break;
|
|
7773
7729
|
}
|
|
@@ -7804,16 +7760,6 @@ var EndpointFilter = class {
|
|
|
7804
7760
|
return new RegExp(`^${result}$`);
|
|
7805
7761
|
}
|
|
7806
7762
|
};
|
|
7807
|
-
|
|
7808
|
-
// src/utils/ApprovedSpecsValidator.ts
|
|
7809
|
-
var import_crypto = __toESM(require("crypto"));
|
|
7810
|
-
var import_fs = __toESM(require("fs"));
|
|
7811
|
-
var import_https = __toESM(require("https"));
|
|
7812
|
-
var import_http = __toESM(require("http"));
|
|
7813
|
-
var import_url = require("url");
|
|
7814
|
-
var import_path = __toESM(require("path"));
|
|
7815
|
-
var import_fs2 = require("fs");
|
|
7816
|
-
var import_net = require("net");
|
|
7817
7763
|
var ApprovedSpecsValidator = class {
|
|
7818
7764
|
allowlist;
|
|
7819
7765
|
cache = /* @__PURE__ */ new Map();
|
|
@@ -7838,7 +7784,7 @@ var ApprovedSpecsValidator = class {
|
|
|
7838
7784
|
*/
|
|
7839
7785
|
buildAllowedDirs() {
|
|
7840
7786
|
const cwd = process.cwd();
|
|
7841
|
-
return [cwd,
|
|
7787
|
+
return [cwd, path2__default.default.join(cwd, "specs"), path2__default.default.join(cwd, ".stackwright")];
|
|
7842
7788
|
}
|
|
7843
7789
|
/**
|
|
7844
7790
|
* Validate that a file path is within allowed directories (path traversal prevention).
|
|
@@ -7849,10 +7795,10 @@ var ApprovedSpecsValidator = class {
|
|
|
7849
7795
|
*/
|
|
7850
7796
|
isPathAllowed(filePath) {
|
|
7851
7797
|
try {
|
|
7852
|
-
const realPath =
|
|
7798
|
+
const realPath = fs.realpathSync(filePath);
|
|
7853
7799
|
return this.ALLOWED_DIRS.some((dir) => {
|
|
7854
|
-
const realDir =
|
|
7855
|
-
return realPath.startsWith(realDir +
|
|
7800
|
+
const realDir = fs.realpathSync(dir);
|
|
7801
|
+
return realPath.startsWith(realDir + path2__default.default.sep) || realPath === realDir;
|
|
7856
7802
|
});
|
|
7857
7803
|
} catch {
|
|
7858
7804
|
return false;
|
|
@@ -7869,7 +7815,7 @@ var ApprovedSpecsValidator = class {
|
|
|
7869
7815
|
if (specUrl.startsWith("file://")) {
|
|
7870
7816
|
return true;
|
|
7871
7817
|
}
|
|
7872
|
-
if (
|
|
7818
|
+
if (fs__default.default.existsSync(specUrl)) {
|
|
7873
7819
|
return !this.isPathAllowed(specUrl);
|
|
7874
7820
|
}
|
|
7875
7821
|
if (!specUrl.startsWith("http://") && !specUrl.startsWith("https://")) {
|
|
@@ -7903,7 +7849,7 @@ var ApprovedSpecsValidator = class {
|
|
|
7903
7849
|
*/
|
|
7904
7850
|
isRedirectSafe(location, originalProtocol) {
|
|
7905
7851
|
try {
|
|
7906
|
-
const redirectUrl = new
|
|
7852
|
+
const redirectUrl = new url.URL(location);
|
|
7907
7853
|
if (redirectUrl.protocol === "http:" && originalProtocol === "https:") {
|
|
7908
7854
|
return false;
|
|
7909
7855
|
}
|
|
@@ -7925,23 +7871,24 @@ var ApprovedSpecsValidator = class {
|
|
|
7925
7871
|
}
|
|
7926
7872
|
}
|
|
7927
7873
|
const ipv4Match = redirectUrl.hostname.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
|
|
7928
|
-
if (ipv4Match) {
|
|
7874
|
+
if (ipv4Match && ipv4Match.length >= 5) {
|
|
7929
7875
|
const octets = ipv4Match.slice(1, 5).map(Number);
|
|
7930
|
-
const
|
|
7931
|
-
|
|
7876
|
+
const first = octets[0];
|
|
7877
|
+
const second = octets[1];
|
|
7878
|
+
if (first !== void 0 && first === 10) {
|
|
7932
7879
|
return false;
|
|
7933
7880
|
}
|
|
7934
|
-
if (first === 172 && second >= 16 && second <= 31) {
|
|
7881
|
+
if (first !== void 0 && second !== void 0 && first === 172 && second >= 16 && second <= 31) {
|
|
7935
7882
|
return false;
|
|
7936
7883
|
}
|
|
7937
|
-
if (first === 192 && second === 168) {
|
|
7884
|
+
if (first !== void 0 && second !== void 0 && first === 192 && second === 168) {
|
|
7938
7885
|
return false;
|
|
7939
7886
|
}
|
|
7940
|
-
if (first === 127) {
|
|
7887
|
+
if (first !== void 0 && first === 127) {
|
|
7941
7888
|
return false;
|
|
7942
7889
|
}
|
|
7943
7890
|
}
|
|
7944
|
-
const ipVersion =
|
|
7891
|
+
const ipVersion = net.isIP(redirectUrl.hostname);
|
|
7945
7892
|
if (ipVersion === 6) {
|
|
7946
7893
|
const blockedPrefixes = [
|
|
7947
7894
|
"::1",
|
|
@@ -7974,12 +7921,12 @@ var ApprovedSpecsValidator = class {
|
|
|
7974
7921
|
*/
|
|
7975
7922
|
readAllowedFile(filePath) {
|
|
7976
7923
|
try {
|
|
7977
|
-
|
|
7978
|
-
const realPath =
|
|
7924
|
+
fs__default.default.lstatSync(filePath);
|
|
7925
|
+
const realPath = fs__default.default.realpathSync(filePath);
|
|
7979
7926
|
if (!this.isPathAllowed(realPath)) {
|
|
7980
7927
|
return { error: "File path outside allowed directories (path traversal blocked)" };
|
|
7981
7928
|
}
|
|
7982
|
-
return { content:
|
|
7929
|
+
return { content: fs__default.default.readFileSync(filePath, "utf8") };
|
|
7983
7930
|
} catch (e) {
|
|
7984
7931
|
const err = e;
|
|
7985
7932
|
if (err.code === "ENOENT") {
|
|
@@ -8052,7 +7999,7 @@ var ApprovedSpecsValidator = class {
|
|
|
8052
7999
|
error: "Invalid hash format in approved spec configuration"
|
|
8053
8000
|
};
|
|
8054
8001
|
}
|
|
8055
|
-
if (!
|
|
8002
|
+
if (!crypto__default.default.timingSafeEqual(
|
|
8056
8003
|
Buffer.from(hashResult.hash, "hex"),
|
|
8057
8004
|
Buffer.from(approved.sha256, "hex")
|
|
8058
8005
|
)) {
|
|
@@ -8110,7 +8057,7 @@ var ApprovedSpecsValidator = class {
|
|
|
8110
8057
|
return { error: contentResult.error };
|
|
8111
8058
|
}
|
|
8112
8059
|
const content = contentResult.content;
|
|
8113
|
-
const hash =
|
|
8060
|
+
const hash = crypto__default.default.createHash("sha256").update(content).digest("hex");
|
|
8114
8061
|
this.cache.set(url, { content, hash });
|
|
8115
8062
|
return { hash };
|
|
8116
8063
|
}
|
|
@@ -8118,18 +8065,18 @@ var ApprovedSpecsValidator = class {
|
|
|
8118
8065
|
* Download content from URL or file.
|
|
8119
8066
|
* Includes path traversal and SSRF protection.
|
|
8120
8067
|
*/
|
|
8121
|
-
async download(url, originalProtocol = "") {
|
|
8122
|
-
if (
|
|
8123
|
-
return this.readAllowedFile(url);
|
|
8068
|
+
async download(url$1, originalProtocol = "") {
|
|
8069
|
+
if (fs__default.default.existsSync(url$1)) {
|
|
8070
|
+
return this.readAllowedFile(url$1);
|
|
8124
8071
|
}
|
|
8125
|
-
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
|
8126
|
-
return { error: `Invalid URL protocol. Expected http:// or https://, got: ${url}` };
|
|
8072
|
+
if (!url$1.startsWith("http://") && !url$1.startsWith("https://")) {
|
|
8073
|
+
return { error: `Invalid URL protocol. Expected http:// or https://, got: ${url$1}` };
|
|
8127
8074
|
}
|
|
8128
|
-
const parsed = new
|
|
8075
|
+
const parsed = new url.URL(url$1);
|
|
8129
8076
|
const requestProtocol = originalProtocol || parsed.protocol;
|
|
8130
8077
|
return new Promise((resolve) => {
|
|
8131
|
-
const client = url.startsWith("https") ?
|
|
8132
|
-
const req = client.get(url, { timeout: 3e4 }, (res) => {
|
|
8078
|
+
const client = url$1.startsWith("https") ? https__default.default : http__default.default;
|
|
8079
|
+
const req = client.get(url$1, { timeout: 3e4 }, (res) => {
|
|
8133
8080
|
if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
|
|
8134
8081
|
const location = res.headers.location;
|
|
8135
8082
|
if (!this.isRedirectSafe(location, requestProtocol)) {
|
|
@@ -8171,7 +8118,7 @@ var ApprovedSpecsValidator = class {
|
|
|
8171
8118
|
urlsMatch(url1, url2) {
|
|
8172
8119
|
const normalize = (u) => {
|
|
8173
8120
|
try {
|
|
8174
|
-
const parsed = new
|
|
8121
|
+
const parsed = new url.URL(u);
|
|
8175
8122
|
const normalized = `${parsed.protocol}//${parsed.hostname}${parsed.pathname}`;
|
|
8176
8123
|
return normalized.replace(/\/$/, "").toLowerCase();
|
|
8177
8124
|
} catch {
|
|
@@ -8322,7 +8269,7 @@ var OpenAPIPlugin = class {
|
|
|
8322
8269
|
async processIntegration(config, projectRoot) {
|
|
8323
8270
|
const { name, spec, auth, mockUrl, collections, endpoints } = config;
|
|
8324
8271
|
console.log(` - Processing integration: ${name}`);
|
|
8325
|
-
const specPath = spec.startsWith("http") ? spec :
|
|
8272
|
+
const specPath = spec.startsWith("http") ? spec : path2__default.default.resolve(projectRoot, spec);
|
|
8326
8273
|
const parser = new OpenAPIParser();
|
|
8327
8274
|
const { document } = await parser.parse(specPath);
|
|
8328
8275
|
if (mockUrl) {
|
|
@@ -8336,8 +8283,8 @@ var OpenAPIPlugin = class {
|
|
|
8336
8283
|
const excludeStr = endpoints.exclude?.length ? ` (exclude: ${endpoints.exclude.join(", ")})` : "";
|
|
8337
8284
|
console.log(` > Filter: include [${includeStr}]${excludeStr}`);
|
|
8338
8285
|
}
|
|
8339
|
-
const outputDir =
|
|
8340
|
-
|
|
8286
|
+
const outputDir = path2__default.default.join(projectRoot, "src", "generated", name);
|
|
8287
|
+
fs__default.default.mkdirSync(outputDir, { recursive: true });
|
|
8341
8288
|
const schemaMapping = await this.generateSchemas(
|
|
8342
8289
|
document,
|
|
8343
8290
|
collections || [],
|
|
@@ -8460,7 +8407,7 @@ import { z } from 'zod';
|
|
|
8460
8407
|
};
|
|
8461
8408
|
}
|
|
8462
8409
|
}
|
|
8463
|
-
|
|
8410
|
+
fs__default.default.writeFileSync(path2__default.default.join(outputDir, "schemas.ts"), schemasCode);
|
|
8464
8411
|
return schemaMapping;
|
|
8465
8412
|
}
|
|
8466
8413
|
async generateTypes(document, collections, outputDir, integrationName) {
|
|
@@ -8485,7 +8432,7 @@ import type * as schemas from './schemas';
|
|
|
8485
8432
|
`;
|
|
8486
8433
|
}
|
|
8487
8434
|
}
|
|
8488
|
-
|
|
8435
|
+
fs__default.default.writeFileSync(path2__default.default.join(outputDir, "types.ts"), typesCode);
|
|
8489
8436
|
}
|
|
8490
8437
|
async generateProvider(document, config, outputDir, integrationName) {
|
|
8491
8438
|
const generator = new CollectionProviderGenerator(document);
|
|
@@ -8501,12 +8448,12 @@ import type * as schemas from './schemas';
|
|
|
8501
8448
|
slugField: collection.slug_field,
|
|
8502
8449
|
filters: collection.filters
|
|
8503
8450
|
};
|
|
8504
|
-
|
|
8451
|
+
const providerOptions = { bare: true };
|
|
8505
8452
|
if (auth) {
|
|
8506
8453
|
if (auth.type === "bearer" || auth.type === "apiKey") {
|
|
8507
8454
|
providerOptions.auth = {
|
|
8508
8455
|
type: auth.type,
|
|
8509
|
-
|
|
8456
|
+
...auth.type === "apiKey" && { headerName: "X-API-Key" }
|
|
8510
8457
|
};
|
|
8511
8458
|
} else if (auth.type === "oauth2") {
|
|
8512
8459
|
console.warn(
|
|
@@ -8539,7 +8486,7 @@ import { ${Array.from(schemaImports).join(", ")} } from './schemas';
|
|
|
8539
8486
|
|
|
8540
8487
|
`;
|
|
8541
8488
|
providerCode += classBlocks.join("\n");
|
|
8542
|
-
|
|
8489
|
+
fs__default.default.writeFileSync(path2__default.default.join(outputDir, "provider.ts"), providerCode);
|
|
8543
8490
|
}
|
|
8544
8491
|
async generateClient(document, outputDir, integrationName, schemaMapping, endpointFilter) {
|
|
8545
8492
|
const paths = document.paths || {};
|
|
@@ -8563,11 +8510,12 @@ import { ${Array.from(schemaImports).join(", ")} } from './schemas';
|
|
|
8563
8510
|
validateResponses: true,
|
|
8564
8511
|
strictValidation: false
|
|
8565
8512
|
});
|
|
8566
|
-
|
|
8513
|
+
fs__default.default.writeFileSync(path2__default.default.join(outputDir, "client.ts"), clientCode);
|
|
8567
8514
|
}
|
|
8568
8515
|
extractComponentName(ref) {
|
|
8569
8516
|
const parts = ref.split("/");
|
|
8570
|
-
|
|
8517
|
+
const lastPart = parts[parts.length - 1];
|
|
8518
|
+
return lastPart ?? ref;
|
|
8571
8519
|
}
|
|
8572
8520
|
getOperationTypeName(operationId) {
|
|
8573
8521
|
return operationId.charAt(0).toUpperCase() + operationId.slice(1);
|
|
@@ -8594,8 +8542,6 @@ import { ${Array.from(schemaImports).join(", ")} } from './schemas';
|
|
|
8594
8542
|
function createOpenAPIPlugin() {
|
|
8595
8543
|
return new OpenAPIPlugin();
|
|
8596
8544
|
}
|
|
8597
|
-
|
|
8598
|
-
// src/sources/openapi.ts
|
|
8599
8545
|
var BLOCKED_HOST_PATTERNS = [
|
|
8600
8546
|
/^localhost$/i,
|
|
8601
8547
|
/^127\./,
|
|
@@ -8620,63 +8566,115 @@ var BLOCKED_HOST_PATTERNS = [
|
|
|
8620
8566
|
// AWS metadata endpoint
|
|
8621
8567
|
/^metadata\.googleapis\.com$/i,
|
|
8622
8568
|
// GCP metadata endpoint
|
|
8569
|
+
/^metadata\.azure\.com$/i,
|
|
8570
|
+
// Azure metadata endpoint
|
|
8571
|
+
/^imds\.azure\.com$/i,
|
|
8572
|
+
// Azure IMDS endpoint
|
|
8623
8573
|
/^100\.100\.100\.200$/
|
|
8624
8574
|
// Alibaba Cloud metadata
|
|
8625
8575
|
];
|
|
8576
|
+
var BLOCKED_IPV6_PREFIXES = [
|
|
8577
|
+
"::1",
|
|
8578
|
+
// Loopback
|
|
8579
|
+
"fe80:",
|
|
8580
|
+
// Link-local
|
|
8581
|
+
"fc",
|
|
8582
|
+
// Unique local (fc00::/7 — covers fc00:: through fcff::)
|
|
8583
|
+
"fd"
|
|
8584
|
+
// Unique local (short form)
|
|
8585
|
+
];
|
|
8626
8586
|
var ALLOWED_PROTOCOLS = ["http:", "https:"];
|
|
8627
|
-
function
|
|
8587
|
+
function validateUrlSafe(baseUrl) {
|
|
8628
8588
|
let url;
|
|
8629
8589
|
try {
|
|
8630
8590
|
url = new URL(baseUrl);
|
|
8631
8591
|
} catch {
|
|
8632
|
-
throw new Error("
|
|
8592
|
+
throw new Error("SECURITY: baseUrl must be a valid absolute URL");
|
|
8633
8593
|
}
|
|
8634
8594
|
if (!ALLOWED_PROTOCOLS.includes(url.protocol)) {
|
|
8635
|
-
throw new Error(
|
|
8636
|
-
"SSRF Prevention: Only HTTP and HTTPS protocols are allowed, got " + url.protocol
|
|
8637
|
-
);
|
|
8595
|
+
throw new Error("SECURITY: Only HTTP and HTTPS protocols are allowed, got " + url.protocol);
|
|
8638
8596
|
}
|
|
8639
8597
|
const hostname = url.hostname.toLowerCase();
|
|
8640
8598
|
for (const pattern of BLOCKED_HOST_PATTERNS) {
|
|
8641
8599
|
if (pattern.test(hostname)) {
|
|
8642
|
-
throw new Error("
|
|
8600
|
+
throw new Error("SECURITY: Blocked internal network address: " + hostname);
|
|
8643
8601
|
}
|
|
8644
8602
|
}
|
|
8645
8603
|
const ip = url.hostname;
|
|
8646
8604
|
if (/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(ip)) {
|
|
8647
8605
|
const octets = ip.split(".").map(Number);
|
|
8648
|
-
|
|
8649
|
-
|
|
8650
|
-
|
|
8651
|
-
|
|
8652
|
-
|
|
8653
|
-
|
|
8654
|
-
|
|
8655
|
-
|
|
8656
|
-
|
|
8657
|
-
|
|
8658
|
-
|
|
8659
|
-
|
|
8660
|
-
|
|
8661
|
-
|
|
8662
|
-
|
|
8663
|
-
|
|
8664
|
-
|
|
8606
|
+
const first = octets[0];
|
|
8607
|
+
const second = octets[1];
|
|
8608
|
+
if (first !== void 0 && first === 127) {
|
|
8609
|
+
throw new Error("SECURITY: Base URL resolves to private IP");
|
|
8610
|
+
}
|
|
8611
|
+
if (first !== void 0 && first === 10) {
|
|
8612
|
+
throw new Error("SECURITY: Base URL resolves to private IP");
|
|
8613
|
+
}
|
|
8614
|
+
if (first !== void 0 && second !== void 0 && first === 172 && second >= 16 && second <= 31) {
|
|
8615
|
+
throw new Error("SECURITY: Base URL resolves to private IP");
|
|
8616
|
+
}
|
|
8617
|
+
if (first !== void 0 && second !== void 0 && first === 192 && second === 168) {
|
|
8618
|
+
throw new Error("SECURITY: Base URL resolves to private IP");
|
|
8619
|
+
}
|
|
8620
|
+
if (first !== void 0 && second !== void 0 && first === 169 && second === 254) {
|
|
8621
|
+
throw new Error("SECURITY: Base URL resolves to private IP");
|
|
8622
|
+
}
|
|
8623
|
+
if (first !== void 0 && first === 0) {
|
|
8624
|
+
throw new Error("SECURITY: Base URL resolves to private IP");
|
|
8625
|
+
}
|
|
8626
|
+
}
|
|
8627
|
+
const cleanHostname = hostname.replace(/^\[|\]$/g, "");
|
|
8628
|
+
const ipVersion = net.isIP(cleanHostname);
|
|
8629
|
+
if (ipVersion === 6) {
|
|
8630
|
+
for (const prefix of BLOCKED_IPV6_PREFIXES) {
|
|
8631
|
+
if (cleanHostname.startsWith(prefix)) {
|
|
8632
|
+
throw new Error("SECURITY: Base URL resolves to private IP");
|
|
8633
|
+
}
|
|
8634
|
+
}
|
|
8635
|
+
if (cleanHostname.startsWith("::ffff:")) {
|
|
8636
|
+
const mapped = cleanHostname.slice("::ffff:".length);
|
|
8637
|
+
let octets = null;
|
|
8638
|
+
const decMatch = mapped.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
|
|
8639
|
+
if (decMatch) {
|
|
8640
|
+
octets = decMatch.slice(1, 5).map(Number);
|
|
8641
|
+
}
|
|
8642
|
+
const hexMatch = mapped.match(/^([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i);
|
|
8643
|
+
if (!octets && hexMatch && hexMatch[1] !== void 0 && hexMatch[2] !== void 0) {
|
|
8644
|
+
const high = parseInt(hexMatch[1], 16);
|
|
8645
|
+
const low = parseInt(hexMatch[2], 16);
|
|
8646
|
+
octets = [high >> 8 & 255, high & 255, low >> 8 & 255, low & 255];
|
|
8647
|
+
}
|
|
8648
|
+
if (octets !== null) {
|
|
8649
|
+
const o0 = octets[0];
|
|
8650
|
+
const o1 = octets[1];
|
|
8651
|
+
if (o0 === 127 || // 127.0.0.0/8 loopback
|
|
8652
|
+
o0 === 10 || // 10.0.0.0/8 private
|
|
8653
|
+
o0 === 0 || // 0.0.0.0/8 current network
|
|
8654
|
+
o0 === 172 && o1 !== void 0 && o1 >= 16 && o1 <= 31 || // 172.16/12 private
|
|
8655
|
+
o0 === 192 && o1 === 168 || // 192.168/16 private
|
|
8656
|
+
o0 === 169 && o1 === 254) {
|
|
8657
|
+
throw new Error("SECURITY: Base URL resolves to private IP");
|
|
8658
|
+
}
|
|
8659
|
+
} else {
|
|
8660
|
+
throw new Error("SECURITY: Base URL resolves to unrecognisable IPv4-mapped address");
|
|
8661
|
+
}
|
|
8665
8662
|
}
|
|
8666
8663
|
}
|
|
8667
8664
|
return url;
|
|
8668
8665
|
}
|
|
8666
|
+
var isUrlSafe = validateUrlSafe;
|
|
8669
8667
|
function validateEndpoint(endpoint) {
|
|
8670
8668
|
if (endpoint.includes("..")) {
|
|
8671
|
-
throw new Error("
|
|
8669
|
+
throw new Error("SECURITY: Path traversal detected in endpoint");
|
|
8672
8670
|
}
|
|
8673
8671
|
if (endpoint.includes("\\")) {
|
|
8674
|
-
throw new Error("
|
|
8672
|
+
throw new Error("SECURITY: Backslash detected in endpoint");
|
|
8675
8673
|
}
|
|
8676
8674
|
}
|
|
8677
8675
|
function createOpenAPIFetcher(config) {
|
|
8678
8676
|
const { baseUrl, endpoint, method = "get", params, body, headers = {}, auth, schema } = config;
|
|
8679
|
-
const validatedBaseUrl =
|
|
8677
|
+
const validatedBaseUrl = validateUrlSafe(baseUrl);
|
|
8680
8678
|
validateEndpoint(endpoint);
|
|
8681
8679
|
return async () => {
|
|
8682
8680
|
const url = new URL(endpoint, validatedBaseUrl.toString());
|
|
@@ -8701,7 +8699,9 @@ function createOpenAPIFetcher(config) {
|
|
|
8701
8699
|
const response = await fetch(url.toString(), {
|
|
8702
8700
|
method: method.toUpperCase(),
|
|
8703
8701
|
headers: requestHeaders,
|
|
8704
|
-
body: supportsBody && body ? JSON.stringify(body) :
|
|
8702
|
+
body: supportsBody && body ? JSON.stringify(body) : null,
|
|
8703
|
+
redirect: "error"
|
|
8704
|
+
// Prevent SSRF via 301/302 redirect to internal addresses
|
|
8705
8705
|
});
|
|
8706
8706
|
if (!response.ok) {
|
|
8707
8707
|
const safeStatus = response.status;
|
|
@@ -8714,18 +8714,20 @@ function createOpenAPIFetcher(config) {
|
|
|
8714
8714
|
return result;
|
|
8715
8715
|
};
|
|
8716
8716
|
}
|
|
8717
|
-
|
|
8718
|
-
|
|
8719
|
-
|
|
8720
|
-
|
|
8721
|
-
|
|
8722
|
-
|
|
8723
|
-
|
|
8724
|
-
|
|
8725
|
-
|
|
8726
|
-
|
|
8727
|
-
|
|
8728
|
-
|
|
8729
|
-
|
|
8730
|
-
|
|
8731
|
-
|
|
8717
|
+
|
|
8718
|
+
exports.ApprovedSpecsValidator = ApprovedSpecsValidator;
|
|
8719
|
+
exports.ClientGenerator = ClientGenerator;
|
|
8720
|
+
exports.CollectionProviderGenerator = CollectionProviderGenerator;
|
|
8721
|
+
exports.EndpointFilter = EndpointFilter;
|
|
8722
|
+
exports.OpenAPICollectionProvider = OpenAPICollectionProvider;
|
|
8723
|
+
exports.OpenAPIParser = OpenAPIParser;
|
|
8724
|
+
exports.OpenAPIPlugin = OpenAPIPlugin;
|
|
8725
|
+
exports.SchemaResolver = SchemaResolver;
|
|
8726
|
+
exports.TypeGenerator = TypeGenerator;
|
|
8727
|
+
exports.ZodSchemaGenerator = ZodSchemaGenerator;
|
|
8728
|
+
exports.createOpenAPIFetcher = createOpenAPIFetcher;
|
|
8729
|
+
exports.createOpenAPIPlugin = createOpenAPIPlugin;
|
|
8730
|
+
exports.isUrlSafe = isUrlSafe;
|
|
8731
|
+
exports.validateUrlSafe = validateUrlSafe;
|
|
8732
|
+
//# sourceMappingURL=index.js.map
|
|
8733
|
+
//# sourceMappingURL=index.js.map
|