@nice-digital/search-client 0.2.1390-async-performance-te → 0.2.1392-async-first-commit
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/es/demo.js +16 -27
- package/es/demo.js.map +1 -1
- package/es/index.js +2 -7
- package/es/index.js.map +1 -1
- package/es/url-utils.js +5 -100
- package/es/url-utils.js.map +1 -1
- package/lib/demo.js +15 -26
- package/lib/demo.js.map +1 -1
- package/lib/index.js +5 -11
- package/lib/index.js.map +1 -1
- package/lib/url-utils.js +6 -106
- package/lib/url-utils.js.map +1 -1
- package/package.json +2 -2
- package/types/index.d.ts +2 -4
- package/types/index.d.ts.map +1 -1
- package/types/models/PagerLinks.d.ts +5 -4
- package/types/models/PagerLinks.d.ts.map +1 -1
- package/types/models/SearchUrl.d.ts +1 -1
- package/types/models/SearchUrl.d.ts.map +1 -1
- package/types/url-utils.d.ts +2 -46
- package/types/url-utils.d.ts.map +1 -1
- package/es/models/OrModifiers.js +0 -15
- package/es/models/OrModifiers.js.map +0 -1
- package/es/pretty-url-middleware.js +0 -75
- package/es/pretty-url-middleware.js.map +0 -1
- package/lib/models/OrModifiers.js +0 -18
- package/lib/models/OrModifiers.js.map +0 -1
- package/lib/pretty-url-middleware.js +0 -81
- package/lib/pretty-url-middleware.js.map +0 -1
- package/types/models/OrModifiers.d.ts +0 -7
- package/types/models/OrModifiers.d.ts.map +0 -1
- package/types/pretty-url-middleware.d.ts +0 -14
- package/types/pretty-url-middleware.d.ts.map +0 -1
package/es/demo.js
CHANGED
|
@@ -1,40 +1,29 @@
|
|
|
1
|
-
import { initialise,
|
|
1
|
+
import { initialise, getSearchUrl, typeAhead } from ".";
|
|
2
2
|
initialise({
|
|
3
3
|
baseURL: "https://dev-search-api.nice.org.uk/api",
|
|
4
4
|
index: "nice",
|
|
5
|
-
usePrettyUrls: true,
|
|
6
5
|
});
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
// );
|
|
13
|
-
// typeAhead("para").then((typeAheadSuggestions) => {
|
|
14
|
-
// console.log({ typeAheadSuggestions });
|
|
15
|
-
// });
|
|
6
|
+
console.log(getSearchUrl("/guidance/published?q=test"));
|
|
7
|
+
console.log(getSearchUrl("/guidance/published?q=test?+hello&om=%5B%7B%22ndt%22%3A%5B%22Guidance%22%5D%7D%5D"));
|
|
8
|
+
typeAhead("para").then(function (typeAheadSuggestions) {
|
|
9
|
+
console.log({ typeAheadSuggestions: typeAheadSuggestions });
|
|
10
|
+
});
|
|
16
11
|
// console.log(
|
|
17
12
|
// getUrlPathAndQuery({
|
|
18
13
|
// route: "/guidance/published",
|
|
19
14
|
// om: `[{"ndt":["Guidance"]}]`,
|
|
20
15
|
// })
|
|
21
16
|
// );
|
|
22
|
-
try {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
console.log("Success! " + data.resultCount + " results found");
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
catch (e) {
|
|
36
|
-
console.error(e);
|
|
37
|
-
}
|
|
17
|
+
// try {
|
|
18
|
+
// search({
|
|
19
|
+
// route: "/search",
|
|
20
|
+
// om: '[{"ndt":["Guidance"]}]',
|
|
21
|
+
// }).then((data) => {
|
|
22
|
+
// console.log({ failed: data.failed, err: data.errorMessage });
|
|
23
|
+
// });
|
|
24
|
+
// } catch (e) {
|
|
25
|
+
// console.error(e);
|
|
26
|
+
// }
|
|
38
27
|
// try {
|
|
39
28
|
// search("/search?om=[{\"ndt\":[\"Guidance\"]}]").then((data) => {
|
|
40
29
|
// console.log({ failed: data.failed });
|
package/es/demo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAU,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAEhE,UAAU,CAAC;IACT,OAAO,EAAE,wCAAwC;IACjD,KAAK,EAAE,MAAM;CACd,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC;AAExD,OAAO,CAAC,GAAG,CACT,YAAY,CACV,mFAAmF,CACpF,CACF,CAAC;AAEF,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,oBAAoB;IAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,oBAAoB,sBAAA,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,yBAAyB;AACzB,oCAAoC;AACpC,oCAAoC;AACpC,OAAO;AACP,KAAK;AAEL,QAAQ;AACR,aAAa;AACb,wBAAwB;AACxB,oCAAoC;AACpC,wBAAwB;AACxB,oEAAoE;AACpE,QAAQ;AACR,gBAAgB;AAChB,sBAAsB;AACtB,IAAI;AAEJ,QAAQ;AACR,uEAAuE;AACvE,gDAAgD;AAChD,SAAS;AACT,IAAI;AACJ,aAAa;AACb,wBAAwB;AACxB,IAAI"}
|
package/es/index.js
CHANGED
|
@@ -5,10 +5,8 @@ import applyCaseMiddleware from "axios-case-converter";
|
|
|
5
5
|
import { EndPointUrl } from "./EndPointUrl";
|
|
6
6
|
import { getSearchUrl, getUrlPathAndQuery } from "./url-utils";
|
|
7
7
|
import qs from "qs";
|
|
8
|
-
import { applyPrettyUrlMiddleware } from "./pretty-url-middleware";
|
|
9
8
|
export * from "./models/Document";
|
|
10
9
|
export * from "./models/Navigator";
|
|
11
|
-
export * from "./models/OrModifiers";
|
|
12
10
|
export * from "./models/PagerLinks";
|
|
13
11
|
export * from "./models/SearchCorrection";
|
|
14
12
|
export * from "./models/SearchResults";
|
|
@@ -21,7 +19,7 @@ export * from "./utils";
|
|
|
21
19
|
/** The default timeout, in milliseconds, if unspecified in `initialise` */
|
|
22
20
|
export var defaultTimeout = 5000;
|
|
23
21
|
var isDevelopment = process.env.NODE_ENV === "development";
|
|
24
|
-
var client;
|
|
22
|
+
export var client;
|
|
25
23
|
/**
|
|
26
24
|
* Ensures that `initialise` has been called before search methods like `search`.
|
|
27
25
|
*
|
|
@@ -32,7 +30,7 @@ var ensureInitialised = function () {
|
|
|
32
30
|
throw new Error("Please call initialise before calling search methods");
|
|
33
31
|
};
|
|
34
32
|
export var initialise = function (_a) {
|
|
35
|
-
var baseURL = _a.baseURL, index = _a.index, _b = _a.timeout, timeout = _b === void 0 ? defaultTimeout : _b
|
|
33
|
+
var baseURL = _a.baseURL, index = _a.index, _b = _a.timeout, timeout = _b === void 0 ? defaultTimeout : _b;
|
|
36
34
|
// Lowercase all property names because that's more Javascripty and we receive capitalised properties from the server
|
|
37
35
|
client = applyCaseMiddleware(axios.create({
|
|
38
36
|
baseURL: baseURL,
|
|
@@ -51,9 +49,6 @@ export var initialise = function (_a) {
|
|
|
51
49
|
})
|
|
52
50
|
: undefined,
|
|
53
51
|
}));
|
|
54
|
-
if (usePrettyUrls)
|
|
55
|
-
client = applyPrettyUrlMiddleware(client);
|
|
56
|
-
return client;
|
|
57
52
|
};
|
|
58
53
|
/**
|
|
59
54
|
* Performs a search against the Single Search Endpoint from the given search url.
|
package/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,mBAAmB,MAAM,sBAAsB,CAAC;AAOvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/es/url-utils.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { __assign } from "tslib";
|
|
2
2
|
import qs from "qs";
|
|
3
|
-
import { knownOrModifierKeys } from "./models/OrModifiers";
|
|
4
3
|
/**
|
|
5
4
|
* Gets the path and query from the given search url object.
|
|
6
5
|
*
|
|
@@ -15,9 +14,7 @@ export var getUrlPathAndQuery = function (searchUrl) {
|
|
|
15
14
|
return (searchUrl.route +
|
|
16
15
|
qs.stringify(searchUrl, {
|
|
17
16
|
addQueryPrefix: true,
|
|
18
|
-
filter: function (prefix, value) {
|
|
19
|
-
return prefix === "route" || prefix === "fullUrl" ? undefined : value;
|
|
20
|
-
},
|
|
17
|
+
filter: function (prefix, value) { return (prefix === "route" || prefix === "fullUrl" ? undefined : value); },
|
|
21
18
|
}));
|
|
22
19
|
};
|
|
23
20
|
/**
|
|
@@ -27,103 +24,11 @@ export var getUrlPathAndQuery = function (searchUrl) {
|
|
|
27
24
|
* getSearchUrl("/search?q=test")
|
|
28
25
|
* returns { route: "/search", q: "test" }
|
|
29
26
|
*
|
|
30
|
-
* @param
|
|
27
|
+
* @param urlStr The relative url including path and query
|
|
31
28
|
* @returns Search url object
|
|
32
29
|
*/
|
|
33
|
-
export var getSearchUrl = function (
|
|
34
|
-
var
|
|
35
|
-
return __assign({ route: path,
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Parses a JSON-formatted 'om' query param into a set of key value pairs
|
|
39
|
-
*
|
|
40
|
-
* @param omJsonQueryString A JSON formatted om query e.g. [{"ndt":["Guidance"]}]
|
|
41
|
-
* @returns A set of key value pairs of or modifiers
|
|
42
|
-
*/
|
|
43
|
-
export var getPrettyOrModifierParams = function (omJsonQueryString) {
|
|
44
|
-
return JSON.parse(decodeURIComponent(omJsonQueryString)).map(function (om) {
|
|
45
|
-
// Lots of array access here because om is an array objects where the value is itself an array
|
|
46
|
-
var entry = Object.entries(om)[0], key = entry[0], value = entry[1][0];
|
|
47
|
-
return { key: key, value: value };
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* Turns a search URL with JSON-formatted 'or modifiers' into a 'pretty' url.
|
|
52
|
-
*
|
|
53
|
-
* A pretty url having keys e.g. ndt=Guidance&ndt=Advice rather than JSON
|
|
54
|
-
*
|
|
55
|
-
* @param searchUrl The raw search url, with JSON-formatted 'or modifiers' (om)
|
|
56
|
-
* @returns A flattened pretty URL
|
|
57
|
-
*/
|
|
58
|
-
export var getPrettyUrl = function (searchUrl) {
|
|
59
|
-
var omQueryRegex = /([?&])om=([^&]+)/i, omMatch = searchUrl.match(omQueryRegex), omJsonQueryString = omMatch && omMatch[2];
|
|
60
|
-
// Or modifiers is the only param that comes through as JSON so all the others we can leave alone
|
|
61
|
-
if (!omJsonQueryString)
|
|
62
|
-
return searchUrl;
|
|
63
|
-
var flattenedOrModifiers = getPrettyOrModifierParams(omJsonQueryString)
|
|
64
|
-
.map(function (_a) {
|
|
65
|
-
var key = _a.key, value = _a.value;
|
|
66
|
-
return key + "=" + encodeURIComponent(value);
|
|
67
|
-
})
|
|
68
|
-
.join("&");
|
|
69
|
-
return searchUrl.replace(omQueryRegex, "$1" + flattenedOrModifiers);
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* Converts individual or modifier params into a JSON formatted om query param
|
|
73
|
-
*
|
|
74
|
-
* @param params
|
|
75
|
-
* @returns
|
|
76
|
-
*/
|
|
77
|
-
export var getParamsWithUglyJSONOrModifier = function (params) {
|
|
78
|
-
// Find the querystring params we need need to turn into the ugly om JSON
|
|
79
|
-
var omJSONParam = Object.entries(params)
|
|
80
|
-
.filter(function (om) { return knownOrModifierKeys.includes(om[0]); })
|
|
81
|
-
// And convert them into a key values pairs
|
|
82
|
-
.map(function (om) {
|
|
83
|
-
var _a;
|
|
84
|
-
var key = om[0], value = om[1];
|
|
85
|
-
if (Array.isArray(value))
|
|
86
|
-
return value.map(function (val) {
|
|
87
|
-
var _a;
|
|
88
|
-
return (_a = {}, _a[key] = [val], _a);
|
|
89
|
-
});
|
|
90
|
-
return _a = {}, _a[key] = [value], _a;
|
|
91
|
-
})
|
|
92
|
-
.reduce(function (prev, curr) {
|
|
93
|
-
return prev.concat(curr);
|
|
94
|
-
}, []);
|
|
95
|
-
// Remove individual or modifier queries now we have a single JSON om
|
|
96
|
-
knownOrModifierKeys.forEach(function (modifier) {
|
|
97
|
-
delete params[modifier];
|
|
98
|
-
});
|
|
99
|
-
params.om = JSON.stringify(omJSONParam);
|
|
100
|
-
return params;
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* Converts a search url with pretty 'or modifiers' into a URL with an ugly JSON-formatted om param.
|
|
104
|
-
*
|
|
105
|
-
* @param prettyUrl The search url with individual om query params
|
|
106
|
-
* @returns The URL with a single
|
|
107
|
-
*/
|
|
108
|
-
export var getUglyJSONSearchUrl = function (prettyUrl) {
|
|
109
|
-
var path = prettyUrl.split("?")[0], query = prettyUrl.split("?")[1] || "", params = qs.parse(query, { ignoreQueryPrefix: true });
|
|
110
|
-
return (path +
|
|
111
|
-
qs.stringify(getParamsWithUglyJSONOrModifier(params), {
|
|
112
|
-
addQueryPrefix: true,
|
|
113
|
-
}));
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* Filter function to exclude known or modifier keys from a querystring object.
|
|
117
|
-
*
|
|
118
|
-
* Can be used for the 'filter' parameter within qs.stringify
|
|
119
|
-
*
|
|
120
|
-
* @param prefix The key prefix for this querystring value
|
|
121
|
-
* @param value The value of this questring
|
|
122
|
-
* @returns Undefined for known or modifiers, otherwise the original value
|
|
123
|
-
*/
|
|
124
|
-
export var filterKnownOrModifiers = function (prefix, value) {
|
|
125
|
-
return knownOrModifierKeys.includes(prefix)
|
|
126
|
-
? undefined
|
|
127
|
-
: value;
|
|
30
|
+
export var getSearchUrl = function (urlStr) {
|
|
31
|
+
var questionMarkIndex = urlStr.indexOf("?"), path = urlStr.substr(0, questionMarkIndex == -1 ? urlStr.length : questionMarkIndex), query = questionMarkIndex === -1 ? "" : urlStr.substr(questionMarkIndex);
|
|
32
|
+
return __assign(__assign({ route: path }, qs.parse(query, { ignoreQueryPrefix: true })), { fullUrl: urlStr });
|
|
128
33
|
};
|
|
129
34
|
//# sourceMappingURL=url-utils.js.map
|
package/es/url-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB;;;;;;;;;GASG;AACH,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,SAAuC;IACxE,OAAO,CACL,SAAS,CAAC,KAAK;QACf,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;YACtB,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,UAAC,MAAM,EAAE,KAAK,IAAK,OAAA,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAhE,CAAgE;SAC5F,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,MAAc;IACzC,IAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAC3C,IAAI,GAAG,MAAM,CAAC,MAAM,CAClB,CAAC,EACD,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAC5D,EACD,KAAK,GAAG,iBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE3E,2BACE,KAAK,EAAE,IAAI,IACR,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,KAC/C,OAAO,EAAE,MAAM,IACf;AACJ,CAAC,CAAC"}
|
package/lib/demo.js
CHANGED
|
@@ -4,39 +4,28 @@ var _1 = require(".");
|
|
|
4
4
|
_1.initialise({
|
|
5
5
|
baseURL: "https://dev-search-api.nice.org.uk/api",
|
|
6
6
|
index: "nice",
|
|
7
|
-
usePrettyUrls: true,
|
|
8
7
|
});
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// );
|
|
15
|
-
// typeAhead("para").then((typeAheadSuggestions) => {
|
|
16
|
-
// console.log({ typeAheadSuggestions });
|
|
17
|
-
// });
|
|
8
|
+
console.log(_1.getSearchUrl("/guidance/published?q=test"));
|
|
9
|
+
console.log(_1.getSearchUrl("/guidance/published?q=test?+hello&om=%5B%7B%22ndt%22%3A%5B%22Guidance%22%5D%7D%5D"));
|
|
10
|
+
_1.typeAhead("para").then(function (typeAheadSuggestions) {
|
|
11
|
+
console.log({ typeAheadSuggestions: typeAheadSuggestions });
|
|
12
|
+
});
|
|
18
13
|
// console.log(
|
|
19
14
|
// getUrlPathAndQuery({
|
|
20
15
|
// route: "/guidance/published",
|
|
21
16
|
// om: `[{"ndt":["Guidance"]}]`,
|
|
22
17
|
// })
|
|
23
18
|
// );
|
|
24
|
-
try {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
console.log("Success! " + data.resultCount + " results found");
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
console.error(e);
|
|
39
|
-
}
|
|
19
|
+
// try {
|
|
20
|
+
// search({
|
|
21
|
+
// route: "/search",
|
|
22
|
+
// om: '[{"ndt":["Guidance"]}]',
|
|
23
|
+
// }).then((data) => {
|
|
24
|
+
// console.log({ failed: data.failed, err: data.errorMessage });
|
|
25
|
+
// });
|
|
26
|
+
// } catch (e) {
|
|
27
|
+
// console.error(e);
|
|
28
|
+
// }
|
|
40
29
|
// try {
|
|
41
30
|
// search("/search?om=[{\"ndt\":[\"Guidance\"]}]").then((data) => {
|
|
42
31
|
// console.log({ failed: data.failed });
|
package/lib/demo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":";;AAAA,sBAAgE;AAEhE,aAAU,CAAC;IACT,OAAO,EAAE,wCAAwC;IACjD,KAAK,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":";;AAAA,sBAAgE;AAEhE,aAAU,CAAC;IACT,OAAO,EAAE,wCAAwC;IACjD,KAAK,EAAE,MAAM;CACd,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC,eAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC;AAExD,OAAO,CAAC,GAAG,CACT,eAAY,CACV,mFAAmF,CACpF,CACF,CAAC;AAEF,YAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,oBAAoB;IAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,oBAAoB,sBAAA,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,yBAAyB;AACzB,oCAAoC;AACpC,oCAAoC;AACpC,OAAO;AACP,KAAK;AAEL,QAAQ;AACR,aAAa;AACb,wBAAwB;AACxB,oCAAoC;AACpC,wBAAwB;AACxB,oEAAoE;AACpE,QAAQ;AACR,gBAAgB;AAChB,sBAAsB;AACtB,IAAI;AAEJ,QAAQ;AACR,uEAAuE;AACvE,gDAAgD;AAChD,SAAS;AACT,IAAI;AACJ,aAAa;AACb,wBAAwB;AACxB,IAAI"}
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.typeAhead = exports.search = exports.initialise = exports.defaultTimeout = void 0;
|
|
3
|
+
exports.typeAhead = exports.search = exports.initialise = exports.client = exports.defaultTimeout = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var https_1 = tslib_1.__importDefault(require("https"));
|
|
6
6
|
var axios_1 = tslib_1.__importDefault(require("axios"));
|
|
@@ -8,10 +8,8 @@ var axios_case_converter_1 = tslib_1.__importDefault(require("axios-case-convert
|
|
|
8
8
|
var EndPointUrl_1 = require("./EndPointUrl");
|
|
9
9
|
var url_utils_1 = require("./url-utils");
|
|
10
10
|
var qs_1 = tslib_1.__importDefault(require("qs"));
|
|
11
|
-
var pretty_url_middleware_1 = require("./pretty-url-middleware");
|
|
12
11
|
tslib_1.__exportStar(require("./models/Document"), exports);
|
|
13
12
|
tslib_1.__exportStar(require("./models/Navigator"), exports);
|
|
14
|
-
tslib_1.__exportStar(require("./models/OrModifiers"), exports);
|
|
15
13
|
tslib_1.__exportStar(require("./models/PagerLinks"), exports);
|
|
16
14
|
tslib_1.__exportStar(require("./models/SearchCorrection"), exports);
|
|
17
15
|
tslib_1.__exportStar(require("./models/SearchResults"), exports);
|
|
@@ -24,20 +22,19 @@ tslib_1.__exportStar(require("./utils"), exports);
|
|
|
24
22
|
/** The default timeout, in milliseconds, if unspecified in `initialise` */
|
|
25
23
|
exports.defaultTimeout = 5000;
|
|
26
24
|
var isDevelopment = process.env.NODE_ENV === "development";
|
|
27
|
-
var client;
|
|
28
25
|
/**
|
|
29
26
|
* Ensures that `initialise` has been called before search methods like `search`.
|
|
30
27
|
*
|
|
31
28
|
* Throws an error if `initialise` hasn't been called.
|
|
32
29
|
*/
|
|
33
30
|
var ensureInitialised = function () {
|
|
34
|
-
if (!client)
|
|
31
|
+
if (!exports.client)
|
|
35
32
|
throw new Error("Please call initialise before calling search methods");
|
|
36
33
|
};
|
|
37
34
|
var initialise = function (_a) {
|
|
38
|
-
var baseURL = _a.baseURL, index = _a.index, _b = _a.timeout, timeout = _b === void 0 ? exports.defaultTimeout : _b
|
|
35
|
+
var baseURL = _a.baseURL, index = _a.index, _b = _a.timeout, timeout = _b === void 0 ? exports.defaultTimeout : _b;
|
|
39
36
|
// Lowercase all property names because that's more Javascripty and we receive capitalised properties from the server
|
|
40
|
-
client = axios_case_converter_1.default(axios_1.default.create({
|
|
37
|
+
exports.client = axios_case_converter_1.default(axios_1.default.create({
|
|
41
38
|
baseURL: baseURL,
|
|
42
39
|
timeout: timeout,
|
|
43
40
|
params: {
|
|
@@ -54,9 +51,6 @@ var initialise = function (_a) {
|
|
|
54
51
|
})
|
|
55
52
|
: undefined,
|
|
56
53
|
}));
|
|
57
|
-
if (usePrettyUrls)
|
|
58
|
-
client = pretty_url_middleware_1.applyPrettyUrlMiddleware(client);
|
|
59
|
-
return client;
|
|
60
54
|
};
|
|
61
55
|
exports.initialise = initialise;
|
|
62
56
|
/**
|
|
@@ -122,7 +116,7 @@ var doRequest = function (endpoint, url) { return tslib_1.__awaiter(void 0, void
|
|
|
122
116
|
_b.label = 1;
|
|
123
117
|
case 1:
|
|
124
118
|
_b.trys.push([1, 3, , 4]);
|
|
125
|
-
return [4 /*yield*/, client.get(endpoint, {
|
|
119
|
+
return [4 /*yield*/, exports.client.get(endpoint, {
|
|
126
120
|
params: tslib_1.__assign(tslib_1.__assign({}, queryParams), { route: route === endpoint ? undefined : route }),
|
|
127
121
|
})];
|
|
128
122
|
case 2:
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAC1B,wDAAyD;AACzD,sFAAuD;AAOvD,6CAA4C;AAC5C,yCAA+D;AAE/D,kDAAoB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAC1B,wDAAyD;AACzD,sFAAuD;AAOvD,6CAA4C;AAC5C,yCAA+D;AAE/D,kDAAoB;AAEpB,4DAAkC;AAClC,6DAAmC;AACnC,8DAAoC;AACpC,oEAA0C;AAC1C,iEAAuC;AACvC,sEAA4C;AAC5C,6DAAmC;AACnC,6DAAmC;AACnC,wDAA8B;AAC9B,sDAA4B;AAC5B,kDAAwB;AAExB,2EAA2E;AAC9D,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC,IAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AAa7D;;;;GAIG;AACH,IAAM,iBAAiB,GAAG;IACxB,IAAI,CAAC,cAAM;QACT,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEK,IAAM,UAAU,GAAG,UAAC,EAA+D;QAA7D,OAAO,aAAA,EAAE,KAAK,WAAA,EAAE,eAAwB,EAAxB,OAAO,mBAAG,sBAAc,KAAA;IACnE,qHAAqH;IACrH,cAAM,GAAG,8BAAmB,CAC1B,eAAK,CAAC,MAAM,CAAC;QACX,OAAO,SAAA;QACP,OAAO,SAAA;QACP,MAAM,EAAE;YACN,8DAA8D;YAC9D,KAAK,OAAA;SACN;QACD,OAAO,uBAEF,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI;YACnC,YAAY,EACV,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO;SAC5D,CAAC,CACH;QACD,gEAAgE;QAChE,UAAU,EAAE,aAAa;YACvB,CAAC,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC;gBACd,kBAAkB,EAAE,KAAK;aAC1B,CAAC;YACJ,CAAC,CAAC,SAAS;KACd,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAzBW,QAAA,UAAU,cAyBrB;AAEF;;;;;;;;;;;;;;GAcG;AACI,IAAM,MAAM,GAAG,UACpB,GAA0C;;QAE1C,4DAA4D;QAC5D,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,GAAG,GAAG,8BAAkB,CAAC,GAAG,CAAC,CAAC;QAE3D,sBAAO,SAAS,CAAC,yBAAW,CAAC,MAAM,EAAE,GAAG,CAAC,EAAC;;KAC3C,CAAC;AAPW,QAAA,MAAM,UAOjB;AAEF;;;;;;;;;;;;;;GAcG;AACI,IAAM,SAAS,GAAG,UAAO,KAAa;;QAC3C,sBAAA,SAAS,CACP,yBAAW,CAAC,SAAS,EACrB,yBAAW,CAAC,SAAS,GAAG,YAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAC7E,EAAA;;KAAA,CAAC;AAJS,QAAA,SAAS,aAIlB;AAEJ;;;;;GAKG;AACH,IAAM,SAAS,GAAG,UAChB,QAAqB,EACrB,GAAW;;;;;;;gBAEX,iBAAiB,EAAE,CAAC;gBAEd,KAMF,wBAAY,CAAC,GAAG,CAAC,EALnB,KAAK,WAAA,EACL,OAAO,aAAA,EAEP,KAAK,WAAA,EACF,WAAW,sBALV,6BAML,CADe,CACM;;;;gBAGH,qBAAM,cAAM,CAAC,GAAG,CAAI,QAAQ,EAAE;wBAC7C,MAAM,wCACD,WAAW,KACd,KAAK,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAC9C;qBACF,CAAC,EAAA;;gBALI,QAAQ,GAAG,SAKf;gBAEF,sBAAO,QAAQ,CAAC,IAAI,EAAC;;;gBAEf,KAAK,GAAG,KAAY,CAAC;gBAE3B,IAAI,eAAK,CAAC,YAAY,CAAC,KAAG,CAAC,EAAE;oBACnB,QAAQ,GAAK,KAAqC,SAA1C,CAA2C;oBAE3D,0DAA0D;oBAC1D,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI;wBAAE,sBAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAC;iBAC3C;gBAED,yCACE,MAAM,EAAE,IAAI,EACZ,YAAY,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,IAC5C,CAAC,aAAa,IAAI;wBACnB,KAAK,EAAE;4BACL,WAAW,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;yBAC/B;qBACF,CAAC,GACF;;;;KAEL,CAAC"}
|
package/lib/url-utils.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getSearchUrl = exports.getUrlPathAndQuery = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var qs_1 = tslib_1.__importDefault(require("qs"));
|
|
6
|
-
var OrModifiers_1 = require("./models/OrModifiers");
|
|
7
6
|
/**
|
|
8
7
|
* Gets the path and query from the given search url object.
|
|
9
8
|
*
|
|
@@ -18,9 +17,7 @@ var getUrlPathAndQuery = function (searchUrl) {
|
|
|
18
17
|
return (searchUrl.route +
|
|
19
18
|
qs_1.default.stringify(searchUrl, {
|
|
20
19
|
addQueryPrefix: true,
|
|
21
|
-
filter: function (prefix, value) {
|
|
22
|
-
return prefix === "route" || prefix === "fullUrl" ? undefined : value;
|
|
23
|
-
},
|
|
20
|
+
filter: function (prefix, value) { return (prefix === "route" || prefix === "fullUrl" ? undefined : value); },
|
|
24
21
|
}));
|
|
25
22
|
};
|
|
26
23
|
exports.getUrlPathAndQuery = getUrlPathAndQuery;
|
|
@@ -31,109 +28,12 @@ exports.getUrlPathAndQuery = getUrlPathAndQuery;
|
|
|
31
28
|
* getSearchUrl("/search?q=test")
|
|
32
29
|
* returns { route: "/search", q: "test" }
|
|
33
30
|
*
|
|
34
|
-
* @param
|
|
31
|
+
* @param urlStr The relative url including path and query
|
|
35
32
|
* @returns Search url object
|
|
36
33
|
*/
|
|
37
|
-
var getSearchUrl = function (
|
|
38
|
-
var
|
|
39
|
-
return tslib_1.__assign({ route: path,
|
|
34
|
+
var getSearchUrl = function (urlStr) {
|
|
35
|
+
var questionMarkIndex = urlStr.indexOf("?"), path = urlStr.substr(0, questionMarkIndex == -1 ? urlStr.length : questionMarkIndex), query = questionMarkIndex === -1 ? "" : urlStr.substr(questionMarkIndex);
|
|
36
|
+
return tslib_1.__assign(tslib_1.__assign({ route: path }, qs_1.default.parse(query, { ignoreQueryPrefix: true })), { fullUrl: urlStr });
|
|
40
37
|
};
|
|
41
38
|
exports.getSearchUrl = getSearchUrl;
|
|
42
|
-
/**
|
|
43
|
-
* Parses a JSON-formatted 'om' query param into a set of key value pairs
|
|
44
|
-
*
|
|
45
|
-
* @param omJsonQueryString A JSON formatted om query e.g. [{"ndt":["Guidance"]}]
|
|
46
|
-
* @returns A set of key value pairs of or modifiers
|
|
47
|
-
*/
|
|
48
|
-
var getPrettyOrModifierParams = function (omJsonQueryString) {
|
|
49
|
-
return JSON.parse(decodeURIComponent(omJsonQueryString)).map(function (om) {
|
|
50
|
-
// Lots of array access here because om is an array objects where the value is itself an array
|
|
51
|
-
var entry = Object.entries(om)[0], key = entry[0], value = entry[1][0];
|
|
52
|
-
return { key: key, value: value };
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
exports.getPrettyOrModifierParams = getPrettyOrModifierParams;
|
|
56
|
-
/**
|
|
57
|
-
* Turns a search URL with JSON-formatted 'or modifiers' into a 'pretty' url.
|
|
58
|
-
*
|
|
59
|
-
* A pretty url having keys e.g. ndt=Guidance&ndt=Advice rather than JSON
|
|
60
|
-
*
|
|
61
|
-
* @param searchUrl The raw search url, with JSON-formatted 'or modifiers' (om)
|
|
62
|
-
* @returns A flattened pretty URL
|
|
63
|
-
*/
|
|
64
|
-
var getPrettyUrl = function (searchUrl) {
|
|
65
|
-
var omQueryRegex = /([?&])om=([^&]+)/i, omMatch = searchUrl.match(omQueryRegex), omJsonQueryString = omMatch && omMatch[2];
|
|
66
|
-
// Or modifiers is the only param that comes through as JSON so all the others we can leave alone
|
|
67
|
-
if (!omJsonQueryString)
|
|
68
|
-
return searchUrl;
|
|
69
|
-
var flattenedOrModifiers = exports.getPrettyOrModifierParams(omJsonQueryString)
|
|
70
|
-
.map(function (_a) {
|
|
71
|
-
var key = _a.key, value = _a.value;
|
|
72
|
-
return key + "=" + encodeURIComponent(value);
|
|
73
|
-
})
|
|
74
|
-
.join("&");
|
|
75
|
-
return searchUrl.replace(omQueryRegex, "$1" + flattenedOrModifiers);
|
|
76
|
-
};
|
|
77
|
-
exports.getPrettyUrl = getPrettyUrl;
|
|
78
|
-
/**
|
|
79
|
-
* Converts individual or modifier params into a JSON formatted om query param
|
|
80
|
-
*
|
|
81
|
-
* @param params
|
|
82
|
-
* @returns
|
|
83
|
-
*/
|
|
84
|
-
var getParamsWithUglyJSONOrModifier = function (params) {
|
|
85
|
-
// Find the querystring params we need need to turn into the ugly om JSON
|
|
86
|
-
var omJSONParam = Object.entries(params)
|
|
87
|
-
.filter(function (om) { return OrModifiers_1.knownOrModifierKeys.includes(om[0]); })
|
|
88
|
-
// And convert them into a key values pairs
|
|
89
|
-
.map(function (om) {
|
|
90
|
-
var _a;
|
|
91
|
-
var key = om[0], value = om[1];
|
|
92
|
-
if (Array.isArray(value))
|
|
93
|
-
return value.map(function (val) {
|
|
94
|
-
var _a;
|
|
95
|
-
return (_a = {}, _a[key] = [val], _a);
|
|
96
|
-
});
|
|
97
|
-
return _a = {}, _a[key] = [value], _a;
|
|
98
|
-
})
|
|
99
|
-
.reduce(function (prev, curr) {
|
|
100
|
-
return prev.concat(curr);
|
|
101
|
-
}, []);
|
|
102
|
-
// Remove individual or modifier queries now we have a single JSON om
|
|
103
|
-
OrModifiers_1.knownOrModifierKeys.forEach(function (modifier) {
|
|
104
|
-
delete params[modifier];
|
|
105
|
-
});
|
|
106
|
-
params.om = JSON.stringify(omJSONParam);
|
|
107
|
-
return params;
|
|
108
|
-
};
|
|
109
|
-
exports.getParamsWithUglyJSONOrModifier = getParamsWithUglyJSONOrModifier;
|
|
110
|
-
/**
|
|
111
|
-
* Converts a search url with pretty 'or modifiers' into a URL with an ugly JSON-formatted om param.
|
|
112
|
-
*
|
|
113
|
-
* @param prettyUrl The search url with individual om query params
|
|
114
|
-
* @returns The URL with a single
|
|
115
|
-
*/
|
|
116
|
-
var getUglyJSONSearchUrl = function (prettyUrl) {
|
|
117
|
-
var path = prettyUrl.split("?")[0], query = prettyUrl.split("?")[1] || "", params = qs_1.default.parse(query, { ignoreQueryPrefix: true });
|
|
118
|
-
return (path +
|
|
119
|
-
qs_1.default.stringify(exports.getParamsWithUglyJSONOrModifier(params), {
|
|
120
|
-
addQueryPrefix: true,
|
|
121
|
-
}));
|
|
122
|
-
};
|
|
123
|
-
exports.getUglyJSONSearchUrl = getUglyJSONSearchUrl;
|
|
124
|
-
/**
|
|
125
|
-
* Filter function to exclude known or modifier keys from a querystring object.
|
|
126
|
-
*
|
|
127
|
-
* Can be used for the 'filter' parameter within qs.stringify
|
|
128
|
-
*
|
|
129
|
-
* @param prefix The key prefix for this querystring value
|
|
130
|
-
* @param value The value of this questring
|
|
131
|
-
* @returns Undefined for known or modifiers, otherwise the original value
|
|
132
|
-
*/
|
|
133
|
-
var filterKnownOrModifiers = function (prefix, value) {
|
|
134
|
-
return OrModifiers_1.knownOrModifierKeys.includes(prefix)
|
|
135
|
-
? undefined
|
|
136
|
-
: value;
|
|
137
|
-
};
|
|
138
|
-
exports.filterKnownOrModifiers = filterKnownOrModifiers;
|
|
139
39
|
//# sourceMappingURL=url-utils.js.map
|
package/lib/url-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":";;;;AAAA,kDAAoB;AAKpB;;;;;;;;;GASG;AACI,IAAM,kBAAkB,GAAG,UAAC,SAAuC;IACxE,OAAO,CACL,SAAS,CAAC,KAAK;QACf,YAAE,CAAC,SAAS,CAAC,SAAS,EAAE;YACtB,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,UAAC,MAAM,EAAE,KAAK,IAAK,OAAA,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAhE,CAAgE;SAC5F,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,kBAAkB,sBAQ7B;AAEF;;;;;;;;;GASG;AACI,IAAM,YAAY,GAAG,UAAC,MAAc;IACzC,IAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAC3C,IAAI,GAAG,MAAM,CAAC,MAAM,CAClB,CAAC,EACD,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAC5D,EACD,KAAK,GAAG,iBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE3E,2CACE,KAAK,EAAE,IAAI,IACR,YAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,KAC/C,OAAO,EAAE,MAAM,IACf;AACJ,CAAC,CAAC;AAbW,QAAA,YAAY,gBAavB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nice-digital/search-client",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1392-async-first-commit",
|
|
4
4
|
"description": "Search client for NICE digital services",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./es/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"ts:lib:watch": "npm run ts:lib -- --watch",
|
|
16
16
|
"ts:es": "rimraf es && tsc --p src --module ES6 --outDir es",
|
|
17
17
|
"ts:es:watch": "npm run ts:es -- --watch",
|
|
18
|
-
"demo": "npm run ts
|
|
18
|
+
"demo": "npm run ts && node lib/demo"
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"lib",
|
package/types/index.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ import { TypeAheadResults } from "./models/TypeAhead";
|
|
|
6
6
|
import { Except } from "type-fest";
|
|
7
7
|
export * from "./models/Document";
|
|
8
8
|
export * from "./models/Navigator";
|
|
9
|
-
export * from "./models/OrModifiers";
|
|
10
9
|
export * from "./models/PagerLinks";
|
|
11
10
|
export * from "./models/SearchCorrection";
|
|
12
11
|
export * from "./models/SearchResults";
|
|
@@ -18,6 +17,7 @@ export * from "./url-utils";
|
|
|
18
17
|
export * from "./utils";
|
|
19
18
|
/** The default timeout, in milliseconds, if unspecified in `initialise` */
|
|
20
19
|
export declare const defaultTimeout = 5000;
|
|
20
|
+
export declare let client: AxiosInstance;
|
|
21
21
|
export interface InitialiseOptions {
|
|
22
22
|
/** The abssolute base URL for the Single Search Endpoint, including the /api path */
|
|
23
23
|
baseURL: `https://${string}/api`;
|
|
@@ -25,10 +25,8 @@ export interface InitialiseOptions {
|
|
|
25
25
|
index: SearchIndex;
|
|
26
26
|
/** The timeout, in milliseconds. Leave blank to use the default timeout. */
|
|
27
27
|
timeout?: number;
|
|
28
|
-
/** Whether to transform URLs to pretty URLs in server responses and from pretty URLs in requests. Defaults to false. */
|
|
29
|
-
usePrettyUrls?: boolean;
|
|
30
28
|
}
|
|
31
|
-
export declare const initialise: ({ baseURL, index, timeout
|
|
29
|
+
export declare const initialise: ({ baseURL, index, timeout }: InitialiseOptions) => void;
|
|
32
30
|
/**
|
|
33
31
|
* Performs a search against the Single Search Endpoint from the given search url.
|
|
34
32
|
*
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAc,EAAE,aAAa,EAAc,MAAM,OAAO,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAc,EAAE,aAAa,EAAc,MAAM,OAAO,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AAExB,2EAA2E;AAC3E,eAAO,MAAM,cAAc,OAAO,CAAC;AAInC,eAAO,IAAI,MAAM,EAAE,aAAa,CAAC;AAEjC,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,OAAO,EAAE,WAAW,MAAM,MAAM,CAAC;IACjC,sDAAsD;IACtD,KAAK,EAAE,WAAW,CAAC;IACnB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD,eAAO,MAAM,UAAU,gCAAkD,iBAAiB,SAyBzF,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,MAAM,QACZ,MAAM,GAAG,OAAO,SAAS,EAAE,SAAS,CAAC,KACzC,QAAQ,aAAa,CAKvB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,UAAiB,MAAM,KAAG,QAAQ,gBAAgB,CAIrE,CAAC"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { SearchUrl } from "./SearchUrl";
|
|
2
|
-
|
|
2
|
+
import type { ReadonlyDeep } from "type-fest";
|
|
3
|
+
export declare type PagerLinks = ReadonlyDeep<{
|
|
3
4
|
previous: SearchUrl | null;
|
|
4
5
|
first: SearchUrl | null;
|
|
5
6
|
pages: PagerLink[];
|
|
6
7
|
next: SearchUrl | null;
|
|
7
|
-
}
|
|
8
|
-
export declare type PagerLink = {
|
|
8
|
+
}>;
|
|
9
|
+
export declare type PagerLink = ReadonlyDeep<{
|
|
9
10
|
title: string;
|
|
10
11
|
url: SearchUrl;
|
|
11
12
|
isCurrent: boolean;
|
|
12
|
-
}
|
|
13
|
+
}>;
|
|
13
14
|
//# sourceMappingURL=PagerLinks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PagerLinks.d.ts","sourceRoot":"","sources":["../../src/models/PagerLinks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"PagerLinks.d.ts","sourceRoot":"","sources":["../../src/models/PagerLinks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,oBAAY,UAAU,GAAG,YAAY,CAAC;IACpC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;CACxB,CAAC,CAAC;AAEH,oBAAY,SAAS,GAAG,YAAY,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchUrl.d.ts","sourceRoot":"","sources":["../../src/models/SearchUrl.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IAExB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,oBAAoB;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,iBAAiB;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,gBAAgB;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchUrl.d.ts","sourceRoot":"","sources":["../../src/models/SearchUrl.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IAExB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,oBAAoB;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,iBAAiB;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,gBAAgB;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,0BAA0B;IAC1B,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,kBAAkB;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,gBAAgB;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,sBAAsB;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,wBAAwB;IACxB,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,sBAAsB;IACtB,EAAE,CAAC,EAAE,OAAO,CAAC;IAEb,iBAAiB;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEpB,uBAAuB;IACvB,EAAE,CAAC,EAAE,OAAO,CAAC;IAEb,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,iBAAiB;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,kBAAkB;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,kDAAkD;IAClD,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IAEvC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,kBAAkB;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,sBAAsB;IACtB,EAAE,CAAC,EAAE,OAAO,CAAC;IAEb,gCAAgC;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd,WAAW;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,cAAc;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,uBAAuB;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,EAAE,MAAM,CAAC;CACf"}
|
package/types/url-utils.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ParsedQs } from "qs";
|
|
2
1
|
import type { Except } from "type-fest";
|
|
3
2
|
import { SearchUrl } from "./models/SearchUrl";
|
|
4
3
|
/**
|
|
@@ -19,51 +18,8 @@ export declare const getUrlPathAndQuery: (searchUrl: Except<SearchUrl, "fullUrl"
|
|
|
19
18
|
* getSearchUrl("/search?q=test")
|
|
20
19
|
* returns { route: "/search", q: "test" }
|
|
21
20
|
*
|
|
22
|
-
* @param
|
|
21
|
+
* @param urlStr The relative url including path and query
|
|
23
22
|
* @returns Search url object
|
|
24
23
|
*/
|
|
25
|
-
export declare const getSearchUrl: (
|
|
26
|
-
/**
|
|
27
|
-
* Parses a JSON-formatted 'om' query param into a set of key value pairs
|
|
28
|
-
*
|
|
29
|
-
* @param omJsonQueryString A JSON formatted om query e.g. [{"ndt":["Guidance"]}]
|
|
30
|
-
* @returns A set of key value pairs of or modifiers
|
|
31
|
-
*/
|
|
32
|
-
export declare const getPrettyOrModifierParams: (omJsonQueryString: string) => {
|
|
33
|
-
key: string;
|
|
34
|
-
value: any;
|
|
35
|
-
}[];
|
|
36
|
-
/**
|
|
37
|
-
* Turns a search URL with JSON-formatted 'or modifiers' into a 'pretty' url.
|
|
38
|
-
*
|
|
39
|
-
* A pretty url having keys e.g. ndt=Guidance&ndt=Advice rather than JSON
|
|
40
|
-
*
|
|
41
|
-
* @param searchUrl The raw search url, with JSON-formatted 'or modifiers' (om)
|
|
42
|
-
* @returns A flattened pretty URL
|
|
43
|
-
*/
|
|
44
|
-
export declare const getPrettyUrl: (searchUrl: string) => string;
|
|
45
|
-
/**
|
|
46
|
-
* Converts individual or modifier params into a JSON formatted om query param
|
|
47
|
-
*
|
|
48
|
-
* @param params
|
|
49
|
-
* @returns
|
|
50
|
-
*/
|
|
51
|
-
export declare const getParamsWithUglyJSONOrModifier: (params: ParsedQs) => ParsedQs;
|
|
52
|
-
/**
|
|
53
|
-
* Converts a search url with pretty 'or modifiers' into a URL with an ugly JSON-formatted om param.
|
|
54
|
-
*
|
|
55
|
-
* @param prettyUrl The search url with individual om query params
|
|
56
|
-
* @returns The URL with a single
|
|
57
|
-
*/
|
|
58
|
-
export declare const getUglyJSONSearchUrl: (prettyUrl: string) => string;
|
|
59
|
-
/**
|
|
60
|
-
* Filter function to exclude known or modifier keys from a querystring object.
|
|
61
|
-
*
|
|
62
|
-
* Can be used for the 'filter' parameter within qs.stringify
|
|
63
|
-
*
|
|
64
|
-
* @param prefix The key prefix for this querystring value
|
|
65
|
-
* @param value The value of this questring
|
|
66
|
-
* @returns Undefined for known or modifiers, otherwise the original value
|
|
67
|
-
*/
|
|
68
|
-
export declare const filterKnownOrModifiers: (prefix: string, value: unknown) => unknown;
|
|
24
|
+
export declare const getSearchUrl: (urlStr: string) => SearchUrl;
|
|
69
25
|
//# sourceMappingURL=url-utils.d.ts.map
|
package/types/url-utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,cAAe,OAAO,SAAS,EAAE,SAAS,CAAC,KAAG,MAQ5E,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,WAAY,MAAM,KAAG,SAa7C,CAAC"}
|
package/es/models/OrModifiers.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OrModifiers.js","sourceRoot":"","sources":["../../src/models/OrModifiers.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,IAAM,mBAAmB,GAAG;IACjC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,4BAA4B;IAC5B,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK,EAAE,aAAa;CACZ,CAAC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { __spreadArray } from "tslib";
|
|
2
|
-
import { getParamsWithUglyJSONOrModifier, getPrettyUrl } from "./url-utils";
|
|
3
|
-
/**
|
|
4
|
-
* Custom type guard for determining if an object is a successful search results response.
|
|
5
|
-
*
|
|
6
|
-
* See https://www.typescriptlang.org/docs/handbook/advanced-types.html#using-type-predicates
|
|
7
|
-
*
|
|
8
|
-
* @param data The server response, which may or may not a results success
|
|
9
|
-
*/
|
|
10
|
-
var isSuccessResponse = function (data) {
|
|
11
|
-
return data.failed === false &&
|
|
12
|
-
Array.isArray(data.documents);
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Tranforms the params in an axios request from individual om params into a single JSON-encoded om query.
|
|
16
|
-
*/
|
|
17
|
-
export var prettyUrlAxiosRequestInterceptor = function (config) {
|
|
18
|
-
if (!config.params)
|
|
19
|
-
return config;
|
|
20
|
-
if (config.params.om)
|
|
21
|
-
throw new Error("Found a pretty URL with an om parameter");
|
|
22
|
-
config.params = getParamsWithUglyJSONOrModifier(config.params);
|
|
23
|
-
return config;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Transforms all search urls in a successful search response into 'pretty' urls (URLs with a flattened 'om' query)
|
|
27
|
-
*
|
|
28
|
-
* @param data The data from a Single Search Endpoint respons
|
|
29
|
-
* @returns The data with transformed URLs
|
|
30
|
-
*/
|
|
31
|
-
export var prettyUrlAxiosResponseTransformer = function (data) {
|
|
32
|
-
var _a, _b, _c;
|
|
33
|
-
if (!isSuccessResponse(data))
|
|
34
|
-
return data;
|
|
35
|
-
// First page
|
|
36
|
-
if ((_a = data.pagerLinks.first) === null || _a === void 0 ? void 0 : _a.fullUrl)
|
|
37
|
-
data.pagerLinks.first.fullUrl = getPrettyUrl(data.pagerLinks.first.fullUrl);
|
|
38
|
-
// Next Page
|
|
39
|
-
if ((_b = data.pagerLinks.next) === null || _b === void 0 ? void 0 : _b.fullUrl)
|
|
40
|
-
data.pagerLinks.next.fullUrl = getPrettyUrl(data.pagerLinks.next.fullUrl);
|
|
41
|
-
// Previous page
|
|
42
|
-
if ((_c = data.pagerLinks.previous) === null || _c === void 0 ? void 0 : _c.fullUrl)
|
|
43
|
-
data.pagerLinks.previous.fullUrl = getPrettyUrl(data.pagerLinks.previous.fullUrl);
|
|
44
|
-
// Numbered pages
|
|
45
|
-
data.pagerLinks.pages.forEach(function (page) {
|
|
46
|
-
page.url.fullUrl = getPrettyUrl(page.url.fullUrl);
|
|
47
|
-
});
|
|
48
|
-
// Navigators
|
|
49
|
-
data.navigators.forEach(function (navigator) {
|
|
50
|
-
navigator.modifiers.forEach(function (modifier) {
|
|
51
|
-
var _a;
|
|
52
|
-
// Root modifiers
|
|
53
|
-
modifier.toggleUrl.fullUrl = getPrettyUrl(modifier.toggleUrl.fullUrl);
|
|
54
|
-
// Child navigators
|
|
55
|
-
(_a = modifier.childNavigators) === null || _a === void 0 ? void 0 : _a.forEach(function (childNavigator) {
|
|
56
|
-
childNavigator.modifiers.forEach(function (mod) {
|
|
57
|
-
mod.toggleUrl.fullUrl = getPrettyUrl(mod.toggleUrl.fullUrl);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
return data;
|
|
63
|
-
};
|
|
64
|
-
export var applyPrettyUrlMiddleware = function (axios) {
|
|
65
|
-
axios.interceptors.request.use(prettyUrlAxiosRequestInterceptor);
|
|
66
|
-
axios.defaults.transformResponse = __spreadArray(__spreadArray([], (Array.isArray(axios.defaults.transformResponse)
|
|
67
|
-
? axios.defaults.transformResponse
|
|
68
|
-
: axios.defaults.transformResponse !== undefined
|
|
69
|
-
? [axios.defaults.transformResponse]
|
|
70
|
-
: [])), [
|
|
71
|
-
prettyUrlAxiosResponseTransformer,
|
|
72
|
-
]);
|
|
73
|
-
return axios;
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=pretty-url-middleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pretty-url-middleware.js","sourceRoot":"","sources":["../src/pretty-url-middleware.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,+BAA+B,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI5E;;;;;;GAMG;AACH,IAAM,iBAAiB,GAAG,UACxB,IAAoC;IAEpC,OAAC,IAA6B,CAAC,MAAM,KAAK,KAAK;QAC/C,KAAK,CAAC,OAAO,CAAE,IAA6B,CAAC,SAAS,CAAC;AADvD,CACuD,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,IAAM,gCAAgC,GAAG,UAC9C,MAA0B;IAE1B,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAElC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAE7D,MAAM,CAAC,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE/D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,IAAM,iCAAiC,GAAqB,UACjE,IAAO;;IAEP,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,aAAa;IACb,IAAI,MAAA,IAAI,CAAC,UAAU,CAAC,KAAK,0CAAE,OAAO;QAChC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9E,YAAY;IACZ,IAAI,MAAA,IAAI,CAAC,UAAU,CAAC,IAAI,0CAAE,OAAO;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE5E,gBAAgB;IAChB,IAAI,MAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,0CAAE,OAAO;QACnC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,YAAY,CAC7C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CACjC,CAAC;IAEJ,iBAAiB;IACjB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;QACjC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,aAAa;IACb,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS;QAChC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,QAAQ;;YACnC,iBAAiB;YACjB,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAEtE,mBAAmB;YACnB,MAAA,QAAQ,CAAC,eAAe,0CAAE,OAAO,CAAC,UAAC,cAAc;gBAC/C,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,GAAG;oBACnC,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,wBAAwB,GAAG,UAAC,KAAoB;IAC3D,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAEjE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,mCAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACjD,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB;QAClC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,KAAK,SAAS;YAChD,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACpC,CAAC,CAAC,EAAE,CAAC;QACP,iCAAiC;MAClC,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.knownOrModifierKeys = void 0;
|
|
4
|
-
exports.knownOrModifierKeys = [
|
|
5
|
-
"nai",
|
|
6
|
-
"gst",
|
|
7
|
-
"ndt",
|
|
8
|
-
"ngt",
|
|
9
|
-
"nat",
|
|
10
|
-
"rty",
|
|
11
|
-
"drm",
|
|
12
|
-
// Evidence Search specific:
|
|
13
|
-
"ety",
|
|
14
|
-
"srn",
|
|
15
|
-
"ain",
|
|
16
|
-
"acc", // Accredited
|
|
17
|
-
];
|
|
18
|
-
//# sourceMappingURL=OrModifiers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OrModifiers.js","sourceRoot":"","sources":["../../src/models/OrModifiers.ts"],"names":[],"mappings":";;;AAEa,QAAA,mBAAmB,GAAG;IACjC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,4BAA4B;IAC5B,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK,EAAE,aAAa;CACZ,CAAC"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.applyPrettyUrlMiddleware = exports.prettyUrlAxiosResponseTransformer = exports.prettyUrlAxiosRequestInterceptor = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var url_utils_1 = require("./url-utils");
|
|
6
|
-
/**
|
|
7
|
-
* Custom type guard for determining if an object is a successful search results response.
|
|
8
|
-
*
|
|
9
|
-
* See https://www.typescriptlang.org/docs/handbook/advanced-types.html#using-type-predicates
|
|
10
|
-
*
|
|
11
|
-
* @param data The server response, which may or may not a results success
|
|
12
|
-
*/
|
|
13
|
-
var isSuccessResponse = function (data) {
|
|
14
|
-
return data.failed === false &&
|
|
15
|
-
Array.isArray(data.documents);
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Tranforms the params in an axios request from individual om params into a single JSON-encoded om query.
|
|
19
|
-
*/
|
|
20
|
-
var prettyUrlAxiosRequestInterceptor = function (config) {
|
|
21
|
-
if (!config.params)
|
|
22
|
-
return config;
|
|
23
|
-
if (config.params.om)
|
|
24
|
-
throw new Error("Found a pretty URL with an om parameter");
|
|
25
|
-
config.params = url_utils_1.getParamsWithUglyJSONOrModifier(config.params);
|
|
26
|
-
return config;
|
|
27
|
-
};
|
|
28
|
-
exports.prettyUrlAxiosRequestInterceptor = prettyUrlAxiosRequestInterceptor;
|
|
29
|
-
/**
|
|
30
|
-
* Transforms all search urls in a successful search response into 'pretty' urls (URLs with a flattened 'om' query)
|
|
31
|
-
*
|
|
32
|
-
* @param data The data from a Single Search Endpoint respons
|
|
33
|
-
* @returns The data with transformed URLs
|
|
34
|
-
*/
|
|
35
|
-
var prettyUrlAxiosResponseTransformer = function (data) {
|
|
36
|
-
var _a, _b, _c;
|
|
37
|
-
if (!isSuccessResponse(data))
|
|
38
|
-
return data;
|
|
39
|
-
// First page
|
|
40
|
-
if ((_a = data.pagerLinks.first) === null || _a === void 0 ? void 0 : _a.fullUrl)
|
|
41
|
-
data.pagerLinks.first.fullUrl = url_utils_1.getPrettyUrl(data.pagerLinks.first.fullUrl);
|
|
42
|
-
// Next Page
|
|
43
|
-
if ((_b = data.pagerLinks.next) === null || _b === void 0 ? void 0 : _b.fullUrl)
|
|
44
|
-
data.pagerLinks.next.fullUrl = url_utils_1.getPrettyUrl(data.pagerLinks.next.fullUrl);
|
|
45
|
-
// Previous page
|
|
46
|
-
if ((_c = data.pagerLinks.previous) === null || _c === void 0 ? void 0 : _c.fullUrl)
|
|
47
|
-
data.pagerLinks.previous.fullUrl = url_utils_1.getPrettyUrl(data.pagerLinks.previous.fullUrl);
|
|
48
|
-
// Numbered pages
|
|
49
|
-
data.pagerLinks.pages.forEach(function (page) {
|
|
50
|
-
page.url.fullUrl = url_utils_1.getPrettyUrl(page.url.fullUrl);
|
|
51
|
-
});
|
|
52
|
-
// Navigators
|
|
53
|
-
data.navigators.forEach(function (navigator) {
|
|
54
|
-
navigator.modifiers.forEach(function (modifier) {
|
|
55
|
-
var _a;
|
|
56
|
-
// Root modifiers
|
|
57
|
-
modifier.toggleUrl.fullUrl = url_utils_1.getPrettyUrl(modifier.toggleUrl.fullUrl);
|
|
58
|
-
// Child navigators
|
|
59
|
-
(_a = modifier.childNavigators) === null || _a === void 0 ? void 0 : _a.forEach(function (childNavigator) {
|
|
60
|
-
childNavigator.modifiers.forEach(function (mod) {
|
|
61
|
-
mod.toggleUrl.fullUrl = url_utils_1.getPrettyUrl(mod.toggleUrl.fullUrl);
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
return data;
|
|
67
|
-
};
|
|
68
|
-
exports.prettyUrlAxiosResponseTransformer = prettyUrlAxiosResponseTransformer;
|
|
69
|
-
var applyPrettyUrlMiddleware = function (axios) {
|
|
70
|
-
axios.interceptors.request.use(exports.prettyUrlAxiosRequestInterceptor);
|
|
71
|
-
axios.defaults.transformResponse = tslib_1.__spreadArray(tslib_1.__spreadArray([], (Array.isArray(axios.defaults.transformResponse)
|
|
72
|
-
? axios.defaults.transformResponse
|
|
73
|
-
: axios.defaults.transformResponse !== undefined
|
|
74
|
-
? [axios.defaults.transformResponse]
|
|
75
|
-
: [])), [
|
|
76
|
-
exports.prettyUrlAxiosResponseTransformer,
|
|
77
|
-
]);
|
|
78
|
-
return axios;
|
|
79
|
-
};
|
|
80
|
-
exports.applyPrettyUrlMiddleware = applyPrettyUrlMiddleware;
|
|
81
|
-
//# sourceMappingURL=pretty-url-middleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pretty-url-middleware.js","sourceRoot":"","sources":["../src/pretty-url-middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { RequireExactlyOne } from "type-fest";
|
|
2
|
-
export declare const knownOrModifierKeys: readonly ["nai", "gst", "ndt", "ngt", "nat", "rty", "drm", "ety", "srn", "ain", "acc"];
|
|
3
|
-
export declare type KnownOrModifierKeys = typeof knownOrModifierKeys[number];
|
|
4
|
-
export declare type OrModifier = RequireExactlyOne<{
|
|
5
|
-
[Property in KnownOrModifierKeys]: [string];
|
|
6
|
-
}, KnownOrModifierKeys>;
|
|
7
|
-
//# sourceMappingURL=OrModifiers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OrModifiers.d.ts","sourceRoot":"","sources":["../../src/models/OrModifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,eAAO,MAAM,mBAAmB,wFAatB,CAAC;AAEX,oBAAY,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAErE,oBAAY,UAAU,GAAG,iBAAiB,CACxC;KACG,QAAQ,IAAI,mBAAmB,GAAG,CAAC,MAAM,CAAC;CAC5C,EACD,mBAAmB,CACpB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { AxiosInstance, AxiosRequestConfig, AxiosTransformer } from "axios";
|
|
2
|
-
/**
|
|
3
|
-
* Tranforms the params in an axios request from individual om params into a single JSON-encoded om query.
|
|
4
|
-
*/
|
|
5
|
-
export declare const prettyUrlAxiosRequestInterceptor: (config: AxiosRequestConfig) => AxiosRequestConfig;
|
|
6
|
-
/**
|
|
7
|
-
* Transforms all search urls in a successful search response into 'pretty' urls (URLs with a flattened 'om' query)
|
|
8
|
-
*
|
|
9
|
-
* @param data The data from a Single Search Endpoint respons
|
|
10
|
-
* @returns The data with transformed URLs
|
|
11
|
-
*/
|
|
12
|
-
export declare const prettyUrlAxiosResponseTransformer: AxiosTransformer;
|
|
13
|
-
export declare const applyPrettyUrlMiddleware: (axios: AxiosInstance) => AxiosInstance;
|
|
14
|
-
//# sourceMappingURL=pretty-url-middleware.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pretty-url-middleware.d.ts","sourceRoot":"","sources":["../src/pretty-url-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAkB5E;;GAEG;AACH,eAAO,MAAM,gCAAgC,WACnC,kBAAkB,uBAU3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,EAAE,gBAwC/C,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAW,aAAa,kBAa5D,CAAC"}
|