@pagopa/io-react-native-wallet 0.11.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (217) hide show
  1. package/lib/commonjs/client/generated/wallet-provider.js +126 -0
  2. package/lib/commonjs/client/generated/wallet-provider.js.map +1 -0
  3. package/lib/commonjs/client/index.js +40 -0
  4. package/lib/commonjs/client/index.js.map +1 -0
  5. package/lib/commonjs/credential/issuance/02-evaluate-issuer-trust.js +2 -1
  6. package/lib/commonjs/credential/issuance/02-evaluate-issuer-trust.js.map +1 -1
  7. package/lib/commonjs/credential/issuance/03-start-credential-issuance.js +287 -0
  8. package/lib/commonjs/credential/issuance/03-start-credential-issuance.js.map +1 -0
  9. package/lib/commonjs/credential/issuance/03-start-user-authorization.js +56 -83
  10. package/lib/commonjs/credential/issuance/03-start-user-authorization.js.map +1 -1
  11. package/lib/commonjs/credential/issuance/04-complete-user-authorization.js +88 -0
  12. package/lib/commonjs/credential/issuance/04-complete-user-authorization.js.map +1 -1
  13. package/lib/commonjs/credential/issuance/05-authorize-access.js +56 -33
  14. package/lib/commonjs/credential/issuance/05-authorize-access.js.map +1 -1
  15. package/lib/commonjs/credential/issuance/06-obtain-credential.js +51 -78
  16. package/lib/commonjs/credential/issuance/06-obtain-credential.js.map +1 -1
  17. package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js +21 -44
  18. package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
  19. package/lib/commonjs/credential/issuance/index.js +7 -0
  20. package/lib/commonjs/credential/issuance/index.js.map +1 -1
  21. package/lib/commonjs/credential/issuance/types.js +28 -0
  22. package/lib/commonjs/credential/issuance/types.js.map +1 -0
  23. package/lib/commonjs/index.js +10 -1
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/pid/sd-jwt/converters.js +5 -9
  26. package/lib/commonjs/pid/sd-jwt/converters.js.map +1 -1
  27. package/lib/commonjs/pid/sd-jwt/types.js +3 -3
  28. package/lib/commonjs/pid/sd-jwt/types.js.map +1 -1
  29. package/lib/commonjs/sd-jwt/__test__/converters.test.js +1 -1
  30. package/lib/commonjs/sd-jwt/__test__/converters.test.js.map +1 -1
  31. package/lib/commonjs/sd-jwt/__test__/index.test.js +30 -43
  32. package/lib/commonjs/sd-jwt/__test__/index.test.js.map +1 -1
  33. package/lib/commonjs/sd-jwt/__test__/types.test.js +16 -24
  34. package/lib/commonjs/sd-jwt/__test__/types.test.js.map +1 -1
  35. package/lib/commonjs/sd-jwt/index.js +3 -9
  36. package/lib/commonjs/sd-jwt/index.js.map +1 -1
  37. package/lib/commonjs/sd-jwt/types.js +11 -16
  38. package/lib/commonjs/sd-jwt/types.js.map +1 -1
  39. package/lib/commonjs/trust/types.js +70 -29
  40. package/lib/commonjs/trust/types.js.map +1 -1
  41. package/lib/commonjs/utils/auth.js +44 -0
  42. package/lib/commonjs/utils/auth.js.map +1 -0
  43. package/lib/commonjs/utils/errors.js +104 -1
  44. package/lib/commonjs/utils/errors.js.map +1 -1
  45. package/lib/commonjs/utils/integrity.js +2 -0
  46. package/lib/commonjs/utils/integrity.js.map +1 -0
  47. package/lib/commonjs/utils/misc.js +34 -1
  48. package/lib/commonjs/utils/misc.js.map +1 -1
  49. package/lib/commonjs/utils/par.js +23 -15
  50. package/lib/commonjs/utils/par.js.map +1 -1
  51. package/lib/commonjs/utils/pop.js +33 -0
  52. package/lib/commonjs/utils/pop.js.map +1 -0
  53. package/lib/commonjs/wallet-instance/index.js +29 -0
  54. package/lib/commonjs/wallet-instance/index.js.map +1 -0
  55. package/lib/commonjs/wallet-instance-attestation/issuing.js +62 -65
  56. package/lib/commonjs/wallet-instance-attestation/issuing.js.map +1 -1
  57. package/lib/commonjs/wallet-instance-attestation/types.js +8 -8
  58. package/lib/commonjs/wallet-instance-attestation/types.js.map +1 -1
  59. package/lib/module/client/generated/wallet-provider.js +102 -0
  60. package/lib/module/client/generated/wallet-provider.js.map +1 -0
  61. package/lib/module/client/index.js +33 -0
  62. package/lib/module/client/index.js.map +1 -0
  63. package/lib/module/credential/issuance/02-evaluate-issuer-trust.js +2 -1
  64. package/lib/module/credential/issuance/02-evaluate-issuer-trust.js.map +1 -1
  65. package/lib/module/credential/issuance/03-start-credential-issuance.js +276 -0
  66. package/lib/module/credential/issuance/03-start-credential-issuance.js.map +1 -0
  67. package/lib/module/credential/issuance/03-start-user-authorization.js +56 -80
  68. package/lib/module/credential/issuance/03-start-user-authorization.js.map +1 -1
  69. package/lib/module/credential/issuance/04-complete-user-authorization.js +85 -1
  70. package/lib/module/credential/issuance/04-complete-user-authorization.js.map +1 -1
  71. package/lib/module/credential/issuance/05-authorize-access.js +54 -33
  72. package/lib/module/credential/issuance/05-authorize-access.js.map +1 -1
  73. package/lib/module/credential/issuance/06-obtain-credential.js +50 -75
  74. package/lib/module/credential/issuance/06-obtain-credential.js.map +1 -1
  75. package/lib/module/credential/issuance/07-verify-and-parse-credential.js +21 -44
  76. package/lib/module/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
  77. package/lib/module/credential/issuance/index.js +2 -1
  78. package/lib/module/credential/issuance/index.js.map +1 -1
  79. package/lib/module/credential/issuance/types.js +18 -0
  80. package/lib/module/credential/issuance/types.js.map +1 -0
  81. package/lib/module/index.js +3 -1
  82. package/lib/module/index.js.map +1 -1
  83. package/lib/module/pid/sd-jwt/converters.js +5 -9
  84. package/lib/module/pid/sd-jwt/converters.js.map +1 -1
  85. package/lib/module/pid/sd-jwt/types.js +3 -3
  86. package/lib/module/pid/sd-jwt/types.js.map +1 -1
  87. package/lib/module/sd-jwt/__test__/converters.test.js +1 -1
  88. package/lib/module/sd-jwt/__test__/converters.test.js.map +1 -1
  89. package/lib/module/sd-jwt/__test__/index.test.js +30 -43
  90. package/lib/module/sd-jwt/__test__/index.test.js.map +1 -1
  91. package/lib/module/sd-jwt/__test__/types.test.js +16 -24
  92. package/lib/module/sd-jwt/__test__/types.test.js.map +1 -1
  93. package/lib/module/sd-jwt/index.js +3 -9
  94. package/lib/module/sd-jwt/index.js.map +1 -1
  95. package/lib/module/sd-jwt/types.js +11 -16
  96. package/lib/module/sd-jwt/types.js.map +1 -1
  97. package/lib/module/trust/types.js +70 -29
  98. package/lib/module/trust/types.js.map +1 -1
  99. package/lib/module/utils/auth.js +35 -0
  100. package/lib/module/utils/auth.js.map +1 -0
  101. package/lib/module/utils/errors.js +98 -0
  102. package/lib/module/utils/errors.js.map +1 -1
  103. package/lib/module/utils/integrity.js +2 -0
  104. package/lib/module/utils/integrity.js.map +1 -0
  105. package/lib/module/utils/misc.js +31 -0
  106. package/lib/module/utils/misc.js.map +1 -1
  107. package/lib/module/utils/par.js +24 -16
  108. package/lib/module/utils/par.js.map +1 -1
  109. package/lib/module/utils/pop.js +24 -0
  110. package/lib/module/utils/pop.js.map +1 -0
  111. package/lib/module/wallet-instance/index.js +23 -0
  112. package/lib/module/wallet-instance/index.js.map +1 -0
  113. package/lib/module/wallet-instance-attestation/issuing.js +63 -67
  114. package/lib/module/wallet-instance-attestation/issuing.js.map +1 -1
  115. package/lib/module/wallet-instance-attestation/types.js +8 -8
  116. package/lib/module/wallet-instance-attestation/types.js.map +1 -1
  117. package/lib/typescript/client/generated/wallet-provider.d.ts +264 -0
  118. package/lib/typescript/client/generated/wallet-provider.d.ts.map +1 -0
  119. package/lib/typescript/client/index.d.ts +7 -0
  120. package/lib/typescript/client/index.d.ts.map +1 -0
  121. package/lib/typescript/credential/issuance/01-start-flow.d.ts +1 -0
  122. package/lib/typescript/credential/issuance/01-start-flow.d.ts.map +1 -1
  123. package/lib/typescript/credential/issuance/02-evaluate-issuer-trust.d.ts +2 -1
  124. package/lib/typescript/credential/issuance/02-evaluate-issuer-trust.d.ts.map +1 -1
  125. package/lib/typescript/credential/issuance/03-start-credential-issuance.d.ts +41 -0
  126. package/lib/typescript/credential/issuance/03-start-credential-issuance.d.ts.map +1 -0
  127. package/lib/typescript/credential/issuance/03-start-user-authorization.d.ts +23 -18
  128. package/lib/typescript/credential/issuance/03-start-user-authorization.d.ts.map +1 -1
  129. package/lib/typescript/credential/issuance/04-complete-user-authorization.d.ts +24 -12
  130. package/lib/typescript/credential/issuance/04-complete-user-authorization.d.ts.map +1 -1
  131. package/lib/typescript/credential/issuance/05-authorize-access.d.ts +22 -16
  132. package/lib/typescript/credential/issuance/05-authorize-access.d.ts.map +1 -1
  133. package/lib/typescript/credential/issuance/06-obtain-credential.d.ts +19 -26
  134. package/lib/typescript/credential/issuance/06-obtain-credential.d.ts.map +1 -1
  135. package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts +10 -15
  136. package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts.map +1 -1
  137. package/lib/typescript/credential/issuance/index.d.ts +3 -4
  138. package/lib/typescript/credential/issuance/index.d.ts.map +1 -1
  139. package/lib/typescript/credential/issuance/types.d.ts +63 -0
  140. package/lib/typescript/credential/issuance/types.d.ts.map +1 -0
  141. package/lib/typescript/credential/presentation/types.d.ts +6 -6
  142. package/lib/typescript/index.d.ts +6 -1
  143. package/lib/typescript/index.d.ts.map +1 -1
  144. package/lib/typescript/pid/sd-jwt/converters.d.ts.map +1 -1
  145. package/lib/typescript/pid/sd-jwt/types.d.ts +36 -36
  146. package/lib/typescript/pid/sd-jwt/types.d.ts.map +1 -1
  147. package/lib/typescript/sd-jwt/index.d.ts +40 -68
  148. package/lib/typescript/sd-jwt/index.d.ts.map +1 -1
  149. package/lib/typescript/sd-jwt/types.d.ts +64 -121
  150. package/lib/typescript/sd-jwt/types.d.ts.map +1 -1
  151. package/lib/typescript/trust/index.d.ts +150 -48
  152. package/lib/typescript/trust/index.d.ts.map +1 -1
  153. package/lib/typescript/trust/types.d.ts +2838 -1740
  154. package/lib/typescript/trust/types.d.ts.map +1 -1
  155. package/lib/typescript/utils/auth.d.ts +52 -0
  156. package/lib/typescript/utils/auth.d.ts.map +1 -0
  157. package/lib/typescript/utils/errors.d.ts +48 -0
  158. package/lib/typescript/utils/errors.d.ts.map +1 -1
  159. package/lib/typescript/utils/integrity.d.ts +21 -0
  160. package/lib/typescript/utils/integrity.d.ts.map +1 -0
  161. package/lib/typescript/utils/misc.d.ts +18 -0
  162. package/lib/typescript/utils/misc.d.ts.map +1 -1
  163. package/lib/typescript/utils/par.d.ts +8 -31
  164. package/lib/typescript/utils/par.d.ts.map +1 -1
  165. package/lib/typescript/utils/pop.d.ts +26 -0
  166. package/lib/typescript/utils/pop.d.ts.map +1 -0
  167. package/lib/typescript/wallet-instance/index.d.ts +7 -0
  168. package/lib/typescript/wallet-instance/index.d.ts.map +1 -0
  169. package/lib/typescript/wallet-instance-attestation/issuing.d.ts +17 -4
  170. package/lib/typescript/wallet-instance-attestation/issuing.d.ts.map +1 -1
  171. package/lib/typescript/wallet-instance-attestation/types.d.ts +64 -64
  172. package/lib/typescript/wallet-instance-attestation/types.d.ts.map +1 -1
  173. package/package.json +9 -5
  174. package/src/client/generated/wallet-provider.ts +173 -0
  175. package/src/client/index.ts +53 -0
  176. package/src/credential/issuance/01-start-flow.ts +1 -0
  177. package/src/credential/issuance/02-evaluate-issuer-trust.ts +2 -1
  178. package/src/credential/issuance/03-start-credential-issuance.ts +407 -0
  179. package/src/credential/issuance/03-start-user-authorization.ts +91 -92
  180. package/src/credential/issuance/04-complete-user-authorization.ts +114 -13
  181. package/src/credential/issuance/05-authorize-access.ts +74 -49
  182. package/src/credential/issuance/06-obtain-credential.ts +77 -111
  183. package/src/credential/issuance/07-verify-and-parse-credential.ts +30 -67
  184. package/src/credential/issuance/index.ts +6 -4
  185. package/src/credential/issuance/types.ts +25 -0
  186. package/src/index.ts +8 -0
  187. package/src/pid/sd-jwt/converters.ts +5 -11
  188. package/src/pid/sd-jwt/types.ts +8 -6
  189. package/src/sd-jwt/__test__/converters.test.ts +1 -1
  190. package/src/sd-jwt/__test__/index.test.ts +45 -74
  191. package/src/sd-jwt/__test__/types.test.ts +21 -33
  192. package/src/sd-jwt/index.ts +3 -12
  193. package/src/sd-jwt/types.ts +17 -22
  194. package/src/trust/types.ts +64 -32
  195. package/src/utils/auth.ts +37 -0
  196. package/src/utils/errors.ts +112 -0
  197. package/src/utils/integrity.ts +23 -0
  198. package/src/utils/misc.ts +43 -0
  199. package/src/utils/par.ts +29 -17
  200. package/src/utils/pop.ts +34 -0
  201. package/src/wallet-instance/index.ts +29 -0
  202. package/src/wallet-instance-attestation/issuing.ts +101 -97
  203. package/src/wallet-instance-attestation/types.ts +12 -8
  204. package/lib/commonjs/credential/issuance/07-confirm-credential.js +0 -6
  205. package/lib/commonjs/credential/issuance/07-confirm-credential.js.map +0 -1
  206. package/lib/commonjs/credential/issuance/08-confirm-credential.js +0 -6
  207. package/lib/commonjs/credential/issuance/08-confirm-credential.js.map +0 -1
  208. package/lib/module/credential/issuance/07-confirm-credential.js +0 -2
  209. package/lib/module/credential/issuance/07-confirm-credential.js.map +0 -1
  210. package/lib/module/credential/issuance/08-confirm-credential.js +0 -2
  211. package/lib/module/credential/issuance/08-confirm-credential.js.map +0 -1
  212. package/lib/typescript/credential/issuance/07-confirm-credential.d.ts +0 -11
  213. package/lib/typescript/credential/issuance/07-confirm-credential.d.ts.map +0 -1
  214. package/lib/typescript/credential/issuance/08-confirm-credential.d.ts +0 -11
  215. package/lib/typescript/credential/issuance/08-confirm-credential.d.ts.map +0 -1
  216. package/src/credential/issuance/07-confirm-credential.ts +0 -14
  217. package/src/credential/issuance/08-confirm-credential.ts +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/wallet-instance-attestation/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AA2BzB,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CACvD,OAAO,mCAAmC,CAC3C,CAAC;AACF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe9C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAChD,OAAO,4BAA4B,CACpC,CAAC;AACF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BvC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/wallet-instance-attestation/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AA2BzB,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CACvD,OAAO,mCAAmC,CAC3C,CAAC;AACF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe9C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAChD,OAAO,4BAA4B,CACpC,CAAC;AACF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/io-react-native-wallet",
3
- "version": "0.11.1",
3
+ "version": "0.13.0",
4
4
  "description": "Provide data structures, helpers and API for IO Wallet",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -34,7 +34,9 @@
34
34
  "release": "release-it",
35
35
  "example": "yarn --cwd example",
36
36
  "bootstrap": "yarn example && yarn install",
37
- "code-review": "yarn lint && yarn typecheck && yarn test"
37
+ "code-review": "yarn generate && yarn lint && yarn typecheck && yarn test",
38
+ "generate-wallet-provider-client": "typed-openapi openapi/wallet-provider.yaml -o src/client/generated/wallet-provider.ts -r zod",
39
+ "generate": "yarn generate-wallet-provider-client"
38
40
  },
39
41
  "keywords": [
40
42
  "react-native",
@@ -53,8 +55,8 @@
53
55
  "devDependencies": {
54
56
  "@pagopa/eslint-config": "^3.0.0",
55
57
  "@pagopa/io-react-native-crypto": "^0.2.3",
56
- "@pagopa/io-react-native-jwt": "^1.0.0",
57
- "@react-native-community/eslint-config": "^3.2.0",
58
+ "@pagopa/io-react-native-jwt": "^1.2.0",
59
+ "@react-native/eslint-config": "^0.72.2",
58
60
  "@rushstack/eslint-patch": "^1.3.2",
59
61
  "@types/jest": "^28.1.2",
60
62
  "@types/react": "~17.0.21",
@@ -66,8 +68,9 @@
66
68
  "pod-install": "^0.1.0",
67
69
  "prettier": "^2.0.5",
68
70
  "react": "18.2.0",
69
- "react-native": "0.71.8",
71
+ "react-native": "0.72.14",
70
72
  "react-native-builder-bob": "^0.20.0",
73
+ "typed-openapi": "^0.4.1",
71
74
  "typescript": "^5.0.2"
72
75
  },
73
76
  "resolutions": {
@@ -105,6 +108,7 @@
105
108
  ]
106
109
  },
107
110
  "dependencies": {
111
+ "parse-url": "^9.2.0",
108
112
  "react-native-url-polyfill": "^2.0.0",
109
113
  "react-native-uuid": "^2.0.1",
110
114
  "zod": "^3.21.4"
@@ -0,0 +1,173 @@
1
+ import z from "zod";
2
+
3
+ export type NonceDetailView = z.infer<typeof NonceDetailView>;
4
+ export const NonceDetailView = z.object({
5
+ nonce: z.string(),
6
+ });
7
+
8
+ export type WalletAttestationView = z.infer<typeof WalletAttestationView>;
9
+ export const WalletAttestationView = z.string();
10
+
11
+ export type CreateWalletInstanceBody = z.infer<typeof CreateWalletInstanceBody>;
12
+ export const CreateWalletInstanceBody = z.object({
13
+ challenge: z.string(),
14
+ key_attestation: z.string(),
15
+ hardware_key_tag: z.string(),
16
+ });
17
+
18
+ export type CreateWalletAttestationBody = z.infer<typeof CreateWalletAttestationBody>;
19
+ export const CreateWalletAttestationBody = z.object({
20
+ grant_type: z.literal("urn:ietf:params:oauth:grant-type:jwt-bearer"),
21
+ assertion: z.string(),
22
+ });
23
+
24
+ export type ProblemDetail = z.infer<typeof ProblemDetail>;
25
+ export const ProblemDetail = z.object({
26
+ type: z.string().optional(),
27
+ title: z.string().optional(),
28
+ status: z.number().optional(),
29
+ detail: z.string().optional(),
30
+ instance: z.string().optional(),
31
+ });
32
+
33
+ export type FiscalCode = z.infer<typeof FiscalCode>;
34
+ export const FiscalCode = z.string();
35
+
36
+ export type Id = z.infer<typeof Id>;
37
+ export const Id = z.string();
38
+
39
+ export type get_GetNonce = typeof get_GetNonce;
40
+ export const get_GetNonce = {
41
+ method: z.literal("GET"),
42
+ path: z.literal("/nonce"),
43
+ parameters: z.never(),
44
+ response: NonceDetailView,
45
+ };
46
+
47
+ export type post_CreateWalletInstance = typeof post_CreateWalletInstance;
48
+ export const post_CreateWalletInstance = {
49
+ method: z.literal("POST"),
50
+ path: z.literal("/wallet-instances"),
51
+ parameters: z.object({
52
+ body: CreateWalletInstanceBody,
53
+ }),
54
+ response: z.unknown(),
55
+ };
56
+
57
+ export type post_CreateWalletAttestation = typeof post_CreateWalletAttestation;
58
+ export const post_CreateWalletAttestation = {
59
+ method: z.literal("POST"),
60
+ path: z.literal("/token"),
61
+ parameters: z.object({
62
+ body: CreateWalletAttestationBody,
63
+ }),
64
+ response: z.unknown(),
65
+ };
66
+
67
+ // <EndpointByMethod>
68
+ export const EndpointByMethod = {
69
+ get: {
70
+ "/nonce": get_GetNonce,
71
+ },
72
+ post: {
73
+ "/wallet-instances": post_CreateWalletInstance,
74
+ "/token": post_CreateWalletAttestation,
75
+ },
76
+ };
77
+ export type EndpointByMethod = typeof EndpointByMethod;
78
+ // </EndpointByMethod>
79
+
80
+ // <EndpointByMethod.Shorthands>
81
+ export type GetEndpoints = EndpointByMethod["get"];
82
+ export type PostEndpoints = EndpointByMethod["post"];
83
+ export type AllEndpoints = EndpointByMethod[keyof EndpointByMethod];
84
+ // </EndpointByMethod.Shorthands>
85
+
86
+ // <ApiClientTypes>
87
+ export type EndpointParameters = {
88
+ body?: unknown;
89
+ query?: Record<string, unknown>;
90
+ header?: Record<string, unknown>;
91
+ path?: Record<string, unknown>;
92
+ };
93
+
94
+ export type MutationMethod = "post" | "put" | "patch" | "delete";
95
+ export type Method = "get" | "head" | MutationMethod;
96
+
97
+ export type DefaultEndpoint = {
98
+ parameters?: EndpointParameters | undefined;
99
+ response: unknown;
100
+ };
101
+
102
+ export type Endpoint<TConfig extends DefaultEndpoint = DefaultEndpoint> = {
103
+ operationId: string;
104
+ method: Method;
105
+ path: string;
106
+ parameters?: TConfig["parameters"];
107
+ meta: {
108
+ alias: string;
109
+ hasParameters: boolean;
110
+ areParametersRequired: boolean;
111
+ };
112
+ response: TConfig["response"];
113
+ };
114
+
115
+ type Fetcher = (
116
+ method: Method,
117
+ url: string,
118
+ parameters?: EndpointParameters | undefined,
119
+ ) => Promise<Endpoint["response"]>;
120
+
121
+ type RequiredKeys<T> = {
122
+ [P in keyof T]-?: undefined extends T[P] ? never : P;
123
+ }[keyof T];
124
+
125
+ type MaybeOptionalArg<T> = RequiredKeys<T> extends never ? [config?: T] : [config: T];
126
+
127
+ // </ApiClientTypes>
128
+
129
+ // <ApiClient>
130
+ export class ApiClient {
131
+ baseUrl: string = "";
132
+
133
+ constructor(public fetcher: Fetcher) {}
134
+
135
+ setBaseUrl(baseUrl: string) {
136
+ this.baseUrl = baseUrl;
137
+ return this;
138
+ }
139
+
140
+ // <ApiClient.get>
141
+ get<Path extends keyof GetEndpoints, TEndpoint extends GetEndpoints[Path]>(
142
+ path: Path,
143
+ ...params: MaybeOptionalArg<z.infer<TEndpoint["parameters"]>>
144
+ ): Promise<z.infer<TEndpoint["response"]>> {
145
+ return this.fetcher("get", this.baseUrl + path, params[0]) as Promise<z.infer<TEndpoint["response"]>>;
146
+ }
147
+ // </ApiClient.get>
148
+
149
+ // <ApiClient.post>
150
+ post<Path extends keyof PostEndpoints, TEndpoint extends PostEndpoints[Path]>(
151
+ path: Path,
152
+ ...params: MaybeOptionalArg<z.infer<TEndpoint["parameters"]>>
153
+ ): Promise<z.infer<TEndpoint["response"]>> {
154
+ return this.fetcher("post", this.baseUrl + path, params[0]) as Promise<z.infer<TEndpoint["response"]>>;
155
+ }
156
+ // </ApiClient.post>
157
+ }
158
+
159
+ export function createApiClient(fetcher: Fetcher, baseUrl?: string) {
160
+ return new ApiClient(fetcher).setBaseUrl(baseUrl ?? "");
161
+ }
162
+
163
+ /**
164
+ Example usage:
165
+ const api = createApiClient((method, url, params) =>
166
+ fetch(url, { method, body: JSON.stringify(params) }).then((res) => res.json()),
167
+ );
168
+ api.get("/users").then((users) => console.log(users));
169
+ api.post("/users", { body: { name: "John" } }).then((user) => console.log(user));
170
+ api.put("/users/:id", { path: { id: 1 }, body: { name: "John" } }).then((user) => console.log(user));
171
+ */
172
+
173
+ // </ApiClient
@@ -0,0 +1,53 @@
1
+ import { WalletProviderResponseError } from "../utils/errors";
2
+ import {
3
+ ProblemDetail,
4
+ createApiClient as createWalletProviderApiClient,
5
+ } from "./generated/wallet-provider";
6
+ import { ApiClient as WalletProviderApiClient } from "./generated/wallet-provider";
7
+
8
+ export type WalletProviderClient = WalletProviderApiClient;
9
+
10
+ const validateResponse = async (response: Response) => {
11
+ if (!response.ok) {
12
+ let problemDetail: ProblemDetail = {};
13
+ try {
14
+ problemDetail = ProblemDetail.parse(await response.json());
15
+ } catch {
16
+ problemDetail = {
17
+ title: "Invalid response from Wallet Provider",
18
+ };
19
+ }
20
+
21
+ throw new WalletProviderResponseError(
22
+ problemDetail.title ?? "Invalid response from Wallet Provider",
23
+ problemDetail.type,
24
+ problemDetail.detail,
25
+ response.status
26
+ );
27
+ }
28
+ return response;
29
+ };
30
+
31
+ export const getWalletProviderClient = (context: {
32
+ walletProviderBaseUrl: string;
33
+ appFetch?: GlobalFetch["fetch"];
34
+ }) => {
35
+ const { walletProviderBaseUrl, appFetch = fetch } = context;
36
+
37
+ return createWalletProviderApiClient(
38
+ (method, url, params) =>
39
+ appFetch(url, {
40
+ method,
41
+ body: params ? JSON.stringify(params.body) : undefined,
42
+ })
43
+ .then(validateResponse)
44
+ .then((res) => {
45
+ const contentType = res.headers.get("content-type");
46
+ if (contentType === "application/json") {
47
+ return res.json();
48
+ }
49
+ return res.text();
50
+ }),
51
+ walletProviderBaseUrl
52
+ );
53
+ };
@@ -1,4 +1,5 @@
1
1
  /**
2
+ * WARNING: This is the first function to be called in the issuing flow. The next function to be called is {@link evaluateIssuerTrust}.
2
3
  * The beginning of the issuing flow.
3
4
  * To be implemented accordind to the user touchpoint
4
5
  *
@@ -13,10 +13,11 @@ export type EvaluateIssuerTrust = (
13
13
  }>;
14
14
 
15
15
  /**
16
+ * WARNING: This function must be called after {@link startFlow}. The next function to be called is {@link startUserAuthorization}.
16
17
  * The Issuer trust evaluation phase.
17
18
  * Fetch the Issuer's configuration and verify trust.
18
19
  *
19
- * @param issuerUrl The base url of the Issuer
20
+ * @param issuerUrl The base url of the Issuer returned by {@link startFlow}
20
21
  * @param context.appFetch (optional) fetch api implementation. Default: built-in fetch
21
22
  * @returns The Issuer's configuration
22
23
  */