@sectester/scan 0.37.0 → 0.37.2

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 (69) hide show
  1. package/package.json +1 -1
  2. package/src/target/Body.d.ts +4 -14
  3. package/src/target/Body.js +29 -146
  4. package/src/target/Body.js.map +1 -1
  5. package/src/target/Target.js +12 -5
  6. package/src/target/Target.js.map +1 -1
  7. package/src/target/converters/ArrayBufferConverter.d.ts +6 -0
  8. package/src/target/converters/ArrayBufferConverter.js +17 -0
  9. package/src/target/converters/ArrayBufferConverter.js.map +1 -0
  10. package/src/target/converters/AsyncIterableConverter.d.ts +6 -0
  11. package/src/target/converters/AsyncIterableConverter.js +20 -0
  12. package/src/target/converters/AsyncIterableConverter.js.map +1 -0
  13. package/src/target/converters/BlobConverter.d.ts +6 -0
  14. package/src/target/converters/BlobConverter.js +17 -0
  15. package/src/target/converters/BlobConverter.js.map +1 -0
  16. package/src/target/converters/BodyConverter.d.ts +5 -0
  17. package/src/target/converters/BodyConverter.js +3 -0
  18. package/src/target/converters/BodyConverter.js.map +1 -0
  19. package/src/target/converters/ConverterRegistry.d.ts +6 -0
  20. package/src/target/converters/ConverterRegistry.js +14 -0
  21. package/src/target/converters/ConverterRegistry.js.map +1 -0
  22. package/src/target/converters/FormDataConverter.d.ts +7 -0
  23. package/src/target/converters/FormDataConverter.js +39 -0
  24. package/src/target/converters/FormDataConverter.js.map +1 -0
  25. package/src/target/converters/IterableConverter.d.ts +6 -0
  26. package/src/target/converters/IterableConverter.js +21 -0
  27. package/src/target/converters/IterableConverter.js.map +1 -0
  28. package/src/target/converters/JsonConverter.d.ts +6 -0
  29. package/src/target/converters/JsonConverter.js +21 -0
  30. package/src/target/converters/JsonConverter.js.map +1 -0
  31. package/src/target/converters/StreamConverter.d.ts +6 -0
  32. package/src/target/converters/StreamConverter.js +21 -0
  33. package/src/target/converters/StreamConverter.js.map +1 -0
  34. package/src/target/converters/StringConverter.d.ts +6 -0
  35. package/src/target/converters/StringConverter.js +26 -0
  36. package/src/target/converters/StringConverter.js.map +1 -0
  37. package/src/target/converters/URLSearchParamsConverter.d.ts +6 -0
  38. package/src/target/converters/URLSearchParamsConverter.js +17 -0
  39. package/src/target/converters/URLSearchParamsConverter.js.map +1 -0
  40. package/src/target/converters/index.d.ts +11 -0
  41. package/src/target/converters/index.js +15 -0
  42. package/src/target/converters/index.js.map +1 -0
  43. package/src/utils/escape.d.ts +1 -1
  44. package/src/utils/escape.js +1 -14
  45. package/src/utils/escape.js.map +1 -1
  46. package/src/utils/index.d.ts +7 -0
  47. package/src/utils/index.js +7 -0
  48. package/src/utils/index.js.map +1 -1
  49. package/src/utils/is-blob.d.ts +1 -0
  50. package/src/utils/is-blob.js +11 -0
  51. package/src/utils/is-blob.js.map +1 -0
  52. package/src/utils/is-json-serializable.d.ts +1 -0
  53. package/src/utils/is-json-serializable.js +19 -0
  54. package/src/utils/is-json-serializable.js.map +1 -0
  55. package/src/utils/is-json.d.ts +1 -0
  56. package/src/utils/is-json.js +18 -0
  57. package/src/utils/is-json.js.map +1 -0
  58. package/src/utils/is-primitive.d.ts +1 -0
  59. package/src/utils/is-primitive.js +10 -0
  60. package/src/utils/is-primitive.js.map +1 -0
  61. package/src/utils/is-stream.d.ts +1 -0
  62. package/src/utils/is-stream.js +6 -0
  63. package/src/utils/is-stream.js.map +1 -0
  64. package/src/utils/is-xml.d.ts +1 -0
  65. package/src/utils/is-xml.js +11 -0
  66. package/src/utils/is-xml.js.map +1 -0
  67. package/src/utils/normalize-linefeeds.d.ts +1 -0
  68. package/src/utils/normalize-linefeeds.js +6 -0
  69. package/src/utils/normalize-linefeeds.js.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sectester/scan",
3
- "version": "0.37.0",
3
+ "version": "0.37.2",
4
4
  "description": "The package defines a simple public API to manage scans and their expectations.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,19 +1,9 @@
1
- export type BodyType = ArrayBuffer | AsyncIterable<Uint8Array> | Blob | FormData | NodeJS.ReadableStream | Iterable<Uint8Array> | NodeJS.ArrayBufferView | URLSearchParams | null | string | Record<string, unknown>;
1
+ export type BodyType = ArrayBuffer | AsyncIterable<Uint8Array> | Blob | FormData | NodeJS.ReadableStream | Iterable<Uint8Array> | NodeJS.ArrayBufferView | URLSearchParams | unknown | null;
2
2
  export declare class Body {
3
3
  private readonly data;
4
- constructor(data: BodyType);
5
- private static fromArrayBuffer;
6
- private static fromAsyncIterable;
7
- private static fromBlob;
8
- private static fromFormData;
9
- private static fromIterable;
10
- private static fromArrayBufferView;
11
- private static fromURLSearchParams;
12
- private static fromReadableStream;
4
+ private readonly mimeType?;
5
+ private static readonly converterRegistry;
6
+ constructor(data: BodyType, mimeType?: string | undefined);
13
7
  text(): Promise<string | undefined>;
14
8
  type(): string;
15
- private detectStringMimeType;
16
- private isJson;
17
- private isXml;
18
- private isPlainObject;
19
9
  }
@@ -1,165 +1,48 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Body = void 0;
4
- const utils_1 = require("../utils");
5
- const node_crypto_1 = require("node:crypto");
6
- const node_stream_1 = require("node:stream");
4
+ const converters_1 = require("./converters");
7
5
  class Body {
8
- constructor(data) {
6
+ constructor(data, mimeType) {
9
7
  this.data = data;
8
+ this.mimeType = mimeType;
10
9
  }
11
- static fromArrayBuffer(data) {
12
- return new TextDecoder().decode(data);
13
- }
14
- static async fromAsyncIterable(data) {
15
- const chunks = [];
16
- for await (const chunk of data) {
17
- chunks.push(chunk);
18
- }
19
- return new TextDecoder().decode(Buffer.concat(chunks));
20
- }
21
- static async fromBlob(data) {
22
- const arrayBuffer = await data.arrayBuffer();
23
- return new TextDecoder().decode(arrayBuffer);
24
- }
25
- static async fromFormData(data) {
26
- const array = new Uint32Array(10);
27
- const boundary = (0, utils_1.escape)(`----BrightFormBoundary${(0, node_crypto_1.getRandomValues)(array)}`);
28
- let formDataString = '';
29
- for (const [key, value] of data) {
30
- formDataString += `--${boundary}\r\n`;
31
- if (typeof value === 'string') {
32
- formDataString += `content-disposition: form-data; name="${key}"\r\n\r\n`;
33
- formDataString += `${value}\r\n`;
34
- }
35
- else {
36
- formDataString += `content-disposition: form-data; name="${value.name}"; filename="${value.type}"\r\n`;
37
- formDataString += `content-type: ${value.type}\r\n\r\n`;
38
- formDataString += `${await this.fromBlob(value)}\r\n`;
39
- }
40
- }
41
- formDataString += `--${boundary}--\r\n`;
42
- return formDataString;
43
- }
44
- static fromIterable(data) {
45
- const chunks = [];
46
- for (const chunk of data) {
47
- chunks.push(chunk);
48
- }
49
- return new TextDecoder().decode(Buffer.concat(chunks));
50
- }
51
- static fromArrayBufferView(data) {
52
- return new TextDecoder().decode(data);
53
- }
54
- static fromURLSearchParams(data) {
55
- return data.toString();
56
- }
57
- static async fromReadableStream(data) {
58
- const chunks = [];
59
- for await (const chunk of data) {
60
- chunks.push(Buffer.from(chunk));
61
- }
62
- return new TextDecoder().decode(Buffer.concat(chunks));
63
- }
64
- // eslint-disable-next-line complexity
65
10
  async text() {
66
- if (!this.data) {
67
- return;
68
- }
69
- if (typeof this.data === 'string') {
70
- return this.data;
71
- }
72
- if (this.data instanceof ArrayBuffer) {
73
- return Body.fromArrayBuffer(this.data);
74
- }
75
- if (this.data instanceof Blob) {
76
- return Body.fromBlob(this.data);
77
- }
78
- if (this.data instanceof FormData) {
79
- return Body.fromFormData(this.data);
80
- }
81
- if (this.data instanceof URLSearchParams) {
82
- return Body.fromURLSearchParams(this.data);
83
- }
84
- if (ArrayBuffer.isView(this.data)) {
85
- return Body.fromArrayBufferView(this.data);
86
- }
87
- if (typeof Object(this.data)[Symbol.iterator] === 'function') {
88
- return Body.fromIterable(this.data);
89
- }
90
- if ((0, node_stream_1.isReadable)(this.data)) {
91
- return Body.fromReadableStream(this.data);
92
- }
93
- if (typeof Object(this.data)[Symbol.asyncIterator] === 'function') {
94
- return Body.fromAsyncIterable(this.data);
11
+ if (this.data === null) {
12
+ return 'null';
95
13
  }
96
- if (typeof this.data === 'object') {
97
- return JSON.stringify(this.data);
14
+ const converter = Body.converterRegistry.getConverter(this.data, this.mimeType);
15
+ if (converter) {
16
+ return converter.convert(this.data, this.mimeType);
98
17
  }
99
- throw new Error('Unsupported data type');
18
+ // Fallback to string conversion for any other types
19
+ return String(this.data);
100
20
  }
101
21
  type() {
102
- var _a;
22
+ if (this.mimeType) {
23
+ return this.mimeType;
24
+ }
103
25
  if (this.data === null) {
104
26
  return 'text/plain';
105
27
  }
106
- if (typeof this.data === 'string') {
107
- return this.detectStringMimeType(this.data);
108
- }
109
- if (this.data instanceof FormData) {
110
- return 'multipart/form-data';
111
- }
112
- if (this.data instanceof URLSearchParams) {
113
- return 'application/x-www-form-urlencoded';
114
- }
115
- if (this.data instanceof Blob) {
116
- return (_a = this.data.type) !== null && _a !== void 0 ? _a : 'application/octet-stream';
117
- }
118
- if (this.isPlainObject(this.data)) {
119
- return 'application/json';
28
+ const converter = Body.converterRegistry.getConverter(this.data);
29
+ if (converter) {
30
+ return converter.getMimeType(this.data);
120
31
  }
121
- return 'application/octet-stream';
122
- }
123
- detectStringMimeType(data) {
124
- const trimmed = data.trim();
125
- if (this.isJson(trimmed)) {
126
- return 'application/json';
127
- }
128
- if (this.isXml(trimmed)) {
129
- return 'application/xml';
130
- }
131
- return 'text/plain';
132
- }
133
- isJson(text) {
134
- if (!((text.startsWith('{') && text.endsWith('}')) ||
135
- (text.startsWith('[') && text.endsWith(']')))) {
136
- return false;
137
- }
138
- try {
139
- JSON.parse(text);
140
- return true;
141
- }
142
- catch {
143
- return false;
144
- }
145
- }
146
- isXml(text) {
147
- return (text.startsWith('<?xml') ||
148
- (text.startsWith('<') &&
149
- !text.startsWith('<!DOCTYPE html') &&
150
- !text.startsWith('<!--') &&
151
- text.includes('</') &&
152
- text.endsWith('>')));
153
- }
154
- isPlainObject(data) {
155
- return (typeof data === 'object' &&
156
- data !== null &&
157
- !(data instanceof ArrayBuffer) &&
158
- !ArrayBuffer.isView(data) &&
159
- !(Symbol.iterator in data) &&
160
- !(Symbol.asyncIterator in data) &&
161
- !(0, node_stream_1.isReadable)(data));
32
+ // Default type for unknown data
33
+ return '';
162
34
  }
163
35
  }
164
36
  exports.Body = Body;
37
+ Body.converterRegistry = new converters_1.ConverterRegistry([
38
+ new converters_1.ArrayBufferConverter(),
39
+ new converters_1.FormDataConverter(),
40
+ new converters_1.URLSearchParamsConverter(),
41
+ new converters_1.BlobConverter(),
42
+ new converters_1.StreamConverter(),
43
+ new converters_1.JsonConverter(),
44
+ new converters_1.StringConverter(),
45
+ new converters_1.IterableConverter(),
46
+ new converters_1.AsyncIterableConverter()
47
+ ]);
165
48
  //# sourceMappingURL=Body.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Body.js","sourceRoot":"","sources":["../../../../../packages/scan/src/target/Body.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Body.js","sourceRoot":"","sources":["../../../../../packages/scan/src/target/Body.ts"],"names":[],"mappings":";;;AAAA,6CAWsB;AActB,MAAa,IAAI;IAaf,YACmB,IAAc,EACd,QAAiB;QADjB,SAAI,GAAJ,IAAI,CAAU;QACd,aAAQ,GAAR,QAAQ,CAAS;IACjC,CAAC;IAEG,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CACnD,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,oDAAoD;QACpD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,IAAI;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,gCAAgC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;;AArDH,oBAsDC;AArDyB,sBAAiB,GAAG,IAAI,8BAAiB,CAAC;IAChE,IAAI,iCAAoB,EAAE;IAC1B,IAAI,8BAAiB,EAAE;IACvB,IAAI,qCAAwB,EAAE;IAC9B,IAAI,0BAAa,EAAE;IACnB,IAAI,4BAAe,EAAE;IACrB,IAAI,0BAAa,EAAE;IACnB,IAAI,4BAAe,EAAE;IACrB,IAAI,8BAAiB,EAAE;IACvB,IAAI,mCAAsB,EAAE;CAC7B,CAAC,CAAC"}
@@ -4,6 +4,7 @@ exports.Target = void 0;
4
4
  const models_1 = require("../models");
5
5
  const Body_1 = require("./Body");
6
6
  const core_1 = require("@har-sdk/core");
7
+ const util_1 = require("util");
7
8
  class Target {
8
9
  get parsedURL() {
9
10
  return this._parsedURL;
@@ -47,12 +48,16 @@ class Target {
47
48
  this._cachedUrl = undefined;
48
49
  }
49
50
  get headers() {
50
- if (!this._headers) {
51
- if (!this._parsedHeaders.has('content-type') && this._parsedBody) {
52
- this._parsedHeaders.set('content-type', this._parsedBody.type());
51
+ if (this._headers) {
52
+ return this._headers;
53
+ }
54
+ if (!this._parsedHeaders.has('content-type') && this._parsedBody) {
55
+ const contentType = this._parsedBody.type();
56
+ if (contentType) {
57
+ this._parsedHeaders.set('content-type', contentType);
53
58
  }
54
- this._headers = Object.fromEntries(this._parsedHeaders);
55
59
  }
60
+ this._headers = Object.fromEntries(this._parsedHeaders);
56
61
  return this._headers;
57
62
  }
58
63
  set headers(value) {
@@ -65,7 +70,9 @@ class Target {
65
70
  set body(value) {
66
71
  this._body = value;
67
72
  if (value !== undefined) {
68
- this._parsedBody = new Body_1.Body(value);
73
+ const contentType = this._parsedHeaders.get('content-type');
74
+ const { essence } = contentType ? new util_1.MIMEType(contentType) : {};
75
+ this._parsedBody = new Body_1.Body(value, essence);
69
76
  }
70
77
  }
71
78
  get serializeQuery() {
@@ -1 +1 @@
1
- {"version":3,"file":"Target.js","sourceRoot":"","sources":["../../../../../packages/scan/src/target/Target.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Target.js","sourceRoot":"","sources":["../../../../../packages/scan/src/target/Target.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class ArrayBufferConverter implements BodyConverter<ArrayBuffer | NodeJS.ArrayBufferView> {
3
+ canHandle(data: unknown): data is ArrayBuffer | NodeJS.ArrayBufferView;
4
+ convert(data: ArrayBuffer | NodeJS.ArrayBufferView): Promise<string>;
5
+ getMimeType(_data: ArrayBuffer | NodeJS.ArrayBufferView): string;
6
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArrayBufferConverter = void 0;
4
+ class ArrayBufferConverter {
5
+ canHandle(data) {
6
+ return data instanceof ArrayBuffer || ArrayBuffer.isView(data);
7
+ }
8
+ // eslint-disable-next-line @typescript-eslint/require-await
9
+ async convert(data) {
10
+ return new TextDecoder().decode(data);
11
+ }
12
+ getMimeType(_data) {
13
+ return 'application/octet-stream';
14
+ }
15
+ }
16
+ exports.ArrayBufferConverter = ArrayBufferConverter;
17
+ //# sourceMappingURL=ArrayBufferConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayBufferConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/ArrayBufferConverter.ts"],"names":[],"mappings":";;;AAEA,MAAa,oBAAoB;IAGxB,SAAS,CACd,IAAa;QAEb,OAAO,IAAI,YAAY,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,4DAA4D;IACrD,KAAK,CAAC,OAAO,CAClB,IAA0C;QAE1C,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEM,WAAW,CAAC,KAA2C;QAC5D,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF;AAnBD,oDAmBC"}
@@ -0,0 +1,6 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class AsyncIterableConverter implements BodyConverter<AsyncIterable<Uint8Array>> {
3
+ canHandle(data: unknown): data is AsyncIterable<Uint8Array>;
4
+ convert(data: AsyncIterable<Uint8Array>): Promise<string>;
5
+ getMimeType(): string;
6
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AsyncIterableConverter = void 0;
4
+ class AsyncIterableConverter {
5
+ canHandle(data) {
6
+ return typeof Object(data)[Symbol.asyncIterator] === 'function';
7
+ }
8
+ async convert(data) {
9
+ const chunks = [];
10
+ for await (const chunk of data) {
11
+ chunks.push(chunk);
12
+ }
13
+ return new TextDecoder().decode(Buffer.concat(chunks));
14
+ }
15
+ getMimeType() {
16
+ return 'application/octet-stream';
17
+ }
18
+ }
19
+ exports.AsyncIterableConverter = AsyncIterableConverter;
20
+ //# sourceMappingURL=AsyncIterableConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncIterableConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/AsyncIterableConverter.ts"],"names":[],"mappings":";;;AAEA,MAAa,sBAAsB;IAG1B,SAAS,CAAC,IAAa;QAC5B,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,UAAU,CAAC;IAClE,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAA+B;QAClD,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,WAAW;QAChB,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF;AAnBD,wDAmBC"}
@@ -0,0 +1,6 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class BlobConverter implements BodyConverter<Blob> {
3
+ canHandle(data: unknown): data is Blob;
4
+ convert(data: Blob): Promise<string>;
5
+ getMimeType(data: Blob): string;
6
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlobConverter = void 0;
4
+ const utils_1 = require("../../utils");
5
+ class BlobConverter {
6
+ canHandle(data) {
7
+ return (0, utils_1.isBlobLike)(data);
8
+ }
9
+ async convert(data) {
10
+ return new TextDecoder().decode(await data.arrayBuffer());
11
+ }
12
+ getMimeType(data) {
13
+ return data.type || 'application/octet-stream';
14
+ }
15
+ }
16
+ exports.BlobConverter = BlobConverter;
17
+ //# sourceMappingURL=BlobConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlobConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/BlobConverter.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAGzC,MAAa,aAAa;IACjB,SAAS,CAAC,IAAa;QAC5B,OAAO,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAAU;QAC7B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEM,WAAW,CAAC,IAAU;QAC3B,OAAO,IAAI,CAAC,IAAI,IAAI,0BAA0B,CAAC;IACjD,CAAC;CACF;AAZD,sCAYC"}
@@ -0,0 +1,5 @@
1
+ export interface BodyConverter<T> {
2
+ canHandle(data: unknown, mimeType?: string): data is T;
3
+ convert(data: T, mimeType?: string): Promise<string>;
4
+ getMimeType(data: T): string;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=BodyConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BodyConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/BodyConverter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class ConverterRegistry {
3
+ private readonly converters;
4
+ constructor(converters: BodyConverter<unknown>[]);
5
+ getConverter(data: unknown, mimeType?: string): BodyConverter<unknown> | undefined;
6
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConverterRegistry = void 0;
4
+ class ConverterRegistry {
5
+ constructor(converters) {
6
+ this.converters = [];
7
+ this.converters = converters;
8
+ }
9
+ getConverter(data, mimeType) {
10
+ return this.converters.find(converter => converter.canHandle(data, mimeType));
11
+ }
12
+ }
13
+ exports.ConverterRegistry = ConverterRegistry;
14
+ //# sourceMappingURL=ConverterRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConverterRegistry.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/ConverterRegistry.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IAG5B,YAAY,UAAoC;QAF/B,eAAU,GAA6B,EAAE,CAAC;QAGzD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEM,YAAY,CACjB,IAAa,EACb,QAAiB;QAEjB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CACtC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CACpC,CAAC;IACJ,CAAC;CACF;AAfD,8CAeC"}
@@ -0,0 +1,7 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class FormDataConverter implements BodyConverter<FormData> {
3
+ canHandle(data: unknown): data is FormData;
4
+ convert(data: FormData): Promise<string>;
5
+ getMimeType(_data: FormData): string;
6
+ private convertBlob;
7
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormDataConverter = void 0;
4
+ const utils_1 = require("../../utils");
5
+ const normalize_linefeeds_1 = require("../../utils/normalize-linefeeds");
6
+ const node_crypto_1 = require("node:crypto");
7
+ class FormDataConverter {
8
+ canHandle(data) {
9
+ return data instanceof FormData;
10
+ }
11
+ async convert(data) {
12
+ const array = new Uint32Array(10);
13
+ const boundary = (0, utils_1.escape)(`----BrightFormBoundary${(0, node_crypto_1.getRandomValues)(array)}`);
14
+ let formDataString = '';
15
+ for (const [key, value] of data) {
16
+ formDataString += `--${boundary}\r\n`;
17
+ if (typeof value === 'string') {
18
+ formDataString += `content-disposition: form-data; name="${(0, utils_1.escape)((0, normalize_linefeeds_1.normalizeLinefeeds)(key))}"\r\n\r\n`;
19
+ formDataString += `${value}\r\n`;
20
+ }
21
+ else {
22
+ formDataString += `content-disposition: form-data; name="${(0, utils_1.escape)((0, normalize_linefeeds_1.normalizeLinefeeds)(key))}"; filename="${(0, utils_1.escape)(value.type)}"\r\n`;
23
+ formDataString += `content-type: ${value.type || 'application/octet-stream'}\r\n\r\n`;
24
+ formDataString += `${await this.convertBlob(value)}\r\n`;
25
+ }
26
+ }
27
+ formDataString += `--${boundary}--\r\n`;
28
+ return formDataString;
29
+ }
30
+ getMimeType(_data) {
31
+ return 'multipart/form-data';
32
+ }
33
+ async convertBlob(blob) {
34
+ const arrayBuffer = await blob.arrayBuffer();
35
+ return new TextDecoder().decode(arrayBuffer);
36
+ }
37
+ }
38
+ exports.FormDataConverter = FormDataConverter;
39
+ //# sourceMappingURL=FormDataConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormDataConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/FormDataConverter.ts"],"names":[],"mappings":";;;AACA,uCAAqC;AACrC,yEAAqE;AACrE,6CAA8C;AAE9C,MAAa,iBAAiB;IACrB,SAAS,CAAC,IAAa;QAC5B,OAAO,IAAI,YAAY,QAAQ,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAAc;QACjC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAC,yBAAyB,IAAA,6BAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,IAAI,cAAc,GAAG,EAAE,CAAC;QAExB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,cAAc,IAAI,KAAK,QAAQ,MAAM,CAAC;YACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,cAAc,IAAI,yCAAyC,IAAA,cAAM,EAAC,IAAA,wCAAkB,EAAC,GAAG,CAAC,CAAC,WAAW,CAAC;gBACtG,cAAc,IAAI,GAAG,KAAK,MAAM,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,cAAc,IAAI,yCAAyC,IAAA,cAAM,EAAC,IAAA,wCAAkB,EAAC,GAAG,CAAC,CAAC,gBAAgB,IAAA,cAAM,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpI,cAAc,IAAI,iBAAiB,KAAK,CAAC,IAAI,IAAI,0BAA0B,UAAU,CAAC;gBACtF,cAAc,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,cAAc,IAAI,KAAK,QAAQ,QAAQ,CAAC;QAExC,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,WAAW,CAAC,KAAe;QAChC,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAU;QAClC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAE7C,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;CACF;AApCD,8CAoCC"}
@@ -0,0 +1,6 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class IterableConverter implements BodyConverter<Iterable<Uint8Array>> {
3
+ canHandle(data: unknown): data is Iterable<Uint8Array>;
4
+ convert(data: Iterable<Uint8Array>): Promise<string>;
5
+ getMimeType(_: Iterable<Uint8Array>): string;
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IterableConverter = void 0;
4
+ class IterableConverter {
5
+ canHandle(data) {
6
+ return typeof Object(data)[Symbol.iterator] === 'function';
7
+ }
8
+ // eslint-disable-next-line @typescript-eslint/require-await
9
+ async convert(data) {
10
+ const chunks = [];
11
+ for await (const chunk of data) {
12
+ chunks.push(chunk);
13
+ }
14
+ return new TextDecoder().decode(Buffer.concat(chunks));
15
+ }
16
+ getMimeType(_) {
17
+ return 'application/octet-stream';
18
+ }
19
+ }
20
+ exports.IterableConverter = IterableConverter;
21
+ //# sourceMappingURL=IterableConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IterableConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/IterableConverter.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IACrB,SAAS,CAAC,IAAa;QAC5B,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC;IAC7D,CAAC;IAED,4DAA4D;IACrD,KAAK,CAAC,OAAO,CAAC,IAA0B;QAC7C,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,WAAW,CAAC,CAAuB;QACxC,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF;AAlBD,8CAkBC"}
@@ -0,0 +1,6 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class JsonConverter implements BodyConverter<unknown> {
3
+ canHandle(data: unknown, mimeType?: string): data is unknown;
4
+ convert(data: unknown): Promise<string>;
5
+ getMimeType(_data: unknown): string;
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonConverter = void 0;
4
+ const is_json_serializable_1 = require("../../utils/is-json-serializable");
5
+ const is_primitive_1 = require("../../utils/is-primitive");
6
+ class JsonConverter {
7
+ canHandle(data, mimeType) {
8
+ if (mimeType === 'application/json')
9
+ return true;
10
+ return (0, is_json_serializable_1.isJsonSerializable)(data) && !(0, is_primitive_1.isPrimitive)(data);
11
+ }
12
+ // eslint-disable-next-line @typescript-eslint/require-await
13
+ async convert(data) {
14
+ return JSON.stringify(data);
15
+ }
16
+ getMimeType(_data) {
17
+ return 'application/json';
18
+ }
19
+ }
20
+ exports.JsonConverter = JsonConverter;
21
+ //# sourceMappingURL=JsonConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/JsonConverter.ts"],"names":[],"mappings":";;;AACA,2EAAsE;AACtE,2DAAuD;AAEvD,MAAa,aAAa;IACjB,SAAS,CAAC,IAAa,EAAE,QAAiB;QAC/C,IAAI,QAAQ,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAC;QAEjD,OAAO,IAAA,yCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,IAAA,0BAAW,EAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,4DAA4D;IACrD,KAAK,CAAC,OAAO,CAAC,IAAa;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEM,WAAW,CAAC,KAAc;QAC/B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF;AAfD,sCAeC"}
@@ -0,0 +1,6 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class StreamConverter implements BodyConverter<NodeJS.ReadableStream> {
3
+ canHandle(data: unknown): data is NodeJS.ReadableStream;
4
+ convert(data: NodeJS.ReadableStream): Promise<string>;
5
+ getMimeType(_: NodeJS.ReadableStream): string;
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamConverter = void 0;
4
+ const utils_1 = require("../../utils");
5
+ class StreamConverter {
6
+ canHandle(data) {
7
+ return (0, utils_1.isStream)(data);
8
+ }
9
+ async convert(data) {
10
+ const chunks = [];
11
+ for await (const chunk of data) {
12
+ chunks.push(Buffer.from(chunk));
13
+ }
14
+ return new TextDecoder().decode(Buffer.concat(chunks));
15
+ }
16
+ getMimeType(_) {
17
+ return 'application/octet-stream';
18
+ }
19
+ }
20
+ exports.StreamConverter = StreamConverter;
21
+ //# sourceMappingURL=StreamConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/StreamConverter.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AAGvC,MAAa,eAAe;IACnB,SAAS,CAAC,IAAa;QAC5B,OAAO,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAA2B;QAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,WAAW,CAAC,CAAwB;QACzC,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF;AAjBD,0CAiBC"}
@@ -0,0 +1,6 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class StringConverter implements BodyConverter<string> {
3
+ canHandle(data: unknown): data is string;
4
+ convert(data: string): Promise<string>;
5
+ getMimeType(data: string): string;
6
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringConverter = void 0;
4
+ const is_json_1 = require("../../utils/is-json");
5
+ const is_xml_1 = require("../../utils/is-xml");
6
+ class StringConverter {
7
+ canHandle(data) {
8
+ return typeof data === 'string';
9
+ }
10
+ // eslint-disable-next-line @typescript-eslint/require-await
11
+ async convert(data) {
12
+ return data;
13
+ }
14
+ getMimeType(data) {
15
+ const trimmed = data.trim();
16
+ if ((0, is_json_1.isJson)(trimmed)) {
17
+ return 'application/json';
18
+ }
19
+ if ((0, is_xml_1.isXml)(trimmed)) {
20
+ return 'application/xml';
21
+ }
22
+ return 'text/plain';
23
+ }
24
+ }
25
+ exports.StringConverter = StringConverter;
26
+ //# sourceMappingURL=StringConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/StringConverter.ts"],"names":[],"mappings":";;;AACA,iDAA6C;AAC7C,+CAA2C;AAE3C,MAAa,eAAe;IACnB,SAAS,CAAC,IAAa;QAC5B,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC;IAClC,CAAC;IAED,4DAA4D;IACrD,KAAK,CAAC,OAAO,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW,CAAC,IAAY;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,IAAI,IAAA,gBAAM,EAAC,OAAO,CAAC,EAAE,CAAC;YACpB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,IAAI,IAAA,cAAK,EAAC,OAAO,CAAC,EAAE,CAAC;YACnB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAvBD,0CAuBC"}
@@ -0,0 +1,6 @@
1
+ import { BodyConverter } from './BodyConverter';
2
+ export declare class URLSearchParamsConverter implements BodyConverter<URLSearchParams> {
3
+ canHandle(data: unknown): data is URLSearchParams;
4
+ convert(data: URLSearchParams): Promise<string>;
5
+ getMimeType(_data: URLSearchParams): string;
6
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.URLSearchParamsConverter = void 0;
4
+ class URLSearchParamsConverter {
5
+ canHandle(data) {
6
+ return data instanceof URLSearchParams;
7
+ }
8
+ // eslint-disable-next-line @typescript-eslint/require-await
9
+ async convert(data) {
10
+ return data.toString();
11
+ }
12
+ getMimeType(_data) {
13
+ return 'application/x-www-form-urlencoded';
14
+ }
15
+ }
16
+ exports.URLSearchParamsConverter = URLSearchParamsConverter;
17
+ //# sourceMappingURL=URLSearchParamsConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"URLSearchParamsConverter.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/URLSearchParamsConverter.ts"],"names":[],"mappings":";;;AAEA,MAAa,wBAAwB;IAG5B,SAAS,CAAC,IAAa;QAC5B,OAAO,IAAI,YAAY,eAAe,CAAC;IACzC,CAAC;IAED,4DAA4D;IACrD,KAAK,CAAC,OAAO,CAAC,IAAqB;QACxC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,KAAsB;QACvC,OAAO,mCAAmC,CAAC;IAC7C,CAAC;CACF;AAfD,4DAeC"}
@@ -0,0 +1,11 @@
1
+ export * from './BodyConverter';
2
+ export * from './ArrayBufferConverter';
3
+ export * from './FormDataConverter';
4
+ export * from './JsonConverter';
5
+ export * from './StringConverter';
6
+ export * from './ConverterRegistry';
7
+ export * from './URLSearchParamsConverter';
8
+ export * from './BlobConverter';
9
+ export * from './IterableConverter';
10
+ export * from './AsyncIterableConverter';
11
+ export * from './StreamConverter';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./BodyConverter"), exports);
5
+ tslib_1.__exportStar(require("./ArrayBufferConverter"), exports);
6
+ tslib_1.__exportStar(require("./FormDataConverter"), exports);
7
+ tslib_1.__exportStar(require("./JsonConverter"), exports);
8
+ tslib_1.__exportStar(require("./StringConverter"), exports);
9
+ tslib_1.__exportStar(require("./ConverterRegistry"), exports);
10
+ tslib_1.__exportStar(require("./URLSearchParamsConverter"), exports);
11
+ tslib_1.__exportStar(require("./BlobConverter"), exports);
12
+ tslib_1.__exportStar(require("./IterableConverter"), exports);
13
+ tslib_1.__exportStar(require("./AsyncIterableConverter"), exports);
14
+ tslib_1.__exportStar(require("./StreamConverter"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/scan/src/target/converters/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,iEAAuC;AACvC,8DAAoC;AACpC,0DAAgC;AAChC,4DAAkC;AAClC,8DAAoC;AACpC,qEAA2C;AAC3C,0DAAgC;AAChC,8DAAoC;AACpC,mEAAyC;AACzC,4DAAkC"}
@@ -1 +1 @@
1
- export declare const escape: (str: string, chars?: string) => string;
1
+ export declare const escape: (str: string) => string;
@@ -1,19 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.escape = void 0;
4
- const escape = (str, chars = '^[]{}()\\\\.$*+?|') => {
5
- const foundChar = [...chars].some((_, i) => str.indexOf(chars.charAt(i)) !== -1);
6
- if (!foundChar) {
7
- return str;
8
- }
9
- let result = '';
10
- for (let j = 0; j < str.length; ++j) {
11
- if (chars.indexOf(str.charAt(j)) !== -1) {
12
- result += '\\';
13
- }
14
- result += str.charAt(j);
15
- }
16
- return result;
17
- };
4
+ const escape = (str) => str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22');
18
5
  exports.escape = escape;
19
6
  //# sourceMappingURL=escape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"escape.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/escape.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CACpB,GAAW,EACX,QAAgB,mBAAmB,EAC3B,EAAE;IACV,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACtD,CAAC;IAEF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAvBW,QAAA,MAAM,UAuBjB"}
1
+ {"version":3,"file":"escape.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/escape.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CACpC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAD1D,QAAA,MAAM,UACoD"}
@@ -1 +1,8 @@
1
1
  export * from './escape';
2
+ export * from './is-json-serializable';
3
+ export * from './is-stream';
4
+ export * from './normalize-linefeeds';
5
+ export * from './is-blob';
6
+ export * from './is-json';
7
+ export * from './is-xml';
8
+ export * from './is-primitive';
@@ -2,4 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./escape"), exports);
5
+ tslib_1.__exportStar(require("./is-json-serializable"), exports);
6
+ tslib_1.__exportStar(require("./is-stream"), exports);
7
+ tslib_1.__exportStar(require("./normalize-linefeeds"), exports);
8
+ tslib_1.__exportStar(require("./is-blob"), exports);
9
+ tslib_1.__exportStar(require("./is-json"), exports);
10
+ tslib_1.__exportStar(require("./is-xml"), exports);
11
+ tslib_1.__exportStar(require("./is-primitive"), exports);
5
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,iEAAuC;AACvC,sDAA4B;AAC5B,gEAAsC;AACtC,oDAA0B;AAC1B,oDAA0B;AAC1B,mDAAyB;AACzB,yDAA+B"}
@@ -0,0 +1 @@
1
+ export declare const isBlobLike: (object: unknown) => object is Blob;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isBlobLike = void 0;
4
+ const isBlobLike = (object) => (Blob && object instanceof Blob) ||
5
+ (!!object &&
6
+ typeof object === 'object' &&
7
+ (typeof object.stream === 'function' ||
8
+ typeof object.arrayBuffer === 'function') &&
9
+ /^(Blob|File)$/.test(object[Symbol.toStringTag]));
10
+ exports.isBlobLike = isBlobLike;
11
+ //# sourceMappingURL=is-blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-blob.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/is-blob.ts"],"names":[],"mappings":";;;AAAO,MAAM,UAAU,GAAG,CAAC,MAAe,EAAkB,EAAE,CAC5D,CAAC,IAAI,IAAI,MAAM,YAAY,IAAI,CAAC;IAChC,CAAC,CAAC,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,OAAQ,MAAc,CAAC,MAAM,KAAK,UAAU;YAC3C,OAAQ,MAAc,CAAC,WAAW,KAAK,UAAU,CAAC;QACpD,eAAe,CAAC,IAAI,CAAE,MAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AANlD,QAAA,UAAU,cAMwC"}
@@ -0,0 +1 @@
1
+ export declare const isJsonSerializable: (data: unknown) => boolean;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isJsonSerializable = void 0;
4
+ const isJsonSerializable = (data) => {
5
+ try {
6
+ const serialized = JSON.stringify(data);
7
+ // Check it's not just an empty object (which Maps/Sets would produce)
8
+ if (serialized === '{}' &&
9
+ Object.prototype.toString.call(data) !== '[object Object]') {
10
+ return false;
11
+ }
12
+ return true;
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ };
18
+ exports.isJsonSerializable = isJsonSerializable;
19
+ //# sourceMappingURL=is-json-serializable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-json-serializable.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/is-json-serializable.ts"],"names":[],"mappings":";;;AAAO,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAW,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,sEAAsE;QACtE,IACE,UAAU,KAAK,IAAI;YACnB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAC1D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAfW,QAAA,kBAAkB,sBAe7B"}
@@ -0,0 +1 @@
1
+ export declare const isJson: (text: string) => boolean;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isJson = void 0;
4
+ const isJson = (text) => {
5
+ if (!((text.startsWith('{') && text.endsWith('}')) ||
6
+ (text.startsWith('[') && text.endsWith(']')))) {
7
+ return false;
8
+ }
9
+ try {
10
+ JSON.parse(text);
11
+ return true;
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ };
17
+ exports.isJson = isJson;
18
+ //# sourceMappingURL=is-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-json.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/is-json.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CAAC,IAAY,EAAW,EAAE;IAC9C,IACE,CAAC,CACC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAC7C,EACD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAjBW,QAAA,MAAM,UAiBjB"}
@@ -0,0 +1 @@
1
+ export declare const isPrimitive: (value: unknown) => boolean;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPrimitive = void 0;
4
+ const isPrimitive = (value) => typeof value === 'string' ||
5
+ typeof value === 'number' ||
6
+ typeof value === 'boolean' ||
7
+ value === null ||
8
+ value === undefined;
9
+ exports.isPrimitive = isPrimitive;
10
+ //# sourceMappingURL=is-primitive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-primitive.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/is-primitive.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CAAC,KAAc,EAAW,EAAE,CACrD,OAAO,KAAK,KAAK,QAAQ;IACzB,OAAO,KAAK,KAAK,QAAQ;IACzB,OAAO,KAAK,KAAK,SAAS;IAC1B,KAAK,KAAK,IAAI;IACd,KAAK,KAAK,SAAS,CAAC;AALT,QAAA,WAAW,eAKF"}
@@ -0,0 +1 @@
1
+ export declare const isStream: (obj: unknown) => obj is NodeJS.ReadableStream;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isStream = void 0;
4
+ const isStream = (obj) => !!obj && typeof obj.pipe === 'function';
5
+ exports.isStream = isStream;
6
+ //# sourceMappingURL=is-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-stream.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/is-stream.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAgC,EAAE,CACrE,CAAC,CAAC,GAAG,IAAI,OAAQ,GAA6B,CAAC,IAAI,KAAK,UAAU,CAAC;AADxD,QAAA,QAAQ,YACgD"}
@@ -0,0 +1 @@
1
+ export declare const isXml: (text: string) => boolean;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isXml = void 0;
4
+ const isXml = (text) => text.startsWith('<?xml') ||
5
+ (text.startsWith('<') &&
6
+ !text.startsWith('<!DOCTYPE html') &&
7
+ !text.startsWith('<!--') &&
8
+ (text.includes('</') || text.includes('/>')) &&
9
+ text.endsWith('>'));
10
+ exports.isXml = isXml;
11
+ //# sourceMappingURL=is-xml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-xml.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/is-xml.ts"],"names":[],"mappings":";;;AAAO,MAAM,KAAK,GAAG,CAAC,IAAY,EAAW,EAAE,CAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACxB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACnB,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAClC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACxB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AANX,QAAA,KAAK,SAMM"}
@@ -0,0 +1 @@
1
+ export declare const normalizeLinefeeds: (value: string) => string;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeLinefeeds = void 0;
4
+ const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n');
5
+ exports.normalizeLinefeeds = normalizeLinefeeds;
6
+ //# sourceMappingURL=normalize-linefeeds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-linefeeds.js","sourceRoot":"","sources":["../../../../../packages/scan/src/utils/normalize-linefeeds.ts"],"names":[],"mappings":";;;AAAO,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE,CAClD,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AADxB,QAAA,kBAAkB,sBACM"}