@ductape/sdk 0.0.4-v18 → 0.0.4-v19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/inputs/utils/inputs.utils.create.js +1 -1
  2. package/dist/inputs/utils/inputs.utils.create.js.map +1 -1
  3. package/dist/parsers/index.d.ts +3 -0
  4. package/dist/parsers/index.js +27 -0
  5. package/dist/parsers/index.js.map +1 -0
  6. package/dist/parsers/pipelines/postman.pipelines.d.ts +15 -0
  7. package/dist/parsers/pipelines/postman.pipelines.js +103 -0
  8. package/dist/parsers/pipelines/postman.pipelines.js.map +1 -0
  9. package/dist/parsers/types/postman.types.d.ts +200 -0
  10. package/dist/parsers/types/postman.types.js +3 -0
  11. package/dist/parsers/types/postman.types.js.map +1 -0
  12. package/dist/parsers/utils/postman.utils.d.ts +12 -0
  13. package/dist/parsers/utils/postman.utils.js +116 -0
  14. package/dist/parsers/utils/postman.utils.js.map +1 -0
  15. package/dist/parsers/validators/postman-auth.validators.d.ts +10 -0
  16. package/dist/parsers/validators/postman-auth.validators.js +127 -0
  17. package/dist/parsers/validators/postman-auth.validators.js.map +1 -0
  18. package/dist/parsers/validators/postman-request.validators.d.ts +13 -0
  19. package/dist/parsers/validators/postman-request.validators.js +139 -0
  20. package/dist/parsers/validators/postman-request.validators.js.map +1 -0
  21. package/dist/parsers/validators/postman-response.validators.d.ts +13 -0
  22. package/dist/parsers/validators/postman-response.validators.js +150 -0
  23. package/dist/parsers/validators/postman-response.validators.js.map +1 -0
  24. package/dist/parsers/validators/postman-variable.validators.d.ts +14 -0
  25. package/dist/parsers/validators/postman-variable.validators.js +163 -0
  26. package/dist/parsers/validators/postman-variable.validators.js.map +1 -0
  27. package/dist/test/test.import.js +12 -3
  28. package/dist/test/test.import.js.map +1 -1
  29. package/dist/test/test.imports.js +14 -3
  30. package/dist/test/test.imports.js.map +1 -1
  31. package/package.json +1 -1
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthValidator = void 0;
4
+ const postman_utils_1 = require("../utils/postman.utils");
5
+ class AuthValidator {
6
+ constructor(config = postman_utils_1.DEFAULT_CONFIG) {
7
+ this.config = config;
8
+ }
9
+ validate(auth) {
10
+ if (!auth)
11
+ return undefined;
12
+ const validated = Object.assign({}, auth);
13
+ const validAuthTypes = ['bearer', 'basic', 'oauth2', 'apikey', 'noauth', 'digest', 'hawk', 'aws4', 'ntlm'];
14
+ if (!validAuthTypes.includes(auth.type)) {
15
+ validated.type = 'noauth';
16
+ return validated;
17
+ }
18
+ switch (auth.type) {
19
+ case 'bearer':
20
+ validated.bearer = this.validateBearerAuth(auth.bearer);
21
+ break;
22
+ case 'basic':
23
+ validated.basic = this.validateBasicAuth(auth.basic);
24
+ break;
25
+ case 'oauth2':
26
+ validated.oauth2 = this.validateOAuth2Auth(auth.oauth2);
27
+ break;
28
+ case 'apikey':
29
+ validated.apikey = this.validateApiKeyAuth(auth.apikey);
30
+ break;
31
+ }
32
+ return validated;
33
+ }
34
+ validateBearerAuth(bearer) {
35
+ if (!bearer || bearer.length === 0) {
36
+ return [
37
+ { key: 'token', value: this.config.auth.bearer.token, type: 'string' }
38
+ ];
39
+ }
40
+ const tokenField = bearer.find(b => b.key === 'token');
41
+ if (!tokenField || !tokenField.value) {
42
+ return [
43
+ { key: 'token', value: this.config.auth.bearer.token, type: 'string' }
44
+ ];
45
+ }
46
+ return bearer;
47
+ }
48
+ validateBasicAuth(basic) {
49
+ if (!basic || basic.length === 0) {
50
+ return [
51
+ { key: 'username', value: this.config.auth.basic.username, type: 'string' },
52
+ { key: 'password', value: this.config.auth.basic.password, type: 'string' }
53
+ ];
54
+ }
55
+ const hasUsername = basic.some(b => b.key === 'username' && b.value);
56
+ const hasPassword = basic.some(b => b.key === 'password' && b.value);
57
+ if (!hasUsername || !hasPassword) {
58
+ return [
59
+ { key: 'username', value: hasUsername ? basic.find(b => b.key === 'username').value : this.config.auth.basic.username, type: 'string' },
60
+ { key: 'password', value: hasPassword ? basic.find(b => b.key === 'password').value : this.config.auth.basic.password, type: 'string' }
61
+ ];
62
+ }
63
+ return basic;
64
+ }
65
+ validateOAuth2Auth(oauth2) {
66
+ if (!oauth2 || oauth2.length === 0) {
67
+ return [
68
+ { key: 'accessToken', value: '{{oauth2_access_token}}', type: 'string' },
69
+ { key: 'tokenType', value: 'Bearer', type: 'string' },
70
+ { key: 'addTokenTo', value: 'header', type: 'string' }
71
+ ];
72
+ }
73
+ const requiredFields = ['accessToken', 'tokenType', 'addTokenTo'];
74
+ const existingKeys = new Set(oauth2.map(o => o.key));
75
+ const result = [...oauth2];
76
+ for (const field of requiredFields) {
77
+ if (!existingKeys.has(field)) {
78
+ switch (field) {
79
+ case 'accessToken':
80
+ result.push({ key: field, value: '{{oauth2_access_token}}', type: 'string' });
81
+ break;
82
+ case 'tokenType':
83
+ result.push({ key: field, value: 'Bearer', type: 'string' });
84
+ break;
85
+ case 'addTokenTo':
86
+ result.push({ key: field, value: 'header', type: 'string' });
87
+ break;
88
+ }
89
+ }
90
+ }
91
+ return result;
92
+ }
93
+ validateApiKeyAuth(apikey) {
94
+ if (!apikey || apikey.length === 0) {
95
+ return [
96
+ { key: 'key', value: this.config.auth.apikey.key, type: 'string' },
97
+ { key: 'value', value: this.config.auth.apikey.value, type: 'string' },
98
+ { key: 'in', value: this.config.auth.apikey.in, type: 'string' }
99
+ ];
100
+ }
101
+ const hasKey = apikey.some(a => a.key === 'key' && a.value);
102
+ const hasValue = apikey.some(a => a.key === 'value' && a.value);
103
+ const hasIn = apikey.some(a => a.key === 'in' && a.value);
104
+ if (!hasKey || !hasValue || !hasIn) {
105
+ const result = [];
106
+ result.push({
107
+ key: 'key',
108
+ value: hasKey ? apikey.find(a => a.key === 'key').value : this.config.auth.apikey.key,
109
+ type: 'string'
110
+ });
111
+ result.push({
112
+ key: 'value',
113
+ value: hasValue ? apikey.find(a => a.key === 'value').value : this.config.auth.apikey.value,
114
+ type: 'string'
115
+ });
116
+ result.push({
117
+ key: 'in',
118
+ value: hasIn ? apikey.find(a => a.key === 'in').value : this.config.auth.apikey.in,
119
+ type: 'string'
120
+ });
121
+ return result;
122
+ }
123
+ return apikey;
124
+ }
125
+ }
126
+ exports.AuthValidator = AuthValidator;
127
+ //# sourceMappingURL=postman-auth.validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postman-auth.validators.js","sourceRoot":"","sources":["../../../src/parsers/validators/postman-auth.validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { DefaultConfig, Item } from "../types/postman.types";
2
+ export declare class RequestValidator {
3
+ private config;
4
+ constructor(config?: DefaultConfig);
5
+ validate(item: Item): Item;
6
+ private validateRequest;
7
+ private validateUrl;
8
+ private validateHeaders;
9
+ private validateBody;
10
+ private validateQueryParams;
11
+ private validateFormData;
12
+ private validateAuth;
13
+ }
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestValidator = void 0;
4
+ const postman_utils_1 = require("../utils/postman.utils");
5
+ const postman_auth_validators_1 = require("./postman-auth.validators");
6
+ class RequestValidator {
7
+ constructor(config = postman_utils_1.DEFAULT_CONFIG) {
8
+ this.config = config;
9
+ }
10
+ validate(item) {
11
+ if (item.item) {
12
+ return Object.assign(Object.assign({}, item), { item: item.item.map(subItem => this.validate(subItem)) });
13
+ }
14
+ if (item.request) {
15
+ item.request = this.validateRequest(item.request);
16
+ }
17
+ return item;
18
+ }
19
+ validateRequest(request) {
20
+ const validated = Object.assign({}, request);
21
+ if (!postman_utils_1.ValidationUtils.isValidHttpMethod(request.method)) {
22
+ validated.method = this.config.request.method;
23
+ }
24
+ validated.url = this.validateUrl(request.url);
25
+ validated.header = this.validateHeaders(request.header);
26
+ if (request.body) {
27
+ validated.body = this.validateBody(request.body);
28
+ }
29
+ else if (['POST', 'PUT', 'PATCH'].includes(validated.method)) {
30
+ validated.body = {
31
+ mode: this.config.request.body.mode,
32
+ raw: this.config.request.body.raw,
33
+ options: {
34
+ raw: {
35
+ language: 'json'
36
+ }
37
+ }
38
+ };
39
+ }
40
+ if (request.auth) {
41
+ validated.auth = this.validateAuth(request.auth);
42
+ }
43
+ return validated;
44
+ }
45
+ validateUrl(url) {
46
+ const normalized = postman_utils_1.ValidationUtils.normalizeUrl(url);
47
+ if (!normalized.protocol) {
48
+ normalized.protocol = this.config.request.url.protocol;
49
+ }
50
+ if (!normalized.host || (Array.isArray(normalized.host) && normalized.host.length === 0)) {
51
+ normalized.host = [this.config.request.url.host];
52
+ }
53
+ if (!normalized.path || (Array.isArray(normalized.path) && normalized.path.length === 0)) {
54
+ normalized.path = [this.config.request.url.path];
55
+ }
56
+ const hostStr = Array.isArray(normalized.host) ? normalized.host.join('.') : normalized.host;
57
+ const pathStr = Array.isArray(normalized.path) ? '/' + normalized.path.join('/') : normalized.path;
58
+ const queryStr = normalized.query && normalized.query.length > 0
59
+ ? '?' + normalized.query.map(q => `${q.key}=${q.value || ''}`).join('&')
60
+ : '';
61
+ normalized.raw = `${normalized.protocol}://${hostStr}${pathStr}${queryStr}`;
62
+ return normalized;
63
+ }
64
+ validateHeaders(headers) {
65
+ if (!headers || headers.length === 0) {
66
+ return postman_utils_1.ValidationUtils.deepClone(this.config.request.headers);
67
+ }
68
+ const validatedHeaders = [];
69
+ const seenKeys = new Set();
70
+ for (const header of headers) {
71
+ const key = postman_utils_1.ValidationUtils.cleanString(header.key);
72
+ const value = postman_utils_1.ValidationUtils.cleanString(header.value);
73
+ if (key && !seenKeys.has(key.toLowerCase())) {
74
+ validatedHeaders.push({
75
+ key,
76
+ value: value || '',
77
+ type: header.type || 'text',
78
+ disabled: header.disabled || false
79
+ });
80
+ seenKeys.add(key.toLowerCase());
81
+ }
82
+ }
83
+ for (const defaultHeader of this.config.request.headers) {
84
+ if (!seenKeys.has(defaultHeader.key.toLowerCase())) {
85
+ validatedHeaders.push(postman_utils_1.ValidationUtils.deepClone(defaultHeader));
86
+ }
87
+ }
88
+ return validatedHeaders.filter(h => h.value && h.value.trim() !== '');
89
+ }
90
+ validateBody(body) {
91
+ const validated = Object.assign({}, body);
92
+ if (!body.mode) {
93
+ validated.mode = this.config.request.body.mode;
94
+ }
95
+ switch (validated.mode) {
96
+ case 'raw':
97
+ if (!validated.raw) {
98
+ validated.raw = this.config.request.body.raw;
99
+ }
100
+ if (!validated.options) {
101
+ validated.options = { raw: { language: 'json' } };
102
+ }
103
+ break;
104
+ case 'urlencoded':
105
+ validated.urlencoded = this.validateQueryParams(body.urlencoded);
106
+ break;
107
+ case 'formdata':
108
+ validated.formdata = this.validateFormData(body.formdata);
109
+ break;
110
+ case 'graphql':
111
+ if (!validated.graphql || !validated.graphql.query) {
112
+ validated.graphql = { query: '{ __typename }' };
113
+ }
114
+ break;
115
+ }
116
+ return validated;
117
+ }
118
+ validateQueryParams(params) {
119
+ if (!params || params.length === 0)
120
+ return [];
121
+ return params.map(param => ({
122
+ key: postman_utils_1.ValidationUtils.cleanString(param.key),
123
+ value: param.value || '',
124
+ disabled: param.disabled || false,
125
+ description: param.description
126
+ })).filter(param => param.key);
127
+ }
128
+ validateFormData(params) {
129
+ if (!params || params.length === 0)
130
+ return [];
131
+ return params.map(param => (Object.assign({ key: postman_utils_1.ValidationUtils.cleanString(param.key), value: param.value || '', type: param.type || 'text', disabled: param.disabled || false, description: param.description }, (param.type === 'file' && param.src ? { src: param.src } : {})))).filter(param => param.key);
132
+ }
133
+ validateAuth(auth) {
134
+ const authValidator = new postman_auth_validators_1.AuthValidator(this.config);
135
+ return authValidator.validate(auth);
136
+ }
137
+ }
138
+ exports.RequestValidator = RequestValidator;
139
+ //# sourceMappingURL=postman-request.validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postman-request.validators.js","sourceRoot":"","sources":["../../../src/parsers/validators/postman-request.validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { DefaultConfig, Item, Request } from "../types/postman.types";
2
+ export declare class ResponseValidator {
3
+ private config;
4
+ private extractedHeaders;
5
+ constructor(config?: DefaultConfig);
6
+ validate(item: Item, parentRequest?: Request): Item;
7
+ private validateResponses;
8
+ private validateResponse;
9
+ private validateResponseHeaders;
10
+ private mergeExtractedHeaders;
11
+ private createDefaultResponse;
12
+ private getStatusText;
13
+ }
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResponseValidator = void 0;
4
+ const postman_utils_1 = require("../utils/postman.utils");
5
+ const postman_request_validators_1 = require("./postman-request.validators");
6
+ class ResponseValidator {
7
+ constructor(config = postman_utils_1.DEFAULT_CONFIG) {
8
+ this.extractedHeaders = new Set();
9
+ this.config = config;
10
+ }
11
+ validate(item, parentRequest) {
12
+ if (item.item) {
13
+ return Object.assign(Object.assign({}, item), { item: item.item.map(subItem => this.validate(subItem, parentRequest)) });
14
+ }
15
+ if (item.request) {
16
+ const validatedResponses = this.validateResponses(item.response, item.request);
17
+ if (this.extractedHeaders.size > 0 && item.request.header) {
18
+ item.request.header = this.mergeExtractedHeaders(item.request.header);
19
+ }
20
+ return Object.assign(Object.assign({}, item), { response: validatedResponses });
21
+ }
22
+ return item;
23
+ }
24
+ validateResponses(responses, request) {
25
+ if (!responses || responses.length === 0) {
26
+ return [this.createDefaultResponse(request)];
27
+ }
28
+ const validatedResponses = [];
29
+ for (const response of responses) {
30
+ const validated = this.validateResponse(response, request);
31
+ validatedResponses.push(validated);
32
+ if (validated.header) {
33
+ for (const header of validated.header) {
34
+ this.extractedHeaders.add(header.key);
35
+ }
36
+ }
37
+ }
38
+ const hasSuccessResponse = validatedResponses.some(r => r.code && r.code >= 200 && r.code < 300);
39
+ if (!hasSuccessResponse) {
40
+ validatedResponses.unshift(this.createDefaultResponse(request));
41
+ }
42
+ return validatedResponses;
43
+ }
44
+ validateResponse(response, request) {
45
+ const validated = Object.assign({}, response);
46
+ if (!validated.name) {
47
+ validated.name = validated.status || 'Response';
48
+ }
49
+ if (!validated.code || !postman_utils_1.ValidationUtils.isValidStatusCode(validated.code)) {
50
+ validated.code = this.config.response.code;
51
+ validated.status = this.config.response.status;
52
+ }
53
+ if (!validated.status) {
54
+ validated.status = this.getStatusText(validated.code);
55
+ }
56
+ validated.header = this.validateResponseHeaders(response.header);
57
+ if (!validated.body) {
58
+ validated.body = this.config.response.body;
59
+ }
60
+ if (!validated._postman_previewlanguage) {
61
+ validated._postman_previewlanguage = 'json';
62
+ }
63
+ if (validated.originalRequest) {
64
+ const requestValidator = new postman_request_validators_1.RequestValidator(this.config);
65
+ validated.originalRequest = requestValidator['validateRequest'](validated.originalRequest);
66
+ }
67
+ else if (request) {
68
+ validated.originalRequest = postman_utils_1.ValidationUtils.deepClone(request);
69
+ }
70
+ return validated;
71
+ }
72
+ validateResponseHeaders(headers) {
73
+ if (!headers || headers.length === 0) {
74
+ return postman_utils_1.ValidationUtils.deepClone(this.config.response.headers);
75
+ }
76
+ const validatedHeaders = [];
77
+ const seenKeys = new Set();
78
+ for (const header of headers) {
79
+ const key = postman_utils_1.ValidationUtils.cleanString(header.key);
80
+ const value = postman_utils_1.ValidationUtils.cleanString(header.value);
81
+ if (key && !seenKeys.has(key.toLowerCase())) {
82
+ validatedHeaders.push({
83
+ key,
84
+ value: value || '',
85
+ type: header.type || 'text',
86
+ disabled: header.disabled || false
87
+ });
88
+ seenKeys.add(key.toLowerCase());
89
+ }
90
+ }
91
+ return validatedHeaders;
92
+ }
93
+ mergeExtractedHeaders(requestHeaders) {
94
+ const mergedHeaders = [...requestHeaders];
95
+ const existingKeys = new Set(requestHeaders.map(h => h.key.toLowerCase()));
96
+ for (const headerKey of this.extractedHeaders) {
97
+ if (!existingKeys.has(headerKey.toLowerCase())) {
98
+ mergedHeaders.push({
99
+ key: headerKey,
100
+ value: '',
101
+ type: 'text',
102
+ disabled: false,
103
+ description: 'Auto-added from response examples'
104
+ });
105
+ existingKeys.add(headerKey.toLowerCase());
106
+ }
107
+ }
108
+ return mergedHeaders.filter(h => h.value && h.value.trim() !== '');
109
+ }
110
+ createDefaultResponse(request) {
111
+ return {
112
+ name: 'Success Response',
113
+ originalRequest: request ? postman_utils_1.ValidationUtils.deepClone(request) : undefined,
114
+ status: this.config.response.status,
115
+ code: this.config.response.code,
116
+ _postman_previewlanguage: 'json',
117
+ header: postman_utils_1.ValidationUtils.deepClone(this.config.response.headers),
118
+ body: this.config.response.body
119
+ };
120
+ }
121
+ getStatusText(code) {
122
+ const statusTexts = {
123
+ 100: 'Continue',
124
+ 101: 'Switching Protocols',
125
+ 200: 'OK',
126
+ 201: 'Created',
127
+ 202: 'Accepted',
128
+ 204: 'No Content',
129
+ 301: 'Moved Permanently',
130
+ 302: 'Found',
131
+ 304: 'Not Modified',
132
+ 400: 'Bad Request',
133
+ 401: 'Unauthorized',
134
+ 403: 'Forbidden',
135
+ 404: 'Not Found',
136
+ 405: 'Method Not Allowed',
137
+ 409: 'Conflict',
138
+ 422: 'Unprocessable Entity',
139
+ 429: 'Too Many Requests',
140
+ 500: 'Internal Server Error',
141
+ 501: 'Not Implemented',
142
+ 502: 'Bad Gateway',
143
+ 503: 'Service Unavailable',
144
+ 504: 'Gateway Timeout'
145
+ };
146
+ return statusTexts[code] || 'Unknown Status';
147
+ }
148
+ }
149
+ exports.ResponseValidator = ResponseValidator;
150
+ //# sourceMappingURL=postman-response.validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postman-response.validators.js","sourceRoot":"","sources":["../../../src/parsers/validators/postman-response.validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { DefaultConfig, PostmanCollection, Variable } from "../types/postman.types";
2
+ export declare class VariableValidator {
3
+ private config;
4
+ private usedVariables;
5
+ constructor(config?: DefaultConfig);
6
+ validate(collection: PostmanCollection): Variable[];
7
+ private collectUsedVariables;
8
+ private collectFromItems;
9
+ private collectFromRequest;
10
+ private collectFromResponse;
11
+ private collectFromAuth;
12
+ private collectFromEvents;
13
+ private extractVariablesFromText;
14
+ }
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VariableValidator = void 0;
4
+ const postman_utils_1 = require("../utils/postman.utils");
5
+ class VariableValidator {
6
+ constructor(config = postman_utils_1.DEFAULT_CONFIG) {
7
+ this.usedVariables = new Set();
8
+ this.config = config;
9
+ }
10
+ validate(collection) {
11
+ this.collectUsedVariables(collection);
12
+ const variables = collection.variable || [];
13
+ const validatedVariables = [];
14
+ const seenKeys = new Set();
15
+ for (const variable of variables) {
16
+ const key = postman_utils_1.ValidationUtils.cleanString(variable.key);
17
+ if (key && !seenKeys.has(key)) {
18
+ if (this.usedVariables.has(key)) {
19
+ validatedVariables.push({
20
+ key,
21
+ value: variable.value !== undefined ? variable.value : this.config.variable.defaultValue,
22
+ type: variable.type || this.config.variable.type,
23
+ disabled: variable.disabled || false,
24
+ description: variable.description
25
+ });
26
+ seenKeys.add(key);
27
+ }
28
+ }
29
+ }
30
+ for (const usedVar of this.usedVariables) {
31
+ if (!seenKeys.has(usedVar)) {
32
+ validatedVariables.push({
33
+ key: usedVar,
34
+ value: this.config.variable.defaultValue,
35
+ type: this.config.variable.type,
36
+ disabled: false,
37
+ description: `Auto-generated variable for ${usedVar}`
38
+ });
39
+ }
40
+ }
41
+ return validatedVariables;
42
+ }
43
+ collectUsedVariables(collection) {
44
+ if (collection.item) {
45
+ this.collectFromItems(collection.item);
46
+ }
47
+ if (collection.auth) {
48
+ this.collectFromAuth(collection.auth);
49
+ }
50
+ if (collection.event) {
51
+ this.collectFromEvents(collection.event);
52
+ }
53
+ }
54
+ collectFromItems(items) {
55
+ for (const item of items) {
56
+ if (item.item) {
57
+ this.collectFromItems(item.item);
58
+ }
59
+ if (item.request) {
60
+ this.collectFromRequest(item.request);
61
+ }
62
+ if (item.response) {
63
+ for (const response of item.response) {
64
+ this.collectFromResponse(response);
65
+ }
66
+ }
67
+ if (item.event) {
68
+ this.collectFromEvents(item.event);
69
+ }
70
+ }
71
+ }
72
+ collectFromRequest(request) {
73
+ if (typeof request.url === 'string') {
74
+ this.extractVariablesFromText(request.url);
75
+ }
76
+ else if (request.url) {
77
+ if (request.url.raw)
78
+ this.extractVariablesFromText(request.url.raw);
79
+ if (request.url.query) {
80
+ for (const param of request.url.query) {
81
+ if (param.value)
82
+ this.extractVariablesFromText(param.value);
83
+ }
84
+ }
85
+ if (request.url.variable) {
86
+ for (const variable of request.url.variable) {
87
+ if (variable.value)
88
+ this.extractVariablesFromText(variable.value);
89
+ }
90
+ }
91
+ }
92
+ if (request.header) {
93
+ for (const header of request.header) {
94
+ this.extractVariablesFromText(header.value);
95
+ }
96
+ }
97
+ if (request.body) {
98
+ if (request.body.raw) {
99
+ this.extractVariablesFromText(request.body.raw);
100
+ }
101
+ if (request.body.urlencoded) {
102
+ for (const param of request.body.urlencoded) {
103
+ if (param.value)
104
+ this.extractVariablesFromText(param.value);
105
+ }
106
+ }
107
+ if (request.body.formdata) {
108
+ for (const param of request.body.formdata) {
109
+ if (param.value)
110
+ this.extractVariablesFromText(param.value);
111
+ }
112
+ }
113
+ }
114
+ if (request.auth) {
115
+ this.collectFromAuth(request.auth);
116
+ }
117
+ }
118
+ collectFromResponse(response) {
119
+ if (response.body) {
120
+ this.extractVariablesFromText(response.body);
121
+ }
122
+ if (response.header) {
123
+ for (const header of response.header) {
124
+ this.extractVariablesFromText(header.value);
125
+ }
126
+ }
127
+ if (response.originalRequest) {
128
+ this.collectFromRequest(response.originalRequest);
129
+ }
130
+ }
131
+ collectFromAuth(auth) {
132
+ const extractFromAuthArray = (arr) => {
133
+ if (!arr)
134
+ return;
135
+ for (const item of arr) {
136
+ if (item.value && typeof item.value === 'string') {
137
+ this.extractVariablesFromText(item.value);
138
+ }
139
+ }
140
+ };
141
+ extractFromAuthArray(auth.bearer);
142
+ extractFromAuthArray(auth.basic);
143
+ extractFromAuthArray(auth.oauth2);
144
+ extractFromAuthArray(auth.apikey);
145
+ }
146
+ collectFromEvents(events) {
147
+ for (const event of events) {
148
+ if (event.script && event.script.exec) {
149
+ for (const line of event.script.exec) {
150
+ this.extractVariablesFromText(line);
151
+ }
152
+ }
153
+ }
154
+ }
155
+ extractVariablesFromText(text) {
156
+ const variables = postman_utils_1.ValidationUtils.extractVariables(text);
157
+ for (const variable of variables) {
158
+ this.usedVariables.add(variable);
159
+ }
160
+ }
161
+ }
162
+ exports.VariableValidator = VariableValidator;
163
+ //# sourceMappingURL=postman-variable.validators.js.map