@dereekb/util 9.17.2 → 9.17.3

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/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [9.17.3](https://github.com/dereekb/dbx-components/compare/v9.17.2-dev...v9.17.3) (2022-12-01)
6
+
7
+
8
+
5
9
  ## [9.17.2](https://github.com/dereekb/dbx-components/compare/v9.17.1-dev...v9.17.2) (2022-11-28)
6
10
 
7
11
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [9.17.3](https://github.com/dereekb/dbx-components/compare/v9.17.2-dev...v9.17.3) (2022-12-01)
6
+
7
+
8
+
5
9
  ## [9.17.2](https://github.com/dereekb/dbx-components/compare/v9.17.1-dev...v9.17.2) (2022-11-28)
6
10
 
7
11
 
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@dereekb/util/fetch",
3
- "version": "9.17.2",
3
+ "version": "9.17.3",
4
4
  "main": "./src/index.js",
5
5
  "typings": "./src/index.d.ts",
6
6
  "dependencies": {},
7
7
  "peerDependencies": {
8
- "@dereekb/util": "9.17.2",
8
+ "@dereekb/util": "9.17.3",
9
9
  "lodash.isequal": "^4.5.0",
10
10
  "make-error": "^1.3.0",
11
11
  "class-validator": "^0.13.2",
@@ -1,4 +1,4 @@
1
- import { Factory, MapFunction, WebsiteUrl } from '@dereekb/util';
1
+ import { Factory, MapFunction, Maybe, WebsiteUrl } from '@dereekb/util';
2
2
  import { ConfiguredFetchWithTimeout, RequestInitWithTimeout } from './fetch.type';
3
3
  /**
4
4
  * Interface used for creating fetch related resource factories.
@@ -82,4 +82,7 @@ export declare type FetchRequestInitFactory = (currRequest: Request, init?: Requ
82
82
  export declare type FetchRequestFactory = (input: RequestInfo | URL, init?: RequestInit | undefined) => Request;
83
83
  export declare type AbortControllerFactory = Factory<AbortController>;
84
84
  export declare function fetchRequestFactory(config: FetchRequestFactoryInput): FetchRequestFactory;
85
+ export declare function mergeRequestInits<T extends RequestInit>(base: T, requestInit?: T | undefined): T;
86
+ export declare function mergeRequestHeaders(inputHeadersArray: Maybe<HeadersInit>[]): [string, string][];
87
+ export declare function headersToHeadersTuple(headers: HeadersInit): [string, string][];
85
88
  export declare function isFetchRequest(input: unknown): input is Request;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isFetchRequest = exports.fetchRequestFactory = exports.configureFetch = exports.fetchService = void 0;
3
+ exports.isFetchRequest = exports.headersToHeadersTuple = exports.mergeRequestHeaders = exports.mergeRequestInits = exports.fetchRequestFactory = exports.configureFetch = exports.fetchService = void 0;
4
4
  const util_1 = require("@dereekb/util");
5
5
  const error_1 = require("./error");
6
6
  const timeout_1 = require("./timeout");
@@ -50,7 +50,7 @@ exports.configureFetch = configureFetch;
50
50
  function fetchRequestFactory(config) {
51
51
  const { makeRequest = (input, init) => new Request(input, init), baseUrl: inputBaseUrl, baseRequest: inputBaseRequest, timeout, requestInitFactory, useBaseUrlForConfiguredFetchRequests = false } = config;
52
52
  const baseUrl = inputBaseUrl ? new URL((0, util_1.removeTrailingSlashes)(inputBaseUrl)) : undefined;
53
- const baseRequest = timeout ? Object.assign(Object.assign({}, inputBaseRequest), { timeout }) : inputBaseRequest;
53
+ const baseRequest = (timeout ? Object.assign(Object.assign({}, inputBaseRequest), { timeout }) : inputBaseRequest);
54
54
  const buildUrl = baseUrl
55
55
  ? (url) => {
56
56
  // retain the origin and any pathname from the base url
@@ -95,11 +95,18 @@ function fetchRequestFactory(config) {
95
95
  }
96
96
  : asFetchRequest;
97
97
  let buildRequestInit;
98
- if (baseRequest && requestInitFactory) {
99
- buildRequestInit = (req, x) => requestInitFactory(req, Object.assign(Object.assign(Object.assign({}, baseRequest), { timeout: req.timeout }), x));
100
- }
101
- else if (baseRequest) {
102
- buildRequestInit = (req, x) => (Object.assign(Object.assign(Object.assign({}, baseRequest), { timeout: req.timeout }), x));
98
+ if (baseRequest) {
99
+ function combineRequestInits(request, requestInit) {
100
+ const merged = mergeRequestInits(baseRequest, requestInit);
101
+ const timeout = merged.timeout === undefined ? request.timeout : merged.timeout;
102
+ return Object.assign(Object.assign({}, merged), { timeout });
103
+ }
104
+ if (requestInitFactory) {
105
+ buildRequestInit = (req, x) => requestInitFactory(req, combineRequestInits(req, x));
106
+ }
107
+ else {
108
+ buildRequestInit = (req, x) => combineRequestInits(req, x);
109
+ }
103
110
  }
104
111
  else if (requestInitFactory) {
105
112
  buildRequestInit = requestInitFactory;
@@ -116,6 +123,53 @@ function fetchRequestFactory(config) {
116
123
  };
117
124
  }
118
125
  exports.fetchRequestFactory = fetchRequestFactory;
126
+ function mergeRequestInits(base, requestInit) {
127
+ if (requestInit) {
128
+ const headers = mergeRequestHeaders([base.headers, requestInit === null || requestInit === void 0 ? void 0 : requestInit.headers]);
129
+ return Object.assign(Object.assign(Object.assign({}, base), requestInit), { headers });
130
+ }
131
+ else {
132
+ return base;
133
+ }
134
+ }
135
+ exports.mergeRequestInits = mergeRequestInits;
136
+ function mergeRequestHeaders(inputHeadersArray) {
137
+ const headersMap = (0, util_1.multiValueMapBuilder)();
138
+ (0, util_1.filterMaybeValues)(inputHeadersArray).forEach((headers, i) => {
139
+ let tuples = headersToHeadersTuple(headers);
140
+ const visitedKeysSet = new Set();
141
+ tuples.forEach(([key, value]) => {
142
+ if (!visitedKeysSet.has(key)) {
143
+ headersMap.delete(key); // delete all existing values to "override" them
144
+ visitedKeysSet.add(key);
145
+ }
146
+ if (value) {
147
+ headersMap.add(key, value);
148
+ }
149
+ });
150
+ });
151
+ return headersMap.tuples();
152
+ }
153
+ exports.mergeRequestHeaders = mergeRequestHeaders;
154
+ function headersToHeadersTuple(headers) {
155
+ let tuples = [];
156
+ if (Array.isArray(headers)) {
157
+ // use as tuples
158
+ tuples = headers;
159
+ }
160
+ else if (typeof headers.forEach === 'function') {
161
+ // use as a headers object
162
+ headers.forEach((value, key) => {
163
+ tuples.push([key, value]);
164
+ });
165
+ }
166
+ else if (typeof headers === 'object') {
167
+ // use as a normal object
168
+ tuples = (0, util_1.objectToTuples)(headers);
169
+ }
170
+ return tuples;
171
+ }
172
+ exports.headersToHeadersTuple = headersToHeadersTuple;
119
173
  function isFetchRequest(input) {
120
174
  return Boolean(input.url);
121
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../../../packages/util/fetch/src/lib/fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../../../packages/util/fetch/src/lib/fetch.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { MapSameFunction } from '@dereekb/util';
1
2
  import { FetchMethod, ConfiguredFetch } from './fetch.type';
2
3
  import { FetchURLInput } from './url';
3
4
  export declare type FetchJsonBody = string | object;
@@ -14,8 +15,9 @@ export declare class JsonResponseParseError extends Error {
14
15
  export declare function fetchJsonBodyString(body: FetchJsonBody | undefined): string | undefined;
15
16
  export interface FetchJsonInput extends Omit<RequestInit, 'body'> {
16
17
  method: FetchMethod;
17
- body?: FetchJsonBody;
18
+ body?: FetchJsonBody | undefined;
18
19
  }
20
+ export declare type FetchJsonInputMapFunction = MapSameFunction<FetchJsonInput>;
19
21
  export declare type FetchJsonGetFunction = <R>(url: FetchURLInput) => Promise<R>;
20
22
  export declare type FetchJsonMethodAndBodyFunction = <R>(url: FetchURLInput, method: string, body?: FetchJsonBody) => Promise<R>;
21
23
  export declare type FetchJsonWithInputFunction = <R>(url: FetchURLInput, input: FetchJsonInput) => Promise<R>;
@@ -26,8 +28,25 @@ export declare type FetchJsonFunction = FetchJsonGetFunction & FetchJsonMethodAn
26
28
  export declare type HandleFetchJsonParseErrorFunction = (response: Response) => string | null | never;
27
29
  export declare const throwJsonResponseParseErrorFunction: HandleFetchJsonParseErrorFunction;
28
30
  export declare const returnNullHandleFetchJsonParseErrorFunction: HandleFetchJsonParseErrorFunction;
31
+ export interface FetchJsonFunctionConfig extends FetchJsonRequestInitFunctionConfig {
32
+ handleFetchJsonParseErrorFunction?: HandleFetchJsonParseErrorFunction;
33
+ }
29
34
  /**
30
35
  * Creates a FetchJsonFunction from the input ConfiguredFetch.
31
36
  */
32
- export declare function fetchJsonFunction(fetch: ConfiguredFetch, handleFetchJsonParseErrorFunction?: HandleFetchJsonParseErrorFunction): FetchJsonFunction;
33
- export declare function fetchJsonRequestInit(methodOrInput?: string | FetchJsonInput, body?: FetchJsonBody): RequestInit;
37
+ export declare function fetchJsonFunction(fetch: ConfiguredFetch, inputConfig?: FetchJsonFunctionConfig | HandleFetchJsonParseErrorFunction): FetchJsonFunction;
38
+ export interface FetchJsonRequestInitFunctionConfig {
39
+ /**
40
+ * Default request method.
41
+ *
42
+ * Defaults to GET
43
+ */
44
+ defaultMethod?: string;
45
+ /**
46
+ * Optional map function to modify the FetchJsonInput before it is finalized into a RequestInit value.
47
+ */
48
+ mapFetchJsonInput?: FetchJsonInputMapFunction;
49
+ }
50
+ export declare type FetchJsonRequestInitFunction = (methodOrInput?: string | FetchJsonInput | undefined, body?: FetchJsonBody) => RequestInit;
51
+ export declare function fetchJsonRequestInitFunction(config?: FetchJsonRequestInitFunctionConfig): FetchJsonRequestInitFunction;
52
+ export declare const fetchJsonRequestInit: FetchJsonRequestInitFunction;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fetchJsonRequestInit = exports.fetchJsonFunction = exports.returnNullHandleFetchJsonParseErrorFunction = exports.throwJsonResponseParseErrorFunction = exports.fetchJsonBodyString = exports.JsonResponseParseError = void 0;
3
+ exports.fetchJsonRequestInit = exports.fetchJsonRequestInitFunction = exports.fetchJsonFunction = exports.returnNullHandleFetchJsonParseErrorFunction = exports.throwJsonResponseParseErrorFunction = exports.fetchJsonBodyString = exports.JsonResponseParseError = void 0;
4
+ const util_1 = require("@dereekb/util");
4
5
  const url_1 = require("./url");
5
6
  class JsonResponseParseError extends Error {
6
7
  constructor(response) {
@@ -28,33 +29,52 @@ exports.returnNullHandleFetchJsonParseErrorFunction = returnNullHandleFetchJsonP
28
29
  /**
29
30
  * Creates a FetchJsonFunction from the input ConfiguredFetch.
30
31
  */
31
- function fetchJsonFunction(fetch, handleFetchJsonParseErrorFunction = exports.throwJsonResponseParseErrorFunction) {
32
+ function fetchJsonFunction(fetch, inputConfig) {
33
+ var _a;
34
+ let config;
35
+ if (typeof inputConfig === 'function') {
36
+ config = {
37
+ handleFetchJsonParseErrorFunction: inputConfig
38
+ };
39
+ }
40
+ else {
41
+ config = inputConfig !== null && inputConfig !== void 0 ? inputConfig : {};
42
+ }
43
+ config = Object.assign(Object.assign({}, config), { handleFetchJsonParseErrorFunction: (_a = config.handleFetchJsonParseErrorFunction) !== null && _a !== void 0 ? _a : exports.throwJsonResponseParseErrorFunction });
44
+ const { handleFetchJsonParseErrorFunction } = config;
45
+ const configuredFetchJsonRequestInit = fetchJsonRequestInitFunction(config);
32
46
  return (url, methodOrInput, body) => {
33
47
  const requestUrl = (0, url_1.fetchURL)(url);
34
- const requestInit = fetchJsonRequestInit(methodOrInput, body);
48
+ const requestInit = configuredFetchJsonRequestInit(methodOrInput, body);
35
49
  const response = fetch(requestUrl, requestInit);
36
50
  return response.then((x) => x.json().catch(handleFetchJsonParseErrorFunction));
37
51
  };
38
52
  }
39
53
  exports.fetchJsonFunction = fetchJsonFunction;
40
- function fetchJsonRequestInit(methodOrInput = 'GET', body) {
41
- let config;
42
- if (methodOrInput === null) {
43
- config = {
44
- method: 'GET'
45
- };
46
- }
47
- else if (typeof methodOrInput === 'string') {
48
- config = {
49
- method: methodOrInput,
50
- body
51
- };
52
- }
53
- else {
54
- config = methodOrInput;
55
- }
56
- const requestInit = Object.assign(Object.assign({}, config), { body: fetchJsonBodyString(config.body) });
57
- return requestInit;
54
+ function fetchJsonRequestInitFunction(config = {}) {
55
+ const { defaultMethod = 'GET', mapFetchJsonInput = (0, util_1.mapIdentityFunction)() } = config;
56
+ return (methodOrInput = defaultMethod, body) => {
57
+ var _a;
58
+ let config;
59
+ if (methodOrInput === null) {
60
+ config = {
61
+ method: defaultMethod
62
+ };
63
+ }
64
+ else if (typeof methodOrInput === 'string') {
65
+ config = {
66
+ method: methodOrInput,
67
+ body
68
+ };
69
+ }
70
+ else {
71
+ config = methodOrInput;
72
+ }
73
+ config = mapFetchJsonInput(config);
74
+ const requestInit = Object.assign(Object.assign({}, config), { method: (_a = config.method) !== null && _a !== void 0 ? _a : defaultMethod, body: fetchJsonBodyString(config.body) });
75
+ return requestInit;
76
+ };
58
77
  }
59
- exports.fetchJsonRequestInit = fetchJsonRequestInit;
78
+ exports.fetchJsonRequestInitFunction = fetchJsonRequestInitFunction;
79
+ exports.fetchJsonRequestInit = fetchJsonRequestInitFunction();
60
80
  //# sourceMappingURL=json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../../../packages/util/fetch/src/lib/json.ts"],"names":[],"mappings":";;;AACA,+BAAgD;AAIhD,MAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAAqB,QAAkB;QACrC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QADrB,aAAQ,GAAR,QAAQ,CAAU;IAEvC,CAAC;CACF;AAJD,wDAIC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,IAA+B;IACjE,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7F,CAAC;AAFD,kDAEC;AAkBM,MAAM,mCAAmC,GAAsC,CAAC,QAAkB,EAAE,EAAE;IAC3G,MAAM,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC;AAFW,QAAA,mCAAmC,uCAE9C;AAEK,MAAM,2CAA2C,GAAsC,CAAC,QAAkB,EAAE,EAAE,CAAC,IAAI,CAAC;AAA9G,QAAA,2CAA2C,+CAAmE;AAE3H;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAsB,EAAE,oCAAuE,2CAAmC;IAClK,OAAO,CAAC,GAAkB,EAAE,aAAuC,EAAE,IAAoB,EAAE,EAAE;QAC3F,MAAM,UAAU,GAAG,IAAA,cAAQ,EAAC,GAAG,CAAC,CAAC;QACjC,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAChD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC;AAPD,8CAOC;AAED,SAAgB,oBAAoB,CAAC,gBAAyC,KAAK,EAAE,IAAoB;IACvG,IAAI,MAAsB,CAAC;IAE3B,IAAI,aAAa,KAAK,IAAI,EAAE;QAC1B,MAAM,GAAG;YACP,MAAM,EAAE,KAAK;SACd,CAAC;KACH;SAAM,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;QAC5C,MAAM,GAAG;YACP,MAAM,EAAE,aAAa;YACrB,IAAI;SACL,CAAC;KACH;SAAM;QACL,MAAM,GAAG,aAAa,CAAC;KACxB;IAED,MAAM,WAAW,mCACZ,MAAM,KACT,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GACvC,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAtBD,oDAsBC"}
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../../../packages/util/fetch/src/lib/json.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/util",
3
- "version": "9.17.2",
3
+ "version": "9.17.3",
4
4
  "type": "commonjs",
5
5
  "exports": {
6
6
  ".": {
@@ -1,5 +1,5 @@
1
- import { ArrayOrValue } from '../array';
2
- import { Maybe } from '../value';
1
+ import { ArrayOrValue } from '../array/array';
2
+ import { Maybe } from '../value/maybe.type';
3
3
  /**
4
4
  *
5
5
  * @param maps
@@ -15,3 +15,24 @@ export declare function combineMaps<K, T>(...maps: Maybe<Map<K, T>>[]): Map<K, T
15
15
  * @returns
16
16
  */
17
17
  export declare function setKeysOnMap<K, T>(map: Map<K, T>, key: ArrayOrValue<K>, value: T): Map<K, T>;
18
+ /**
19
+ * Returns the array of entries from the map as tuples.
20
+ *
21
+ * @param map
22
+ * @returns
23
+ */
24
+ export declare function mapToTuples<K, T>(map: Map<K, T>): [K, T][];
25
+ /**
26
+ * Expands a map that has array values into key/value tuples.
27
+ *
28
+ * @param map
29
+ * @returns
30
+ */
31
+ export declare function expandArrayMapTuples<K, T>(map: Map<K, T[]>): [K, T][];
32
+ /**
33
+ * Expands the input tuples that may be an ArrayOrValue into tuples that are only key/value tuples.
34
+ *
35
+ * @param values
36
+ * @returns
37
+ */
38
+ export declare function expandArrayValueTuples<K, T>(values: [K, ArrayOrValue<T>][]): [K, T][];
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setKeysOnMap = exports.combineMaps = void 0;
4
- const array_1 = require("../array");
3
+ exports.expandArrayValueTuples = exports.expandArrayMapTuples = exports.mapToTuples = exports.setKeysOnMap = exports.combineMaps = void 0;
4
+ const array_1 = require("../array/array");
5
+ const iterable_1 = require("../iterable/iterable");
5
6
  /**
6
7
  *
7
8
  * @param maps
@@ -28,4 +29,40 @@ function setKeysOnMap(map, key, value) {
28
29
  return map;
29
30
  }
30
31
  exports.setKeysOnMap = setKeysOnMap;
32
+ /**
33
+ * Returns the array of entries from the map as tuples.
34
+ *
35
+ * @param map
36
+ * @returns
37
+ */
38
+ function mapToTuples(map) {
39
+ return Array.from(map.entries());
40
+ }
41
+ exports.mapToTuples = mapToTuples;
42
+ /**
43
+ * Expands a map that has array values into key/value tuples.
44
+ *
45
+ * @param map
46
+ * @returns
47
+ */
48
+ function expandArrayMapTuples(map) {
49
+ return expandArrayValueTuples(mapToTuples(map));
50
+ }
51
+ exports.expandArrayMapTuples = expandArrayMapTuples;
52
+ /**
53
+ * Expands the input tuples that may be an ArrayOrValue into tuples that are only key/value tuples.
54
+ *
55
+ * @param values
56
+ * @returns
57
+ */
58
+ function expandArrayValueTuples(values) {
59
+ const tuples = [];
60
+ values.forEach(([key, values]) => {
61
+ (0, iterable_1.useIterableOrValue)(values, (value) => {
62
+ tuples.push([key, value]);
63
+ });
64
+ });
65
+ return tuples;
66
+ }
67
+ exports.expandArrayValueTuples = expandArrayValueTuples;
31
68
  //# sourceMappingURL=map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/map/map.ts"],"names":[],"mappings":";;;AAAA,oCAAiD;AAGjD;;;;GAIG;AACH,SAAgB,WAAW,CAAO,GAAG,IAAwB;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAQ,CAAC;IAE/B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AARD,kCAQC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAO,GAAc,EAAE,GAAoB,EAAE,KAAQ;IAC/E,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,OAAO,GAAG,CAAC;AACb,CAAC;AAHD,oCAGC"}
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/map/map.ts"],"names":[],"mappings":";;;AAAA,0CAAuD;AACvD,mDAA6E;AAG7E;;;;GAIG;AACH,SAAgB,WAAW,CAAO,GAAG,IAAwB;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAQ,CAAC;IAE/B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AARD,kCAQC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAO,GAAc,EAAE,GAAoB,EAAE,KAAQ;IAC/E,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,OAAO,GAAG,CAAC;AACb,CAAC;AAHD,oCAGC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAO,GAAc;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACnC,CAAC;AAFD,kCAEC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAO,GAAgB;IACzD,OAAO,sBAAsB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAFD,oDAEC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAO,MAA8B;IACzE,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE;QAC/B,IAAA,6BAAkB,EAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAVD,wDAUC"}
@@ -44,6 +44,9 @@ export declare type MultiValueMap<T, K extends PrimativeKey = PrimativeKey> = Ma
44
44
  */
45
45
  export interface MultiValueMapBuilder<T, K extends PrimativeKey = PrimativeKey> {
46
46
  map(): MultiValueMap<T, K>;
47
+ entries(): [Maybe<K>, T[]][];
48
+ tuples(): [Maybe<K>, T][];
49
+ delete(key: Maybe<K>): void;
47
50
  add(key: Maybe<K>, value: IterableOrValue<T>): void;
48
51
  }
49
52
  /**
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.multiValueMapBuilder = exports.readMultipleKeysToMap = exports.multiKeyValueMapFactory = exports.readKeysToMap = exports.keyValueMapFactory = void 0;
4
4
  const iterable_1 = require("../iterable");
5
+ const map_1 = require("./map");
5
6
  /**
6
7
  * Creates a KeyValueMapFactory with the input ReadKeyFunction.
7
8
  *
@@ -70,6 +71,11 @@ function multiValueMapBuilder() {
70
71
  const map = new Map();
71
72
  const builder = {
72
73
  map: () => map,
74
+ entries: () => (0, map_1.mapToTuples)(map),
75
+ tuples: () => (0, map_1.expandArrayMapTuples)(map),
76
+ delete: (key) => {
77
+ map.delete(key);
78
+ },
73
79
  add: (key, value) => {
74
80
  let array = map.get(key);
75
81
  if (array == null) {
@@ -1 +1 @@
1
- {"version":3,"file":"map.key.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/map/map.key.ts"],"names":[],"mappings":";;;AACA,0CAAkE;AAQlE;;;;;GAKG;AACH,SAAgB,kBAAkB,CAA2C,IAA2B;IACtG,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAQ,CAAC;QAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpB,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAdD,gDAcC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAA2C,MAAW,EAAE,IAA2B;IAC9G,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAFD,sCAEC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAA2C,IAAoC;IACpH,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAQ,CAAC;QAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;YACnB,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAXD,0DAWC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAA2C,MAAW,EAAE,IAAoC;IAC/H,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAFD,sDAEC;AAeD;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAC;IAErC,MAAM,OAAO,GAA+B;QAC1C,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;QACd,GAAG,EAAE,CAAC,GAAa,EAAE,KAAyB,EAAE,EAAE;YAChD,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEzB,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,KAAK,GAAG,EAAE,CAAC;gBACX,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACrB;YAED,IAAA,6BAAkB,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,KAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAlBD,oDAkBC"}
1
+ {"version":3,"file":"map.key.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/map/map.key.ts"],"names":[],"mappings":";;;AACA,0CAAkE;AAElE,+BAA0D;AAO1D;;;;;GAKG;AACH,SAAgB,kBAAkB,CAA2C,IAA2B;IACtG,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAQ,CAAC;QAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpB,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAdD,gDAcC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAA2C,MAAW,EAAE,IAA2B;IAC9G,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAFD,sCAEC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAA2C,IAAoC;IACpH,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAQ,CAAC;QAE5B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;YACnB,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAXD,0DAWC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAA2C,MAAW,EAAE,IAAoC;IAC/H,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAFD,sDAEC;AAkBD;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAC;IAErC,MAAM,OAAO,GAA+B;QAC1C,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;QACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAA,iBAAW,EAAC,GAAG,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,0BAAoB,EAAC,GAAG,CAAC;QACvC,MAAM,EAAE,CAAC,GAAa,EAAE,EAAE;YACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,GAAG,EAAE,CAAC,GAAa,EAAE,KAAyB,EAAE,EAAE;YAChD,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEzB,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,KAAK,GAAG,EAAE,CAAC;gBACX,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACrB;YAED,IAAA,6BAAkB,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,KAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAvBD,oDAuBC"}
package/test/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [9.17.3](https://github.com/dereekb/dbx-components/compare/v9.17.2-dev...v9.17.3) (2022-12-01)
6
+
7
+
8
+
5
9
  ## [9.17.2](https://github.com/dereekb/dbx-components/compare/v9.17.1-dev...v9.17.2) (2022-11-28)
6
10
 
7
11
 
package/test/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dereekb/util/test",
3
- "version": "9.17.2",
3
+ "version": "9.17.3",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "typings": "./src/index.d.ts",
7
7
  "dependencies": {},
8
8
  "peerDependencies": {
9
- "@dereekb/util": "9.17.2",
9
+ "@dereekb/util": "9.17.3",
10
10
  "lodash.isequal": "^4.5.0",
11
11
  "make-error": "^1.3.0",
12
12
  "class-validator": "^0.13.2",