theauthapi 1.0.15 → 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +366 -366
- package/dist/endpoints/Accounts/Accounts.d.ts +3 -3
- package/dist/endpoints/Accounts/Accounts.js +2 -2
- package/dist/endpoints/Accounts/AccountsInterface.d.ts +1 -1
- package/dist/endpoints/ApiKeys/ApiKeys.d.ts +3 -3
- package/dist/endpoints/ApiKeys/ApiKeys.js +5 -5
- package/dist/endpoints/ApiKeys/ApiKeysInterface.d.ts +1 -1
- package/dist/endpoints/Projects/Projects.d.ts +3 -3
- package/dist/endpoints/Projects/Projects.js +2 -2
- package/dist/endpoints/Projects/ProjectsInterface.d.ts +1 -1
- package/dist/index.cjs +15 -15
- package/dist/index.d.cts +200 -0
- package/dist/index.d.mts +200 -0
- package/dist/index.d.ts +6 -180
- package/dist/index.js +9 -9
- package/dist/index.mjs +15 -15
- package/dist/libraryMeta.js +1 -1
- package/dist/services/ApiRequest/ApiCall.d.ts +1 -1
- package/dist/services/ApiRequest/ApiRequest.d.ts +5 -5
- package/dist/services/ApiRequest/ApiRequest.js +11 -11
- package/dist/services/ApiRequest/ApiResponseError.js +1 -1
- package/package.json +23 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AccountsInterface } from
|
|
2
|
-
import ApiRequest from
|
|
3
|
-
import { Account } from
|
|
1
|
+
import { AccountsInterface } from './AccountsInterface';
|
|
2
|
+
import ApiRequest from '../../services/ApiRequest/ApiRequest';
|
|
3
|
+
import { Account } from '../../types';
|
|
4
4
|
declare class Accounts implements AccountsInterface {
|
|
5
5
|
api: ApiRequest;
|
|
6
6
|
endpoint: string;
|
|
@@ -7,11 +7,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { HttpMethod } from
|
|
10
|
+
import { HttpMethod } from '../../services/ApiRequest/HttpMethod';
|
|
11
11
|
class Accounts {
|
|
12
12
|
constructor(apiService) {
|
|
13
13
|
this.api = apiService;
|
|
14
|
-
this.endpoint =
|
|
14
|
+
this.endpoint = '/accounts';
|
|
15
15
|
}
|
|
16
16
|
getAccount(accountId) {
|
|
17
17
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import ApiRequest from
|
|
2
|
-
import { ApiKey, ApiKeyFilter, ApiKeyInput, UpdateApiKeyInput } from
|
|
3
|
-
import { ApiKeysInterface } from
|
|
1
|
+
import ApiRequest from '../../services/ApiRequest/ApiRequest';
|
|
2
|
+
import { ApiKey, ApiKeyFilter, ApiKeyInput, UpdateApiKeyInput } from '../../types';
|
|
3
|
+
import { ApiKeysInterface } from './ApiKeysInterface';
|
|
4
4
|
declare class ApiKeys implements ApiKeysInterface {
|
|
5
5
|
api: ApiRequest;
|
|
6
6
|
private readonly endpoint;
|
|
@@ -7,12 +7,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { HttpMethod } from
|
|
11
|
-
import ApiResponseError from
|
|
10
|
+
import { HttpMethod } from '../../services/ApiRequest/HttpMethod';
|
|
11
|
+
import ApiResponseError from '../../services/ApiRequest/ApiResponseError';
|
|
12
12
|
class ApiKeys {
|
|
13
13
|
constructor(apiService) {
|
|
14
14
|
this.api = apiService;
|
|
15
|
-
this.endpoint =
|
|
15
|
+
this.endpoint = '/api-keys/';
|
|
16
16
|
}
|
|
17
17
|
isValidKey(apikey) {
|
|
18
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -46,7 +46,7 @@ class ApiKeys {
|
|
|
46
46
|
}
|
|
47
47
|
createKey(apiKey) {
|
|
48
48
|
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
-
return yield this.api.request(HttpMethod.POST,
|
|
49
|
+
return yield this.api.request(HttpMethod.POST, '/api-keys', apiKey);
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
updateKey(apiKey, updatedKey) {
|
|
@@ -74,7 +74,7 @@ class ApiKeys {
|
|
|
74
74
|
if (filter !== undefined) {
|
|
75
75
|
filters = Object.entries(filter).map(([key, value]) => `${key}=${value}`);
|
|
76
76
|
}
|
|
77
|
-
return `${this.endpoint}${filter !== undefined ?
|
|
77
|
+
return `${this.endpoint}${filter !== undefined ? '?' : ''}${filters.join('&')}`;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
export default ApiKeys;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiKey, ApiKeyFilter, ApiKeyInput, UpdateApiKeyInput } from
|
|
1
|
+
import { ApiKey, ApiKeyFilter, ApiKeyInput, UpdateApiKeyInput } from '../../types';
|
|
2
2
|
export interface ApiKeysInterface {
|
|
3
3
|
isValidKey(apiKey: string): Promise<boolean>;
|
|
4
4
|
getKey(apiKey: string): Promise<ApiKey>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import ApiRequest from
|
|
2
|
-
import { CreateProjectInput, Project, UpdateProjectInput } from
|
|
3
|
-
import { ProjectsInterface } from
|
|
1
|
+
import ApiRequest from '../../services/ApiRequest/ApiRequest';
|
|
2
|
+
import { CreateProjectInput, Project, UpdateProjectInput } from '../../types';
|
|
3
|
+
import { ProjectsInterface } from './ProjectsInterface';
|
|
4
4
|
declare class Projects implements ProjectsInterface {
|
|
5
5
|
api: ApiRequest;
|
|
6
6
|
endpoint: string;
|
|
@@ -7,11 +7,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { HttpMethod } from
|
|
10
|
+
import { HttpMethod } from '../../services/ApiRequest/HttpMethod';
|
|
11
11
|
class Projects {
|
|
12
12
|
constructor(apiService) {
|
|
13
13
|
this.api = apiService;
|
|
14
|
-
this.endpoint =
|
|
14
|
+
this.endpoint = '/projects';
|
|
15
15
|
}
|
|
16
16
|
getProjects(accountId) {
|
|
17
17
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CreateProjectInput, Project, UpdateProjectInput } from
|
|
1
|
+
import { CreateProjectInput, Project, UpdateProjectInput } from '../../types';
|
|
2
2
|
export interface ProjectsInterface {
|
|
3
3
|
getProjects(accountId: string): Promise<Project[]>;
|
|
4
4
|
getProject(projectId: string): Promise<Project>;
|
package/dist/index.cjs
CHANGED
|
@@ -32,7 +32,7 @@ function __awaiter(thisArg, _arguments, P, generator) {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
const version =
|
|
35
|
+
const version = '1.0.11';
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
*
|
|
@@ -58,7 +58,7 @@ class ApiResponseError extends Error {
|
|
|
58
58
|
constructor(statusCode, message) {
|
|
59
59
|
super(`(${statusCode}): ${message}`);
|
|
60
60
|
this.statusCode = statusCode;
|
|
61
|
-
this.name =
|
|
61
|
+
this.name = 'ApiResponseError';
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -78,10 +78,10 @@ class ApiRequest {
|
|
|
78
78
|
var _a;
|
|
79
79
|
const isoDateFormat = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d*)?(?:[-+]\d{2}:?\d{2}|Z)?$/;
|
|
80
80
|
function isIsoDateString(value) {
|
|
81
|
-
return value && typeof value ===
|
|
81
|
+
return value && typeof value === 'string' && isoDateFormat.test(value);
|
|
82
82
|
}
|
|
83
83
|
function handleDates(body) {
|
|
84
|
-
if (body === null || body === undefined || typeof body !==
|
|
84
|
+
if (body === null || body === undefined || typeof body !== 'object') {
|
|
85
85
|
return body;
|
|
86
86
|
}
|
|
87
87
|
for (const key of Object.keys(body)) {
|
|
@@ -89,7 +89,7 @@ class ApiRequest {
|
|
|
89
89
|
if (isIsoDateString(value)) {
|
|
90
90
|
body[key] = new Date(value);
|
|
91
91
|
}
|
|
92
|
-
else if (typeof value ===
|
|
92
|
+
else if (typeof value === 'object') {
|
|
93
93
|
handleDates(value);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
@@ -132,9 +132,9 @@ class ApiRequest {
|
|
|
132
132
|
}
|
|
133
133
|
_generateDefaultHeaders() {
|
|
134
134
|
return {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
'user-agent': `theauthapi-client-node/${version}`,
|
|
136
|
+
'x-api-key': this.accessKey,
|
|
137
|
+
'api-key': this.accessKey,
|
|
138
138
|
};
|
|
139
139
|
}
|
|
140
140
|
_isErrorRetryable(error) {
|
|
@@ -170,7 +170,7 @@ var HttpMethod;
|
|
|
170
170
|
class ApiKeys {
|
|
171
171
|
constructor(apiService) {
|
|
172
172
|
this.api = apiService;
|
|
173
|
-
this.endpoint =
|
|
173
|
+
this.endpoint = '/api-keys/';
|
|
174
174
|
}
|
|
175
175
|
isValidKey(apikey) {
|
|
176
176
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -204,7 +204,7 @@ class ApiKeys {
|
|
|
204
204
|
}
|
|
205
205
|
createKey(apiKey) {
|
|
206
206
|
return __awaiter(this, void 0, void 0, function* () {
|
|
207
|
-
return yield this.api.request(HttpMethod.POST,
|
|
207
|
+
return yield this.api.request(HttpMethod.POST, '/api-keys', apiKey);
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
210
|
updateKey(apiKey, updatedKey) {
|
|
@@ -232,14 +232,14 @@ class ApiKeys {
|
|
|
232
232
|
if (filter !== undefined) {
|
|
233
233
|
filters = Object.entries(filter).map(([key, value]) => `${key}=${value}`);
|
|
234
234
|
}
|
|
235
|
-
return `${this.endpoint}${filter !== undefined ?
|
|
235
|
+
return `${this.endpoint}${filter !== undefined ? '?' : ''}${filters.join('&')}`;
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
class Projects {
|
|
240
240
|
constructor(apiService) {
|
|
241
241
|
this.api = apiService;
|
|
242
|
-
this.endpoint =
|
|
242
|
+
this.endpoint = '/projects';
|
|
243
243
|
}
|
|
244
244
|
getProjects(accountId) {
|
|
245
245
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -271,7 +271,7 @@ class Projects {
|
|
|
271
271
|
class Accounts {
|
|
272
272
|
constructor(apiService) {
|
|
273
273
|
this.api = apiService;
|
|
274
|
-
this.endpoint =
|
|
274
|
+
this.endpoint = '/accounts';
|
|
275
275
|
}
|
|
276
276
|
getAccount(accountId) {
|
|
277
277
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -293,7 +293,7 @@ class TheAuthAPI {
|
|
|
293
293
|
var _a;
|
|
294
294
|
assert(accessKey, "You must pass your project's write key.");
|
|
295
295
|
this.accessKey = accessKey;
|
|
296
|
-
this.host = removeSlash((options === null || options === void 0 ? void 0 : options.host) ||
|
|
296
|
+
this.host = removeSlash((options === null || options === void 0 ? void 0 : options.host) || 'https://api.theauthapi.com');
|
|
297
297
|
this.api = new ApiRequest({
|
|
298
298
|
accessKey: this.accessKey,
|
|
299
299
|
host: this.host,
|
|
@@ -318,7 +318,7 @@ class TheAuthAPI {
|
|
|
318
318
|
sentAt: new Date().getTime(),
|
|
319
319
|
};
|
|
320
320
|
try {
|
|
321
|
-
const key = yield this.api.request(HttpMethod.POST,
|
|
321
|
+
const key = yield this.api.request(HttpMethod.POST, '/auth/authenticate', data);
|
|
322
322
|
done(key);
|
|
323
323
|
return key;
|
|
324
324
|
}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
declare enum HttpMethod {
|
|
2
|
+
GET = "GET",
|
|
3
|
+
POST = "POST",
|
|
4
|
+
DELETE = "DELETE",
|
|
5
|
+
PATCH = "PATCH",
|
|
6
|
+
PUT = "PUT"
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
interface ApiCall {
|
|
10
|
+
request<T>(method: HttpMethod, endpoint: string, payload?: any): Promise<T>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
type Config = {
|
|
14
|
+
host: string;
|
|
15
|
+
accessKey: string;
|
|
16
|
+
headers?: object;
|
|
17
|
+
retryCount?: number;
|
|
18
|
+
};
|
|
19
|
+
declare class ApiRequest implements ApiCall {
|
|
20
|
+
host: string;
|
|
21
|
+
headers: object;
|
|
22
|
+
accessKey: string;
|
|
23
|
+
retryCount: number;
|
|
24
|
+
constructor(config: Config);
|
|
25
|
+
_init(): void;
|
|
26
|
+
request<T>(method: HttpMethod, endpoint: string, payload?: any): Promise<T>;
|
|
27
|
+
_generateDefaultHeaders(): {
|
|
28
|
+
'user-agent': string;
|
|
29
|
+
'x-api-key': string;
|
|
30
|
+
'api-key': string;
|
|
31
|
+
};
|
|
32
|
+
_isErrorRetryable(error: any): boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type ApiKey = {
|
|
36
|
+
key: string;
|
|
37
|
+
name: string;
|
|
38
|
+
customMetaData: AnyJson;
|
|
39
|
+
customAccountId: string;
|
|
40
|
+
customUserId: string;
|
|
41
|
+
env: Environment;
|
|
42
|
+
createdAt: Date;
|
|
43
|
+
updatedAt: Date;
|
|
44
|
+
isActive: boolean;
|
|
45
|
+
rateLimitConfigs: RateLimitConfiguration;
|
|
46
|
+
expiry: Date;
|
|
47
|
+
};
|
|
48
|
+
type RateLimitConfiguration = {
|
|
49
|
+
rateLimit: number;
|
|
50
|
+
rateLimitTtl: number;
|
|
51
|
+
};
|
|
52
|
+
type ApiKeyInput = {
|
|
53
|
+
name: string;
|
|
54
|
+
projectId?: string;
|
|
55
|
+
key?: string;
|
|
56
|
+
customMetaData?: AnyJson;
|
|
57
|
+
customAccountId?: string;
|
|
58
|
+
customUserId?: string;
|
|
59
|
+
rateLimitConfigs?: RateLimitConfiguration;
|
|
60
|
+
expiry?: Date;
|
|
61
|
+
};
|
|
62
|
+
type ApiKeyFilter = {
|
|
63
|
+
projectId?: string;
|
|
64
|
+
name?: string;
|
|
65
|
+
customAccountId?: string | null;
|
|
66
|
+
customUserId?: string | null;
|
|
67
|
+
isActive?: boolean;
|
|
68
|
+
};
|
|
69
|
+
type UpdateApiKeyInput = {
|
|
70
|
+
name: string;
|
|
71
|
+
key?: string;
|
|
72
|
+
customMetaData?: AnyJson;
|
|
73
|
+
customAccountId?: string;
|
|
74
|
+
customUserId?: string;
|
|
75
|
+
expiry?: Date | null;
|
|
76
|
+
rateLimitConfigs?: RateLimitConfiguration | null;
|
|
77
|
+
};
|
|
78
|
+
declare enum AuthedEntityType {
|
|
79
|
+
USER = "USER",
|
|
80
|
+
ACCESS_KEY = "ACCESS_KEY"
|
|
81
|
+
}
|
|
82
|
+
type AuthBaseEntity = {
|
|
83
|
+
isActive: boolean;
|
|
84
|
+
createdBy: string;
|
|
85
|
+
createdByType?: AuthedEntityType;
|
|
86
|
+
createdIn: string;
|
|
87
|
+
lastChangedBy: string;
|
|
88
|
+
lastChangedByType?: AuthedEntityType;
|
|
89
|
+
updatedAt: Date;
|
|
90
|
+
createdAt: Date;
|
|
91
|
+
};
|
|
92
|
+
type Project = AuthBaseEntity & {
|
|
93
|
+
id: string;
|
|
94
|
+
name: string;
|
|
95
|
+
accountId: string;
|
|
96
|
+
env: Environment;
|
|
97
|
+
};
|
|
98
|
+
declare enum Environment {
|
|
99
|
+
LIVE = "live",
|
|
100
|
+
TEST = "test"
|
|
101
|
+
}
|
|
102
|
+
type CreateProjectInput = {
|
|
103
|
+
name: string;
|
|
104
|
+
accountId: string;
|
|
105
|
+
env: Environment;
|
|
106
|
+
};
|
|
107
|
+
type UpdateProjectInput = {
|
|
108
|
+
name: string;
|
|
109
|
+
};
|
|
110
|
+
type Account = AuthBaseEntity & {
|
|
111
|
+
id: string;
|
|
112
|
+
name: string;
|
|
113
|
+
};
|
|
114
|
+
type AnyJson = boolean | number | string | null | JsonArray | JsonMap;
|
|
115
|
+
type JsonMap = {
|
|
116
|
+
[key: string]: AnyJson;
|
|
117
|
+
};
|
|
118
|
+
type JsonArray = Array<AnyJson>;
|
|
119
|
+
|
|
120
|
+
interface ApiKeysInterface {
|
|
121
|
+
isValidKey(apiKey: string): Promise<boolean>;
|
|
122
|
+
getKey(apiKey: string): Promise<ApiKey>;
|
|
123
|
+
authenticateKey(apiKey: string): Promise<ApiKey>;
|
|
124
|
+
getKeys(filter?: ApiKeyFilter): Promise<ApiKey[]>;
|
|
125
|
+
createKey(apiKey: ApiKeyInput): Promise<ApiKey>;
|
|
126
|
+
updateKey(apiKey: string, updateTo: UpdateApiKeyInput): Promise<ApiKey>;
|
|
127
|
+
deleteKey(apiKey: string): Promise<boolean>;
|
|
128
|
+
reactivateKey(apiKey: string): Promise<ApiKey>;
|
|
129
|
+
rotateKey(apiKey: string): Promise<ApiKey>;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
declare class ApiKeys implements ApiKeysInterface {
|
|
133
|
+
api: ApiRequest;
|
|
134
|
+
private readonly endpoint;
|
|
135
|
+
constructor(apiService: ApiRequest);
|
|
136
|
+
isValidKey(apikey: string): Promise<boolean>;
|
|
137
|
+
authenticateKey(apikey: string): Promise<ApiKey>;
|
|
138
|
+
getKeys(filter?: ApiKeyFilter): Promise<ApiKey[]>;
|
|
139
|
+
getKey(apikey: string): Promise<ApiKey>;
|
|
140
|
+
createKey(apiKey: ApiKeyInput): Promise<ApiKey>;
|
|
141
|
+
updateKey(apiKey: string, updatedKey: UpdateApiKeyInput): Promise<ApiKey>;
|
|
142
|
+
deleteKey(apiKey: string): Promise<boolean>;
|
|
143
|
+
reactivateKey(apiKey: string): Promise<ApiKey>;
|
|
144
|
+
rotateKey(apiKey: string): Promise<ApiKey>;
|
|
145
|
+
private getKeysFilterEndpoint;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
interface ProjectsInterface {
|
|
149
|
+
getProjects(accountId: string): Promise<Project[]>;
|
|
150
|
+
getProject(projectId: string): Promise<Project>;
|
|
151
|
+
deleteProject(projectId: string): Promise<boolean>;
|
|
152
|
+
createProject(project: CreateProjectInput): Promise<Project>;
|
|
153
|
+
updateProject(name: string, updateTo: UpdateProjectInput): Promise<Project>;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
declare class Projects implements ProjectsInterface {
|
|
157
|
+
api: ApiRequest;
|
|
158
|
+
endpoint: string;
|
|
159
|
+
constructor(apiService: ApiRequest);
|
|
160
|
+
getProjects(accountId: string): Promise<Project[]>;
|
|
161
|
+
getProject(projectId: string): Promise<Project>;
|
|
162
|
+
deleteProject(projectId: string): Promise<boolean>;
|
|
163
|
+
createProject(project: CreateProjectInput): Promise<Project>;
|
|
164
|
+
updateProject(projectId: string, project: UpdateProjectInput): Promise<Project>;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
interface AccountsInterface {
|
|
168
|
+
getAccount(accountId: string): Promise<Account>;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
declare class Accounts implements AccountsInterface {
|
|
172
|
+
api: ApiRequest;
|
|
173
|
+
endpoint: string;
|
|
174
|
+
constructor(apiService: ApiRequest);
|
|
175
|
+
getAccount(accountId: string): Promise<Account>;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
type Options = {
|
|
179
|
+
host?: string;
|
|
180
|
+
retryCount?: number;
|
|
181
|
+
};
|
|
182
|
+
declare class TheAuthAPI {
|
|
183
|
+
accessKey: string;
|
|
184
|
+
host: string;
|
|
185
|
+
timeout: number | string | undefined;
|
|
186
|
+
api: ApiRequest;
|
|
187
|
+
apiKeys: ApiKeys;
|
|
188
|
+
projects: Projects;
|
|
189
|
+
accounts: Accounts;
|
|
190
|
+
/**
|
|
191
|
+
* @param {String} accessKey
|
|
192
|
+
* @param {Object} [options] (optional)
|
|
193
|
+
* @property {String} host (default: 'https://api.segment.io')
|
|
194
|
+
* @property {number} retryCount (default: 3)
|
|
195
|
+
*/
|
|
196
|
+
constructor(accessKey: string, options?: Options);
|
|
197
|
+
authenticateAPIKey(key: string, callback?: (err: any, data: any) => any): Promise<unknown>;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
exports = TheAuthAPI;
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
declare enum HttpMethod {
|
|
2
|
+
GET = "GET",
|
|
3
|
+
POST = "POST",
|
|
4
|
+
DELETE = "DELETE",
|
|
5
|
+
PATCH = "PATCH",
|
|
6
|
+
PUT = "PUT"
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
interface ApiCall {
|
|
10
|
+
request<T>(method: HttpMethod, endpoint: string, payload?: any): Promise<T>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
type Config = {
|
|
14
|
+
host: string;
|
|
15
|
+
accessKey: string;
|
|
16
|
+
headers?: object;
|
|
17
|
+
retryCount?: number;
|
|
18
|
+
};
|
|
19
|
+
declare class ApiRequest implements ApiCall {
|
|
20
|
+
host: string;
|
|
21
|
+
headers: object;
|
|
22
|
+
accessKey: string;
|
|
23
|
+
retryCount: number;
|
|
24
|
+
constructor(config: Config);
|
|
25
|
+
_init(): void;
|
|
26
|
+
request<T>(method: HttpMethod, endpoint: string, payload?: any): Promise<T>;
|
|
27
|
+
_generateDefaultHeaders(): {
|
|
28
|
+
'user-agent': string;
|
|
29
|
+
'x-api-key': string;
|
|
30
|
+
'api-key': string;
|
|
31
|
+
};
|
|
32
|
+
_isErrorRetryable(error: any): boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type ApiKey = {
|
|
36
|
+
key: string;
|
|
37
|
+
name: string;
|
|
38
|
+
customMetaData: AnyJson;
|
|
39
|
+
customAccountId: string;
|
|
40
|
+
customUserId: string;
|
|
41
|
+
env: Environment;
|
|
42
|
+
createdAt: Date;
|
|
43
|
+
updatedAt: Date;
|
|
44
|
+
isActive: boolean;
|
|
45
|
+
rateLimitConfigs: RateLimitConfiguration;
|
|
46
|
+
expiry: Date;
|
|
47
|
+
};
|
|
48
|
+
type RateLimitConfiguration = {
|
|
49
|
+
rateLimit: number;
|
|
50
|
+
rateLimitTtl: number;
|
|
51
|
+
};
|
|
52
|
+
type ApiKeyInput = {
|
|
53
|
+
name: string;
|
|
54
|
+
projectId?: string;
|
|
55
|
+
key?: string;
|
|
56
|
+
customMetaData?: AnyJson;
|
|
57
|
+
customAccountId?: string;
|
|
58
|
+
customUserId?: string;
|
|
59
|
+
rateLimitConfigs?: RateLimitConfiguration;
|
|
60
|
+
expiry?: Date;
|
|
61
|
+
};
|
|
62
|
+
type ApiKeyFilter = {
|
|
63
|
+
projectId?: string;
|
|
64
|
+
name?: string;
|
|
65
|
+
customAccountId?: string | null;
|
|
66
|
+
customUserId?: string | null;
|
|
67
|
+
isActive?: boolean;
|
|
68
|
+
};
|
|
69
|
+
type UpdateApiKeyInput = {
|
|
70
|
+
name: string;
|
|
71
|
+
key?: string;
|
|
72
|
+
customMetaData?: AnyJson;
|
|
73
|
+
customAccountId?: string;
|
|
74
|
+
customUserId?: string;
|
|
75
|
+
expiry?: Date | null;
|
|
76
|
+
rateLimitConfigs?: RateLimitConfiguration | null;
|
|
77
|
+
};
|
|
78
|
+
declare enum AuthedEntityType {
|
|
79
|
+
USER = "USER",
|
|
80
|
+
ACCESS_KEY = "ACCESS_KEY"
|
|
81
|
+
}
|
|
82
|
+
type AuthBaseEntity = {
|
|
83
|
+
isActive: boolean;
|
|
84
|
+
createdBy: string;
|
|
85
|
+
createdByType?: AuthedEntityType;
|
|
86
|
+
createdIn: string;
|
|
87
|
+
lastChangedBy: string;
|
|
88
|
+
lastChangedByType?: AuthedEntityType;
|
|
89
|
+
updatedAt: Date;
|
|
90
|
+
createdAt: Date;
|
|
91
|
+
};
|
|
92
|
+
type Project = AuthBaseEntity & {
|
|
93
|
+
id: string;
|
|
94
|
+
name: string;
|
|
95
|
+
accountId: string;
|
|
96
|
+
env: Environment;
|
|
97
|
+
};
|
|
98
|
+
declare enum Environment {
|
|
99
|
+
LIVE = "live",
|
|
100
|
+
TEST = "test"
|
|
101
|
+
}
|
|
102
|
+
type CreateProjectInput = {
|
|
103
|
+
name: string;
|
|
104
|
+
accountId: string;
|
|
105
|
+
env: Environment;
|
|
106
|
+
};
|
|
107
|
+
type UpdateProjectInput = {
|
|
108
|
+
name: string;
|
|
109
|
+
};
|
|
110
|
+
type Account = AuthBaseEntity & {
|
|
111
|
+
id: string;
|
|
112
|
+
name: string;
|
|
113
|
+
};
|
|
114
|
+
type AnyJson = boolean | number | string | null | JsonArray | JsonMap;
|
|
115
|
+
type JsonMap = {
|
|
116
|
+
[key: string]: AnyJson;
|
|
117
|
+
};
|
|
118
|
+
type JsonArray = Array<AnyJson>;
|
|
119
|
+
|
|
120
|
+
interface ApiKeysInterface {
|
|
121
|
+
isValidKey(apiKey: string): Promise<boolean>;
|
|
122
|
+
getKey(apiKey: string): Promise<ApiKey>;
|
|
123
|
+
authenticateKey(apiKey: string): Promise<ApiKey>;
|
|
124
|
+
getKeys(filter?: ApiKeyFilter): Promise<ApiKey[]>;
|
|
125
|
+
createKey(apiKey: ApiKeyInput): Promise<ApiKey>;
|
|
126
|
+
updateKey(apiKey: string, updateTo: UpdateApiKeyInput): Promise<ApiKey>;
|
|
127
|
+
deleteKey(apiKey: string): Promise<boolean>;
|
|
128
|
+
reactivateKey(apiKey: string): Promise<ApiKey>;
|
|
129
|
+
rotateKey(apiKey: string): Promise<ApiKey>;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
declare class ApiKeys implements ApiKeysInterface {
|
|
133
|
+
api: ApiRequest;
|
|
134
|
+
private readonly endpoint;
|
|
135
|
+
constructor(apiService: ApiRequest);
|
|
136
|
+
isValidKey(apikey: string): Promise<boolean>;
|
|
137
|
+
authenticateKey(apikey: string): Promise<ApiKey>;
|
|
138
|
+
getKeys(filter?: ApiKeyFilter): Promise<ApiKey[]>;
|
|
139
|
+
getKey(apikey: string): Promise<ApiKey>;
|
|
140
|
+
createKey(apiKey: ApiKeyInput): Promise<ApiKey>;
|
|
141
|
+
updateKey(apiKey: string, updatedKey: UpdateApiKeyInput): Promise<ApiKey>;
|
|
142
|
+
deleteKey(apiKey: string): Promise<boolean>;
|
|
143
|
+
reactivateKey(apiKey: string): Promise<ApiKey>;
|
|
144
|
+
rotateKey(apiKey: string): Promise<ApiKey>;
|
|
145
|
+
private getKeysFilterEndpoint;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
interface ProjectsInterface {
|
|
149
|
+
getProjects(accountId: string): Promise<Project[]>;
|
|
150
|
+
getProject(projectId: string): Promise<Project>;
|
|
151
|
+
deleteProject(projectId: string): Promise<boolean>;
|
|
152
|
+
createProject(project: CreateProjectInput): Promise<Project>;
|
|
153
|
+
updateProject(name: string, updateTo: UpdateProjectInput): Promise<Project>;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
declare class Projects implements ProjectsInterface {
|
|
157
|
+
api: ApiRequest;
|
|
158
|
+
endpoint: string;
|
|
159
|
+
constructor(apiService: ApiRequest);
|
|
160
|
+
getProjects(accountId: string): Promise<Project[]>;
|
|
161
|
+
getProject(projectId: string): Promise<Project>;
|
|
162
|
+
deleteProject(projectId: string): Promise<boolean>;
|
|
163
|
+
createProject(project: CreateProjectInput): Promise<Project>;
|
|
164
|
+
updateProject(projectId: string, project: UpdateProjectInput): Promise<Project>;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
interface AccountsInterface {
|
|
168
|
+
getAccount(accountId: string): Promise<Account>;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
declare class Accounts implements AccountsInterface {
|
|
172
|
+
api: ApiRequest;
|
|
173
|
+
endpoint: string;
|
|
174
|
+
constructor(apiService: ApiRequest);
|
|
175
|
+
getAccount(accountId: string): Promise<Account>;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
type Options = {
|
|
179
|
+
host?: string;
|
|
180
|
+
retryCount?: number;
|
|
181
|
+
};
|
|
182
|
+
declare class TheAuthAPI {
|
|
183
|
+
accessKey: string;
|
|
184
|
+
host: string;
|
|
185
|
+
timeout: number | string | undefined;
|
|
186
|
+
api: ApiRequest;
|
|
187
|
+
apiKeys: ApiKeys;
|
|
188
|
+
projects: Projects;
|
|
189
|
+
accounts: Accounts;
|
|
190
|
+
/**
|
|
191
|
+
* @param {String} accessKey
|
|
192
|
+
* @param {Object} [options] (optional)
|
|
193
|
+
* @property {String} host (default: 'https://api.segment.io')
|
|
194
|
+
* @property {number} retryCount (default: 3)
|
|
195
|
+
*/
|
|
196
|
+
constructor(accessKey: string, options?: Options);
|
|
197
|
+
authenticateAPIKey(key: string, callback?: (err: any, data: any) => any): Promise<unknown>;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export { TheAuthAPI as default };
|