getta 0.4.6 → 1.0.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.
- package/README.md +165 -7
- package/dist/main/index.mjs +621 -0
- package/dist/main/index.mjs.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/{lib → dist}/types/constants.d.ts +2 -2
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/helpers/buildEndpoint/index.d.ts +3 -0
- package/dist/types/helpers/buildEndpoint/index.d.ts.map +1 -0
- package/{lib/types/helpers/build-endpoint → dist/types/helpers/buildEndpoint}/types.d.ts +2 -2
- package/dist/types/helpers/buildEndpoint/types.d.ts.map +1 -0
- package/dist/types/helpers/defaultPathTemplateCallback/index.d.ts +2 -0
- package/dist/types/helpers/defaultPathTemplateCallback/index.d.ts.map +1 -0
- package/dist/types/helpers/delay/index.d.ts +2 -0
- package/{lib → dist}/types/helpers/delay/index.d.ts.map +1 -1
- package/dist/types/helpers/getResponseGroup/index.d.ts +2 -0
- package/dist/types/helpers/getResponseGroup/index.d.ts.map +1 -0
- package/dist/types/helpers/isCacheabilityValid/index.d.ts +3 -0
- package/dist/types/helpers/isCacheabilityValid/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/{lib → dist}/types/main.d.ts +12 -12
- package/dist/types/main.d.ts.map +1 -0
- package/dist/types/types.d.ts +161 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +113 -145
- package/src/{__tests__ → __testUtils__}/data/136-7317.json +1 -1
- package/src/{__tests__ → __testUtils__}/data/180-1387.json +1 -1
- package/src/{__tests__ → __testUtils__}/data/183-3905.json +1 -1
- package/src/{__tests__ → __testUtils__}/data/202-3315.json +1 -1
- package/src/__testUtils__/data/index.ts +23 -0
- package/src/__testUtils__/helpers/index.ts +49 -0
- package/src/constants.ts +28 -28
- package/src/helpers/buildEndpoint/index.ts +34 -0
- package/src/helpers/{build-endpoint → buildEndpoint}/types.ts +2 -2
- package/src/helpers/defaultPathTemplateCallback/index.test.ts +11 -0
- package/src/helpers/defaultPathTemplateCallback/index.ts +17 -0
- package/src/helpers/delay/index.ts +2 -2
- package/src/helpers/getResponseGroup/index.ts +25 -0
- package/src/helpers/isCacheabilityValid/index.ts +6 -0
- package/src/index.ts +4 -4
- package/src/main.test.ts +283 -411
- package/src/main.ts +238 -241
- package/src/types.ts +114 -16
- package/tsconfig.build.json +14 -0
- package/tsconfig.json +9 -0
- package/CHANGELOG.md +0 -244
- package/jest.setup.js +0 -10
- package/lib/browser/index.js +0 -2
- package/lib/browser/index.js.map +0 -1
- package/lib/browser/production.analysis.txt +0 -91
- package/lib/main/constants.js +0 -97
- package/lib/main/helpers/build-endpoint/index.js +0 -38
- package/lib/main/helpers/build-endpoint/types.js +0 -1
- package/lib/main/helpers/default-path-template-callback/index.js +0 -16
- package/lib/main/helpers/delay/index.js +0 -12
- package/lib/main/helpers/get-response-group/index.js +0 -27
- package/lib/main/helpers/is-cacheability-valid/index.js +0 -13
- package/lib/main/index.js +0 -62
- package/lib/main/main.js +0 -580
- package/lib/main/types.js +0 -1
- package/lib/module/constants.js +0 -49
- package/lib/module/helpers/build-endpoint/index.js +0 -28
- package/lib/module/helpers/build-endpoint/types.js +0 -0
- package/lib/module/helpers/default-path-template-callback/index.js +0 -9
- package/lib/module/helpers/delay/index.js +0 -4
- package/lib/module/helpers/get-response-group/index.js +0 -19
- package/lib/module/helpers/is-cacheability-valid/index.js +0 -6
- package/lib/module/index.js +0 -4
- package/lib/module/main.js +0 -576
- package/lib/module/types.js +0 -0
- package/lib/types/__tests__/data/index.d.ts +0 -17
- package/lib/types/__tests__/data/index.d.ts.map +0 -1
- package/lib/types/__tests__/helpers/index.d.ts +0 -29
- package/lib/types/__tests__/helpers/index.d.ts.map +0 -1
- package/lib/types/__tests__/types.d.ts +0 -13
- package/lib/types/__tests__/types.d.ts.map +0 -1
- package/lib/types/constants.d.ts.map +0 -1
- package/lib/types/helpers/build-endpoint/index.d.ts +0 -3
- package/lib/types/helpers/build-endpoint/index.d.ts.map +0 -1
- package/lib/types/helpers/build-endpoint/types.d.ts.map +0 -1
- package/lib/types/helpers/default-path-template-callback/index.d.ts +0 -3
- package/lib/types/helpers/default-path-template-callback/index.d.ts.map +0 -1
- package/lib/types/helpers/default-path-template-callback/index.test.d.ts +0 -2
- package/lib/types/helpers/default-path-template-callback/index.test.d.ts.map +0 -1
- package/lib/types/helpers/delay/index.d.ts +0 -2
- package/lib/types/helpers/get-response-group/index.d.ts +0 -2
- package/lib/types/helpers/get-response-group/index.d.ts.map +0 -1
- package/lib/types/helpers/is-cacheability-valid/index.d.ts +0 -3
- package/lib/types/helpers/is-cacheability-valid/index.d.ts.map +0 -1
- package/lib/types/index.d.ts +0 -5
- package/lib/types/index.d.ts.map +0 -1
- package/lib/types/main.d.ts.map +0 -1
- package/lib/types/main.test.d.ts +0 -2
- package/lib/types/main.test.d.ts.map +0 -1
- package/lib/types/types.d.ts +0 -69
- package/lib/types/types.d.ts.map +0 -1
- package/src/__tests__/data/index.ts +0 -19
- package/src/__tests__/helpers/index.ts +0 -61
- package/src/__tests__/types.ts +0 -14
- package/src/helpers/build-endpoint/index.ts +0 -34
- package/src/helpers/default-path-template-callback/index.test.ts +0 -11
- package/src/helpers/default-path-template-callback/index.ts +0 -16
- package/src/helpers/get-response-group/index.ts +0 -22
- package/src/helpers/is-cacheability-valid/index.ts +0 -6
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/get-response-group/index.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,MAAM,EAAE,MAAM,gFAatD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/is-cacheability-valid/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,YAAY,EAAE,YAAY,WAGrE"}
|
package/lib/types/index.d.ts
DELETED
package/lib/types/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AACjD,cAAc,SAAS,CAAC"}
|
package/lib/types/main.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,QAA0B,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAQ,WAAW,EAAgB,MAAM,gBAAgB,CAAC;AAIjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAuCzC,OAAO,EACL,kBAAkB,EAGlB,aAAa,EAMb,cAAc,EAGd,kBAAkB,EAClB,SAAS,EAEV,MAAM,SAAS,CAAC;AAEjB,qBAAa,KAAK;IAChB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAO;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,2BAA2B,CAAU;IAC7C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,2BAA2B,CAAS;IAC5C,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,wBAAwB,CAAoB;IACpD,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAsD;IAC7E,OAAO,CAAC,aAAa,CAAe;gBAExB,OAAO,EAAE,kBAAkB;IA4CvC,IAAI,KAAK,IAAI,QAAQ,GAAG,SAAS,CAEhC;IAEM,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC;IAgBpG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAM,EAAE,OAAO,CAAC,EAAE,WAAW;IAIxF,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAM,EAAE,OAAO,CAAC,EAAE,WAAW;;;;IAIrF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW;IAInG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW;IAIhH,OAAO,CAAC,6BAA6B;YAMvB,iBAAiB;YAUjB,cAAc;YAUd,cAAc;YAUd,cAAc;YAUd,OAAO;YA+BP,MAAM;YAkFN,qBAAqB;YAmBrB,kBAAkB;YAclB,IAAI;YAuCJ,WAAW;IAkCzB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,+BAA+B;YASzB,QAAQ;IAyBtB,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,aAAa;CAStB;AAED,eAAO,MAAM,gBAAgB,8BAA+B,kBAAkB,qEAS7E,CAAC"}
|
package/lib/types/main.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.test.d.ts","sourceRoot":"","sources":["../../src/main.test.ts"],"names":[],"mappings":""}
|
package/lib/types/types.d.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import Cachemap from "@cachemap/core";
|
|
2
|
-
import { Func, PlainObject, StringObject } from "@repodog/types";
|
|
3
|
-
import { Required } from "utility-types";
|
|
4
|
-
export declare type FetchMethod = "get" | "post" | "put" | "delete";
|
|
5
|
-
export declare type StreamReader = "arrayBuffer" | "blob" | "formData" | "json" | "text";
|
|
6
|
-
export declare type ShortcutProperties<T extends string | number> = {
|
|
7
|
-
[K in T]: <Resource = PlainObject>(...args: any[]) => Promise<FetchResponse<Resource>>;
|
|
8
|
-
};
|
|
9
|
-
export interface ConstructorOptions {
|
|
10
|
-
basePath: string;
|
|
11
|
-
bodyParser?: Func;
|
|
12
|
-
cache?: Cachemap;
|
|
13
|
-
enableConditionalRequests?: boolean;
|
|
14
|
-
fetchTimeout?: number;
|
|
15
|
-
headers?: StringObject;
|
|
16
|
-
log?: Log;
|
|
17
|
-
maxRedirects?: number;
|
|
18
|
-
maxRetries?: number;
|
|
19
|
-
optionalPathTemplateRegExp?: RegExp;
|
|
20
|
-
pathTemplateCallback?: PathTemplateCallback;
|
|
21
|
-
pathTemplateRegExp?: RegExp;
|
|
22
|
-
performance: Performance;
|
|
23
|
-
queryParams?: PlainObject;
|
|
24
|
-
rateLimitPerSecond?: number;
|
|
25
|
-
requestRetryWait?: number;
|
|
26
|
-
streamReader?: StreamReader;
|
|
27
|
-
}
|
|
28
|
-
export interface FetchOptions {
|
|
29
|
-
body?: BodyInit;
|
|
30
|
-
headers: StringObject;
|
|
31
|
-
method: FetchMethod;
|
|
32
|
-
redirects?: number;
|
|
33
|
-
retries?: number;
|
|
34
|
-
}
|
|
35
|
-
export interface FetchResponse<Resource = PlainObject> extends ResponseDataWithErrors<Resource>, Response {
|
|
36
|
-
}
|
|
37
|
-
export interface FetchRedirectHandlerOptions extends FetchOptions {
|
|
38
|
-
status: number;
|
|
39
|
-
}
|
|
40
|
-
export declare type Log = (message: string, data: PlainObject, logLevel?: LogLevel) => void;
|
|
41
|
-
export declare type LogLevel = "error" | "warn" | "info" | "http" | "verbose" | "debug" | "silly";
|
|
42
|
-
export interface Performance {
|
|
43
|
-
now(): number;
|
|
44
|
-
}
|
|
45
|
-
export interface RequestOptions {
|
|
46
|
-
body?: BodyInit;
|
|
47
|
-
headers?: StringObject;
|
|
48
|
-
method?: FetchMethod;
|
|
49
|
-
pathTemplateData?: StringObject;
|
|
50
|
-
queryParams?: PlainObject;
|
|
51
|
-
}
|
|
52
|
-
export declare type RequestQueue = [(value: FetchResponse) => void, string, FetchOptions, PlainObject][];
|
|
53
|
-
export interface ResponseDataWithErrors<Resource = PlainObject> {
|
|
54
|
-
data?: Resource;
|
|
55
|
-
errors?: Error[];
|
|
56
|
-
}
|
|
57
|
-
export declare type PathTemplateCallback = (path: string, data: StringObject, pathTemplateRegExp: RegExp) => string;
|
|
58
|
-
export declare type PendingRequestResolver = (value: FetchResponse<PlainObject>) => void;
|
|
59
|
-
export interface PendingRequestResolvers {
|
|
60
|
-
resolve: PendingRequestResolver;
|
|
61
|
-
}
|
|
62
|
-
export interface RequestTracker {
|
|
63
|
-
active: string[];
|
|
64
|
-
pending: Map<string, PendingRequestResolvers[]>;
|
|
65
|
-
}
|
|
66
|
-
export interface Shortcuts {
|
|
67
|
-
[key: string]: [string, Required<RequestOptions, "method">];
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=types.d.ts.map
|
package/lib/types/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export const PRD_136_7317 = {
|
|
2
|
-
body: require("./136-7317.json"),
|
|
3
|
-
url: "https://www.tesco.com/direct/rest/content/catalog/product/136-7317",
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
export const PRD_180_1387 = {
|
|
7
|
-
body: require("./180-1387.json"),
|
|
8
|
-
url: "https://www.tesco.com/direct/rest/content/catalog/product/180-1387",
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export const PRD_183_3905 = {
|
|
12
|
-
body: require("./183-3905.json"),
|
|
13
|
-
url: "https://www.tesco.com/direct/rest/content/catalog/product/183-3905",
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export const PRD_202_3315 = {
|
|
17
|
-
body: require("./202-3315.json"),
|
|
18
|
-
url: "https://www.tesco.com/direct/rest/content/catalog/product/202-3315",
|
|
19
|
-
};
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import Cachemap from "@cachemap/core";
|
|
2
|
-
import map from "@cachemap/map";
|
|
3
|
-
import { PlainObject } from "@repodog/types";
|
|
4
|
-
import { OPTIONAL_PATH_TEMPLATE_REGEX } from "../..";
|
|
5
|
-
import { DEFAULT_PATH_TEMPLATE_REGEX } from "../../constants";
|
|
6
|
-
import buildEndpoint from "../../helpers/build-endpoint";
|
|
7
|
-
import defaultPathTemplateCallback from "../../helpers/default-path-template-callback";
|
|
8
|
-
import { RequestOptions } from "../../types";
|
|
9
|
-
import { MockRequestCallbackParams, TearDownTestParams } from "../types";
|
|
10
|
-
|
|
11
|
-
export const basePath = "https://tesco.com";
|
|
12
|
-
|
|
13
|
-
export const defaultPath = "/direct/rest/content/catalog/{type}/{id,+}?format={brief|standard}";
|
|
14
|
-
|
|
15
|
-
export const defaultPathTemplateData = { "brief|standard": "standard", "id,+": "136-7317", type: "product" };
|
|
16
|
-
|
|
17
|
-
export const defaultPayload = "{ payload: true }";
|
|
18
|
-
|
|
19
|
-
export const idPathTemplateData = { "id,+": "136-7317" };
|
|
20
|
-
|
|
21
|
-
export const pathTemplateDataWithoutID = { "brief|standard": "standard", type: "product" };
|
|
22
|
-
|
|
23
|
-
export const defaultEtag = "33a64df551425fcc55e4d42a148795d9f25f89d4";
|
|
24
|
-
|
|
25
|
-
export const defaultHeaders = {
|
|
26
|
-
"cache-control": "public, max-age=6000",
|
|
27
|
-
"content-type": "application/json",
|
|
28
|
-
etag: defaultEtag,
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export function getCache() {
|
|
32
|
-
return new Cachemap({
|
|
33
|
-
name: "cachemap",
|
|
34
|
-
store: map(),
|
|
35
|
-
type: "test",
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export function mockRequest(
|
|
40
|
-
path: string,
|
|
41
|
-
body: PlainObject,
|
|
42
|
-
{ headers = {}, pathTemplateData, queryParams }: RequestOptions = {},
|
|
43
|
-
callback: (options: MockRequestCallbackParams) => void,
|
|
44
|
-
) {
|
|
45
|
-
callback({
|
|
46
|
-
body: JSON.stringify(body),
|
|
47
|
-
endpoint: buildEndpoint(basePath, path, {
|
|
48
|
-
optionalPathTemplateRegExp: OPTIONAL_PATH_TEMPLATE_REGEX,
|
|
49
|
-
pathTemplateCallback: defaultPathTemplateCallback,
|
|
50
|
-
pathTemplateData,
|
|
51
|
-
pathTemplateRegExp: DEFAULT_PATH_TEMPLATE_REGEX,
|
|
52
|
-
queryParams,
|
|
53
|
-
}),
|
|
54
|
-
headers: { ...defaultHeaders, ...headers },
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export async function tearDownTest({ fetchMock, restClient }: TearDownTestParams) {
|
|
59
|
-
fetchMock.restore();
|
|
60
|
-
await restClient?.cache?.clear();
|
|
61
|
-
}
|
package/src/__tests__/types.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { StringObject } from "@repodog/types";
|
|
2
|
-
import { FetchMockStatic } from "fetch-mock";
|
|
3
|
-
import { Getta } from "../main";
|
|
4
|
-
|
|
5
|
-
export interface TearDownTestParams {
|
|
6
|
-
fetchMock: FetchMockStatic;
|
|
7
|
-
restClient: Getta;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export interface MockRequestCallbackParams {
|
|
11
|
-
body?: BodyInit;
|
|
12
|
-
endpoint: string;
|
|
13
|
-
headers: StringObject;
|
|
14
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import queryString from "query-string";
|
|
2
|
-
import { BuildEndpointOptions } from "./types";
|
|
3
|
-
|
|
4
|
-
export default function buildEndpoint(
|
|
5
|
-
basePath: string,
|
|
6
|
-
path: string,
|
|
7
|
-
{
|
|
8
|
-
optionalPathTemplateRegExp,
|
|
9
|
-
pathTemplateCallback,
|
|
10
|
-
pathTemplateData,
|
|
11
|
-
pathTemplateRegExp,
|
|
12
|
-
queryParams,
|
|
13
|
-
}: BuildEndpointOptions,
|
|
14
|
-
) {
|
|
15
|
-
const pathJoiner = basePath.endsWith("/") || path.startsWith("/") ? "" : "/";
|
|
16
|
-
let endpoint = `${basePath}${pathJoiner}${path}`;
|
|
17
|
-
|
|
18
|
-
if (pathTemplateData) {
|
|
19
|
-
endpoint = pathTemplateCallback(endpoint, pathTemplateData, pathTemplateRegExp);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
endpoint = endpoint.replace(optionalPathTemplateRegExp, "");
|
|
23
|
-
|
|
24
|
-
if (endpoint.endsWith("/")) {
|
|
25
|
-
endpoint = endpoint.substring(0, endpoint.length - 1);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (queryParams && Object.keys(queryParams).length) {
|
|
29
|
-
const queryJoin = queryString.extract(endpoint) ? "&" : "?";
|
|
30
|
-
endpoint = `${endpoint}${queryJoin}${queryString.stringify(queryParams)}`;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return endpoint;
|
|
34
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import defaultPathTemplateCallback from ".";
|
|
2
|
-
import { defaultPath, defaultPathTemplateData } from "../../__tests__/helpers";
|
|
3
|
-
import { DEFAULT_PATH_TEMPLATE_REGEX } from "../../constants";
|
|
4
|
-
|
|
5
|
-
describe("defaultPathTemplateCallback", () => {
|
|
6
|
-
it("SHOULD populate the path template correctly", () => {
|
|
7
|
-
expect(defaultPathTemplateCallback(defaultPath, defaultPathTemplateData, DEFAULT_PATH_TEMPLATE_REGEX)).toBe(
|
|
8
|
-
"/direct/rest/content/catalog/product/136-7317?format=standard",
|
|
9
|
-
);
|
|
10
|
-
});
|
|
11
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { StringObject } from "@repodog/types";
|
|
2
|
-
|
|
3
|
-
export default function defaultPathTemplateCallback(
|
|
4
|
-
pathTemplate: string,
|
|
5
|
-
data: StringObject,
|
|
6
|
-
pathTemplateRegExp: RegExp,
|
|
7
|
-
) {
|
|
8
|
-
const dataKeys = Object.keys(data);
|
|
9
|
-
|
|
10
|
-
return pathTemplate.replace(pathTemplateRegExp, match => {
|
|
11
|
-
return dataKeys.reduce((value, key) => {
|
|
12
|
-
if (match.includes(key)) return data[key];
|
|
13
|
-
return value;
|
|
14
|
-
}, "");
|
|
15
|
-
});
|
|
16
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CLIENT_ERROR_REPSONSE,
|
|
3
|
-
INFORMATION_REPSONSE,
|
|
4
|
-
REDIRECTION_REPSONSE,
|
|
5
|
-
SERVER_ERROR_REPSONSE,
|
|
6
|
-
SUCCESSFUL_REPSONSE,
|
|
7
|
-
} from "../../constants";
|
|
8
|
-
|
|
9
|
-
export default function getResponseGroup(status: number) {
|
|
10
|
-
switch (true) {
|
|
11
|
-
case status < 200:
|
|
12
|
-
return INFORMATION_REPSONSE;
|
|
13
|
-
case status < 300:
|
|
14
|
-
return SUCCESSFUL_REPSONSE;
|
|
15
|
-
case status < 400:
|
|
16
|
-
return REDIRECTION_REPSONSE;
|
|
17
|
-
case status < 500:
|
|
18
|
-
return CLIENT_ERROR_REPSONSE;
|
|
19
|
-
default:
|
|
20
|
-
return SERVER_ERROR_REPSONSE;
|
|
21
|
-
}
|
|
22
|
-
}
|