@adtrackify/at-service-common 4.0.25 → 4.0.26

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 (31) hide show
  1. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.d.ts +1 -0
  2. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js +56 -0
  3. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -0
  4. package/dist/cjs/clients/third-party/index.d.ts +1 -0
  5. package/dist/cjs/clients/third-party/index.js +1 -0
  6. package/dist/cjs/clients/third-party/index.js.map +1 -1
  7. package/dist/cjs/clients/third-party/open-exchange-rates-client.d.ts +8 -0
  8. package/dist/cjs/clients/third-party/open-exchange-rates-client.js +28 -0
  9. package/dist/cjs/clients/third-party/open-exchange-rates-client.js.map +1 -0
  10. package/dist/cjs/types/index.d.ts +1 -0
  11. package/dist/cjs/types/index.js +1 -0
  12. package/dist/cjs/types/index.js.map +1 -1
  13. package/dist/cjs/types/open-exchange-rates-types.d.ts +10 -0
  14. package/dist/cjs/types/open-exchange-rates-types.js +3 -0
  15. package/dist/cjs/types/open-exchange-rates-types.js.map +1 -0
  16. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.d.ts +1 -0
  17. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js +54 -0
  18. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -0
  19. package/dist/esm/clients/third-party/index.d.ts +1 -0
  20. package/dist/esm/clients/third-party/index.js +1 -0
  21. package/dist/esm/clients/third-party/index.js.map +1 -1
  22. package/dist/esm/clients/third-party/open-exchange-rates-client.d.ts +8 -0
  23. package/dist/esm/clients/third-party/open-exchange-rates-client.js +24 -0
  24. package/dist/esm/clients/third-party/open-exchange-rates-client.js.map +1 -0
  25. package/dist/esm/types/index.d.ts +1 -0
  26. package/dist/esm/types/index.js +1 -0
  27. package/dist/esm/types/index.js.map +1 -1
  28. package/dist/esm/types/open-exchange-rates-types.d.ts +10 -0
  29. package/dist/esm/types/open-exchange-rates-types.js +2 -0
  30. package/dist/esm/types/open-exchange-rates-types.js.map +1 -0
  31. package/package.json +1 -1
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const generic_1 = require("../../clients/generic");
4
+ jest.mock('../../clients/generic', () => ({
5
+ axiosHttpService: jest.fn(() => ({ get: jest.fn() })),
6
+ }));
7
+ const open_exchange_rates_client_1 = require("../../clients/third-party/open-exchange-rates-client");
8
+ const mockGet = generic_1.axiosHttpService.mock.results[0].value.get;
9
+ const fixtureRates = {
10
+ disclaimer: 'Usage subject to terms',
11
+ license: 'https://openexchangerates.org/license',
12
+ timestamp: 1704067200,
13
+ historical: true,
14
+ base: 'USD',
15
+ rates: {
16
+ USD: 1,
17
+ EUR: 0.92,
18
+ GBP: 0.79,
19
+ },
20
+ };
21
+ describe('OpenExchangeRatesClient', () => {
22
+ beforeEach(() => {
23
+ jest.clearAllMocks();
24
+ });
25
+ it('requests historical rates with app_id query param', async () => {
26
+ mockGet.mockResolvedValue({ status: 200, data: fixtureRates });
27
+ const oxrClient = new open_exchange_rates_client_1.OpenExchangeRatesClient('test-app-id');
28
+ const response = await oxrClient.getHistoricalRates('2024-01-01');
29
+ expect(mockGet).toHaveBeenCalledTimes(1);
30
+ const [url, config] = mockGet.mock.calls[0];
31
+ expect(url).toBe('/historical/2024-01-01.json');
32
+ expect(config.params).toEqual({ app_id: 'test-app-id' });
33
+ expect(response).toEqual({ status: 200, data: fixtureRates });
34
+ });
35
+ it('requests latest rates with app_id query param', async () => {
36
+ const latestFixture = { ...fixtureRates, historical: undefined };
37
+ mockGet.mockResolvedValue({ status: 200, data: latestFixture });
38
+ const oxrClient = new open_exchange_rates_client_1.OpenExchangeRatesClient('test-app-id');
39
+ const response = await oxrClient.getLatestRates();
40
+ expect(mockGet).toHaveBeenCalledTimes(1);
41
+ const [url, config] = mockGet.mock.calls[0];
42
+ expect(url).toBe('/latest.json');
43
+ expect(config.params).toEqual({ app_id: 'test-app-id' });
44
+ expect(response).toEqual({ status: 200, data: latestFixture });
45
+ });
46
+ it('passes a non-200 response through without throwing', async () => {
47
+ mockGet.mockResolvedValue({
48
+ status: 429,
49
+ data: { error: true, status: 429, message: 'rate_limit', description: 'Too many requests' },
50
+ });
51
+ const oxrClient = new open_exchange_rates_client_1.OpenExchangeRatesClient('test-app-id');
52
+ const response = await oxrClient.getLatestRates();
53
+ expect(response.status).toBe(429);
54
+ });
55
+ });
56
+ //# sourceMappingURL=open-exchange-rates-client.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-exchange-rates-client.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/clients/open-exchange-rates-client.spec.ts"],"names":[],"mappings":";;AAGA,mDAAyD;AAEzD,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CACtD,CAAC,CAAC,CAAC;AAEJ,qGAA+F;AAE/F,MAAM,OAAO,GAAI,0BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAgB,CAAC;AAEvF,MAAM,YAAY,GAAG;IACnB,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,uCAAuC;IAChD,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,IAAI;IAChB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE;QACL,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,IAAI;KACV;CACF,CAAC;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,IAAI,oDAAuB,CAAC,aAAa,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAElE,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,aAAa,GAAG,EAAE,GAAG,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACjE,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,oDAAuB,CAAC,aAAa,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QAElD,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,OAAO,CAAC,iBAAiB,CAAC;YACxB,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE;SAC5F,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,oDAAuB,CAAC,aAAa,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QAElD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -3,3 +3,4 @@ export * from './shopify/shopify-graphql-client.js';
3
3
  export * from './emailable-client.js';
4
4
  export * from './loops-client.js';
5
5
  export * from './acuity-client.js';
6
+ export * from './open-exchange-rates-client.js';
@@ -19,4 +19,5 @@ __exportStar(require("./shopify/shopify-graphql-client.js"), exports);
19
19
  __exportStar(require("./emailable-client.js"), exports);
20
20
  __exportStar(require("./loops-client.js"), exports);
21
21
  __exportStar(require("./acuity-client.js"), exports);
22
+ __exportStar(require("./open-exchange-rates-client.js"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/clients/third-party/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,sEAAoD;AACpD,wDAAsC;AACtC,oDAAkC;AAClC,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/clients/third-party/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,sEAAoD;AACpD,wDAAsC;AACtC,oDAAkC;AAClC,qDAAmC;AACnC,kEAAgD"}
@@ -0,0 +1,8 @@
1
+ import { ApiResponse } from '../../types/api-response';
2
+ import { OpenExchangeRatesApiResponse } from '../../types/open-exchange-rates-types';
3
+ export declare class OpenExchangeRatesClient {
4
+ private OPEN_EXCHANGE_RATES_APP_ID;
5
+ constructor(openExchangeRatesAppId: string);
6
+ getHistoricalRates: (rateDate: string) => Promise<ApiResponse<OpenExchangeRatesApiResponse>>;
7
+ getLatestRates: () => Promise<ApiResponse<OpenExchangeRatesApiResponse>>;
8
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenExchangeRatesClient = void 0;
4
+ const generic_1 = require("../generic");
5
+ const OPEN_EXCHANGE_RATES_API_URL = 'https://openexchangerates.org/api';
6
+ const client = (0, generic_1.axiosHttpService)({
7
+ baseURL: OPEN_EXCHANGE_RATES_API_URL,
8
+ });
9
+ class OpenExchangeRatesClient {
10
+ OPEN_EXCHANGE_RATES_APP_ID;
11
+ constructor(openExchangeRatesAppId) {
12
+ this.OPEN_EXCHANGE_RATES_APP_ID = openExchangeRatesAppId;
13
+ }
14
+ getHistoricalRates = async (rateDate) => {
15
+ const response = await client.get(`/historical/${rateDate}.json`, {
16
+ params: { app_id: this.OPEN_EXCHANGE_RATES_APP_ID },
17
+ });
18
+ return response;
19
+ };
20
+ getLatestRates = async () => {
21
+ const response = await client.get('/latest.json', {
22
+ params: { app_id: this.OPEN_EXCHANGE_RATES_APP_ID },
23
+ });
24
+ return response;
25
+ };
26
+ }
27
+ exports.OpenExchangeRatesClient = OpenExchangeRatesClient;
28
+ //# sourceMappingURL=open-exchange-rates-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-exchange-rates-client.js","sourceRoot":"","sources":["../../../../src/clients/third-party/open-exchange-rates-client.ts"],"names":[],"mappings":";;;AAAA,wCAA8C;AAI9C,MAAM,2BAA2B,GAAG,mCAAmC,CAAC;AAExE,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC;IAC9B,OAAO,EAAE,2BAA2B;CACrC,CAAC,CAAC;AAEH,MAAa,uBAAuB;IAC1B,0BAA0B,CAAS;IAE3C,YAAY,sBAA8B;QACxC,IAAI,CAAC,0BAA0B,GAAG,sBAAsB,CAAC;IAC3D,CAAC;IAGM,kBAAkB,GAAG,KAAK,EAC/B,QAAgB,EACoC,EAAE;QACtD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,QAAQ,OAAO,EAAE;YAChE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE;SACpD,CAAC,CAAC;QACH,OAAO,QAAqD,CAAC;IAC/D,CAAC,CAAC;IAGK,cAAc,GAAG,KAAK,IAAwD,EAAE;QACrF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;YAChD,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE;SACpD,CAAC,CAAC;QACH,OAAO,QAAqD,CAAC;IAC/D,CAAC,CAAC;CACH;AAxBD,0DAwBC"}
@@ -1,5 +1,6 @@
1
1
  export * from './internal-events/index.js';
2
2
  export * from './acuity-types.js';
3
3
  export * from './public-api-types.js';
4
+ export * from './open-exchange-rates-types.js';
4
5
  import * as ShopifyRest from './shopify-rest-types.js';
5
6
  export { ShopifyRest };
@@ -30,6 +30,7 @@ exports.ShopifyRest = void 0;
30
30
  __exportStar(require("./internal-events/index.js"), exports);
31
31
  __exportStar(require("./acuity-types.js"), exports);
32
32
  __exportStar(require("./public-api-types.js"), exports);
33
+ __exportStar(require("./open-exchange-rates-types.js"), exports);
33
34
  const ShopifyRest = __importStar(require("./shopify-rest-types.js"));
34
35
  exports.ShopifyRest = ShopifyRest;
35
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,oDAAkC;AAClC,wDAAsC;AAGtC,qEAAuD;AAC9C,kCAAW"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,oDAAkC;AAClC,wDAAsC;AACtC,iEAA+C;AAG/C,qEAAuD;AAC9C,kCAAW"}
@@ -0,0 +1,10 @@
1
+ export interface OpenExchangeRatesByCurrency {
2
+ [currencyCode: string]: number;
3
+ }
4
+ export interface OpenExchangeRatesApiResponse {
5
+ disclaimer?: string;
6
+ license?: string;
7
+ timestamp: number;
8
+ base: string;
9
+ rates: OpenExchangeRatesByCurrency;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=open-exchange-rates-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-exchange-rates-types.js","sourceRoot":"","sources":["../../../src/types/open-exchange-rates-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import { axiosHttpService } from '../../clients/generic';
2
+ jest.mock('../../clients/generic', () => ({
3
+ axiosHttpService: jest.fn(() => ({ get: jest.fn() })),
4
+ }));
5
+ import { OpenExchangeRatesClient } from '../../clients/third-party/open-exchange-rates-client';
6
+ const mockGet = axiosHttpService.mock.results[0].value.get;
7
+ const fixtureRates = {
8
+ disclaimer: 'Usage subject to terms',
9
+ license: 'https://openexchangerates.org/license',
10
+ timestamp: 1704067200,
11
+ historical: true,
12
+ base: 'USD',
13
+ rates: {
14
+ USD: 1,
15
+ EUR: 0.92,
16
+ GBP: 0.79,
17
+ },
18
+ };
19
+ describe('OpenExchangeRatesClient', () => {
20
+ beforeEach(() => {
21
+ jest.clearAllMocks();
22
+ });
23
+ it('requests historical rates with app_id query param', async () => {
24
+ mockGet.mockResolvedValue({ status: 200, data: fixtureRates });
25
+ const oxrClient = new OpenExchangeRatesClient('test-app-id');
26
+ const response = await oxrClient.getHistoricalRates('2024-01-01');
27
+ expect(mockGet).toHaveBeenCalledTimes(1);
28
+ const [url, config] = mockGet.mock.calls[0];
29
+ expect(url).toBe('/historical/2024-01-01.json');
30
+ expect(config.params).toEqual({ app_id: 'test-app-id' });
31
+ expect(response).toEqual({ status: 200, data: fixtureRates });
32
+ });
33
+ it('requests latest rates with app_id query param', async () => {
34
+ const latestFixture = { ...fixtureRates, historical: undefined };
35
+ mockGet.mockResolvedValue({ status: 200, data: latestFixture });
36
+ const oxrClient = new OpenExchangeRatesClient('test-app-id');
37
+ const response = await oxrClient.getLatestRates();
38
+ expect(mockGet).toHaveBeenCalledTimes(1);
39
+ const [url, config] = mockGet.mock.calls[0];
40
+ expect(url).toBe('/latest.json');
41
+ expect(config.params).toEqual({ app_id: 'test-app-id' });
42
+ expect(response).toEqual({ status: 200, data: latestFixture });
43
+ });
44
+ it('passes a non-200 response through without throwing', async () => {
45
+ mockGet.mockResolvedValue({
46
+ status: 429,
47
+ data: { error: true, status: 429, message: 'rate_limit', description: 'Too many requests' },
48
+ });
49
+ const oxrClient = new OpenExchangeRatesClient('test-app-id');
50
+ const response = await oxrClient.getLatestRates();
51
+ expect(response.status).toBe(429);
52
+ });
53
+ });
54
+ //# sourceMappingURL=open-exchange-rates-client.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-exchange-rates-client.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/clients/open-exchange-rates-client.spec.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@ export * from './shopify/shopify-graphql-client.js';
3
3
  export * from './emailable-client.js';
4
4
  export * from './loops-client.js';
5
5
  export * from './acuity-client.js';
6
+ export * from './open-exchange-rates-client.js';
@@ -3,4 +3,5 @@ export * from './shopify/shopify-graphql-client.js';
3
3
  export * from './emailable-client.js';
4
4
  export * from './loops-client.js';
5
5
  export * from './acuity-client.js';
6
+ export * from './open-exchange-rates-client.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/clients/third-party/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qCAAqC,CAAC;AACpD,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/clients/third-party/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qCAAqC,CAAC;AACpD,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ApiResponse } from '../../types/api-response';
2
+ import { OpenExchangeRatesApiResponse } from '../../types/open-exchange-rates-types';
3
+ export declare class OpenExchangeRatesClient {
4
+ private OPEN_EXCHANGE_RATES_APP_ID;
5
+ constructor(openExchangeRatesAppId: string);
6
+ getHistoricalRates: (rateDate: string) => Promise<ApiResponse<OpenExchangeRatesApiResponse>>;
7
+ getLatestRates: () => Promise<ApiResponse<OpenExchangeRatesApiResponse>>;
8
+ }
@@ -0,0 +1,24 @@
1
+ import { axiosHttpService } from '../generic';
2
+ const OPEN_EXCHANGE_RATES_API_URL = 'https://openexchangerates.org/api';
3
+ const client = axiosHttpService({
4
+ baseURL: OPEN_EXCHANGE_RATES_API_URL,
5
+ });
6
+ export class OpenExchangeRatesClient {
7
+ OPEN_EXCHANGE_RATES_APP_ID;
8
+ constructor(openExchangeRatesAppId) {
9
+ this.OPEN_EXCHANGE_RATES_APP_ID = openExchangeRatesAppId;
10
+ }
11
+ getHistoricalRates = async (rateDate) => {
12
+ const response = await client.get(`/historical/${rateDate}.json`, {
13
+ params: { app_id: this.OPEN_EXCHANGE_RATES_APP_ID },
14
+ });
15
+ return response;
16
+ };
17
+ getLatestRates = async () => {
18
+ const response = await client.get('/latest.json', {
19
+ params: { app_id: this.OPEN_EXCHANGE_RATES_APP_ID },
20
+ });
21
+ return response;
22
+ };
23
+ }
24
+ //# sourceMappingURL=open-exchange-rates-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-exchange-rates-client.js","sourceRoot":"","sources":["../../../../src/clients/third-party/open-exchange-rates-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,MAAM,2BAA2B,GAAG,mCAAmC,CAAC;AAExE,MAAM,MAAM,GAAG,gBAAgB,CAAC;IAC9B,OAAO,EAAE,2BAA2B;CACrC,CAAC,CAAC;AAEH,MAAM,OAAO,uBAAuB;IAC1B,0BAA0B,CAAS;IAE3C,YAAY,sBAA8B;QACxC,IAAI,CAAC,0BAA0B,GAAG,sBAAsB,CAAC;IAC3D,CAAC;IAGM,kBAAkB,GAAG,KAAK,EAC/B,QAAgB,EACoC,EAAE;QACtD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,QAAQ,OAAO,EAAE;YAChE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE;SACpD,CAAC,CAAC;QACH,OAAO,QAAqD,CAAC;IAC/D,CAAC,CAAC;IAGK,cAAc,GAAG,KAAK,IAAwD,EAAE;QACrF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;YAChD,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE;SACpD,CAAC,CAAC;QACH,OAAO,QAAqD,CAAC;IAC/D,CAAC,CAAC;CACH"}
@@ -1,5 +1,6 @@
1
1
  export * from './internal-events/index.js';
2
2
  export * from './acuity-types.js';
3
3
  export * from './public-api-types.js';
4
+ export * from './open-exchange-rates-types.js';
4
5
  import * as ShopifyRest from './shopify-rest-types.js';
5
6
  export { ShopifyRest };
@@ -1,6 +1,7 @@
1
1
  export * from './internal-events/index.js';
2
2
  export * from './acuity-types.js';
3
3
  export * from './public-api-types.js';
4
+ export * from './open-exchange-rates-types.js';
4
5
  import * as ShopifyRest from './shopify-rest-types.js';
5
6
  export { ShopifyRest };
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAG/C,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface OpenExchangeRatesByCurrency {
2
+ [currencyCode: string]: number;
3
+ }
4
+ export interface OpenExchangeRatesApiResponse {
5
+ disclaimer?: string;
6
+ license?: string;
7
+ timestamp: number;
8
+ base: string;
9
+ rates: OpenExchangeRatesByCurrency;
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=open-exchange-rates-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-exchange-rates-types.js","sourceRoot":"","sources":["../../../src/types/open-exchange-rates-types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adtrackify/at-service-common",
3
- "version": "4.0.25",
3
+ "version": "4.0.26",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist/*"