@rest-vir/define-service 1.1.0 → 1.2.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.
@@ -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
+ }
@@ -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
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rest-vir/define-service",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Define an connect to a declarative and type safe REST and WebSocket service.",
5
5
  "keywords": [
6
6
  "rest",