@approvio/ts-sdk 0.0.7 → 0.0.9

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 (63) hide show
  1. package/dist/index.cjs +603 -0
  2. package/dist/index.d.cts +145 -0
  3. package/dist/index.d.mts +145 -0
  4. package/dist/index.mjs +571 -0
  5. package/package.json +21 -7
  6. package/dist/auth/agent.authenticator.d.ts +0 -12
  7. package/dist/auth/agent.authenticator.js +0 -96
  8. package/dist/auth/agent.authenticator.js.map +0 -1
  9. package/dist/auth/auth.helpers.d.ts +0 -11
  10. package/dist/auth/auth.helpers.js +0 -114
  11. package/dist/auth/auth.helpers.js.map +0 -1
  12. package/dist/auth/auth.helpers.test.d.ts +0 -1
  13. package/dist/auth/auth.helpers.test.js +0 -44
  14. package/dist/auth/auth.helpers.test.js.map +0 -1
  15. package/dist/auth/bearer.authenticator.d.ts +0 -11
  16. package/dist/auth/bearer.authenticator.js +0 -43
  17. package/dist/auth/bearer.authenticator.js.map +0 -1
  18. package/dist/auth/oauth.helper.d.ts +0 -10
  19. package/dist/auth/oauth.helper.js +0 -83
  20. package/dist/auth/oauth.helper.js.map +0 -1
  21. package/dist/auth/user.authenticator.d.ts +0 -11
  22. package/dist/auth/user.authenticator.js +0 -45
  23. package/dist/auth/user.authenticator.js.map +0 -1
  24. package/dist/auth/utils.d.ts +0 -1
  25. package/dist/auth/utils.js +0 -11
  26. package/dist/auth/utils.js.map +0 -1
  27. package/dist/client/agent.client.d.ts +0 -8
  28. package/dist/client/agent.client.js +0 -16
  29. package/dist/client/agent.client.js.map +0 -1
  30. package/dist/client/agent.client.test.d.ts +0 -1
  31. package/dist/client/agent.client.test.js +0 -82
  32. package/dist/client/agent.client.test.js.map +0 -1
  33. package/dist/client/approvio.client.d.ts +0 -44
  34. package/dist/client/approvio.client.js +0 -68
  35. package/dist/client/approvio.client.js.map +0 -1
  36. package/dist/client/base.client.d.ts +0 -29
  37. package/dist/client/base.client.js +0 -142
  38. package/dist/client/base.client.js.map +0 -1
  39. package/dist/client/base.client.test.d.ts +0 -1
  40. package/dist/client/base.client.test.js +0 -218
  41. package/dist/client/base.client.test.js.map +0 -1
  42. package/dist/client/errors.d.ts +0 -6
  43. package/dist/client/errors.js +0 -16
  44. package/dist/client/errors.js.map +0 -1
  45. package/dist/client/user.client.d.ts +0 -56
  46. package/dist/client/user.client.js +0 -137
  47. package/dist/client/user.client.js.map +0 -1
  48. package/dist/client/utils.d.ts +0 -4
  49. package/dist/client/utils.js +0 -29
  50. package/dist/client/utils.js.map +0 -1
  51. package/dist/client/utils.test.d.ts +0 -1
  52. package/dist/client/utils.test.js +0 -150
  53. package/dist/client/utils.test.js.map +0 -1
  54. package/dist/config.d.ts +0 -7
  55. package/dist/config.js +0 -3
  56. package/dist/config.js.map +0 -1
  57. package/dist/index.d.ts +0 -7
  58. package/dist/index.js +0 -24
  59. package/dist/index.js.map +0 -1
  60. package/dist/interfaces.d.ts +0 -6
  61. package/dist/interfaces.js +0 -3
  62. package/dist/interfaces.js.map +0 -1
  63. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,96 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.AgentAuthenticator = void 0;
40
- const utils_1 = require("./utils");
41
- const axios_1 = __importDefault(require("axios"));
42
- const utils_2 = require("../client/utils");
43
- const jose = __importStar(require("jose"));
44
- class AgentAuthenticator {
45
- privateKey;
46
- accessToken;
47
- refreshToken;
48
- onTokenRefreshed;
49
- endpoint;
50
- constructor(endpoint, privateKey, accessToken, refreshToken, onTokenRefreshed) {
51
- this.privateKey = privateKey;
52
- this.accessToken = accessToken;
53
- this.refreshToken = refreshToken;
54
- this.onTokenRefreshed = onTokenRefreshed;
55
- (0, utils_2.validateURL)(endpoint);
56
- this.endpoint = (0, utils_2.removeTrailingSlash)(endpoint);
57
- }
58
- async getAccessToken() {
59
- if ((0, utils_1.isJwtTokenExpired)(this.accessToken)) {
60
- const { accessToken, refreshToken } = await this.renewToken();
61
- this.accessToken = accessToken;
62
- this.refreshToken = refreshToken;
63
- this.onTokenRefreshed?.(this.accessToken, this.refreshToken);
64
- }
65
- return this.accessToken;
66
- }
67
- async renewToken() {
68
- const request = {
69
- refreshToken: this.refreshToken
70
- };
71
- const dpopProof = await this.generateDpopProof("POST", `${this.endpoint}/auth/agents/refresh`);
72
- const tokenResponse = await axios_1.default.post(`${this.endpoint}/auth/agents/refresh`, request, {
73
- headers: {
74
- DPoP: dpopProof
75
- }
76
- });
77
- return tokenResponse.data;
78
- }
79
- async generateDpopProof(method, url) {
80
- const privateKey = await jose.importPKCS8(this.privateKey, "RS256");
81
- return await new jose.SignJWT({
82
- htu: url,
83
- htm: method,
84
- jti: crypto.randomUUID()
85
- })
86
- .setProtectedHeader({
87
- alg: "RS256",
88
- typ: "dpop+jwt"
89
- })
90
- .setIssuedAt()
91
- .setJti(crypto.randomUUID())
92
- .sign(privateKey);
93
- }
94
- }
95
- exports.AgentAuthenticator = AgentAuthenticator;
96
- //# sourceMappingURL=agent.authenticator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.authenticator.js","sourceRoot":"","sources":["../../src/auth/agent.authenticator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,mCAAyC;AACzC,kDAAyB;AACzB,2CAAgE;AAChE,2CAA4B;AAM5B,MAAa,kBAAkB;IAKV;IACT;IACA;IAKS;IAXF,QAAQ,CAAQ;IAEjC,YACE,QAAgB,EACC,UAAkB,EAC3B,WAAmB,EACnB,YAAoB,EAKX,gBAAsE;QAPtE,eAAU,GAAV,UAAU,CAAQ;QAC3B,gBAAW,GAAX,WAAW,CAAQ;QACnB,iBAAY,GAAZ,YAAY,CAAQ;QAKX,qBAAgB,GAAhB,gBAAgB,CAAsD;QAEvF,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAMD,KAAK,CAAC,cAAc;QAClB,IAAI,IAAA,yBAAiB,EAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,MAAM,EAAC,WAAW,EAAE,YAAY,EAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YAC3D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;YAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;YAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,OAAO,GAAwB;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAA;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,sBAAsB,CAAC,CAAA;QAE9F,MAAM,aAAa,GAAG,MAAM,eAAK,CAAC,IAAI,CAAqB,GAAG,IAAI,CAAC,QAAQ,sBAAsB,EAAE,OAAO,EAAE;YAC1G,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;aAChB;SACF,CAAC,CAAA;QAEF,OAAO,aAAa,CAAC,IAAI,CAAA;IAC3B,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,GAAW;QACzD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAEnE,OAAO,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;YAC5B,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE;SACzB,CAAC;aACC,kBAAkB,CAAC;YAClB,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,UAAU;SAChB,CAAC;aACD,WAAW,EAAE;aACb,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;aAC3B,IAAI,CAAC,UAAU,CAAC,CAAA;IACrB,CAAC;CACF;AAjED,gDAiEC"}
@@ -1,11 +0,0 @@
1
- import { AgentTokenResponse, TokenResponse } from "@approvio/api";
2
- import * as TE from "fp-ts/TaskEither";
3
- import { ApprovioError } from "../client/base.client";
4
- export declare class AuthHelper {
5
- private readonly endpoint;
6
- constructor(endpoint: string);
7
- getUserLoginUrl(): string;
8
- exchangeTokenForUser(code: string, state: string): TE.TaskEither<ApprovioError, TokenResponse>;
9
- authenticateAgent(agentName: string, privateKeyPem: string): TE.TaskEither<ApprovioError, AgentTokenResponse>;
10
- protected handleError(error: unknown): ApprovioError;
11
- }
@@ -1,114 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.AuthHelper = void 0;
40
- const axios_1 = __importDefault(require("axios"));
41
- const jose = __importStar(require("jose"));
42
- const crypto = __importStar(require("node:crypto"));
43
- const TE = __importStar(require("fp-ts/TaskEither"));
44
- const utils_1 = require("../client/utils");
45
- class AuthHelper {
46
- endpoint;
47
- constructor(endpoint) {
48
- (0, utils_1.validateURL)(endpoint);
49
- this.endpoint = (0, utils_1.removeTrailingSlash)(endpoint);
50
- }
51
- getUserLoginUrl() {
52
- return `${this.endpoint}/auth/login`;
53
- }
54
- exchangeTokenForUser(code, state) {
55
- const request = {
56
- code,
57
- state
58
- };
59
- return TE.tryCatch(async () => {
60
- const response = await axios_1.default.post(`${this.endpoint}/auth/token`, request);
61
- return response.data;
62
- }, error => this.handleError(error));
63
- }
64
- authenticateAgent(agentName, privateKeyPem) {
65
- return TE.tryCatch(async () => {
66
- const challengeRequest = { agentName };
67
- const challengeResponse = await axios_1.default.post(`${this.endpoint}/auth/agents/challenge`, challengeRequest);
68
- const { challenge: b64EncodedChallenge } = challengeResponse.data;
69
- const encryptedBuffer = Buffer.from(b64EncodedChallenge, "base64");
70
- const decryptedBuffer = crypto.privateDecrypt({
71
- key: privateKeyPem,
72
- padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,
73
- oaepHash: "sha256"
74
- }, encryptedBuffer);
75
- const decryptedContent = decryptedBuffer.toString("utf-8");
76
- const { nonce } = JSON.parse(decryptedContent);
77
- const privateKey = await jose.importPKCS8(privateKeyPem, "RS256");
78
- const assertion = await new jose.SignJWT({
79
- iss: agentName,
80
- sub: agentName,
81
- aud: "approvio-api",
82
- jti: nonce
83
- })
84
- .setProtectedHeader({ alg: "RS256", typ: "JWT" })
85
- .setIssuedAt()
86
- .setExpirationTime("5m")
87
- .sign(privateKey);
88
- const tokenRequest = {
89
- grantType: "urn:ietf:params:oauth:grant-type:jwt-bearer",
90
- clientAssertionType: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
91
- clientAssertion: assertion
92
- };
93
- const tokenResponse = await axios_1.default.post(`${this.endpoint}/auth/agents/token`, tokenRequest);
94
- return tokenResponse.data;
95
- }, error => this.handleError(error));
96
- }
97
- handleError(error) {
98
- if (axios_1.default.isAxiosError(error)) {
99
- const status = error.response?.status;
100
- const data = error.response?.data;
101
- if (status && (0, utils_1.isApprovioError)(data)) {
102
- return {
103
- ...data,
104
- status
105
- };
106
- }
107
- }
108
- if (error instanceof Error)
109
- return error;
110
- return new Error(String(error));
111
- }
112
- }
113
- exports.AuthHelper = AuthHelper;
114
- //# sourceMappingURL=auth.helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.helpers.js","sourceRoot":"","sources":["../../src/auth/auth.helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyB;AASzB,2CAA4B;AAC5B,oDAAqC;AACrC,qDAAsC;AAEtC,2CAAiF;AAMjF,MAAa,UAAU;IACJ,QAAQ,CAAQ;IAEjC,YAAY,QAAgB;QAC1B,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAKD,eAAe;QACb,OAAO,GAAG,IAAI,CAAC,QAAQ,aAAa,CAAA;IACtC,CAAC;IAMD,oBAAoB,CAAC,IAAY,EAAE,KAAa;QAC9C,MAAM,OAAO,GAAiB;YAC5B,IAAI;YACJ,KAAK;SACN,CAAA;QAED,OAAO,EAAE,CAAC,QAAQ,CAChB,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAgB,GAAG,IAAI,CAAC,QAAQ,aAAa,EAAE,OAAO,CAAC,CAAA;YACxF,OAAO,QAAQ,CAAC,IAAI,CAAA;QACtB,CAAC,EACD,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CACjC,CAAA;IACH,CAAC;IASD,iBAAiB,CAAC,SAAiB,EAAE,aAAqB;QACxD,OAAO,EAAE,CAAC,QAAQ,CAChB,KAAK,IAAI,EAAE;YAET,MAAM,gBAAgB,GAA0B,EAAC,SAAS,EAAC,CAAA;YAC3D,MAAM,iBAAiB,GAAG,MAAM,eAAK,CAAC,IAAI,CACxC,GAAG,IAAI,CAAC,QAAQ,wBAAwB,EACxC,gBAAgB,CACjB,CAAA;YACD,MAAM,EAAC,SAAS,EAAE,mBAAmB,EAAC,GAAG,iBAAiB,CAAC,IAAI,CAAA;YAG/D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAA;YAClE,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAC3C;gBACE,GAAG,EAAE,aAAa;gBAClB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,sBAAsB;gBAChD,QAAQ,EAAE,QAAQ;aACnB,EACD,eAAe,CAChB,CAAA;YACD,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC1D,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;YAG5C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;YACjE,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;gBACvC,GAAG,EAAE,SAAS;gBACd,GAAG,EAAE,SAAS;gBAGd,GAAG,EAAE,cAAc;gBACnB,GAAG,EAAE,KAAK;aACX,CAAC;iBACC,kBAAkB,CAAC,EAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC;iBAC9C,WAAW,EAAE;iBACb,iBAAiB,CAAC,IAAI,CAAC;iBACvB,IAAI,CAAC,UAAU,CAAC,CAAA;YAGnB,MAAM,YAAY,GAAsB;gBACtC,SAAS,EAAE,6CAA6C;gBACxD,mBAAmB,EAAE,wDAAwD;gBAC7E,eAAe,EAAE,SAAS;aAC3B,CAAA;YAED,MAAM,aAAa,GAAG,MAAM,eAAK,CAAC,IAAI,CAAqB,GAAG,IAAI,CAAC,QAAQ,oBAAoB,EAAE,YAAY,CAAC,CAAA;YAC9G,OAAO,aAAa,CAAC,IAAI,CAAA;QAC3B,CAAC,EACD,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CACjC,CAAA;IACH,CAAC;IAES,WAAW,CAAC,KAAc;QAClC,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAA;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAA;YACjC,IAAI,MAAM,IAAI,IAAA,uBAAe,EAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,OAAO;oBACL,GAAG,IAAI;oBACP,MAAM;iBACP,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,KAAK,YAAY,KAAK;YAAE,OAAO,KAAK,CAAA;QAExC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACjC,CAAC;CACF;AA9GD,gCA8GC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const auth_helpers_1 = require("./auth.helpers");
4
- describe("AuthHelper", () => {
5
- describe("constructor", () => {
6
- describe("bad cases", () => {
7
- it("should throw error for invalid URL", () => {
8
- const invalidEndpoint = "not-a-url";
9
- expect(() => new auth_helpers_1.AuthHelper(invalidEndpoint)).toThrow("Invalid URL");
10
- });
11
- it("should throw error for empty string", () => {
12
- const emptyEndpoint = "";
13
- expect(() => new auth_helpers_1.AuthHelper(emptyEndpoint)).toThrow("Invalid URL");
14
- });
15
- });
16
- describe("good cases", () => {
17
- it("should create instance with valid URL", () => {
18
- const validEndpoint = "https://api.example.com";
19
- const helper = new auth_helpers_1.AuthHelper(validEndpoint);
20
- expect(helper).toBeDefined();
21
- });
22
- });
23
- });
24
- describe("getUserLoginUrl", () => {
25
- describe("good cases", () => {
26
- it("should return correct login URL", () => {
27
- const helper = new auth_helpers_1.AuthHelper("https://api.example.com");
28
- const loginUrl = helper.getUserLoginUrl();
29
- expect(loginUrl).toBe("https://api.example.com/auth/login");
30
- });
31
- it("should return correct login URL with path in endpoint", () => {
32
- const helper = new auth_helpers_1.AuthHelper("https://api.example.com/v1");
33
- const loginUrl = helper.getUserLoginUrl();
34
- expect(loginUrl).toBe("https://api.example.com/v1/auth/login");
35
- });
36
- it("should return correct login URL when endpoint has trailing slash", () => {
37
- const helper = new auth_helpers_1.AuthHelper("https://api.example.com/");
38
- const loginUrl = helper.getUserLoginUrl();
39
- expect(loginUrl).toBe("https://api.example.com/auth/login");
40
- });
41
- });
42
- });
43
- });
44
- //# sourceMappingURL=auth.helpers.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.helpers.test.js","sourceRoot":"","sources":["../../src/auth/auth.helpers.test.ts"],"names":[],"mappings":";;AAAA,iDAAyC;AAEzC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACzB,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;gBAE5C,MAAM,eAAe,GAAG,WAAW,CAAA;gBAGnC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,yBAAU,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;YACtE,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;gBAE7C,MAAM,aAAa,GAAG,EAAE,CAAA;gBAGxB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,yBAAU,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;YACpE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBAE/C,MAAM,aAAa,GAAG,yBAAyB,CAAA;gBAG/C,MAAM,MAAM,GAAG,IAAI,yBAAU,CAAC,aAAa,CAAC,CAAA;gBAG5C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;gBAEzC,MAAM,MAAM,GAAG,IAAI,yBAAU,CAAC,yBAAyB,CAAC,CAAA;gBAGxD,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,EAAE,CAAA;gBAGzC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;YAC7D,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;gBAE/D,MAAM,MAAM,GAAG,IAAI,yBAAU,CAAC,4BAA4B,CAAC,CAAA;gBAG3D,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,EAAE,CAAA;gBAGzC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;YAChE,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;gBAE1E,MAAM,MAAM,GAAG,IAAI,yBAAU,CAAC,0BAA0B,CAAC,CAAA;gBAGzD,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,EAAE,CAAA;gBAGzC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;YAC7D,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,11 +0,0 @@
1
- import { Authenticator } from "../config";
2
- export declare class BearerAuthenticator implements Authenticator {
3
- private readonly endpoint;
4
- private accessToken;
5
- private refreshToken;
6
- private readonly onTokenRefreshed?;
7
- constructor(endpoint: string, accessToken: string, refreshToken: string, onTokenRefreshed?: ((accessToken: string, refreshToken: string) => void) | undefined);
8
- getAccessToken(): Promise<string>;
9
- private isTokenExpired;
10
- private renewToken;
11
- }
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BearerAuthenticator = void 0;
7
- const utils_1 = require("./utils");
8
- const axios_1 = __importDefault(require("axios"));
9
- class BearerAuthenticator {
10
- endpoint;
11
- accessToken;
12
- refreshToken;
13
- onTokenRefreshed;
14
- constructor(endpoint, accessToken, refreshToken, onTokenRefreshed) {
15
- this.endpoint = endpoint;
16
- this.accessToken = accessToken;
17
- this.refreshToken = refreshToken;
18
- this.onTokenRefreshed = onTokenRefreshed;
19
- }
20
- async getAccessToken() {
21
- if (this.isTokenExpired()) {
22
- const { accessToken, refreshToken } = await this.renewToken();
23
- this.accessToken = accessToken;
24
- this.refreshToken = refreshToken;
25
- this.onTokenRefreshed?.(this.accessToken, this.refreshToken);
26
- }
27
- return this.accessToken;
28
- }
29
- isTokenExpired() {
30
- if (!this.accessToken)
31
- return true;
32
- return (0, utils_1.isTokenExpired)(this.accessToken);
33
- }
34
- async renewToken() {
35
- const request = {
36
- refreshToken: this.refreshToken
37
- };
38
- const tokenResponse = await axios_1.default.post(`${this.endpoint}/auth/refresh`, request);
39
- return tokenResponse.data;
40
- }
41
- }
42
- exports.BearerAuthenticator = BearerAuthenticator;
43
- //# sourceMappingURL=bearer.authenticator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bearer.authenticator.js","sourceRoot":"","sources":["../../src/auth/bearer.authenticator.ts"],"names":[],"mappings":";;;;;;AAEA,mCAAsC;AACtC,kDAAyB;AAKzB,MAAa,mBAAmB;IAEX;IACT;IACA;IACS;IAJnB,YACmB,QAAgB,EACzB,WAAmB,EACnB,YAAoB,EACX,gBAAsE;QAHtE,aAAQ,GAAR,QAAQ,CAAQ;QACzB,gBAAW,GAAX,WAAW,CAAQ;QACnB,iBAAY,GAAZ,YAAY,CAAQ;QACX,qBAAgB,GAAhB,gBAAgB,CAAsD;IACtF,CAAC;IAEJ,KAAK,CAAC,cAAc;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,MAAM,EAAC,WAAW,EAAE,YAAY,EAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YAC3D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;YAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;YAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QAClC,OAAO,IAAA,sBAAc,EAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACzC,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,OAAO,GAAwB;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAA;QAED,MAAM,aAAa,GAAG,MAAM,eAAK,CAAC,IAAI,CAAgB,GAAG,IAAI,CAAC,QAAQ,eAAe,EAAE,OAAO,CAAC,CAAA;QAE/F,OAAO,aAAa,CAAC,IAAI,CAAA;IAC3B,CAAC;CACF;AAjCD,kDAiCC"}
@@ -1,10 +0,0 @@
1
- import { TokenResponse } from "@approvio/api";
2
- import * as TE from "fp-ts/lib/TaskEither.js";
3
- import { ApprovioError } from "../client/base.client.js";
4
- export declare class OAuthHelper {
5
- private readonly endpoint;
6
- constructor(endpoint: string);
7
- getLoginUrl(): string;
8
- exchangeToken(code: string, state: string): TE.TaskEither<ApprovioError, TokenResponse>;
9
- protected handleError(error: unknown): ApprovioError;
10
- }
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.OAuthHelper = void 0;
40
- const axios_1 = __importDefault(require("axios"));
41
- const TE = __importStar(require("fp-ts/lib/TaskEither.js"));
42
- class OAuthHelper {
43
- endpoint;
44
- constructor(endpoint) {
45
- this.endpoint = endpoint;
46
- }
47
- getLoginUrl() {
48
- return `${this.endpoint}/auth/login`;
49
- }
50
- exchangeToken(code, state) {
51
- const request = {
52
- code,
53
- state
54
- };
55
- return TE.tryCatch(async () => {
56
- const response = await axios_1.default.post(`${this.endpoint}/auth/token`, request);
57
- return response.data;
58
- }, error => this.handleError(error));
59
- }
60
- handleError(error) {
61
- if (axios_1.default.isAxiosError(error)) {
62
- const status = error.response?.status;
63
- const data = error.response?.data;
64
- if (status &&
65
- data &&
66
- typeof data === "object" &&
67
- "message" in data &&
68
- "code" in data &&
69
- typeof data.message === "string" &&
70
- typeof data.code === "string") {
71
- return {
72
- ...data,
73
- status
74
- };
75
- }
76
- }
77
- if (error instanceof Error)
78
- return error;
79
- return new Error(String(error));
80
- }
81
- }
82
- exports.OAuthHelper = OAuthHelper;
83
- //# sourceMappingURL=oauth.helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.helper.js","sourceRoot":"","sources":["../../src/auth/oauth.helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyB;AAEzB,4DAA6C;AAM7C,MAAa,WAAW;IACO;IAA7B,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAKjD,WAAW;QACT,OAAO,GAAG,IAAI,CAAC,QAAQ,aAAa,CAAA;IACtC,CAAC;IAKD,aAAa,CAAC,IAAY,EAAE,KAAa;QACvC,MAAM,OAAO,GAAiB;YAC5B,IAAI;YACJ,KAAK;SACN,CAAA;QAED,OAAO,EAAE,CAAC,QAAQ,CAChB,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAgB,GAAG,IAAI,CAAC,QAAQ,aAAa,EAAE,OAAO,CAAC,CAAA;YACxF,OAAO,QAAQ,CAAC,IAAI,CAAA;QACtB,CAAC,EACD,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CACjC,CAAA;IACH,CAAC;IAES,WAAW,CAAC,KAAc;QAClC,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAA;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAA;YACjC,IACE,MAAM;gBACN,IAAI;gBACJ,OAAO,IAAI,KAAK,QAAQ;gBACxB,SAAS,IAAI,IAAI;gBACjB,MAAM,IAAI,IAAI;gBACd,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAChC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC7B,CAAC;gBACD,OAAO;oBACL,GAAI,IAAiB;oBACrB,MAAM;iBACP,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,KAAK,YAAY,KAAK;YAAE,OAAO,KAAK,CAAA;QAExC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACjC,CAAC;CACF;AApDD,kCAoDC"}
@@ -1,11 +0,0 @@
1
- import { Authenticator } from "../interfaces";
2
- export declare class UserAuthenticator implements Authenticator {
3
- private accessToken;
4
- private refreshToken;
5
- private readonly onTokenRefreshed?;
6
- private readonly endpoint;
7
- constructor(endpoint: string, accessToken: string, refreshToken: string, onTokenRefreshed?: ((accessToken: string, refreshToken: string) => void) | undefined);
8
- getAccessToken(): Promise<string>;
9
- private isTokenExpired;
10
- private renewToken;
11
- }
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.UserAuthenticator = void 0;
7
- const utils_1 = require("./utils");
8
- const axios_1 = __importDefault(require("axios"));
9
- const utils_2 = require("../client/utils");
10
- class UserAuthenticator {
11
- accessToken;
12
- refreshToken;
13
- onTokenRefreshed;
14
- endpoint;
15
- constructor(endpoint, accessToken, refreshToken, onTokenRefreshed) {
16
- this.accessToken = accessToken;
17
- this.refreshToken = refreshToken;
18
- this.onTokenRefreshed = onTokenRefreshed;
19
- (0, utils_2.validateURL)(endpoint);
20
- this.endpoint = (0, utils_2.removeTrailingSlash)(endpoint);
21
- }
22
- async getAccessToken() {
23
- if (this.isTokenExpired()) {
24
- const { accessToken, refreshToken } = await this.renewToken();
25
- this.accessToken = accessToken;
26
- this.refreshToken = refreshToken;
27
- this.onTokenRefreshed?.(this.accessToken, this.refreshToken);
28
- }
29
- return this.accessToken;
30
- }
31
- isTokenExpired() {
32
- if (!this.accessToken)
33
- return true;
34
- return (0, utils_1.isJwtTokenExpired)(this.accessToken);
35
- }
36
- async renewToken() {
37
- const request = {
38
- refreshToken: this.refreshToken
39
- };
40
- const tokenResponse = await axios_1.default.post(`${this.endpoint}/auth/refresh`, request);
41
- return tokenResponse.data;
42
- }
43
- }
44
- exports.UserAuthenticator = UserAuthenticator;
45
- //# sourceMappingURL=user.authenticator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.authenticator.js","sourceRoot":"","sources":["../../src/auth/user.authenticator.ts"],"names":[],"mappings":";;;;;;AAEA,mCAAyC;AACzC,kDAAyB;AACzB,2CAAgE;AAMhE,MAAa,iBAAiB;IAKlB;IACA;IAKS;IAVF,QAAQ,CAAQ;IAEjC,YACE,QAAgB,EACR,WAAmB,EACnB,YAAoB,EAKX,gBAAsE;QAN/E,gBAAW,GAAX,WAAW,CAAQ;QACnB,iBAAY,GAAZ,YAAY,CAAQ;QAKX,qBAAgB,GAAhB,gBAAgB,CAAsD;QAEvF,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAMD,KAAK,CAAC,cAAc;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,MAAM,EAAC,WAAW,EAAE,YAAY,EAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YAC3D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;YAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;YAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QAClC,OAAO,IAAA,yBAAiB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC5C,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,OAAO,GAAwB;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAA;QAED,MAAM,aAAa,GAAG,MAAM,eAAK,CAAC,IAAI,CAAgB,GAAG,IAAI,CAAC,QAAQ,eAAe,EAAE,OAAO,CAAC,CAAA;QAE/F,OAAO,aAAa,CAAC,IAAI,CAAA;IAC3B,CAAC;CACF;AA9CD,8CA8CC"}
@@ -1 +0,0 @@
1
- export declare function isJwtTokenExpired(token: string): boolean;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isJwtTokenExpired = isJwtTokenExpired;
4
- const jose_1 = require("jose");
5
- function isJwtTokenExpired(token) {
6
- if (!token)
7
- return true;
8
- const decoded = (0, jose_1.decodeJwt)(token);
9
- return !decoded.exp || decoded.exp < Date.now() / 1000;
10
- }
11
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/auth/utils.ts"],"names":[],"mappings":";;AAEA,8CAIC;AAND,+BAA8B;AAE9B,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAA;IAChC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AACxD,CAAC"}
@@ -1,8 +0,0 @@
1
- import { BaseApprovioClient } from "./base.client";
2
- import { AgentAuthenticator } from "../auth/agent.authenticator";
3
- import { ApprovioServerConfig, Authenticator } from "../interfaces";
4
- export declare class ApprovioAgentClient extends BaseApprovioClient {
5
- private readonly authenticator;
6
- constructor(config: ApprovioServerConfig, authenticator: AgentAuthenticator);
7
- getAuthenticator(): Authenticator;
8
- }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApprovioAgentClient = void 0;
4
- const base_client_1 = require("./base.client");
5
- class ApprovioAgentClient extends base_client_1.BaseApprovioClient {
6
- authenticator;
7
- constructor(config, authenticator) {
8
- super(config);
9
- this.authenticator = authenticator;
10
- }
11
- getAuthenticator() {
12
- return this.authenticator;
13
- }
14
- }
15
- exports.ApprovioAgentClient = ApprovioAgentClient;
16
- //# sourceMappingURL=agent.client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.client.js","sourceRoot":"","sources":["../../src/client/agent.client.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAOhD,MAAa,mBAAoB,SAAQ,gCAAkB;IAGtC;IAFnB,YACE,MAA4B,EACX,aAAiC;QAElD,KAAK,CAAC,MAAM,CAAC,CAAA;QAFI,kBAAa,GAAb,aAAa,CAAoB;IAGpD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;CACF;AAXD,kDAWC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,82 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const agent_client_1 = require("./agent.client");
40
- const axios_1 = __importDefault(require("axios"));
41
- const E = __importStar(require("fp-ts/Either"));
42
- jest.mock("axios");
43
- const mockedAxios = axios_1.default;
44
- describe("ApprovioAgentClient", () => {
45
- let mockAxiosInstance;
46
- let mockAuthenticator;
47
- let client;
48
- beforeEach(() => {
49
- mockAxiosInstance = {
50
- get: jest.fn(),
51
- post: jest.fn(),
52
- put: jest.fn(),
53
- delete: jest.fn(),
54
- interceptors: {
55
- request: {
56
- use: jest.fn()
57
- }
58
- }
59
- };
60
- mockedAxios.create = jest.fn().mockReturnValue(mockAxiosInstance);
61
- mockAuthenticator = {
62
- getAccessToken: jest.fn().mockResolvedValue("test-access-token")
63
- };
64
- client = new agent_client_1.ApprovioAgentClient({ endpoint: "https://api.example.com" }, mockAuthenticator);
65
- jest.clearAllMocks();
66
- });
67
- describe("getWorkflow", () => {
68
- it("should return Right with workflow data on success", async () => {
69
- const workflowData = { id: "workflow-id", name: "Test Workflow" };
70
- mockAxiosInstance.get.mockResolvedValue({ data: workflowData });
71
- const result = await client.getWorkflow("workflow-id")();
72
- expect(result).toEqual(E.right(workflowData));
73
- expect(mockAxiosInstance.get).toHaveBeenCalledWith("/workflows/workflow-id", { params: undefined });
74
- });
75
- it("should return Left on error", async () => {
76
- mockAxiosInstance.get.mockRejectedValue(new Error("Network error"));
77
- const result = await client.getWorkflow("workflow-id")();
78
- expect(E.isLeft(result)).toBe(true);
79
- });
80
- });
81
- });
82
- //# sourceMappingURL=agent.client.test.js.map