@spica-devkit/auth 0.18.1 → 0.18.3

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.js ADDED
@@ -0,0 +1,468 @@
1
+ 'use strict';
2
+
3
+ var axios = require('axios');
4
+
5
+ function deepCopyJSON(param) {
6
+ return JSON.parse(JSON.stringify(param));
7
+ }
8
+
9
+ const userSegment$1 = "passport/user";
10
+ class UserSession {
11
+ constructor(params) {
12
+ this._token = params.token;
13
+ this._userId = params.userId;
14
+ this._username = params.username;
15
+ this._service = params.service;
16
+ }
17
+ get token() {
18
+ return this._token;
19
+ }
20
+ get userId() {
21
+ return this._userId;
22
+ }
23
+ get username() {
24
+ return this._username;
25
+ }
26
+ getAuthHeaders(headers) {
27
+ return {
28
+ Authorization: `USER ${this._token}`,
29
+ ...headers
30
+ };
31
+ }
32
+ get(headers) {
33
+ return this._service.get(`${userSegment$1}/${this._userId}`, {
34
+ headers: this.getAuthHeaders(headers)
35
+ });
36
+ }
37
+ async updatePassword(password, headers) {
38
+ const user = deepCopyJSON({ password });
39
+ return this._service.put(`${userSegment$1}/${this._userId}/self`, user, {
40
+ headers: this.getAuthHeaders(headers)
41
+ });
42
+ }
43
+ async refreshAccessToken(headers) {
44
+ const response = await this._service.post(`${userSegment$1}/session/refresh`, {}, {
45
+ headers: this.getAuthHeaders(headers),
46
+ withCredentials: true
47
+ });
48
+ this._token = response.token;
49
+ return response.token;
50
+ }
51
+ addEmail(value, strategy, headers) {
52
+ return this._service.post(`${userSegment$1}/${this._userId}/start-provider-verification`, { value, provider: "email", strategy, purpose: "verification" }, { headers: this.getAuthHeaders(headers) });
53
+ }
54
+ verifyEmail(code, strategy, headers) {
55
+ return this._service.post(`${userSegment$1}/${this._userId}/verify-provider`, { code, provider: "email", strategy, purpose: "verification" }, { headers: this.getAuthHeaders(headers) });
56
+ }
57
+ addPhoneNumber(value, strategy, headers) {
58
+ return this._service.post(`${userSegment$1}/${this._userId}/start-provider-verification`, { value, provider: "phone", strategy, purpose: "verification" }, { headers: this.getAuthHeaders(headers) });
59
+ }
60
+ verifyPhoneNumber(code, strategy, headers) {
61
+ return this._service.post(`${userSegment$1}/${this._userId}/verify-provider`, { code, provider: "phone", strategy, purpose: "verification" }, { headers: this.getAuthHeaders(headers) });
62
+ }
63
+ completePasswordReset(code, newPassword, provider, headers) {
64
+ return this._service.post(`${userSegment$1}/forgot-password/verify`, { username: this._username, code, newPassword, provider }, { headers: this.getAuthHeaders(headers) });
65
+ }
66
+ }
67
+
68
+ function logWarning(response) {
69
+ const warning = response.headers["warning"];
70
+ if (warning) {
71
+ console.warn(warning);
72
+ }
73
+ }
74
+ class Axios {
75
+ constructor(config) {
76
+ this.interceptors = {
77
+ request: {
78
+ onFulfilled: (request) => {
79
+ request.maxBodyLength = Number.MAX_SAFE_INTEGER;
80
+ request.maxContentLength = Number.MAX_SAFE_INTEGER;
81
+ if (!request.headers["Authorization"]) {
82
+ throw new Error("You should call initialize method with a valid apikey or identity token.");
83
+ }
84
+ return request;
85
+ },
86
+ onRejected: (error) => {
87
+ return Promise.reject(error);
88
+ }
89
+ },
90
+ response: {
91
+ onFulfilled: (response) => {
92
+ logWarning(response);
93
+ return response.data;
94
+ },
95
+ onRejected: (error) => {
96
+ return Promise.reject(error.response ? error.response.data : error);
97
+ }
98
+ }
99
+ };
100
+ this.instance = axios.create(config);
101
+ this.instance.interceptors.request.use(this.interceptors.request.onFulfilled, this.interceptors.request.onRejected);
102
+ this.instance.interceptors.response.use(this.interceptors.response.onFulfilled, this.interceptors.response.onRejected);
103
+ this.baseUrl = this.instance.defaults.baseURL;
104
+ this.instance.defaults.paramsSerializer = paramsSerializer;
105
+ }
106
+ setBaseUrl(url) {
107
+ this.instance.defaults.baseURL = url;
108
+ this.baseUrl = url;
109
+ }
110
+ setWriteDefaults(writeDefaults) {
111
+ for (const [header, value] of Object.entries(writeDefaults.headers)) {
112
+ this.instance.defaults.headers.post[header] = value;
113
+ this.instance.defaults.headers.put[header] = value;
114
+ }
115
+ }
116
+ setAuthorization(authorization) {
117
+ this.instance.defaults.headers["Authorization"] = authorization;
118
+ }
119
+ getAuthorization() {
120
+ return this.instance.defaults.headers["Authorization"].toString();
121
+ }
122
+ get(url, config) {
123
+ return this.instance.get(url, config);
124
+ }
125
+ post(url, body, config) {
126
+ return this.instance.post(url, body, config);
127
+ }
128
+ put(url, body, config) {
129
+ return this.instance.put(url, body, config);
130
+ }
131
+ patch(url, body, config) {
132
+ return this.instance.patch(url, body, config);
133
+ }
134
+ delete(url, config) {
135
+ return this.instance.delete(url, config);
136
+ }
137
+ request(config) {
138
+ return this.instance.request(config);
139
+ }
140
+ }
141
+ function encode(val) {
142
+ return encodeURIComponent(val)
143
+ .replace(/%3A/gi, ":")
144
+ .replace(/%24/g, "$")
145
+ .replace(/%2C/gi, ",")
146
+ .replace(/%20/g, "+")
147
+ .replace(/%5B/gi, "[")
148
+ .replace(/%5D/gi, "]");
149
+ }
150
+ function utilsIsURLSearchParams(val) {
151
+ return typeof URLSearchParams !== "undefined" && val instanceof URLSearchParams;
152
+ }
153
+ function utilsIsArray(val) {
154
+ return toString.call(val) === "[object Array]";
155
+ }
156
+ function utilsIsDate(val) {
157
+ return toString.call(val) === "[object Date]";
158
+ }
159
+ function utilsIsObject(val) {
160
+ return val !== null && typeof val === "object";
161
+ }
162
+ function utilsForEach(obj, fn) {
163
+ if (obj === null || typeof obj === "undefined") {
164
+ return;
165
+ }
166
+ if (typeof obj !== "object") {
167
+ obj = [obj];
168
+ }
169
+ if (utilsIsArray(obj)) {
170
+ for (var i = 0, l = obj.length; i < l; i++) {
171
+ fn.call(null, obj[i], i, obj);
172
+ }
173
+ }
174
+ else {
175
+ for (var key in obj) {
176
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
177
+ fn.call(null, obj[key], key, obj);
178
+ }
179
+ }
180
+ }
181
+ }
182
+ function paramsSerializer(params) {
183
+ if (utilsIsURLSearchParams(params)) {
184
+ return params.toString();
185
+ }
186
+ var parts = [];
187
+ utilsForEach(params, function serialize(val, key) {
188
+ if (val === null || typeof val === "undefined") {
189
+ return;
190
+ }
191
+ if (utilsIsArray(val)) {
192
+ key = key + "[]";
193
+ }
194
+ else {
195
+ val = [val];
196
+ }
197
+ utilsForEach(val, function parseValue(v) {
198
+ if (utilsIsDate(v)) {
199
+ v = v.toISOString();
200
+ }
201
+ else if (utilsIsObject(v)) {
202
+ v = JSON.stringify(v);
203
+ }
204
+ parts.push(encode(key) + "=" + encode(v));
205
+ });
206
+ });
207
+ return parts.join("&");
208
+ }
209
+
210
+ let service$1;
211
+ function initialize$1(options) {
212
+ let authorization;
213
+ if ("apikey" in options) {
214
+ authorization = `APIKEY ${options.apikey}`;
215
+ }
216
+ else if ("identity" in options) {
217
+ authorization = `IDENTITY ${options.identity}`;
218
+ }
219
+ else if ("user" in options) {
220
+ authorization = `USER ${options.user}`;
221
+ }
222
+ const publicUrl = options.publicUrl || getPublicUrl();
223
+ if (!publicUrl) {
224
+ throw new Error("Public url must be provided.");
225
+ }
226
+ if (!service$1) {
227
+ service$1 = new Axios({});
228
+ }
229
+ service$1.setBaseUrl(publicUrl);
230
+ if (authorization) {
231
+ service$1.setAuthorization(authorization);
232
+ }
233
+ return { authorization, publicUrl, service: service$1 };
234
+ }
235
+ function checkInitialized(authorization, service, options = { skipAuthCheck: false }) {
236
+ if (!authorization && !options.skipAuthCheck) {
237
+ throw new Error("You should call initialize method with a valid credentials.");
238
+ }
239
+ if (!service) {
240
+ throw new Error("You should call initialize method with a valid publicUrl.");
241
+ }
242
+ }
243
+ function getPublicUrl() {
244
+ return isPlatformBrowser() ? undefined : process.env.__INTERNAL__SPICA__PUBLIC_URL__;
245
+ }
246
+ function isPlatformBrowser() {
247
+ return typeof window !== "undefined";
248
+ }
249
+
250
+ var Batch;
251
+ (function (Batch) {
252
+ function prepareInsertRequest(resources, url, auth, headers) {
253
+ return {
254
+ requests: resources.map((resource, i) => {
255
+ headers = addAuthHeader(headers, auth);
256
+ return {
257
+ id: i.toString(),
258
+ body: resource,
259
+ method: "POST",
260
+ url: url,
261
+ headers: headers
262
+ };
263
+ })
264
+ };
265
+ }
266
+ Batch.prepareInsertRequest = prepareInsertRequest;
267
+ function prepareRemoveRequest(ids, url, auth, headers) {
268
+ return {
269
+ requests: ids.map((id, i) => {
270
+ headers = addAuthHeader(headers, auth);
271
+ return {
272
+ id: i.toString(),
273
+ body: undefined,
274
+ method: "DELETE",
275
+ url: `${url}/${id}`,
276
+ headers: headers
277
+ };
278
+ })
279
+ };
280
+ }
281
+ Batch.prepareRemoveRequest = prepareRemoveRequest;
282
+ function handleBatchResponse({ requests }, { responses }) {
283
+ const sortById = (a, b) => Number(a.id) - Number(b.id);
284
+ const successResponses = responses
285
+ .sort(sortById)
286
+ .filter(r => r.status >= 200 && r.status < 300);
287
+ const failureResponses = responses
288
+ .sort(sortById)
289
+ .filter(r => r.status >= 400 && r.status <= 500);
290
+ const successes = successResponses.map(sr => {
291
+ const req = requests.find(r => r.id == sr.id);
292
+ return {
293
+ request: (req.body || req.url),
294
+ response: sr.body
295
+ };
296
+ });
297
+ const failures = failureResponses.map(fr => {
298
+ const req = requests.find(r => r.id == fr.id);
299
+ return {
300
+ request: (req.body || req.url),
301
+ response: {
302
+ error: fr.body["error"],
303
+ message: fr.body["message"]
304
+ }
305
+ };
306
+ });
307
+ return {
308
+ successes,
309
+ failures
310
+ };
311
+ }
312
+ Batch.handleBatchResponse = handleBatchResponse;
313
+ })(Batch || (Batch = {}));
314
+ function addAuthHeader(headers, auth) {
315
+ headers = headers || {};
316
+ headers["Authorization"] = auth;
317
+ return headers;
318
+ }
319
+
320
+ let authorization;
321
+ let service;
322
+ const userSegment = "passport/user";
323
+ function initialize(options) {
324
+ const { authorization: _authorization, service: _service } = initialize$1(options);
325
+ authorization = _authorization;
326
+ service = _service;
327
+ service.setWriteDefaults({
328
+ headers: {
329
+ "Content-Type": "application/json"
330
+ }
331
+ });
332
+ }
333
+ function verifyToken(token, headers = {}) {
334
+ checkInitialized(authorization, service, { skipAuthCheck: true });
335
+ return service.get(`${userSegment}/verify`, { headers: { Authorization: token, ...headers } });
336
+ }
337
+ async function signIn(username, password, tokenLifeSpan, headers) {
338
+ checkInitialized(authorization, service, { skipAuthCheck: true });
339
+ const response = await service.post("/passport/login", {
340
+ username,
341
+ password,
342
+ expires: tokenLifeSpan
343
+ }, { headers });
344
+ const verified = await service.get(`${userSegment}/verify`, {
345
+ headers: { Authorization: response.token, ...(headers || {}) }
346
+ });
347
+ return new UserSession({
348
+ token: response.token,
349
+ userId: verified._id,
350
+ username: verified.username,
351
+ service
352
+ });
353
+ }
354
+ async function signUp(user, headers) {
355
+ checkInitialized(authorization, service);
356
+ user = deepCopyJSON(user);
357
+ const createdUser = await service.post(`${userSegment}`, user, { headers });
358
+ return createdUser;
359
+ }
360
+ function get(id, headers) {
361
+ checkInitialized(authorization, service);
362
+ return service.get(`${userSegment}/${id}`, { headers });
363
+ }
364
+ async function updatePassword(id, user, headers) {
365
+ checkInitialized(authorization, service);
366
+ user = deepCopyJSON(user);
367
+ const updatedUser = await service.put(`${userSegment}/${id}/self`, user, {
368
+ headers
369
+ });
370
+ return updatedUser;
371
+ }
372
+ async function refreshAccessToken(accessToken, headers) {
373
+ checkInitialized(authorization, service);
374
+ const response = await service.post(`${userSegment}/session/refresh`, {}, {
375
+ headers: {
376
+ Authorization: accessToken,
377
+ ...headers
378
+ },
379
+ withCredentials: true
380
+ });
381
+ return response.token;
382
+ }
383
+ async function updateUsername(id, username, headers) {
384
+ checkInitialized(authorization, service);
385
+ const updatedUser = await service.put(`${userSegment}/${id}`, { username }, {
386
+ headers
387
+ });
388
+ return updatedUser;
389
+ }
390
+ async function ban(id, bannedUntil, headers) {
391
+ checkInitialized(authorization, service);
392
+ const updatedUser = await service.put(`${userSegment}/${id}`, { bannedUntil: bannedUntil.toISOString() }, {
393
+ headers
394
+ });
395
+ return updatedUser;
396
+ }
397
+ async function deactivateUserTokens(id, deactivateJwtsBefore, headers) {
398
+ checkInitialized(authorization, service);
399
+ const updatedUser = await service.put(`${userSegment}/${id}`, { deactivateJwtsBefore: Math.floor(deactivateJwtsBefore.getTime() / 1000) }, {
400
+ headers
401
+ });
402
+ return updatedUser;
403
+ }
404
+ function addEmail(id, value, strategy, headers) {
405
+ checkInitialized(authorization, service);
406
+ return service.post(`${userSegment}/${id}/start-provider-verification`, { value, provider: "email", strategy, purpose: "verification" }, { headers });
407
+ }
408
+ function verifyEmail(id, code, strategy, headers) {
409
+ checkInitialized(authorization, service);
410
+ return service.post(`${userSegment}/${id}/verify-provider`, { code, provider: "email", strategy, purpose: "verification" }, { headers });
411
+ }
412
+ function addPhoneNumber(id, value, strategy, headers) {
413
+ checkInitialized(authorization, service);
414
+ return service.post(`${userSegment}/${id}/start-provider-verification`, { value, provider: "phone", strategy, purpose: "verification" }, { headers });
415
+ }
416
+ function verifyPhoneNumber(id, code, strategy, headers) {
417
+ checkInitialized(authorization, service);
418
+ return service.post(`${userSegment}/${id}/verify-provider`, { code, provider: "phone", strategy, purpose: "verification" }, { headers });
419
+ }
420
+ function requestPasswordReset(username, provider, headers) {
421
+ checkInitialized(authorization, service, { skipAuthCheck: true });
422
+ return service.post(`${userSegment}/forgot-password/start`, { username, provider }, { headers });
423
+ }
424
+ function completePasswordReset(username, code, newPassword, provider, headers) {
425
+ checkInitialized(authorization, service, { skipAuthCheck: true });
426
+ return service.post(`${userSegment}/forgot-password/verify`, { username, code, newPassword, provider }, { headers });
427
+ }
428
+ function passwordlessLogin(username, provider, headers) {
429
+ checkInitialized(authorization, service, { skipAuthCheck: true });
430
+ return service.post(`${userSegment}/passwordless-login/start`, { username, provider }, { headers });
431
+ }
432
+ async function completePasswordlessLogin(username, code, provider, headers) {
433
+ checkInitialized(authorization, service, { skipAuthCheck: true });
434
+ const response = await service.post(`${userSegment}/passwordless-login/verify`, { username, code, provider }, { headers });
435
+ const verified = await service.get(`${userSegment}/verify`, {
436
+ headers: {
437
+ ...(headers || {}),
438
+ Authorization: response.token
439
+ }
440
+ });
441
+ return new UserSession({
442
+ token: response.token,
443
+ userId: verified._id,
444
+ username: verified.username,
445
+ service
446
+ });
447
+ }
448
+
449
+ exports.UserSession = UserSession;
450
+ exports.addEmail = addEmail;
451
+ exports.addPhoneNumber = addPhoneNumber;
452
+ exports.ban = ban;
453
+ exports.completePasswordReset = completePasswordReset;
454
+ exports.completePasswordlessLogin = completePasswordlessLogin;
455
+ exports.deactivateUserTokens = deactivateUserTokens;
456
+ exports.get = get;
457
+ exports.initialize = initialize;
458
+ exports.passwordlessLogin = passwordlessLogin;
459
+ exports.refreshAccessToken = refreshAccessToken;
460
+ exports.requestPasswordReset = requestPasswordReset;
461
+ exports.signIn = signIn;
462
+ exports.signUp = signUp;
463
+ exports.updatePassword = updatePassword;
464
+ exports.updateUsername = updateUsername;
465
+ exports.verifyEmail = verifyEmail;
466
+ exports.verifyPhoneNumber = verifyPhoneNumber;
467
+ exports.verifyToken = verifyToken;
468
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../../../../../../../../libs/core/copy/src/copy.ts","../../../../../../../../../../../../../apps/api/src/function/packages/auth/src/user-session.ts","../../../../../../../../../../../../../apps/api/src/function/packages/internal_common/src/request.ts","../../../../../../../../../../../../../apps/api/src/function/packages/internal_common/src/initialize.ts","../../../../../../../../../../../../../apps/api/src/function/packages/internal_common/src/batch.ts","../../../../../../../../../../../../../apps/api/src/function/packages/auth/src/auth.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["userSegment","service","initialize","_initialize"],"mappings":"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"}