@rest-vir/define-service 1.1.0 → 1.2.1
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.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/util/merge-headers.d.ts +38 -0
- package/dist/util/merge-headers.js +73 -0
- package/dist/util/origin.d.ts +4 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from './service/minimal-service.js';
|
|
|
14
14
|
export * from './service/service-definition.error.js';
|
|
15
15
|
export * from './service/service-definition.js';
|
|
16
16
|
export * from './util/custom-shapes.js';
|
|
17
|
+
export * from './util/merge-headers.js';
|
|
17
18
|
export * from './util/mock-fetch.js';
|
|
18
19
|
export * from './util/no-param.js';
|
|
19
20
|
export * from './util/origin.js';
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export * from './service/minimal-service.js';
|
|
|
14
14
|
export * from './service/service-definition.error.js';
|
|
15
15
|
export * from './service/service-definition.js';
|
|
16
16
|
export * from './util/custom-shapes.js';
|
|
17
|
+
export * from './util/merge-headers.js';
|
|
17
18
|
export * from './util/mock-fetch.js';
|
|
18
19
|
export * from './util/no-param.js';
|
|
19
20
|
export * from './util/origin.js';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type IncomingHttpHeaders, type OutgoingHttpHeaders } from 'node:http';
|
|
2
|
+
/**
|
|
3
|
+
* Allowed header types for header manipulation utilities:
|
|
4
|
+
*
|
|
5
|
+
* - {@link mergeHeaders}
|
|
6
|
+
* - {@link consolidateHeaders}
|
|
7
|
+
* - {@link headersToObject}
|
|
8
|
+
*
|
|
9
|
+
* @category Internal
|
|
10
|
+
* @category Package : @rest-vir/define-service
|
|
11
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
12
|
+
*/
|
|
13
|
+
export type AllowedHeaders = HeadersInit | Record<string, string | string[]> | [string, string | string[]][] | IncomingHttpHeaders | OutgoingHttpHeaders;
|
|
14
|
+
/**
|
|
15
|
+
* Merges multiple headers containers into a single `Headers` instance.
|
|
16
|
+
*
|
|
17
|
+
* @category Internal
|
|
18
|
+
* @category Package : @rest-vir/define-service
|
|
19
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
20
|
+
*/
|
|
21
|
+
export declare function mergeHeaders(...headers: AllowedHeaders[]): Headers;
|
|
22
|
+
/**
|
|
23
|
+
* Consolidate the headers input of whatever valid headers container into a `Headers` instance.
|
|
24
|
+
*
|
|
25
|
+
* @category Internal
|
|
26
|
+
* @category Package : @rest-vir/define-service
|
|
27
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
28
|
+
*/
|
|
29
|
+
export declare function consolidateHeaders(headers: AllowedHeaders): Headers;
|
|
30
|
+
/**
|
|
31
|
+
* Consolidate the headers input of whatever valid headers container into an object of header
|
|
32
|
+
* values.
|
|
33
|
+
*
|
|
34
|
+
* @category Internal
|
|
35
|
+
* @category Package : @rest-vir/define-service
|
|
36
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
37
|
+
*/
|
|
38
|
+
export declare function headersToObject(headers: AllowedHeaders): Record<string, string | string[]>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { check } from '@augment-vir/assert';
|
|
2
|
+
/**
|
|
3
|
+
* Merges multiple headers containers into a single `Headers` instance.
|
|
4
|
+
*
|
|
5
|
+
* @category Internal
|
|
6
|
+
* @category Package : @rest-vir/define-service
|
|
7
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
8
|
+
*/
|
|
9
|
+
export function mergeHeaders(...headers) {
|
|
10
|
+
const finalHeaders = new Headers();
|
|
11
|
+
headers.forEach((headersInit) => {
|
|
12
|
+
const consolidatedHeadersInit = consolidateHeaders(headersInit);
|
|
13
|
+
Array.from(consolidatedHeadersInit.entries()).forEach(([key, value,]) => {
|
|
14
|
+
finalHeaders.append(key, value);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
return finalHeaders;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Consolidate the headers input of whatever valid headers container into a `Headers` instance.
|
|
21
|
+
*
|
|
22
|
+
* @category Internal
|
|
23
|
+
* @category Package : @rest-vir/define-service
|
|
24
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
25
|
+
*/
|
|
26
|
+
export function consolidateHeaders(headers) {
|
|
27
|
+
const newHeaders = new Headers();
|
|
28
|
+
const headersArray = headers instanceof Headers
|
|
29
|
+
? Array.from(headers.entries())
|
|
30
|
+
: check.isArray(headers)
|
|
31
|
+
? headers
|
|
32
|
+
: Object.entries(headers);
|
|
33
|
+
headersArray.forEach(([key, value,]) => {
|
|
34
|
+
if (value == undefined) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (check.isArray(value)) {
|
|
38
|
+
value.forEach((innerValue) => newHeaders.append(key, innerValue));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
newHeaders.append(key, String(value));
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return newHeaders;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Consolidate the headers input of whatever valid headers container into an object of header
|
|
48
|
+
* values.
|
|
49
|
+
*
|
|
50
|
+
* @category Internal
|
|
51
|
+
* @category Package : @rest-vir/define-service
|
|
52
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
53
|
+
*/
|
|
54
|
+
export function headersToObject(headers) {
|
|
55
|
+
const consolidatedHeaders = consolidateHeaders(headers);
|
|
56
|
+
const headersObject = {};
|
|
57
|
+
Array.from(consolidatedHeaders.entries()).forEach(([key, value,]) => {
|
|
58
|
+
const existingValue = headersObject[key];
|
|
59
|
+
if (existingValue == undefined) {
|
|
60
|
+
headersObject[key] = value;
|
|
61
|
+
}
|
|
62
|
+
else if (check.isArray(existingValue)) {
|
|
63
|
+
existingValue.push(value);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
headersObject[key] = [
|
|
67
|
+
existingValue,
|
|
68
|
+
value,
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return headersObject;
|
|
73
|
+
}
|
package/dist/util/origin.d.ts
CHANGED
|
@@ -60,6 +60,10 @@ export declare const originRequirementShape: import("object-shape-tester").Shape
|
|
|
60
60
|
* - `boolean`: the origin was explicitly checked and passed (`true`) or failed (`false`)
|
|
61
61
|
* - `undefined`: no origin checking occurred
|
|
62
62
|
* - `AnyOrigin`: requirements explicitly allow any origin.
|
|
63
|
+
*
|
|
64
|
+
* @category Internal
|
|
65
|
+
* @category Package : @rest-vir/define-service
|
|
66
|
+
* @package [`@rest-vir/define-service`](https://www.npmjs.com/package/@rest-vir/define-service)
|
|
63
67
|
*/
|
|
64
68
|
export type OriginRequirementResult = boolean | undefined | AnyOrigin;
|
|
65
69
|
/**
|