@sneat/auth-core 0.1.3 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/esm2022/index.js +8 -0
  2. package/esm2022/index.js.map +1 -0
  3. package/esm2022/lib/login-required-service.service.js +20 -0
  4. package/esm2022/lib/login-required-service.service.js.map +1 -0
  5. package/esm2022/lib/private-token-store.service.js +36 -0
  6. package/esm2022/lib/private-token-store.service.js.map +1 -0
  7. package/esm2022/lib/sneat-auth-guard.js +79 -0
  8. package/esm2022/lib/sneat-auth-guard.js.map +1 -0
  9. package/esm2022/lib/sneat-auth-state-service.js +267 -0
  10. package/esm2022/lib/sneat-auth-state-service.js.map +1 -0
  11. package/{src/lib/sneat-auth.interface.ts → esm2022/lib/sneat-auth.interface.js} +1 -5
  12. package/esm2022/lib/sneat-auth.interface.js.map +1 -0
  13. package/esm2022/lib/telegram-auth.service.js +39 -0
  14. package/esm2022/lib/telegram-auth.service.js.map +1 -0
  15. package/esm2022/lib/user/index.js +3 -0
  16. package/esm2022/lib/user/index.js.map +1 -0
  17. package/esm2022/lib/user/sneat-user.service.js +171 -0
  18. package/esm2022/lib/user/sneat-user.service.js.map +1 -0
  19. package/esm2022/lib/user/user-record.service.js +30 -0
  20. package/esm2022/lib/user/user-record.service.js.map +1 -0
  21. package/esm2022/sneat-auth-core.js +5 -0
  22. package/esm2022/sneat-auth-core.js.map +1 -0
  23. package/lib/login-required-service.service.d.ts +6 -0
  24. package/lib/private-token-store.service.d.ts +8 -0
  25. package/lib/sneat-auth-guard.d.ts +26 -0
  26. package/lib/sneat-auth-state-service.d.ts +51 -0
  27. package/lib/sneat-auth.interface.d.ts +5 -0
  28. package/lib/telegram-auth.service.d.ts +9 -0
  29. package/lib/user/sneat-user.service.d.ts +34 -0
  30. package/lib/user/user-record.service.d.ts +25 -0
  31. package/package.json +14 -2
  32. package/sneat-auth-core.d.ts +5 -0
  33. package/tsconfig.lib.prod.tsbuildinfo +1 -0
  34. package/eslint.config.js +0 -7
  35. package/ng-package.json +0 -7
  36. package/project.json +0 -38
  37. package/src/lib/login-required-service.service.spec.ts +0 -39
  38. package/src/lib/login-required-service.service.ts +0 -14
  39. package/src/lib/private-token-store.service.spec.ts +0 -75
  40. package/src/lib/private-token-store.service.ts +0 -36
  41. package/src/lib/sneat-auth-guard.spec.ts +0 -124
  42. package/src/lib/sneat-auth-guard.ts +0 -107
  43. package/src/lib/sneat-auth-state-service.spec.ts +0 -332
  44. package/src/lib/sneat-auth-state-service.ts +0 -387
  45. package/src/lib/sneat-auth.interface.spec.ts +0 -39
  46. package/src/lib/telegram-auth.service.spec.ts +0 -186
  47. package/src/lib/telegram-auth.service.ts +0 -49
  48. package/src/lib/user/sneat-user.service.spec.ts +0 -151
  49. package/src/lib/user/sneat-user.service.ts +0 -266
  50. package/src/lib/user/user-record.service.spec.ts +0 -145
  51. package/src/lib/user/user-record.service.ts +0 -38
  52. package/src/test-setup.ts +0 -3
  53. package/tsconfig.json +0 -13
  54. package/tsconfig.lib.json +0 -19
  55. package/tsconfig.lib.prod.json +0 -7
  56. package/tsconfig.spec.json +0 -31
  57. package/vite.config.mts +0 -10
  58. /package/{src/index.ts → index.d.ts} +0 -0
  59. /package/{src/lib/user/index.ts → lib/user/index.d.ts} +0 -0
@@ -1,145 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { SneatApiService } from '@sneat/api';
3
- import { UserRecordService } from './user-record.service';
4
- import { describe, it, expect, beforeEach, vi } from 'vitest';
5
- import { of, firstValueFrom } from 'rxjs';
6
- import { IUserDbo } from '@sneat/dto';
7
-
8
- describe('UserRecordService', () => {
9
- let service: UserRecordService;
10
- let sneatApiServiceMock: { post: ReturnType<typeof vi.fn> };
11
-
12
- beforeEach(() => {
13
- sneatApiServiceMock = {
14
- post: vi.fn(),
15
- };
16
-
17
- TestBed.configureTestingModule({
18
- providers: [
19
- UserRecordService,
20
- {
21
- provide: SneatApiService,
22
- useValue: sneatApiServiceMock,
23
- },
24
- ],
25
- });
26
- service = TestBed.inject(UserRecordService);
27
- });
28
-
29
- it('should be created', () => {
30
- expect(service).toBeTruthy();
31
- });
32
-
33
- it('should initialize user record with provided request', async () => {
34
- const request = {
35
- authProvider: 'google.com',
36
- email: 'test@example.com',
37
- emailIsVerified: true,
38
- names: { fullName: 'Test User' },
39
- };
40
-
41
- const mockResponse: IUserDbo = {
42
- id: 'user123',
43
- title: 'Test User',
44
- };
45
-
46
- sneatApiServiceMock.post.mockReturnValue(of(mockResponse));
47
-
48
- const result = await firstValueFrom(service.initUserRecord(request));
49
-
50
- expect(result).toEqual(mockResponse);
51
- expect(sneatApiServiceMock.post).toHaveBeenCalledWith(
52
- 'users/init_user_record',
53
- expect.objectContaining({
54
- authProvider: 'google.com',
55
- email: 'test@example.com',
56
- emailIsVerified: true,
57
- names: { fullName: 'Test User' },
58
- ianaTimezone: expect.any(String),
59
- }),
60
- );
61
- });
62
-
63
- it('should add ianaTimezone if not provided', async () => {
64
- const request = {
65
- email: 'test@example.com',
66
- };
67
-
68
- const mockResponse: IUserDbo = {
69
- id: 'user123',
70
- title: 'Test User',
71
- };
72
-
73
- sneatApiServiceMock.post.mockReturnValue(of(mockResponse));
74
-
75
- await firstValueFrom(service.initUserRecord(request));
76
-
77
- const callArgs = sneatApiServiceMock.post.mock.calls[0][1];
78
- expect(callArgs.ianaTimezone).toBeDefined();
79
- expect(typeof callArgs.ianaTimezone).toBe('string');
80
- });
81
-
82
- it('should preserve provided ianaTimezone', async () => {
83
- const request = {
84
- email: 'test@example.com',
85
- ianaTimezone: 'America/New_York',
86
- };
87
-
88
- const mockResponse: IUserDbo = {
89
- id: 'user123',
90
- title: 'Test User',
91
- };
92
-
93
- sneatApiServiceMock.post.mockReturnValue(of(mockResponse));
94
-
95
- await firstValueFrom(service.initUserRecord(request));
96
-
97
- expect(sneatApiServiceMock.post).toHaveBeenCalledWith(
98
- 'users/init_user_record',
99
- expect.objectContaining({
100
- ianaTimezone: 'America/New_York',
101
- }),
102
- );
103
- });
104
-
105
- it('should exclude undefined values from request', async () => {
106
- const request = {
107
- email: 'test@example.com',
108
- gender: undefined,
109
- ageGroup: undefined,
110
- };
111
-
112
- const mockResponse: IUserDbo = {
113
- id: 'user123',
114
- title: 'Test User',
115
- };
116
-
117
- sneatApiServiceMock.post.mockReturnValue(of(mockResponse));
118
-
119
- await firstValueFrom(service.initUserRecord(request));
120
-
121
- const callArgs = sneatApiServiceMock.post.mock.calls[0][1];
122
- expect(callArgs.gender).toBeUndefined();
123
- expect(callArgs.ageGroup).toBeUndefined();
124
- expect(callArgs.email).toBe('test@example.com');
125
- });
126
-
127
- it('should share the observable for multiple subscribers', async () => {
128
- const request = {
129
- email: 'test@example.com',
130
- };
131
-
132
- const mockResponse: IUserDbo = {
133
- id: 'user123',
134
- title: 'Test User',
135
- };
136
-
137
- sneatApiServiceMock.post.mockReturnValue(of(mockResponse));
138
-
139
- const obs = service.initUserRecord(request);
140
-
141
- await Promise.all([firstValueFrom(obs), firstValueFrom(obs)]);
142
-
143
- expect(sneatApiServiceMock.post).toHaveBeenCalledTimes(1);
144
- });
145
- });
@@ -1,38 +0,0 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { SneatApiService } from '@sneat/api';
3
- import { IPersonNames } from '@sneat/auth-models';
4
- import { AgeGroupID, excludeUndefined, Gender, SpaceType } from '@sneat/core';
5
- import { IUserDbo } from '@sneat/dto';
6
- import { Observable, share } from 'rxjs';
7
-
8
- @Injectable({ providedIn: 'root' })
9
- export class UserRecordService {
10
- private readonly sneatApiService = inject(SneatApiService);
11
-
12
- private initUserRecord$?: Observable<IUserDbo>;
13
-
14
- public initUserRecord(request: IInitUserRecordRequest): Observable<IUserDbo> {
15
- if (!request.ianaTimezone) {
16
- request = {
17
- ...request,
18
- ianaTimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
19
- };
20
- }
21
- request = excludeUndefined(request);
22
- this.initUserRecord$ = this.sneatApiService
23
- .post<IUserDbo>('users/init_user_record', request)
24
- .pipe(share());
25
- return this.initUserRecord$;
26
- }
27
- }
28
-
29
- export interface IInitUserRecordRequest {
30
- readonly authProvider?: string;
31
- readonly gender?: Gender;
32
- readonly ageGroup?: AgeGroupID;
33
- readonly names?: IPersonNames;
34
- readonly email?: string;
35
- readonly emailIsVerified?: boolean;
36
- readonly ianaTimezone?: string;
37
- readonly space?: { type: SpaceType; title: string };
38
- }
package/src/test-setup.ts DELETED
@@ -1,3 +0,0 @@
1
- import { setupTestEnvironment } from '@sneat/core/testing';
2
-
3
- setupTestEnvironment();
package/tsconfig.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig.angular.json",
3
- "files": [],
4
- "include": [],
5
- "references": [
6
- {
7
- "path": "./tsconfig.lib.json"
8
- },
9
- {
10
- "path": "./tsconfig.spec.json"
11
- }
12
- ]
13
- }
package/tsconfig.lib.json DELETED
@@ -1,19 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig.lib.base.json",
3
- "exclude": [
4
- "vite.config.ts",
5
- "vite.config.mts",
6
- "vitest.config.ts",
7
- "vitest.config.mts",
8
- "src/**/*.test.ts",
9
- "src/**/*.spec.ts",
10
- "src/**/*.test.tsx",
11
- "src/**/*.spec.tsx",
12
- "src/**/*.test.js",
13
- "src/**/*.spec.js",
14
- "src/**/*.test.jsx",
15
- "src/**/*.spec.jsx",
16
- "src/test-setup.ts",
17
- "src/lib/testing/**/*"
18
- ]
19
- }
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "./tsconfig.lib.json",
3
- "compilerOptions": {
4
- "declarationMap": false
5
- },
6
- "angularCompilerOptions": {}
7
- }
@@ -1,31 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../../dist/out-tsc",
5
- "types": [
6
- "vitest/globals",
7
- "vitest/importMeta",
8
- "vite/client",
9
- "node",
10
- "vitest"
11
- ]
12
- },
13
- "include": [
14
- "vite.config.ts",
15
- "vite.config.mts",
16
- "vitest.config.ts",
17
- "vitest.config.mts",
18
- "src/**/*.test.ts",
19
- "src/**/*.spec.ts",
20
- "src/**/*.test.tsx",
21
- "src/**/*.spec.tsx",
22
- "src/**/*.test.js",
23
- "src/**/*.spec.js",
24
- "src/**/*.test.jsx",
25
- "src/**/*.spec.jsx",
26
- "src/**/*.d.ts"
27
- ],
28
- "files": [
29
- "src/test-setup.ts"
30
- ]
31
- }
package/vite.config.mts DELETED
@@ -1,10 +0,0 @@
1
- /// <reference types='vitest' />
2
- import { defineConfig } from 'vitest/config';
3
- import { createBaseViteConfig } from '../../../vite.config.base';
4
-
5
- export default defineConfig(() =>
6
- createBaseViteConfig({
7
- dirname: __dirname,
8
- name: 'auth-core',
9
- }),
10
- );
File without changes
File without changes