@approvio/ts-sdk 0.0.8 → 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.
- package/dist/index.cjs +603 -0
- package/dist/index.d.cts +145 -0
- package/dist/index.d.mts +145 -0
- package/dist/index.mjs +571 -0
- package/package.json +21 -7
- package/dist/auth/agent.authenticator.d.ts +0 -12
- package/dist/auth/agent.authenticator.js +0 -96
- package/dist/auth/agent.authenticator.js.map +0 -1
- package/dist/auth/auth.helpers.d.ts +0 -12
- package/dist/auth/auth.helpers.js +0 -122
- package/dist/auth/auth.helpers.js.map +0 -1
- package/dist/auth/auth.helpers.test.d.ts +0 -1
- package/dist/auth/auth.helpers.test.js +0 -44
- package/dist/auth/auth.helpers.test.js.map +0 -1
- package/dist/auth/bearer.authenticator.d.ts +0 -11
- package/dist/auth/bearer.authenticator.js +0 -43
- package/dist/auth/bearer.authenticator.js.map +0 -1
- package/dist/auth/oauth.helper.d.ts +0 -10
- package/dist/auth/oauth.helper.js +0 -83
- package/dist/auth/oauth.helper.js.map +0 -1
- package/dist/auth/user.authenticator.d.ts +0 -11
- package/dist/auth/user.authenticator.js +0 -45
- package/dist/auth/user.authenticator.js.map +0 -1
- package/dist/auth/utils.d.ts +0 -1
- package/dist/auth/utils.js +0 -11
- package/dist/auth/utils.js.map +0 -1
- package/dist/client/agent.client.d.ts +0 -8
- package/dist/client/agent.client.js +0 -16
- package/dist/client/agent.client.js.map +0 -1
- package/dist/client/agent.client.test.d.ts +0 -1
- package/dist/client/agent.client.test.js +0 -82
- package/dist/client/agent.client.test.js.map +0 -1
- package/dist/client/approvio.client.d.ts +0 -44
- package/dist/client/approvio.client.js +0 -68
- package/dist/client/approvio.client.js.map +0 -1
- package/dist/client/base.client.d.ts +0 -29
- package/dist/client/base.client.js +0 -143
- package/dist/client/base.client.js.map +0 -1
- package/dist/client/base.client.test.d.ts +0 -1
- package/dist/client/base.client.test.js +0 -218
- package/dist/client/base.client.test.js.map +0 -1
- package/dist/client/errors.d.ts +0 -6
- package/dist/client/errors.js +0 -16
- package/dist/client/errors.js.map +0 -1
- package/dist/client/user.client.d.ts +0 -56
- package/dist/client/user.client.js +0 -137
- package/dist/client/user.client.js.map +0 -1
- package/dist/client/utils.d.ts +0 -4
- package/dist/client/utils.js +0 -29
- package/dist/client/utils.js.map +0 -1
- package/dist/client/utils.test.d.ts +0 -1
- package/dist/client/utils.test.js +0 -150
- package/dist/client/utils.test.js.map +0 -1
- package/dist/config.d.ts +0 -7
- package/dist/config.js +0 -3
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -24
- package/dist/index.js.map +0 -1
- package/dist/interfaces.d.ts +0 -6
- package/dist/interfaces.js +0 -3
- package/dist/interfaces.js.map +0 -1
- 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,12 +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
|
-
initiateCliLogin(redirectUri: string): TE.TaskEither<ApprovioError, string>;
|
|
9
|
-
exchangeTokenForUser(code: string, state: string): TE.TaskEither<ApprovioError, TokenResponse>;
|
|
10
|
-
authenticateAgent(agentName: string, privateKeyPem: string): TE.TaskEither<ApprovioError, AgentTokenResponse>;
|
|
11
|
-
protected handleError(error: unknown): ApprovioError;
|
|
12
|
-
}
|
|
@@ -1,122 +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/web/login`;
|
|
53
|
-
}
|
|
54
|
-
initiateCliLogin(redirectUri) {
|
|
55
|
-
return TE.tryCatch(async () => {
|
|
56
|
-
const response = await axios_1.default.post(`${this.endpoint}/auth/cli/initiate`, {
|
|
57
|
-
redirectUri
|
|
58
|
-
});
|
|
59
|
-
return response.data.authorizationUrl;
|
|
60
|
-
}, error => this.handleError(error));
|
|
61
|
-
}
|
|
62
|
-
exchangeTokenForUser(code, state) {
|
|
63
|
-
const request = {
|
|
64
|
-
code,
|
|
65
|
-
state
|
|
66
|
-
};
|
|
67
|
-
return TE.tryCatch(async () => {
|
|
68
|
-
const response = await axios_1.default.post(`${this.endpoint}/auth/cli/token`, request);
|
|
69
|
-
return response.data;
|
|
70
|
-
}, error => this.handleError(error));
|
|
71
|
-
}
|
|
72
|
-
authenticateAgent(agentName, privateKeyPem) {
|
|
73
|
-
return TE.tryCatch(async () => {
|
|
74
|
-
const challengeRequest = { agentName };
|
|
75
|
-
const challengeResponse = await axios_1.default.post(`${this.endpoint}/auth/agents/challenge`, challengeRequest);
|
|
76
|
-
const { challenge: b64EncodedChallenge } = challengeResponse.data;
|
|
77
|
-
const encryptedBuffer = Buffer.from(b64EncodedChallenge, "base64");
|
|
78
|
-
const decryptedBuffer = crypto.privateDecrypt({
|
|
79
|
-
key: privateKeyPem,
|
|
80
|
-
padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,
|
|
81
|
-
oaepHash: "sha256"
|
|
82
|
-
}, encryptedBuffer);
|
|
83
|
-
const decryptedContent = decryptedBuffer.toString("utf-8");
|
|
84
|
-
const { nonce } = JSON.parse(decryptedContent);
|
|
85
|
-
const privateKey = await jose.importPKCS8(privateKeyPem, "RS256");
|
|
86
|
-
const assertion = await new jose.SignJWT({
|
|
87
|
-
iss: agentName,
|
|
88
|
-
sub: agentName,
|
|
89
|
-
aud: "approvio-api",
|
|
90
|
-
jti: nonce
|
|
91
|
-
})
|
|
92
|
-
.setProtectedHeader({ alg: "RS256", typ: "JWT" })
|
|
93
|
-
.setIssuedAt()
|
|
94
|
-
.setExpirationTime("5m")
|
|
95
|
-
.sign(privateKey);
|
|
96
|
-
const tokenRequest = {
|
|
97
|
-
grantType: "urn:ietf:params:oauth:grant-type:jwt-bearer",
|
|
98
|
-
clientAssertionType: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
|
|
99
|
-
clientAssertion: assertion
|
|
100
|
-
};
|
|
101
|
-
const tokenResponse = await axios_1.default.post(`${this.endpoint}/auth/agents/token`, tokenRequest);
|
|
102
|
-
return tokenResponse.data;
|
|
103
|
-
}, error => this.handleError(error));
|
|
104
|
-
}
|
|
105
|
-
handleError(error) {
|
|
106
|
-
if (axios_1.default.isAxiosError(error)) {
|
|
107
|
-
const status = error.response?.status;
|
|
108
|
-
const data = error.response?.data;
|
|
109
|
-
if (status && (0, utils_1.isApprovioError)(data)) {
|
|
110
|
-
return {
|
|
111
|
-
...data,
|
|
112
|
-
status
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
if (error instanceof Error)
|
|
117
|
-
return error;
|
|
118
|
-
return new Error(String(error));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
exports.AuthHelper = AuthHelper;
|
|
122
|
-
//# sourceMappingURL=auth.helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.helpers.js","sourceRoot":"","sources":["../../src/auth/auth.helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -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/web/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/web/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/web/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,wCAAwC,CAAC,CAAA;YACjE,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,2CAA2C,CAAC,CAAA;YACpE,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,wCAAwC,CAAC,CAAA;YACjE,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/cli/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,mBAAmB,EAAE,OAAO,CAAC,CAAA;QAEnG,OAAO,aAAa,CAAC,IAAI,CAAA;IAC3B,CAAC;CACF;AA9CD,8CA8CC"}
|
package/dist/auth/utils.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function isJwtTokenExpired(token: string): boolean;
|
package/dist/auth/utils.js
DELETED
|
@@ -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
|
package/dist/auth/utils.js.map
DELETED
|
@@ -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 {};
|