theauthapi 1.0.13 → 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.
@@ -1,6 +1,6 @@
1
- import { AccountsInterface } from "./AccountsInterface";
2
- import ApiRequest from "../../services/ApiRequest/ApiRequest";
3
- import { Account } from "../../types";
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;
@@ -0,0 +1,22 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { HttpMethod } from '../../services/ApiRequest/HttpMethod';
11
+ class Accounts {
12
+ constructor(apiService) {
13
+ this.api = apiService;
14
+ this.endpoint = '/accounts';
15
+ }
16
+ getAccount(accountId) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ return yield this.api.request(HttpMethod.GET, `${this.endpoint}/${accountId}`);
19
+ });
20
+ }
21
+ }
22
+ export default Accounts;
@@ -1,4 +1,4 @@
1
- import { Account } from "../../types";
1
+ import { Account } from '../../types';
2
2
  export interface AccountsInterface {
3
3
  getAccount(accountId: string): Promise<Account>;
4
4
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,6 @@
1
- import ApiRequest from "../../services/ApiRequest/ApiRequest";
2
- import { ApiKey, ApiKeyFilter, ApiKeyInput, UpdateApiKeyInput } from "../../types";
3
- import { ApiKeysInterface } from "./ApiKeysInterface";
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;
@@ -0,0 +1,80 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { HttpMethod } from '../../services/ApiRequest/HttpMethod';
11
+ import ApiResponseError from '../../services/ApiRequest/ApiResponseError';
12
+ class ApiKeys {
13
+ constructor(apiService) {
14
+ this.api = apiService;
15
+ this.endpoint = '/api-keys/';
16
+ }
17
+ isValidKey(apikey) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ try {
20
+ const key = yield this.authenticateKey(apikey);
21
+ return key.key !== undefined;
22
+ }
23
+ catch (error) {
24
+ if (error instanceof ApiResponseError && error.statusCode === 404) {
25
+ return false;
26
+ }
27
+ throw error;
28
+ }
29
+ });
30
+ }
31
+ authenticateKey(apikey) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ return yield this.api.request(HttpMethod.POST, `/api-keys/auth/${apikey}`);
34
+ });
35
+ }
36
+ getKeys(filter) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ const endpoint = this.getKeysFilterEndpoint(filter);
39
+ return yield this.api.request(HttpMethod.GET, endpoint);
40
+ });
41
+ }
42
+ getKey(apikey) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ return yield this.api.request(HttpMethod.GET, `/api-keys/${apikey}`);
45
+ });
46
+ }
47
+ createKey(apiKey) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ return yield this.api.request(HttpMethod.POST, '/api-keys', apiKey);
50
+ });
51
+ }
52
+ updateKey(apiKey, updatedKey) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ return yield this.api.request(HttpMethod.PATCH, `/api-keys/${apiKey}`, updatedKey);
55
+ });
56
+ }
57
+ deleteKey(apiKey) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ return yield this.api.request(HttpMethod.DELETE, `/api-keys/${apiKey}`);
60
+ });
61
+ }
62
+ reactivateKey(apiKey) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ return yield this.api.request(HttpMethod.PATCH, `/api-keys/${apiKey}/reactivate`);
65
+ });
66
+ }
67
+ rotateKey(apiKey) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ return yield this.api.request(HttpMethod.POST, `/api-keys/${apiKey}/rotate`);
70
+ });
71
+ }
72
+ getKeysFilterEndpoint(filter) {
73
+ let filters = [];
74
+ if (filter !== undefined) {
75
+ filters = Object.entries(filter).map(([key, value]) => `${key}=${value}`);
76
+ }
77
+ return `${this.endpoint}${filter !== undefined ? '?' : ''}${filters.join('&')}`;
78
+ }
79
+ }
80
+ export default ApiKeys;
@@ -1,4 +1,4 @@
1
- import { ApiKey, ApiKeyFilter, ApiKeyInput, UpdateApiKeyInput } from "../../types";
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>;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,6 @@
1
- import ApiRequest from "../../services/ApiRequest/ApiRequest";
2
- import { CreateProjectInput, Project, UpdateProjectInput } from "../../types";
3
- import { ProjectsInterface } from "./ProjectsInterface";
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;
@@ -0,0 +1,42 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { HttpMethod } from '../../services/ApiRequest/HttpMethod';
11
+ class Projects {
12
+ constructor(apiService) {
13
+ this.api = apiService;
14
+ this.endpoint = '/projects';
15
+ }
16
+ getProjects(accountId) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ return yield this.api.request(HttpMethod.GET, `${this.endpoint}?accountId=${accountId}`);
19
+ });
20
+ }
21
+ getProject(projectId) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ return yield this.api.request(HttpMethod.GET, `${this.endpoint}/${projectId}`);
24
+ });
25
+ }
26
+ deleteProject(projectId) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ return yield this.api.request(HttpMethod.DELETE, `${this.endpoint}/${projectId}`);
29
+ });
30
+ }
31
+ createProject(project) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ return yield this.api.request(HttpMethod.POST, this.endpoint, project);
34
+ });
35
+ }
36
+ updateProject(projectId, project) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ return this.api.request(HttpMethod.PATCH, `${this.endpoint}/${projectId}`, project);
39
+ });
40
+ }
41
+ }
42
+ export default Projects;
@@ -1,4 +1,4 @@
1
- import { CreateProjectInput, Project, UpdateProjectInput } from "../../types";
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>;
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.cjs CHANGED
@@ -32,7 +32,7 @@ function __awaiter(thisArg, _arguments, P, generator) {
32
32
  });
33
33
  }
34
34
 
35
- const version = "1.0.11";
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 = "ApiResponseError";
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 === "string" && isoDateFormat.test(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 !== "object") {
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 === "object") {
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
- "user-agent": `theauthapi-client-node/${version}`,
136
- "x-api-key": this.accessKey,
137
- "api-key": this.accessKey,
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 = "/api-keys/";
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, "/api-keys", apiKey);
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 ? "?" : ""}${filters.join("&")}`;
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 = "/projects";
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 = "/accounts";
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) || "https://api.theauthapi.com");
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, "/auth/authenticate", data);
321
+ const key = yield this.api.request(HttpMethod.POST, '/auth/authenticate', data);
322
322
  done(key);
323
323
  return key;
324
324
  }
@@ -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;