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.
Files changed (104) hide show
  1. package/README.md +165 -7
  2. package/dist/main/index.mjs +621 -0
  3. package/dist/main/index.mjs.map +1 -0
  4. package/dist/tsconfig.build.tsbuildinfo +1 -0
  5. package/{lib → dist}/types/constants.d.ts +2 -2
  6. package/dist/types/constants.d.ts.map +1 -0
  7. package/dist/types/helpers/buildEndpoint/index.d.ts +3 -0
  8. package/dist/types/helpers/buildEndpoint/index.d.ts.map +1 -0
  9. package/{lib/types/helpers/build-endpoint → dist/types/helpers/buildEndpoint}/types.d.ts +2 -2
  10. package/dist/types/helpers/buildEndpoint/types.d.ts.map +1 -0
  11. package/dist/types/helpers/defaultPathTemplateCallback/index.d.ts +2 -0
  12. package/dist/types/helpers/defaultPathTemplateCallback/index.d.ts.map +1 -0
  13. package/dist/types/helpers/delay/index.d.ts +2 -0
  14. package/{lib → dist}/types/helpers/delay/index.d.ts.map +1 -1
  15. package/dist/types/helpers/getResponseGroup/index.d.ts +2 -0
  16. package/dist/types/helpers/getResponseGroup/index.d.ts.map +1 -0
  17. package/dist/types/helpers/isCacheabilityValid/index.d.ts +3 -0
  18. package/dist/types/helpers/isCacheabilityValid/index.d.ts.map +1 -0
  19. package/dist/types/index.d.ts +5 -0
  20. package/dist/types/index.d.ts.map +1 -0
  21. package/{lib → dist}/types/main.d.ts +12 -12
  22. package/dist/types/main.d.ts.map +1 -0
  23. package/dist/types/types.d.ts +161 -0
  24. package/dist/types/types.d.ts.map +1 -0
  25. package/package.json +113 -145
  26. package/src/{__tests__ → __testUtils__}/data/136-7317.json +1 -1
  27. package/src/{__tests__ → __testUtils__}/data/180-1387.json +1 -1
  28. package/src/{__tests__ → __testUtils__}/data/183-3905.json +1 -1
  29. package/src/{__tests__ → __testUtils__}/data/202-3315.json +1 -1
  30. package/src/__testUtils__/data/index.ts +23 -0
  31. package/src/__testUtils__/helpers/index.ts +49 -0
  32. package/src/constants.ts +28 -28
  33. package/src/helpers/buildEndpoint/index.ts +34 -0
  34. package/src/helpers/{build-endpoint → buildEndpoint}/types.ts +2 -2
  35. package/src/helpers/defaultPathTemplateCallback/index.test.ts +11 -0
  36. package/src/helpers/defaultPathTemplateCallback/index.ts +17 -0
  37. package/src/helpers/delay/index.ts +2 -2
  38. package/src/helpers/getResponseGroup/index.ts +25 -0
  39. package/src/helpers/isCacheabilityValid/index.ts +6 -0
  40. package/src/index.ts +4 -4
  41. package/src/main.test.ts +283 -411
  42. package/src/main.ts +238 -241
  43. package/src/types.ts +114 -16
  44. package/tsconfig.build.json +14 -0
  45. package/tsconfig.json +9 -0
  46. package/CHANGELOG.md +0 -244
  47. package/jest.setup.js +0 -10
  48. package/lib/browser/index.js +0 -2
  49. package/lib/browser/index.js.map +0 -1
  50. package/lib/browser/production.analysis.txt +0 -91
  51. package/lib/main/constants.js +0 -97
  52. package/lib/main/helpers/build-endpoint/index.js +0 -38
  53. package/lib/main/helpers/build-endpoint/types.js +0 -1
  54. package/lib/main/helpers/default-path-template-callback/index.js +0 -16
  55. package/lib/main/helpers/delay/index.js +0 -12
  56. package/lib/main/helpers/get-response-group/index.js +0 -27
  57. package/lib/main/helpers/is-cacheability-valid/index.js +0 -13
  58. package/lib/main/index.js +0 -62
  59. package/lib/main/main.js +0 -580
  60. package/lib/main/types.js +0 -1
  61. package/lib/module/constants.js +0 -49
  62. package/lib/module/helpers/build-endpoint/index.js +0 -28
  63. package/lib/module/helpers/build-endpoint/types.js +0 -0
  64. package/lib/module/helpers/default-path-template-callback/index.js +0 -9
  65. package/lib/module/helpers/delay/index.js +0 -4
  66. package/lib/module/helpers/get-response-group/index.js +0 -19
  67. package/lib/module/helpers/is-cacheability-valid/index.js +0 -6
  68. package/lib/module/index.js +0 -4
  69. package/lib/module/main.js +0 -576
  70. package/lib/module/types.js +0 -0
  71. package/lib/types/__tests__/data/index.d.ts +0 -17
  72. package/lib/types/__tests__/data/index.d.ts.map +0 -1
  73. package/lib/types/__tests__/helpers/index.d.ts +0 -29
  74. package/lib/types/__tests__/helpers/index.d.ts.map +0 -1
  75. package/lib/types/__tests__/types.d.ts +0 -13
  76. package/lib/types/__tests__/types.d.ts.map +0 -1
  77. package/lib/types/constants.d.ts.map +0 -1
  78. package/lib/types/helpers/build-endpoint/index.d.ts +0 -3
  79. package/lib/types/helpers/build-endpoint/index.d.ts.map +0 -1
  80. package/lib/types/helpers/build-endpoint/types.d.ts.map +0 -1
  81. package/lib/types/helpers/default-path-template-callback/index.d.ts +0 -3
  82. package/lib/types/helpers/default-path-template-callback/index.d.ts.map +0 -1
  83. package/lib/types/helpers/default-path-template-callback/index.test.d.ts +0 -2
  84. package/lib/types/helpers/default-path-template-callback/index.test.d.ts.map +0 -1
  85. package/lib/types/helpers/delay/index.d.ts +0 -2
  86. package/lib/types/helpers/get-response-group/index.d.ts +0 -2
  87. package/lib/types/helpers/get-response-group/index.d.ts.map +0 -1
  88. package/lib/types/helpers/is-cacheability-valid/index.d.ts +0 -3
  89. package/lib/types/helpers/is-cacheability-valid/index.d.ts.map +0 -1
  90. package/lib/types/index.d.ts +0 -5
  91. package/lib/types/index.d.ts.map +0 -1
  92. package/lib/types/main.d.ts.map +0 -1
  93. package/lib/types/main.test.d.ts +0 -2
  94. package/lib/types/main.test.d.ts.map +0 -1
  95. package/lib/types/types.d.ts +0 -69
  96. package/lib/types/types.d.ts.map +0 -1
  97. package/src/__tests__/data/index.ts +0 -19
  98. package/src/__tests__/helpers/index.ts +0 -61
  99. package/src/__tests__/types.ts +0 -14
  100. package/src/helpers/build-endpoint/index.ts +0 -34
  101. package/src/helpers/default-path-template-callback/index.test.ts +0 -11
  102. package/src/helpers/default-path-template-callback/index.ts +0 -16
  103. package/src/helpers/get-response-group/index.ts +0 -22
  104. package/src/helpers/is-cacheability-valid/index.ts +0 -6
@@ -1,2 +0,0 @@
1
- export default function getResponseGroup(status: number): "information" | "successful" | "redirection" | "clientError" | "serverError";
2
- //# sourceMappingURL=index.d.ts.map
@@ -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,3 +0,0 @@
1
- import Cacheability from "cacheability";
2
- export default function isCacheabilityValid(cacheability: Cacheability): boolean;
3
- //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -1,5 +0,0 @@
1
- export * from "./constants";
2
- export { default as defaultPathTemplateCallback } from "./helpers/default-path-template-callback";
3
- export { Getta, createRestClient } from "./main";
4
- export * from "./types";
5
- //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=main.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.test.d.ts","sourceRoot":"","sources":["../../src/main.test.ts"],"names":[],"mappings":""}
@@ -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
@@ -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
- }
@@ -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
- }
@@ -1,6 +0,0 @@
1
- import Cacheability from "cacheability";
2
-
3
- export default function isCacheabilityValid(cacheability: Cacheability) {
4
- const noCache = cacheability?.metadata?.cacheControl?.noCache ?? false;
5
- return !noCache && cacheability.checkTTL();
6
- }