@novasamatech/host-papp 0.5.0-0 → 0.5.0-10

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 (184) 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/package.json +24 -0
  14. package/.papi/metadata/people_lite.scale +0 -0
  15. package/.papi/polkadot-api.json +15 -0
  16. package/dist/adapters/identity/rpc.d.ts +6 -4
  17. package/dist/adapters/identity/rpc.js +96 -26
  18. package/dist/adapters/identity/types.d.ts +3 -1
  19. package/dist/adapters/lazyClient/papi.js +5 -0
  20. package/dist/adapters/lazyClient/types.d.ts +1 -0
  21. package/dist/adapters/statement/rpc.js +58 -10
  22. package/dist/adapters/statement/types.d.ts +6 -3
  23. package/dist/adapters/storage/localStorage.js +26 -4
  24. package/dist/adapters/storage/memory.js +14 -4
  25. package/dist/adapters/storage/types.d.ts +5 -2
  26. package/dist/adapters/storage/types.js +1 -1
  27. package/dist/components/auth/codec.d.ts +9 -0
  28. package/dist/components/auth/codec.js +10 -0
  29. package/dist/components/auth/codecs.d.ts +9 -0
  30. package/dist/components/auth/codecs.js +10 -0
  31. package/dist/components/auth/index.d.ts +36 -0
  32. package/dist/components/auth/index.js +150 -0
  33. package/dist/components/auth/types.d.ts +15 -0
  34. package/dist/components/auth/types.js +1 -0
  35. package/dist/components/session.d.ts +34 -0
  36. package/dist/components/session.js +54 -0
  37. package/dist/components/sso/index.d.ts +36 -0
  38. package/dist/components/sso/index.js +150 -0
  39. package/dist/components/sso/scale/handshake.d.ts +9 -0
  40. package/dist/components/sso/scale/handshake.js +10 -0
  41. package/dist/components/sso/types.d.ts +15 -0
  42. package/dist/components/sso/types.js +1 -0
  43. package/dist/components/transport.d.ts +27 -0
  44. package/dist/components/transport.js +57 -0
  45. package/dist/components/user/codec.d.ts +16 -0
  46. package/dist/components/user/codec.js +13 -0
  47. package/dist/components/user/index.d.ts +22 -0
  48. package/dist/components/user/index.js +58 -0
  49. package/dist/components/user/ssoMessageStream.d.ts +10 -0
  50. package/dist/components/user/ssoMessageStream.js +8 -0
  51. package/dist/components/user/ssoSession.d.ts +5 -0
  52. package/dist/components/user/ssoSession.js +5 -0
  53. package/dist/components/user/storage.d.ts +27 -0
  54. package/dist/components/user/storage.js +143 -0
  55. package/dist/components/user/types.d.ts +6 -0
  56. package/dist/components/user/types.js +1 -0
  57. package/dist/components/user/userSessionStorage.d.ts +20 -0
  58. package/dist/components/user/userSessionStorage.js +24 -0
  59. package/dist/components/user.d.ts +74 -0
  60. package/dist/components/user.js +188 -0
  61. package/dist/constants.d.ts +2 -1
  62. package/dist/constants.js +5 -1
  63. package/dist/crypto.d.ts +29 -0
  64. package/dist/crypto.js +86 -0
  65. package/dist/helpers/abortError.d.ts +4 -0
  66. package/dist/helpers/abortError.js +8 -0
  67. package/dist/helpers/callbackRaceResolver.d.ts +1 -0
  68. package/dist/helpers/callbackRaceResolver.js +17 -0
  69. package/dist/helpers/result.d.ts +12 -0
  70. package/dist/helpers/result.js +15 -0
  71. package/dist/helpers/result.spec.d.ts +1 -0
  72. package/dist/helpers/result.spec.js +23 -0
  73. package/dist/helpers/state.d.ts +16 -0
  74. package/dist/helpers/state.js +51 -0
  75. package/dist/helpers/utils.d.ts +2 -1
  76. package/dist/helpers/utils.js +11 -2
  77. package/dist/helpers/zipWith.d.ts +4 -0
  78. package/dist/helpers/zipWith.js +11 -0
  79. package/dist/identity/impl.d.ts +6 -0
  80. package/dist/identity/impl.js +68 -0
  81. package/dist/identity/rpcAdapter.d.ts +3 -0
  82. package/dist/identity/rpcAdapter.js +46 -0
  83. package/dist/identity/types.d.ts +21 -0
  84. package/dist/identity/types.js +1 -0
  85. package/dist/index.d.ts +7 -3
  86. package/dist/index.js +2 -7
  87. package/dist/modules/crypto.d.ts +8 -9
  88. package/dist/modules/crypto.js +20 -42
  89. package/dist/modules/secretStorage.d.ts +13 -12
  90. package/dist/modules/secretStorage.js +34 -43
  91. package/dist/modules/session/helpers.d.ts +5 -0
  92. package/dist/modules/session/helpers.js +29 -0
  93. package/dist/modules/session/session.d.ts +12 -0
  94. package/dist/modules/session/session.js +50 -0
  95. package/dist/modules/session/types.d.ts +12 -0
  96. package/dist/modules/session/types.js +1 -0
  97. package/dist/modules/signIn.d.ts +32 -11
  98. package/dist/modules/signIn.js +98 -101
  99. package/dist/modules/state.d.ts +16 -0
  100. package/dist/modules/state.js +50 -0
  101. package/dist/modules/statementStore.d.ts +10 -11
  102. package/dist/modules/statementStore.js +16 -14
  103. package/dist/modules/statementTopic.d.ts +34 -0
  104. package/dist/modules/statementTopic.js +46 -0
  105. package/dist/modules/storageView.d.ts +25 -0
  106. package/dist/modules/storageView.js +51 -0
  107. package/dist/modules/syncStorage.d.ts +25 -0
  108. package/dist/modules/syncStorage.js +76 -0
  109. package/dist/modules/transport/codec.d.ts +24 -0
  110. package/dist/modules/transport/codec.js +36 -0
  111. package/dist/modules/transport/crypto.d.ts +2 -0
  112. package/dist/modules/transport/crypto.js +20 -0
  113. package/dist/modules/transport/transport.d.ts +42 -0
  114. package/dist/modules/transport/transport.js +66 -0
  115. package/dist/modules/user.d.ts +67 -0
  116. package/dist/modules/user.js +188 -0
  117. package/dist/modules/userManager.d.ts +15 -0
  118. package/dist/modules/userManager.js +105 -0
  119. package/dist/modules/userStorage.d.ts +19 -0
  120. package/dist/modules/userStorage.js +108 -0
  121. package/dist/modules/userStore.d.ts +15 -0
  122. package/dist/modules/userStore.js +105 -0
  123. package/dist/papp.d.ts +25 -13
  124. package/dist/papp.js +19 -50
  125. package/dist/sso/auth/attestationService.d.ts +18 -0
  126. package/dist/sso/auth/attestationService.js +171 -0
  127. package/dist/sso/auth/impl.d.ts +53 -0
  128. package/dist/sso/auth/impl.js +161 -0
  129. package/dist/sso/auth/scale/handshake.d.ts +9 -0
  130. package/dist/sso/auth/scale/handshake.js +10 -0
  131. package/dist/sso/auth/types.d.ts +17 -0
  132. package/dist/sso/auth/types.js +1 -0
  133. package/dist/sso/session/impl.d.ts +23 -0
  134. package/dist/sso/session/impl.js +57 -0
  135. package/dist/sso/session/scale/remoteMessage.d.ts +10 -0
  136. package/dist/sso/session/scale/remoteMessage.js +13 -0
  137. package/dist/sso/session/sessionManager.d.ts +23 -0
  138. package/dist/sso/session/sessionManager.js +58 -0
  139. package/dist/sso/session/ssoSession.d.ts +8 -0
  140. package/dist/sso/session/ssoSession.js +5 -0
  141. package/dist/sso/session/ssoSessionStorage.d.ts +21 -0
  142. package/dist/sso/session/ssoSessionStorage.js +20 -0
  143. package/dist/sso/session/types.d.ts +6 -0
  144. package/dist/sso/session/types.js +1 -0
  145. package/dist/sso/session/userSessionStorage.d.ts +21 -0
  146. package/dist/sso/session/userSessionStorage.js +20 -0
  147. package/dist/sso/sessionManager/attestationService.d.ts +5 -0
  148. package/dist/sso/sessionManager/attestationService.js +15 -0
  149. package/dist/sso/sessionManager/impl.d.ts +22 -0
  150. package/dist/sso/sessionManager/impl.js +71 -0
  151. package/dist/sso/sessionManager/repository/ssoSessionRepository.d.ts +22 -0
  152. package/dist/sso/sessionManager/repository/ssoSessionRepository.js +27 -0
  153. package/dist/sso/sessionManager/scale/hex.d.ts +1 -0
  154. package/dist/sso/sessionManager/scale/hex.js +3 -0
  155. package/dist/sso/sessionManager/scale/remoteMessage.d.ts +41 -0
  156. package/dist/sso/sessionManager/scale/remoteMessage.js +13 -0
  157. package/dist/sso/sessionManager/scale/signPayloadRequest.d.ts +19 -0
  158. package/dist/sso/sessionManager/scale/signPayloadRequest.js +19 -0
  159. package/dist/sso/sessionManager/scale/signPayloadResponse.d.ts +12 -0
  160. package/dist/sso/sessionManager/scale/signPayloadResponse.js +9 -0
  161. package/dist/sso/sessionManager/scale/signRequest.d.ts +19 -0
  162. package/dist/sso/sessionManager/scale/signRequest.js +19 -0
  163. package/dist/sso/sessionManager/scale/signResponse.d.ts +6 -0
  164. package/dist/sso/sessionManager/scale/signResponse.js +5 -0
  165. package/dist/sso/sessionManager/ssoSession.d.ts +23 -0
  166. package/dist/sso/sessionManager/ssoSession.js +69 -0
  167. package/dist/sso/sessionManager/ssoSessionProver.d.ts +4 -0
  168. package/dist/sso/sessionManager/ssoSessionProver.js +35 -0
  169. package/dist/sso/sessionManager/types.d.ts +6 -0
  170. package/dist/sso/sessionManager/types.js +1 -0
  171. package/dist/sso/sessionManager/userSession.d.ts +22 -0
  172. package/dist/sso/sessionManager/userSession.js +106 -0
  173. package/dist/sso/ssoSessionProver.d.ts +4 -0
  174. package/dist/sso/ssoSessionProver.js +35 -0
  175. package/dist/sso/ssoSessionRepository.d.ts +18 -0
  176. package/dist/sso/ssoSessionRepository.js +27 -0
  177. package/dist/sso/userSecretRepository.d.ts +17 -0
  178. package/dist/sso/userSecretRepository.js +45 -0
  179. package/dist/sso/userSessionRepository.d.ts +18 -0
  180. package/dist/sso/userSessionRepository.js +26 -0
  181. package/dist/structs.d.ts +10 -10
  182. package/dist/structs.js +17 -13
  183. package/dist/types.d.ts +1 -1
  184. package/package.json +14 -7
@@ -0,0 +1,27 @@
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 { nanoid } from 'nanoid';
5
+ import { Struct, Vector, str } from 'scale-ts';
6
+ const userSessionCodec = Struct({
7
+ id: str,
8
+ local: LocalSessionAccountCodec,
9
+ remote: RemoteSessionAccountCodec,
10
+ });
11
+ export function createUserSession(localAccount, remoteAccount) {
12
+ return {
13
+ id: nanoid(12),
14
+ local: localAccount,
15
+ remote: remoteAccount,
16
+ };
17
+ }
18
+ const userSessionsCodec = Vector(userSessionCodec);
19
+ export const createSsoSessionRepository = (storage) => {
20
+ return fieldListView({
21
+ storage,
22
+ key: 'SsoSessions',
23
+ initial: [],
24
+ from: x => userSessionsCodec.dec(fromHex(x)),
25
+ to: x => toHex(userSessionsCodec.enc(x)),
26
+ });
27
+ };
@@ -0,0 +1,17 @@
1
+ import type { StorageAdapter } from '@novasamatech/storage-adapter';
2
+ import type { ResultAsync } from 'neverthrow';
3
+ import type { CodecType } from 'scale-ts';
4
+ import type { EncrSecret, SsSecret } from '../crypto.js';
5
+ type StoredUserSecrets = CodecType<typeof StoredUserSecretsCodec>;
6
+ declare const StoredUserSecretsCodec: import("scale-ts").Codec<{
7
+ ssSecret: SsSecret;
8
+ encrSecret: EncrSecret;
9
+ mnemonic: string;
10
+ }>;
11
+ export type UserSecretRepository = ReturnType<typeof createUserSecretRepository>;
12
+ export declare function createUserSecretRepository(salt: string, storage: StorageAdapter): {
13
+ read(sessionId: string): ResultAsync<StoredUserSecrets | null, Error>;
14
+ write(sessionId: string, value: StoredUserSecrets): ResultAsync<void, Error>;
15
+ clear(sessionId: string): ResultAsync<void, Error>;
16
+ };
17
+ export {};
@@ -0,0 +1,45 @@
1
+ import { gcm } from '@noble/ciphers/aes.js';
2
+ import { blake2b } from '@noble/hashes/blake2.js';
3
+ import { fromHex, toHex } from '@polkadot-api/utils';
4
+ import { fromThrowable } from 'neverthrow';
5
+ import { Struct, str } from 'scale-ts';
6
+ import { BrandedBytesCodec, stringToBytes } from '../crypto.js';
7
+ import { toError } from '../helpers/utils.js';
8
+ const StoredUserSecretsCodec = Struct({
9
+ ssSecret: BrandedBytesCodec(),
10
+ encrSecret: BrandedBytesCodec(),
11
+ mnemonic: str,
12
+ });
13
+ export function createUserSecretRepository(salt, storage) {
14
+ const baseKey = 'UserSecrets';
15
+ const encode = fromThrowable(StoredUserSecretsCodec.enc, toError);
16
+ const decode = fromThrowable((value) => (value ? StoredUserSecretsCodec.dec(value) : null), toError);
17
+ const encrypt = fromThrowable((value) => {
18
+ const aes = getAes(salt);
19
+ return toHex(aes.encrypt(value));
20
+ }, toError);
21
+ const decrypt = fromThrowable((value) => {
22
+ if (value === null) {
23
+ return null;
24
+ }
25
+ const aes = getAes(salt);
26
+ return aes.decrypt(fromHex(value));
27
+ }, toError);
28
+ return {
29
+ read(sessionId) {
30
+ return storage.read(createKey(baseKey, sessionId)).andThen(decrypt).andThen(decode);
31
+ },
32
+ write(sessionId, value) {
33
+ return encode(value)
34
+ .andThen(encrypt)
35
+ .asyncAndThen(value => storage.write(createKey(baseKey, sessionId), value));
36
+ },
37
+ clear(sessionId) {
38
+ return storage.clear(createKey(baseKey, sessionId));
39
+ },
40
+ };
41
+ }
42
+ const createKey = (key, context) => `${key}_${context}`;
43
+ function getAes(salt) {
44
+ return gcm(blake2b(stringToBytes(salt), { dkLen: 16 }), blake2b(stringToBytes('nonce'), { dkLen: 32 }));
45
+ }
@@ -0,0 +1,18 @@
1
+ import type { LocalSessionAccount, RemoteSessionAccount } from '@novasamatech/statement-store';
2
+ import type { StorageAdapter } from '@novasamatech/storage-adapter';
3
+ export type UserSessionRepository = ReturnType<typeof createUserSessionRepository>;
4
+ export type StoredUserSession = {
5
+ id: string;
6
+ localAccount: LocalSessionAccount;
7
+ remoteAccount: RemoteSessionAccount;
8
+ };
9
+ export declare function createStoredUserSession(localAccount: LocalSessionAccount, remoteAccount: RemoteSessionAccount): StoredUserSession;
10
+ export declare const createUserSessionRepository: (storage: StorageAdapter) => {
11
+ add(value: StoredUserSession): import("neverthrow").ResultAsync<StoredUserSession, Error>;
12
+ filter(fn: (value: StoredUserSession) => boolean): import("neverthrow").ResultAsync<StoredUserSession[], Error>;
13
+ mutate(fn: (value: StoredUserSession[]) => StoredUserSession[]): import("neverthrow").ResultAsync<StoredUserSession[], Error>;
14
+ read(): import("neverthrow").ResultAsync<StoredUserSession[], Error>;
15
+ write(value: StoredUserSession[]): import("neverthrow").ResultAsync<StoredUserSession[], Error> | import("neverthrow").ResultAsync<null, Error>;
16
+ clear(): import("neverthrow").ResultAsync<void, Error>;
17
+ subscribe(fn: (value: StoredUserSession[]) => void): VoidFunction;
18
+ };
@@ -0,0 +1,26 @@
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 { nanoid } from 'nanoid';
5
+ import { Struct, Vector, str } from 'scale-ts';
6
+ const storedUserSessionCodec = Struct({
7
+ id: str,
8
+ localAccount: LocalSessionAccountCodec,
9
+ remoteAccount: RemoteSessionAccountCodec,
10
+ });
11
+ export function createStoredUserSession(localAccount, remoteAccount) {
12
+ return {
13
+ id: nanoid(12),
14
+ localAccount: localAccount,
15
+ remoteAccount: remoteAccount,
16
+ };
17
+ }
18
+ export const createUserSessionRepository = (storage) => {
19
+ const codec = Vector(storedUserSessionCodec);
20
+ return fieldListView({
21
+ storage,
22
+ key: 'SsoSessions',
23
+ from: x => codec.dec(fromHex(x)),
24
+ to: x => toHex(codec.enc(x)),
25
+ });
26
+ };
package/dist/structs.d.ts CHANGED
@@ -1,24 +1,24 @@
1
- type TransportError = 'decryptionFailed' | 'decodingFailed' | 'unknown';
2
- export declare const ResponseCode: import("scale-ts").Codec<TransportError>;
3
- export declare const RequestV1: import("scale-ts").Codec<{
1
+ import type { Codec } from 'scale-ts';
2
+ export type TransportError = 'decryptionFailed' | 'decodingFailed' | 'unknown';
3
+ export declare const TransportErrorCodec: Codec<TransportError>;
4
+ export declare const Request: <T>(data: Codec<T>) => Codec<{
4
5
  requestId: string;
5
- data: Uint8Array<ArrayBufferLike>;
6
+ data: T[];
6
7
  }>;
7
- export declare const ResponseV1: import("scale-ts").Codec<{
8
+ export declare const Response: Codec<{
8
9
  requestId: string;
9
10
  responseCode: TransportError;
10
11
  }>;
11
- export declare const StatementData: import("scale-ts").Codec<{
12
- tag: "requestV1";
12
+ export declare const StatementData: <T>(data: Codec<T>) => Codec<{
13
+ tag: "request";
13
14
  value: {
14
15
  requestId: string;
15
- data: Uint8Array<ArrayBufferLike>;
16
+ data: T[];
16
17
  };
17
18
  } | {
18
- tag: "responseV1";
19
+ tag: "response";
19
20
  value: {
20
21
  requestId: string;
21
22
  responseCode: TransportError;
22
23
  };
23
24
  }>;
24
- export {};
package/dist/structs.js CHANGED
@@ -1,12 +1,12 @@
1
- import { Bytes, Enum, Struct, enhanceCodec, str, u8 } from 'scale-ts';
2
- export const ResponseCode = enhanceCodec(u8, error => {
1
+ import { Enum, Struct, Vector, enhanceCodec, str, u8 } from 'scale-ts';
2
+ export const TransportErrorCodec = enhanceCodec(u8, error => {
3
3
  switch (error) {
4
4
  case 'decryptionFailed':
5
5
  return 1;
6
6
  case 'decodingFailed':
7
7
  return 2;
8
8
  case 'unknown':
9
- return -1;
9
+ return 255;
10
10
  }
11
11
  }, code => {
12
12
  switch (code) {
@@ -18,15 +18,19 @@ export const ResponseCode = enhanceCodec(u8, error => {
18
18
  return 'unknown';
19
19
  }
20
20
  });
21
- export const RequestV1 = Struct({
21
+ export const Request = (data) => {
22
+ return Struct({
23
+ requestId: str,
24
+ data: Vector(data),
25
+ });
26
+ };
27
+ export const Response = Struct({
22
28
  requestId: str,
23
- data: Bytes(),
24
- });
25
- export const ResponseV1 = Struct({
26
- requestId: str,
27
- responseCode: ResponseCode,
28
- });
29
- export const StatementData = Enum({
30
- requestV1: RequestV1,
31
- responseV1: ResponseV1,
29
+ responseCode: TransportErrorCodec,
32
30
  });
31
+ export const StatementData = (data) => {
32
+ return Enum({
33
+ request: Request(data),
34
+ response: Response,
35
+ });
36
+ };
package/dist/types.d.ts CHANGED
@@ -2,5 +2,5 @@ declare const __brand: unique symbol;
2
2
  export type Branded<T, K extends string> = T & {
3
3
  [__brand]: K;
4
4
  };
5
- export type SessionTopic = Branded<Uint8Array, 'SessionTopic'>;
5
+ export type Callback<T, R = unknown> = (value: T) => R;
6
6
  export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@novasamatech/host-papp",
3
3
  "type": "module",
4
- "version": "0.5.0-0",
4
+ "version": "0.5.0-10",
5
5
  "description": "Polkadot app integration",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -21,18 +21,25 @@
21
21
  },
22
22
  "files": [
23
23
  "dist",
24
+ ".papi",
24
25
  "README.md"
25
26
  ],
26
27
  "dependencies": {
27
- "@polkadot-api/utils": "0.2.0",
28
- "@polkadot-api/sdk-statement": "0.2.0",
29
- "@scure/sr25519": "0.3.0",
28
+ "@noble/ciphers": "2.1.1",
30
29
  "@noble/curves": "2.0.1",
31
30
  "@noble/hashes": "2.0.1",
32
- "@noble/ciphers": "2.0.1",
33
- "polkadot-api": "1.22.0",
31
+ "@novasamatech/host-api": "0.5.0-10",
32
+ "@novasamatech/statement-store": "0.5.0-10",
33
+ "@novasamatech/storage-adapter": "0.5.0-10",
34
+ "@polkadot-api/substrate-bindings": "^0.16.5",
35
+ "@polkadot-labs/hdkd-helpers": "^0.0.27",
36
+ "@scure/sr25519": "1.0.0",
34
37
  "nanoevents": "9.1.0",
35
- "scale-ts": "1.6.1"
38
+ "nanoid": "5.1.6",
39
+ "neverthrow": "^8.2.0",
40
+ "polkadot-api": "^1.23.1",
41
+ "scale-ts": "1.6.1",
42
+ "verifiablejs": "1.1.0"
36
43
  },
37
44
  "publishConfig": {
38
45
  "access": "public"