@novasamatech/host-papp 0.5.0-9 → 0.5.1

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 (170) hide show
  1. package/.papi/descriptors/dist/common-types.d.ts +8667 -0
  2. package/.papi/descriptors/dist/common.d.ts +1 -0
  3. package/.papi/descriptors/dist/descriptors-UUEW32EL.mjs +27 -0
  4. package/.papi/descriptors/dist/descriptors.d.ts +1 -0
  5. package/.papi/descriptors/dist/index.d.ts +10 -0
  6. package/.papi/descriptors/dist/index.js +237 -0
  7. package/.papi/descriptors/dist/index.mjs +148 -0
  8. package/.papi/descriptors/dist/metadataTypes-E4AQJDJR.mjs +6 -0
  9. package/.papi/descriptors/dist/metadataTypes.d.ts +2 -0
  10. package/.papi/descriptors/dist/people_lite.d.ts +7757 -0
  11. package/.papi/descriptors/dist/people_lite_metadata-EIVHV27X.mjs +6 -0
  12. package/.papi/descriptors/dist/people_lite_metadata.d.ts +2 -0
  13. package/.papi/descriptors/generated.json +1 -0
  14. package/.papi/descriptors/package.json +24 -0
  15. package/.papi/metadata/people_lite.scale +0 -0
  16. package/.papi/polkadot-api.json +15 -0
  17. package/dist/constants.d.ts +2 -2
  18. package/dist/constants.js +2 -2
  19. package/dist/crypto.d.ts +11 -5
  20. package/dist/crypto.js +47 -11
  21. package/dist/helpers/abortError.d.ts +0 -1
  22. package/dist/helpers/abortError.js +0 -3
  23. package/dist/identity/rpcAdapter.js +13 -5
  24. package/dist/identity/types.d.ts +3 -4
  25. package/dist/index.d.ts +4 -1
  26. package/dist/index.js +1 -0
  27. package/dist/papp.js +3 -3
  28. package/dist/sso/auth/attestationService.d.ts +18 -0
  29. package/dist/sso/auth/attestationService.js +171 -0
  30. package/dist/sso/auth/impl.d.ts +36 -5
  31. package/dist/sso/auth/impl.js +94 -56
  32. package/dist/sso/auth/types.d.ts +15 -2
  33. package/dist/sso/sessionManager/scale/hex.d.ts +1 -0
  34. package/dist/sso/sessionManager/scale/hex.js +3 -0
  35. package/dist/sso/sessionManager/scale/remoteMessage.d.ts +30 -12
  36. package/dist/sso/sessionManager/scale/remoteMessage.js +10 -11
  37. package/dist/sso/sessionManager/scale/signPayloadRequest.d.ts +20 -0
  38. package/dist/sso/sessionManager/scale/signPayloadRequest.js +20 -0
  39. package/dist/sso/sessionManager/scale/signPayloadResponse.d.ts +14 -0
  40. package/dist/sso/sessionManager/scale/signPayloadResponse.js +10 -0
  41. package/dist/sso/sessionManager/userSession.d.ts +5 -7
  42. package/dist/sso/sessionManager/userSession.js +53 -12
  43. package/dist/sso/userSecretRepository.d.ts +1 -0
  44. package/dist/sso/userSecretRepository.js +2 -1
  45. package/dist/sso/userSessionRepository.js +0 -1
  46. package/package.json +12 -9
  47. package/dist/adapters/identity/rpc.d.ts +0 -6
  48. package/dist/adapters/identity/rpc.js +0 -101
  49. package/dist/adapters/identity/types.d.ts +0 -10
  50. package/dist/adapters/identity/types.js +0 -1
  51. package/dist/adapters/lazyClient/papi.d.ts +0 -3
  52. package/dist/adapters/lazyClient/papi.js +0 -17
  53. package/dist/adapters/lazyClient/types.d.ts +0 -5
  54. package/dist/adapters/lazyClient/types.js +0 -1
  55. package/dist/adapters/statement/rpc.d.ts +0 -3
  56. package/dist/adapters/statement/rpc.js +0 -93
  57. package/dist/adapters/statement/types.d.ts +0 -9
  58. package/dist/adapters/statement/types.js +0 -1
  59. package/dist/adapters/storage/localStorage.d.ts +0 -2
  60. package/dist/adapters/storage/localStorage.js +0 -34
  61. package/dist/adapters/storage/memory.d.ts +0 -2
  62. package/dist/adapters/storage/memory.js +0 -22
  63. package/dist/adapters/storage/types.d.ts +0 -7
  64. package/dist/adapters/storage/types.js +0 -1
  65. package/dist/adapters/transport/rpc.d.ts +0 -3
  66. package/dist/adapters/transport/rpc.js +0 -51
  67. package/dist/adapters/transport/types.d.ts +0 -6
  68. package/dist/adapters/transport/types.js +0 -1
  69. package/dist/components/auth/codec.d.ts +0 -9
  70. package/dist/components/auth/codec.js +0 -10
  71. package/dist/components/auth/codecs.d.ts +0 -9
  72. package/dist/components/auth/codecs.js +0 -10
  73. package/dist/components/auth/index.d.ts +0 -36
  74. package/dist/components/auth/index.js +0 -150
  75. package/dist/components/auth/types.d.ts +0 -15
  76. package/dist/components/auth/types.js +0 -1
  77. package/dist/components/session.d.ts +0 -34
  78. package/dist/components/session.js +0 -54
  79. package/dist/components/sso/index.d.ts +0 -36
  80. package/dist/components/sso/index.js +0 -150
  81. package/dist/components/sso/scale/handshake.d.ts +0 -9
  82. package/dist/components/sso/scale/handshake.js +0 -10
  83. package/dist/components/sso/types.d.ts +0 -15
  84. package/dist/components/sso/types.js +0 -1
  85. package/dist/components/transport.d.ts +0 -27
  86. package/dist/components/transport.js +0 -57
  87. package/dist/components/user/codec.d.ts +0 -16
  88. package/dist/components/user/codec.js +0 -13
  89. package/dist/components/user/index.d.ts +0 -22
  90. package/dist/components/user/index.js +0 -58
  91. package/dist/components/user/ssoMessageStream.d.ts +0 -10
  92. package/dist/components/user/ssoMessageStream.js +0 -8
  93. package/dist/components/user/ssoSession.d.ts +0 -5
  94. package/dist/components/user/ssoSession.js +0 -5
  95. package/dist/components/user/storage.d.ts +0 -27
  96. package/dist/components/user/storage.js +0 -143
  97. package/dist/components/user/types.d.ts +0 -6
  98. package/dist/components/user/types.js +0 -1
  99. package/dist/components/user/userSessionStorage.d.ts +0 -20
  100. package/dist/components/user/userSessionStorage.js +0 -24
  101. package/dist/components/user.d.ts +0 -74
  102. package/dist/components/user.js +0 -188
  103. package/dist/helpers/result.d.ts +0 -12
  104. package/dist/helpers/result.js +0 -15
  105. package/dist/helpers/result.spec.d.ts +0 -1
  106. package/dist/helpers/result.spec.js +0 -23
  107. package/dist/helpers.d.ts +0 -1
  108. package/dist/helpers.js +0 -3
  109. package/dist/modules/accounts.d.ts +0 -1
  110. package/dist/modules/accounts.js +0 -2
  111. package/dist/modules/crypto.d.ts +0 -23
  112. package/dist/modules/crypto.js +0 -51
  113. package/dist/modules/secretStorage.d.ts +0 -15
  114. package/dist/modules/secretStorage.js +0 -44
  115. package/dist/modules/session/helpers.d.ts +0 -5
  116. package/dist/modules/session/helpers.js +0 -29
  117. package/dist/modules/session/session.d.ts +0 -12
  118. package/dist/modules/session/session.js +0 -50
  119. package/dist/modules/session/types.d.ts +0 -12
  120. package/dist/modules/session/types.js +0 -1
  121. package/dist/modules/signIn.d.ts +0 -67
  122. package/dist/modules/signIn.js +0 -188
  123. package/dist/modules/state.d.ts +0 -16
  124. package/dist/modules/state.js +0 -50
  125. package/dist/modules/statementStore.d.ts +0 -12
  126. package/dist/modules/statementStore.js +0 -22
  127. package/dist/modules/statementTopic.d.ts +0 -34
  128. package/dist/modules/statementTopic.js +0 -46
  129. package/dist/modules/storageView.d.ts +0 -25
  130. package/dist/modules/storageView.js +0 -51
  131. package/dist/modules/syncStorage.d.ts +0 -25
  132. package/dist/modules/syncStorage.js +0 -76
  133. package/dist/modules/transport/codec.d.ts +0 -24
  134. package/dist/modules/transport/codec.js +0 -36
  135. package/dist/modules/transport/crypto.d.ts +0 -2
  136. package/dist/modules/transport/crypto.js +0 -20
  137. package/dist/modules/transport/transport.d.ts +0 -42
  138. package/dist/modules/transport/transport.js +0 -66
  139. package/dist/modules/user.d.ts +0 -67
  140. package/dist/modules/user.js +0 -188
  141. package/dist/modules/userManager.d.ts +0 -15
  142. package/dist/modules/userManager.js +0 -105
  143. package/dist/modules/userStorage.d.ts +0 -19
  144. package/dist/modules/userStorage.js +0 -108
  145. package/dist/modules/userStore.d.ts +0 -15
  146. package/dist/modules/userStore.js +0 -105
  147. package/dist/sso/session/impl.d.ts +0 -23
  148. package/dist/sso/session/impl.js +0 -57
  149. package/dist/sso/session/scale/remoteMessage.d.ts +0 -10
  150. package/dist/sso/session/scale/remoteMessage.js +0 -13
  151. package/dist/sso/session/sessionManager.d.ts +0 -23
  152. package/dist/sso/session/sessionManager.js +0 -58
  153. package/dist/sso/session/ssoSession.d.ts +0 -8
  154. package/dist/sso/session/ssoSession.js +0 -5
  155. package/dist/sso/session/ssoSessionStorage.d.ts +0 -21
  156. package/dist/sso/session/ssoSessionStorage.js +0 -20
  157. package/dist/sso/session/types.d.ts +0 -6
  158. package/dist/sso/session/types.js +0 -1
  159. package/dist/sso/session/userSessionStorage.d.ts +0 -21
  160. package/dist/sso/session/userSessionStorage.js +0 -20
  161. package/dist/sso/sessionManager/repository/ssoSessionRepository.d.ts +0 -22
  162. package/dist/sso/sessionManager/repository/ssoSessionRepository.js +0 -27
  163. package/dist/sso/sessionManager/ssoSession.d.ts +0 -23
  164. package/dist/sso/sessionManager/ssoSession.js +0 -69
  165. package/dist/sso/sessionManager/ssoSessionProver.d.ts +0 -4
  166. package/dist/sso/sessionManager/ssoSessionProver.js +0 -35
  167. package/dist/sso/ssoSessionRepository.d.ts +0 -18
  168. package/dist/sso/ssoSessionRepository.js +0 -27
  169. package/dist/structs.d.ts +0 -24
  170. package/dist/structs.js +0 -36
@@ -1,105 +0,0 @@
1
- import { err, ok, seq } from '../helpers/result.js';
2
- import { createSecretStorage } from './secretStorage.js';
3
- export const createUserManager = (appId, storage) => {
4
- const secretStorage = createSecretStorage(appId, storage);
5
- const usersStorage = createUserStorage(storage);
6
- const selectedUserStorage = createSelectedUserStorage(storage);
7
- const manager = {
8
- async readSelectedUser() {
9
- const selectedUser = await selectedUserStorage.read();
10
- return selectedUser.andThenPromise(async (selectedUser) => {
11
- if (selectedUser === null) {
12
- return ok(null);
13
- }
14
- const user = await manager.readUser(selectedUser);
15
- return user.andThenPromise(async (user) => {
16
- if (user === null) {
17
- await selectedUserStorage.clear();
18
- }
19
- return ok(user);
20
- });
21
- });
22
- },
23
- async readUser(accountId) {
24
- const user = await secretStorage.readSessionTopic(accountId).then(existingSessionTopic => existingSessionTopic.map(sessionTopic => {
25
- return sessionTopic ? { sessionTopic, accountId } : null;
26
- }));
27
- await user
28
- .andThen(v => (v ? ok(undefined) : err('User not found')))
29
- .orElsePromise(() => manager.removeUser(accountId));
30
- return user;
31
- },
32
- async createUser(user) {
33
- return (await usersStorage.add(user.accountId)).andThenPromise(async () => seq(await selectedUserStorage.write(user.accountId), await secretStorage.writeSessionTopic(user.accountId, user.sessionTopic)).map(() => user));
34
- },
35
- async removeUser(accountId) {
36
- const op = seq(await selectedUserStorage.read(), await usersStorage.remove(accountId));
37
- return op.andThenPromise(async ([selectedUser, users]) => {
38
- if (selectedUser === accountId) {
39
- const nextSelectedUser = users.at(0);
40
- if (nextSelectedUser) {
41
- await selectedUserStorage.write(nextSelectedUser);
42
- }
43
- else {
44
- await selectedUserStorage.clear();
45
- }
46
- }
47
- return secretStorage.clearSessionTopic(accountId);
48
- });
49
- },
50
- async readAccounts() {
51
- return usersStorage.read();
52
- },
53
- async selectAccount(accountId) {
54
- return selectedUserStorage.write(accountId);
55
- },
56
- };
57
- return manager;
58
- };
59
- const createUserStorage = (storage) => {
60
- const KEY = 'Users';
61
- return {
62
- async read() {
63
- const users = await storage.read(KEY);
64
- return users.map(users => {
65
- return users === null ? [] : JSON.parse(users);
66
- });
67
- },
68
- async add(user) {
69
- const usersRaw = await storage.read(KEY);
70
- const users = usersRaw.map(x => (x ? JSON.parse(x) : []));
71
- return users.andThenPromise(async (users) => {
72
- if (users.some(x => x === user)) {
73
- throw new Error(`User ${user} already exists.`);
74
- }
75
- const newUsers = users.concat(user);
76
- return storage.write(KEY, JSON.stringify(newUsers)).then(x => x.map(() => newUsers));
77
- });
78
- },
79
- async remove(user) {
80
- const usersRaw = await storage.read(KEY);
81
- const users = usersRaw.map(x => (x ? JSON.parse(x) : []));
82
- return users.andThenPromise(async (users) => {
83
- const newUsers = users.filter(x => x !== user);
84
- if (newUsers.length !== users.length) {
85
- return storage.write(KEY, JSON.stringify(newUsers)).then(x => x.map(() => newUsers));
86
- }
87
- return ok([]);
88
- });
89
- },
90
- };
91
- };
92
- const createSelectedUserStorage = (storage) => {
93
- const KEY = 'SelectedUser';
94
- return {
95
- read() {
96
- return storage.read(KEY);
97
- },
98
- write(accountId) {
99
- return storage.write(KEY, accountId);
100
- },
101
- clear() {
102
- return storage.clear(KEY);
103
- },
104
- };
105
- };
@@ -1,19 +0,0 @@
1
- import type { StorageAdapter } from '../adapters/storage/types.js';
2
- import type { Result } from '../helpers/result.js';
3
- import type { SessionTopic } from '../types.js';
4
- export type UserSession = {
5
- accountId: string;
6
- sessionTopic: SessionTopic;
7
- };
8
- export declare const createUserStorage: (appId: string, storage: StorageAdapter) => {
9
- sessions: {
10
- read(accountId: string): Promise<Result<UserSession | null>>;
11
- readSelectedUser(): Promise<Result<UserSession | null>>;
12
- create(user: UserSession): Promise<Result<UserSession>>;
13
- remove(accountId: string): Promise<Result<void, Error>>;
14
- };
15
- accounts: {
16
- read(): Promise<Result<string[], Error>>;
17
- select(accountId: string): Promise<Result<string | null, Error> | Result<null, Error>>;
18
- };
19
- };
@@ -1,108 +0,0 @@
1
- import { err, ok, seq } from '../helpers/result.js';
2
- import { createSecretStorage } from './secretStorage.js';
3
- import { reactiveStorage } from './syncStorage.js';
4
- export const createUserStorage = (appId, storage) => {
5
- const secretStorage = createSecretStorage(appId, storage);
6
- const usersStorage = createSessionsStorage(storage);
7
- const selectedUserStorage = createSelectedUserStorage(storage);
8
- const store = {
9
- sessions: {
10
- async read(accountId) {
11
- const user = await secretStorage.readSessionTopic(accountId).then(existingSessionTopic => existingSessionTopic.map(sessionTopic => {
12
- return sessionTopic ? { sessionTopic, accountId } : null;
13
- }));
14
- await user
15
- .andThen(v => (v ? ok(undefined) : err('User not found')))
16
- .orElsePromise(() => store.sessions.remove(accountId));
17
- return user;
18
- },
19
- async readSelectedUser() {
20
- const selectedUser = await selectedUserStorage.read();
21
- return selectedUser.andThenPromise(async (selectedUser) => {
22
- if (selectedUser === null) {
23
- return ok(null);
24
- }
25
- const user = await store.sessions.read(selectedUser);
26
- return user.andThenPromise(async (user) => {
27
- if (user === null) {
28
- await selectedUserStorage.clear();
29
- }
30
- return ok(user);
31
- });
32
- });
33
- },
34
- async create(user) {
35
- return (await usersStorage.add(user.accountId)).andThenPromise(async () => seq(await selectedUserStorage.write(user.accountId), await secretStorage.writeSessionTopic(user.accountId, user.sessionTopic)).map(() => user));
36
- },
37
- async remove(accountId) {
38
- const op = seq(await selectedUserStorage.read(), await usersStorage.remove(accountId));
39
- return op.andThenPromise(async ([selectedUser, users]) => {
40
- if (selectedUser === accountId) {
41
- const nextSelectedUser = users.at(0);
42
- if (nextSelectedUser) {
43
- await selectedUserStorage.write(nextSelectedUser);
44
- }
45
- else {
46
- await selectedUserStorage.clear();
47
- }
48
- }
49
- return secretStorage.clearSessionTopic(accountId);
50
- });
51
- },
52
- },
53
- accounts: {
54
- async read() {
55
- return usersStorage.read();
56
- },
57
- async select(accountId) {
58
- return selectedUserStorage.write(accountId);
59
- },
60
- },
61
- };
62
- return store;
63
- };
64
- const createSessionsStorage = (storage) => {
65
- const reactive = reactiveStorage({
66
- storage,
67
- key: 'Users',
68
- autosync: true,
69
- initial: [],
70
- from: x => JSON.parse(x),
71
- to: x => JSON.stringify(x),
72
- });
73
- return {
74
- async read() {
75
- return reactive.read();
76
- },
77
- async add(user) {
78
- const users = await reactive.read();
79
- return users.andThenPromise(async (users) => {
80
- if (users.some(x => x === user)) {
81
- throw new Error(`User ${user} already exists.`);
82
- }
83
- const newUsers = users.concat(user);
84
- return reactive.write(newUsers).then(x => x.map(() => newUsers));
85
- });
86
- },
87
- async remove(user) {
88
- const users = await reactive.read();
89
- return users.andThenPromise(async (users) => {
90
- const newUsers = users.filter(x => x !== user);
91
- if (newUsers.length !== users.length) {
92
- return reactive.write(newUsers).then(x => x.map(() => newUsers));
93
- }
94
- return ok([]);
95
- });
96
- },
97
- };
98
- };
99
- const createSelectedUserStorage = (storage) => {
100
- return reactiveStorage({
101
- storage,
102
- key: 'SelectedUser',
103
- autosync: true,
104
- initial: null,
105
- from: x => x,
106
- to: x => x,
107
- });
108
- };
@@ -1,15 +0,0 @@
1
- import type { StorageAdapter } from '../adapters/storage/types.js';
2
- import type { Result } from '../helpers/result.js';
3
- import type { SessionTopic } from '../types.js';
4
- export type UserSession = {
5
- accountId: string;
6
- sessionTopic: SessionTopic;
7
- };
8
- export declare const createUserStore: (appId: string, storage: StorageAdapter) => {
9
- readSelectedUserSession(): Promise<Result<UserSession | null>>;
10
- readUserSession(accountId: string): Promise<Result<UserSession | null>>;
11
- createUserSession(user: UserSession): Promise<Result<UserSession>>;
12
- removeUserSession(accountId: string): Promise<Result<void, Error>>;
13
- readAccounts(): Promise<Result<string[], Error>>;
14
- selectAccount(accountId: string): Promise<Result<void, Error>>;
15
- };
@@ -1,105 +0,0 @@
1
- import { err, ok, seq } from '../helpers/result.js';
2
- import { createSecretStorage } from './secretStorage.js';
3
- export const createUserStore = (appId, storage) => {
4
- const secretStorage = createSecretStorage(appId, storage);
5
- const usersStorage = createUserStorage(storage);
6
- const selectedUserStorage = createSelectedUserStorage(storage);
7
- const manager = {
8
- async readSelectedUserSession() {
9
- const selectedUser = await selectedUserStorage.read();
10
- return selectedUser.andThenPromise(async (selectedUser) => {
11
- if (selectedUser === null) {
12
- return ok(null);
13
- }
14
- const user = await manager.readUserSession(selectedUser);
15
- return user.andThenPromise(async (user) => {
16
- if (user === null) {
17
- await selectedUserStorage.clear();
18
- }
19
- return ok(user);
20
- });
21
- });
22
- },
23
- async readUserSession(accountId) {
24
- const user = await secretStorage.readSessionTopic(accountId).then(existingSessionTopic => existingSessionTopic.map(sessionTopic => {
25
- return sessionTopic ? { sessionTopic, accountId } : null;
26
- }));
27
- await user
28
- .andThen(v => (v ? ok(undefined) : err('User not found')))
29
- .orElsePromise(() => manager.removeUserSession(accountId));
30
- return user;
31
- },
32
- async createUserSession(user) {
33
- return (await usersStorage.add(user.accountId)).andThenPromise(async () => seq(await selectedUserStorage.write(user.accountId), await secretStorage.writeSessionTopic(user.accountId, user.sessionTopic)).map(() => user));
34
- },
35
- async removeUserSession(accountId) {
36
- const op = seq(await selectedUserStorage.read(), await usersStorage.remove(accountId));
37
- return op.andThenPromise(async ([selectedUser, users]) => {
38
- if (selectedUser === accountId) {
39
- const nextSelectedUser = users.at(0);
40
- if (nextSelectedUser) {
41
- await selectedUserStorage.write(nextSelectedUser);
42
- }
43
- else {
44
- await selectedUserStorage.clear();
45
- }
46
- }
47
- return secretStorage.clearSessionTopic(accountId);
48
- });
49
- },
50
- async readAccounts() {
51
- return usersStorage.read();
52
- },
53
- async selectAccount(accountId) {
54
- return selectedUserStorage.write(accountId);
55
- },
56
- };
57
- return manager;
58
- };
59
- const createUserStorage = (storage) => {
60
- const KEY = 'Users';
61
- return {
62
- async read() {
63
- const users = await storage.read(KEY);
64
- return users.map(users => {
65
- return users === null ? [] : JSON.parse(users);
66
- });
67
- },
68
- async add(user) {
69
- const usersRaw = await storage.read(KEY);
70
- const users = usersRaw.map(x => (x ? JSON.parse(x) : []));
71
- return users.andThenPromise(async (users) => {
72
- if (users.some(x => x === user)) {
73
- throw new Error(`User ${user} already exists.`);
74
- }
75
- const newUsers = users.concat(user);
76
- return storage.write(KEY, JSON.stringify(newUsers)).then(x => x.map(() => newUsers));
77
- });
78
- },
79
- async remove(user) {
80
- const usersRaw = await storage.read(KEY);
81
- const users = usersRaw.map(x => (x ? JSON.parse(x) : []));
82
- return users.andThenPromise(async (users) => {
83
- const newUsers = users.filter(x => x !== user);
84
- if (newUsers.length !== users.length) {
85
- return storage.write(KEY, JSON.stringify(newUsers)).then(x => x.map(() => newUsers));
86
- }
87
- return ok([]);
88
- });
89
- },
90
- };
91
- };
92
- const createSelectedUserStorage = (storage) => {
93
- const KEY = 'SelectedUser';
94
- return {
95
- read() {
96
- return storage.read(KEY);
97
- },
98
- write(accountId) {
99
- return storage.write(KEY, accountId);
100
- },
101
- clear() {
102
- return storage.clear(KEY);
103
- },
104
- };
105
- };
@@ -1,23 +0,0 @@
1
- import type { Transport } from '@novasamatech/statement-store';
2
- import type { StorageAdapter } from '@novasamatech/storage-adapter';
3
- import type { UserSession, ssoSessionStorage } from './ssoSessionStorage.js';
4
- export type SsoSessionManager = ReturnType<typeof createSsoSessionManager>;
5
- type Params = {
6
- transport: Transport;
7
- storage: StorageAdapter;
8
- ssoSessionStorage: ssoSessionStorage;
9
- };
10
- export declare function createSsoSessionManager({ ssoSessionStorage, transport }: Params): {
11
- sessions: {
12
- add(value: UserSession): import("neverthrow").ResultAsync<UserSession, Error>;
13
- filter(fn: (value: UserSession) => boolean): import("neverthrow").ResultAsync<UserSession[], Error>;
14
- mutate(fn: (value: UserSession[]) => UserSession[]): import("neverthrow").ResultAsync<UserSession[], Error>;
15
- read(): import("neverthrow").ResultAsync<UserSession[], Error>;
16
- write(value: UserSession[]): import("neverthrow").ResultAsync<UserSession[], Error> | import("neverthrow").ResultAsync<null, Error>;
17
- clear(): import("neverthrow").ResultAsync<void, Error>;
18
- subscribe(fn: (value: UserSession[]) => void): VoidFunction;
19
- };
20
- disconnect: (session: UserSession) => import("neverthrow").ResultAsync<undefined, Error>;
21
- destroy(): void;
22
- };
23
- export {};
@@ -1,57 +0,0 @@
1
- import { okAsync } from 'neverthrow';
2
- import { createSSOSession } from './ssoSession.js';
3
- export function createSsoSessionManager({ ssoSessionStorage, transport }) {
4
- let unsubStatements = null;
5
- const disconnect = (session) => {
6
- return ssoSessionStorage.mutate(sessions => sessions.filter(s => s.id !== session.id)).map(() => undefined);
7
- };
8
- const unsubSessions = ssoSessionStorage.subscribe(userSessions => {
9
- if (unsubStatements) {
10
- unsubStatements();
11
- unsubStatements = null;
12
- }
13
- const ssoSessions = [];
14
- for (const userSession of userSessions) {
15
- const session = createSSOSession({
16
- localAccount: userSession.local,
17
- remoteAccount: userSession.remote,
18
- transport,
19
- });
20
- session.subscribe(message => {
21
- switch (message.data.tag) {
22
- case 'v1': {
23
- switch (message.data.value.tag) {
24
- case 'Disconnected':
25
- return disconnect(userSession).map(() => true);
26
- }
27
- }
28
- }
29
- return okAsync(false);
30
- });
31
- ssoSessions.push(session);
32
- }
33
- unsubStatements = () => {
34
- for (const session of ssoSessions) {
35
- session.dispose();
36
- }
37
- };
38
- });
39
- return {
40
- sessions: ssoSessionStorage,
41
- disconnect,
42
- destroy() {
43
- unsubSessions();
44
- },
45
- };
46
- }
47
- // function createDisconnectMessage(ssSecret: SsSecret, topic: Uint8Array) {
48
- // const statement = createStatement(ssSecret, {
49
- // priority: 0,
50
- // channel: createRequestChannel(topic),
51
- // topics: [topic],
52
- // data: SSOMessage.enc({
53
- // tag: 'Disconnected',
54
- // value: undefined,
55
- // }),
56
- // });
57
- // }
@@ -1,10 +0,0 @@
1
- export declare const HostRemoteMessageCodec: import("scale-ts").Codec<{
2
- messageId: string;
3
- data: {
4
- tag: "v1";
5
- value: {
6
- tag: "Disconnected";
7
- value: undefined;
8
- };
9
- };
10
- }>;
@@ -1,13 +0,0 @@
1
- import { Enum, Struct, _void, str } from 'scale-ts';
2
- export const HostRemoteMessageCodec = Struct({
3
- messageId: str,
4
- data: Enum({
5
- v1: Enum({
6
- Disconnected: _void,
7
- // TODO implement
8
- // SigningRequest: Bytes(),
9
- // TODO implement
10
- // SigningResponse: Bytes(),
11
- }),
12
- }),
13
- });
@@ -1,23 +0,0 @@
1
- import type { StorageAdapter } from '../../adapters/storage/types.js';
2
- import type { Transport } from '../../modules/transport/transport.js';
3
- import type { UserSession, UserSessionStorage } from './userSessionStorage.js';
4
- export type SessionManager = ReturnType<typeof createSessionManager>;
5
- type Params = {
6
- transport: Transport;
7
- storage: StorageAdapter;
8
- userSessionStorage: UserSessionStorage;
9
- };
10
- export declare function createSessionManager({ userSessionStorage, storage, transport }: Params): {
11
- sessions: {
12
- add(value: UserSession): import("neverthrow").ResultAsync<UserSession, Error>;
13
- filter(fn: (value: UserSession) => boolean): import("neverthrow").ResultAsync<UserSession[], Error>;
14
- mutate(fn: (value: UserSession[]) => UserSession[]): import("neverthrow").ResultAsync<UserSession[], Error>;
15
- read(): import("neverthrow").ResultAsync<UserSession[], Error>;
16
- write(value: UserSession[]): import("neverthrow").ResultAsync<UserSession[], Error> | import("neverthrow").ResultAsync<null, Error>;
17
- clear(): import("neverthrow").ResultAsync<void, Error>;
18
- subscribe(fn: (value: UserSession[]) => void): VoidFunction;
19
- };
20
- disconnect: (session: UserSession) => import("neverthrow").ResultAsync<undefined, Error>;
21
- destroy(): void;
22
- };
23
- export {};
@@ -1,58 +0,0 @@
1
- import { okAsync } from 'neverthrow';
2
- import { createSSOSession } from './ssoSession.js';
3
- export function createSessionManager({ userSessionStorage, storage, transport }) {
4
- let unsubStatements = null;
5
- const disconnect = (session) => {
6
- return userSessionStorage.mutate(sessions => sessions.filter(s => s.id !== session.id)).map(() => undefined);
7
- };
8
- const unsubSessions = userSessionStorage.subscribe(userSessions => {
9
- if (unsubStatements) {
10
- unsubStatements();
11
- unsubStatements = null;
12
- }
13
- const ssoSessions = [];
14
- for (const userSession of userSessions) {
15
- const session = createSSOSession({
16
- ownAccount: userSession.host,
17
- peerAccount: userSession.peer,
18
- storage,
19
- transport,
20
- });
21
- session.subscribe(message => {
22
- switch (message.data.tag) {
23
- case 'v1': {
24
- switch (message.data.value.tag) {
25
- case 'Disconnected':
26
- return disconnect(userSession).map(() => true);
27
- }
28
- }
29
- }
30
- return okAsync(false);
31
- });
32
- ssoSessions.push(session);
33
- }
34
- unsubStatements = () => {
35
- for (const session of ssoSessions) {
36
- session.dispose();
37
- }
38
- };
39
- });
40
- return {
41
- sessions: userSessionStorage,
42
- disconnect,
43
- destroy() {
44
- unsubSessions();
45
- },
46
- };
47
- }
48
- // function createDisconnectMessage(ssSecret: SsSecret, topic: Uint8Array) {
49
- // const statement = createStatement(ssSecret, {
50
- // priority: 0,
51
- // channel: createRequestChannel(topic),
52
- // topics: [topic],
53
- // data: SSOMessage.enc({
54
- // tag: 'Disconnected',
55
- // value: undefined,
56
- // }),
57
- // });
58
- // }
@@ -1,8 +0,0 @@
1
- import type { LocalSessionAccount, RemoteSessionAccount, Session, Transport } from '@novasamatech/statement-store';
2
- import { HostRemoteMessageCodec } from './scale/remoteMessage.js';
3
- export type SsoSession = Session<typeof HostRemoteMessageCodec>;
4
- export declare function createSSOSession({ localAccount, remoteAccount, transport, }: {
5
- localAccount: LocalSessionAccount;
6
- remoteAccount: RemoteSessionAccount;
7
- transport: Transport;
8
- }): SsoSession;
@@ -1,5 +0,0 @@
1
- import { createSession } from '@novasamatech/statement-store';
2
- import { HostRemoteMessageCodec } from './scale/remoteMessage.js';
3
- export function createSSOSession({ localAccount, remoteAccount, transport, }) {
4
- return createSession({ localAccount, remoteAccount, transport, codec: HostRemoteMessageCodec });
5
- }
@@ -1,21 +0,0 @@
1
- import type { LocalSessionAccount, RemoteSessionAccount } from '@novasamatech/statement-store';
2
- import type { StorageAdapter } from '@novasamatech/storage-adapter';
3
- export type ssoSessionStorage = ReturnType<typeof createSsoSessionStorage>;
4
- export type UserSession = {
5
- id: string;
6
- local: LocalSessionAccount;
7
- remote: RemoteSessionAccount;
8
- };
9
- type Params = {
10
- storage: StorageAdapter;
11
- };
12
- export declare const createSsoSessionStorage: ({ storage }: Params) => {
13
- add(value: UserSession): import("neverthrow").ResultAsync<UserSession, Error>;
14
- filter(fn: (value: UserSession) => boolean): import("neverthrow").ResultAsync<UserSession[], Error>;
15
- mutate(fn: (value: UserSession[]) => UserSession[]): import("neverthrow").ResultAsync<UserSession[], Error>;
16
- read(): import("neverthrow").ResultAsync<UserSession[], Error>;
17
- write(value: UserSession[]): import("neverthrow").ResultAsync<UserSession[], Error> | import("neverthrow").ResultAsync<null, Error>;
18
- clear(): import("neverthrow").ResultAsync<void, Error>;
19
- subscribe(fn: (value: UserSession[]) => void): VoidFunction;
20
- };
21
- export {};
@@ -1,20 +0,0 @@
1
- import { LocalSessionAccountCodec, RemoteSessionAccountCodec } from '@novasamatech/statement-store';
2
- import { fieldListView } from '@novasamatech/storage-adapter';
3
- import { fromHex, toHex } from '@polkadot-api/utils';
4
- import { Struct, Vector, str } from 'scale-ts';
5
- const userSessionCodec = Struct({
6
- id: str,
7
- local: LocalSessionAccountCodec,
8
- remote: RemoteSessionAccountCodec,
9
- });
10
- const userSessionsCodec = Vector(userSessionCodec);
11
- export const createSsoSessionStorage = ({ storage }) => {
12
- return fieldListView({
13
- storage,
14
- key: 'Sessions',
15
- autosync: true,
16
- initial: [],
17
- from: x => userSessionsCodec.dec(fromHex(x)),
18
- to: x => toHex(userSessionsCodec.enc(x)),
19
- });
20
- };
@@ -1,6 +0,0 @@
1
- import type { EncrSecret, SharedSecret, SsSecret } from '../../modules/crypto.js';
2
- export type UserSecrets = {
3
- sharedSecret: SharedSecret;
4
- encr: EncrSecret;
5
- ss: SsSecret;
6
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,21 +0,0 @@
1
- import type { LocalSessionAccount, RemoteSessionAccount } from '@novasamatech/statement-store';
2
- import type { StorageAdapter } from '@novasamatech/storage-adapter';
3
- export type UserSessionStorage = ReturnType<typeof createUserSessionStorage>;
4
- export type UserSession = {
5
- id: string;
6
- local: LocalSessionAccount;
7
- remote: RemoteSessionAccount;
8
- };
9
- type Params = {
10
- storage: StorageAdapter;
11
- };
12
- export declare const createUserSessionStorage: ({ storage }: Params) => {
13
- add(value: UserSession): import("neverthrow").ResultAsync<UserSession, Error>;
14
- filter(fn: (value: UserSession) => boolean): import("neverthrow").ResultAsync<UserSession[], Error>;
15
- mutate(fn: (value: UserSession[]) => UserSession[]): import("neverthrow").ResultAsync<UserSession[], Error>;
16
- read(): import("neverthrow").ResultAsync<UserSession[], Error>;
17
- write(value: UserSession[]): import("neverthrow").ResultAsync<UserSession[], Error> | import("neverthrow").ResultAsync<null, Error>;
18
- clear(): import("neverthrow").ResultAsync<void, Error>;
19
- subscribe(fn: (value: UserSession[]) => void): VoidFunction;
20
- };
21
- export {};
@@ -1,20 +0,0 @@
1
- import { LocalSessionAccountCodec, RemoteSessionAccountCodec } from '@novasamatech/statement-store';
2
- import { fieldListView } from '@novasamatech/storage-adapter';
3
- import { fromHex, toHex } from '@polkadot-api/utils';
4
- import { Struct, Vector, str } from 'scale-ts';
5
- const userSessionCodec = Struct({
6
- id: str,
7
- local: LocalSessionAccountCodec,
8
- remote: RemoteSessionAccountCodec,
9
- });
10
- const userSessionsCodec = Vector(userSessionCodec);
11
- export const createUserSessionStorage = ({ storage }) => {
12
- return fieldListView({
13
- storage,
14
- key: 'Sessions',
15
- autosync: true,
16
- initial: [],
17
- from: x => userSessionsCodec.dec(fromHex(x)),
18
- to: x => toHex(userSessionsCodec.enc(x)),
19
- });
20
- };