@arcblock/did-connect-js 1.29.23 → 4.0.0-beta.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 (118) hide show
  1. package/{lib/adapters/detect.d.cts → dist/adapters/detect.d.ts} +3 -5
  2. package/dist/adapters/detect.d.ts.map +1 -0
  3. package/dist/adapters/detect.js +13 -0
  4. package/dist/adapters/detect.js.map +1 -0
  5. package/dist/adapters/express.d.ts +40 -0
  6. package/dist/adapters/express.d.ts.map +1 -0
  7. package/dist/adapters/express.js +30 -0
  8. package/dist/adapters/express.js.map +1 -0
  9. package/dist/adapters/hono.d.ts +49 -0
  10. package/dist/adapters/hono.d.ts.map +1 -0
  11. package/dist/adapters/hono.js +176 -0
  12. package/dist/adapters/hono.js.map +1 -0
  13. package/dist/authenticator/base.d.ts +21 -0
  14. package/dist/authenticator/base.d.ts.map +1 -0
  15. package/dist/authenticator/base.js +109 -0
  16. package/dist/authenticator/base.js.map +1 -0
  17. package/dist/authenticator/wallet.d.ts +221 -0
  18. package/dist/authenticator/wallet.d.ts.map +1 -0
  19. package/dist/authenticator/wallet.js +588 -0
  20. package/dist/authenticator/wallet.js.map +1 -0
  21. package/dist/handlers/base.d.ts +25 -0
  22. package/dist/handlers/base.d.ts.map +1 -0
  23. package/dist/handlers/base.js +48 -0
  24. package/dist/handlers/base.js.map +1 -0
  25. package/dist/handlers/util.d.ts +48 -0
  26. package/dist/handlers/util.d.ts.map +1 -0
  27. package/dist/handlers/util.js +812 -0
  28. package/dist/handlers/util.js.map +1 -0
  29. package/dist/handlers/wallet.d.ts +96 -0
  30. package/dist/handlers/wallet.d.ts.map +1 -0
  31. package/dist/handlers/wallet.js +129 -0
  32. package/dist/handlers/wallet.js.map +1 -0
  33. package/dist/index.d.ts +10 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +9 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/protocol.d.ts +14 -0
  38. package/dist/protocol.d.ts.map +1 -0
  39. package/dist/protocol.js +37 -0
  40. package/dist/protocol.js.map +1 -0
  41. package/dist/schema/claims.d.ts +17 -0
  42. package/dist/schema/claims.d.ts.map +1 -0
  43. package/dist/schema/claims.js +205 -0
  44. package/dist/schema/claims.js.map +1 -0
  45. package/dist/schema/index.d.ts +7 -0
  46. package/dist/schema/index.d.ts.map +1 -0
  47. package/dist/schema/index.js +49 -0
  48. package/dist/schema/index.js.map +1 -0
  49. package/dist/storage/kv.d.ts +31 -0
  50. package/dist/storage/kv.d.ts.map +1 -0
  51. package/dist/storage/kv.js +54 -0
  52. package/dist/storage/kv.js.map +1 -0
  53. package/dist/types.d.ts +53 -0
  54. package/dist/types.d.ts.map +1 -0
  55. package/dist/types.js +2 -0
  56. package/dist/types.js.map +1 -0
  57. package/package.json +48 -104
  58. package/LICENSE +0 -13
  59. package/README.md +0 -210
  60. package/esm/_virtual/rolldown_runtime.mjs +0 -8
  61. package/esm/adapters/detect.d.mts +0 -11
  62. package/esm/adapters/detect.mjs +0 -16
  63. package/esm/adapters/express.d.mts +0 -48
  64. package/esm/adapters/express.mjs +0 -39
  65. package/esm/adapters/hono.d.mts +0 -57
  66. package/esm/adapters/hono.mjs +0 -164
  67. package/esm/authenticator/base.d.mts +0 -23
  68. package/esm/authenticator/base.mjs +0 -88
  69. package/esm/authenticator/wallet.d.mts +0 -270
  70. package/esm/authenticator/wallet.mjs +0 -556
  71. package/esm/handlers/base.d.mts +0 -32
  72. package/esm/handlers/base.mjs +0 -37
  73. package/esm/handlers/util.d.mts +0 -70
  74. package/esm/handlers/util.mjs +0 -739
  75. package/esm/handlers/wallet.d.mts +0 -120
  76. package/esm/handlers/wallet.mjs +0 -139
  77. package/esm/index.d.mts +0 -8
  78. package/esm/index.mjs +0 -8
  79. package/esm/package.mjs +0 -118
  80. package/esm/protocol.d.mts +0 -15
  81. package/esm/protocol.mjs +0 -40
  82. package/esm/schema/claims.d.mts +0 -18
  83. package/esm/schema/claims.mjs +0 -154
  84. package/esm/schema/index.d.mts +0 -9
  85. package/esm/schema/index.mjs +0 -49
  86. package/esm/storage/kv.d.mts +0 -33
  87. package/esm/storage/kv.mjs +0 -55
  88. package/esm/types.d.mts +0 -55
  89. package/esm/types.mjs +0 -1
  90. package/lib/_virtual/rolldown_runtime.cjs +0 -31
  91. package/lib/adapters/detect.cjs +0 -18
  92. package/lib/adapters/express.cjs +0 -41
  93. package/lib/adapters/express.d.cts +0 -48
  94. package/lib/adapters/hono.cjs +0 -167
  95. package/lib/adapters/hono.d.cts +0 -57
  96. package/lib/authenticator/base.cjs +0 -91
  97. package/lib/authenticator/base.d.cts +0 -23
  98. package/lib/authenticator/wallet.cjs +0 -564
  99. package/lib/authenticator/wallet.d.cts +0 -270
  100. package/lib/handlers/base.cjs +0 -40
  101. package/lib/handlers/base.d.cts +0 -32
  102. package/lib/handlers/util.cjs +0 -759
  103. package/lib/handlers/util.d.cts +0 -70
  104. package/lib/handlers/wallet.cjs +0 -139
  105. package/lib/handlers/wallet.d.cts +0 -119
  106. package/lib/index.cjs +0 -16
  107. package/lib/index.d.cts +0 -8
  108. package/lib/package.cjs +0 -121
  109. package/lib/protocol.cjs +0 -46
  110. package/lib/protocol.d.cts +0 -15
  111. package/lib/schema/claims.cjs +0 -156
  112. package/lib/schema/claims.d.cts +0 -18
  113. package/lib/schema/index.cjs +0 -52
  114. package/lib/schema/index.d.cts +0 -9
  115. package/lib/storage/kv.cjs +0 -57
  116. package/lib/storage/kv.d.cts +0 -33
  117. package/lib/types.cjs +0 -0
  118. package/lib/types.d.cts +0 -55
@@ -0,0 +1,221 @@
1
+ import BaseAuthenticator from './base.js';
2
+ export interface ApplicationInfo {
3
+ name: string;
4
+ description: string;
5
+ icon: string;
6
+ link?: string;
7
+ path?: string;
8
+ publisher?: string;
9
+ }
10
+ export interface ChainInfo {
11
+ id: string;
12
+ type: string;
13
+ host: string;
14
+ }
15
+ export interface WalletAuthenticatorConfig {
16
+ wallet: any;
17
+ appInfo: ApplicationInfo | ((params: any) => ApplicationInfo | Promise<ApplicationInfo>);
18
+ memberAppInfo?: ApplicationInfo | ((params: any) => ApplicationInfo | Promise<ApplicationInfo>) | null;
19
+ delegator?: any;
20
+ delegation?: string | ((params: any) => string | Promise<string>);
21
+ timeout?: number;
22
+ chainInfo?: ChainInfo | ((params: any) => ChainInfo | Promise<ChainInfo>);
23
+ baseUrl?: string;
24
+ tokenKey?: string;
25
+ }
26
+ declare class WalletAuthenticator extends BaseAuthenticator {
27
+ wallet: any;
28
+ appInfo: any;
29
+ memberAppInfo: any;
30
+ chainInfo: any;
31
+ delegator: any;
32
+ delegation: any;
33
+ baseUrl: string;
34
+ tokenKey: string;
35
+ timeout: number;
36
+ static formatDisplay(display: any): string;
37
+ /**
38
+ * Creates an instance of DID Authenticator.
39
+ *
40
+ * @class
41
+ * @param {object} config
42
+ * @param {WalletObject|Function} config.wallet - wallet instance {@see @ocap/wallet} or a function that returns wallet instance
43
+ * @param {WalletObject|Function} [config.delegator] - the party that authorizes `wallet` to perform actions on behalf of `wallet`
44
+ * @param {string|Function} [config.delegation] - the jwt token that proves delegation relationship
45
+ * @param {ApplicationInfo|Function} config.appInfo - application basic info or a function that returns application info
46
+ * @param {ChainInfo|Function} config.chainInfo - application chain info or a function that returns chain info
47
+ * @param {Number} [config.timeout=8000] - timeout in milliseconds when generating claim
48
+ * @param {object} [config.baseUrl] - url to assemble wallet request uri, can be inferred from request object
49
+ * @param {string} [config.tokenKey='_t_'] - query param key for `token`
50
+ */
51
+ constructor({ wallet, appInfo, memberAppInfo, delegator, delegation, timeout, chainInfo, baseUrl, tokenKey, }: WalletAuthenticatorConfig);
52
+ /**
53
+ * Generate a deep link url that can be displayed as QRCode for DID Wallet to consume
54
+ *
55
+ * @method
56
+ * @param {object} params
57
+ * @param {string} params.baseUrl - baseUrl inferred from request object
58
+ * @param {string} params.pathname - wallet callback pathname
59
+ * @param {string} params.token - action token
60
+ * @param {object} params.query - params that should be persisted in wallet callback url
61
+ * @returns {string}
62
+ */
63
+ uri({ baseUrl, pathname, token, query, }?: {
64
+ baseUrl?: string;
65
+ pathname?: string;
66
+ token?: string;
67
+ query?: Record<string, any>;
68
+ }): string;
69
+ /**
70
+ * Compute public url to return to wallet
71
+ *
72
+ * @method
73
+ * @param {string} pathname
74
+ * @param {object} params
75
+ * @returns {string}
76
+ */
77
+ getPublicUrl(pathname: string, params?: Record<string, any>, baseUrl?: string): string;
78
+ /**
79
+ * Sign a plain response, usually on auth success or error
80
+ *
81
+ * @method
82
+ * @param {object} params
83
+ * @param {object} params.response - response
84
+ * @param {string} params.errorMessage - error message, default to empty
85
+ * @param {string} params.successMessage - success message, default to empty
86
+ * @param {string} params.nextWorkflow - https://github.com/ArcBlock/ABT-DID-Protocol#concatenate-multiple-workflow
87
+ * @param {string} params.nextUrl - tell wallet do open this url in webview
88
+ * @param {object} params.cookies - key-value pairs to be set as cookie before open nextUrl
89
+ * @param {object} params.storages - key-value pairs to be set as localStorage before open nextUrl
90
+ * @param {string} baseUrl
91
+ * @param {object} request
92
+ * @returns {Promise<object>} { appPk, agentPk, authInfo }
93
+ */
94
+ signResponse({ response, errorMessage, successMessage, nextWorkflow, nextUrl, cookies, storages, }: {
95
+ response?: any;
96
+ errorMessage?: string;
97
+ successMessage?: string;
98
+ nextWorkflow?: string;
99
+ nextUrl?: string;
100
+ cookies?: Record<string, any>;
101
+ storages?: any;
102
+ }, baseUrl: string, request: any, extraParams?: Record<string, any>): Promise<any>;
103
+ /**
104
+ * Sign a auth response that returned to wallet: tell the wallet the appInfo/chainInfo
105
+ *
106
+ * @method
107
+ * @param {object} params
108
+ * @param {object} params.claims - info required by application to complete the auth
109
+ * @param {string} params.pathname - pathname to assemble callback url
110
+ * @param {string} params.baseUrl - baseUrl
111
+ * @param {object} params.challenge - random challenge to be included in the body
112
+ * @param {object} params.extraParams - extra query params and locale
113
+ * @param {object} params.request
114
+ * @param {object} params.context
115
+ * @param {string} params.context.token - action token
116
+ * @param {number} params.context.currentStep - current step
117
+ * @param {string} [params.context.sharedKey] - shared key between app and wallet
118
+ * @param {string} [params.context.encryptionKey] - encryption key from wallet
119
+ * @param {Function} [params.context.mfaCode] - function used to generate mfa code
120
+ * @param {string} params.context.userDid - decoded from req.query, base58
121
+ * @param {string} params.context.userPk - decoded from req.query, base58
122
+ * @param {string} params.context.didwallet - DID Wallet os and version
123
+ * @returns {Promise<object>} { appPk, agentPk, sharedKey, authInfo }
124
+ */
125
+ sign({ context, request, claims, pathname, baseUrl, challenge, extraParams, }: {
126
+ context: any;
127
+ request: any;
128
+ claims: any;
129
+ pathname?: string;
130
+ baseUrl?: string;
131
+ challenge?: string;
132
+ extraParams?: Record<string, any>;
133
+ }): Promise<any>;
134
+ /**
135
+ * Determine chainInfo on the fly
136
+ *
137
+ * @param {object} params - contains the context of this request
138
+ * @param {object|undefined} [info=undefined] - chain info object or function
139
+ * @returns {Promise<ChainInfo>}
140
+ * @memberof WalletAuthenticator
141
+ */
142
+ getChainInfo(params: any, info?: any): Promise<ChainInfo>;
143
+ /**
144
+ * Determine appInfo/memberAppInfo on the fly
145
+ *
146
+ * @param {object} params - contains the context of this request
147
+ * @param {string} key - appInfo | memberAppInfo
148
+ * @returns {Promise<ApplicationInfo>}
149
+ * @memberof WalletAuthenticator
150
+ */
151
+ getAppInfo(params: any, key?: 'appInfo' | 'memberAppInfo'): Promise<any>;
152
+ getWalletInfo(params: any): Promise<any>;
153
+ getDelegator(params: any): Promise<any>;
154
+ getDelegation(params: any): Promise<any>;
155
+ /**
156
+ * Verify a DID auth response sent from DID Wallet
157
+ *
158
+ * @method
159
+ * @param {object} data
160
+ * @param {string} [locale=en]
161
+ * @param {boolean} [enforceTimestamp=true]
162
+ * @returns Promise<boolean>
163
+ */
164
+ verify(data: any, locale?: string, enforceTimestamp?: boolean): Promise<{
165
+ token: any;
166
+ userDid: string;
167
+ userPk: any;
168
+ claims: any;
169
+ action: any;
170
+ challenge: any;
171
+ timestamp: string;
172
+ }>;
173
+ genRequestedClaims({ claims, context, extraParams, }: {
174
+ claims: any;
175
+ context: any;
176
+ extraParams: Record<string, any>;
177
+ }): Promise<any[]>;
178
+ getClaimInfo({ claim, context, extraParams, }: {
179
+ claim: any;
180
+ context: any;
181
+ extraParams: Record<string, any>;
182
+ }): Promise<any>;
183
+ signature({ claim, context, extraParams, }: {
184
+ claim: any;
185
+ context: any;
186
+ extraParams: Record<string, any>;
187
+ }): Promise<{
188
+ type: string;
189
+ description: any;
190
+ origin: string;
191
+ typeUrl: any;
192
+ display: string;
193
+ method: any;
194
+ digest: any;
195
+ chainInfo: any;
196
+ meta: any;
197
+ mfa: any;
198
+ nonce: any;
199
+ requirement: any;
200
+ }>;
201
+ prepareTx({ claim, context, extraParams, }: {
202
+ claim: any;
203
+ context: any;
204
+ extraParams: Record<string, any>;
205
+ }): Promise<{
206
+ type: string;
207
+ description: any;
208
+ partialTx: string;
209
+ display: string;
210
+ requirement: any;
211
+ chainInfo: any;
212
+ meta: any;
213
+ mfa: any;
214
+ nonce: any;
215
+ }>;
216
+ _validateAppInfo(info: any, allowEmpty?: boolean): any;
217
+ _isValidChainInfo(x: any): boolean;
218
+ tryWithTimeout<T>(asyncFn: () => Promise<T>, label?: string): Promise<T>;
219
+ }
220
+ export default WalletAuthenticator;
221
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/authenticator/wallet.ts"],"names":[],"mappings":"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"}