@sphereon/ssi-sdk.oid4vci-holder 0.33.1-next.2 → 0.33.1-next.68

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 (55) hide show
  1. package/dist/index.cjs +3143 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +786 -0
  4. package/dist/index.d.ts +785 -11
  5. package/dist/index.js +3112 -31
  6. package/dist/index.js.map +1 -1
  7. package/package.json +44 -33
  8. package/src/agent/OID4VCIHolder.ts +8 -5
  9. package/dist/agent/OID4VCIHolder.d.ts +0 -59
  10. package/dist/agent/OID4VCIHolder.d.ts.map +0 -1
  11. package/dist/agent/OID4VCIHolder.js +0 -884
  12. package/dist/agent/OID4VCIHolder.js.map +0 -1
  13. package/dist/index.d.ts.map +0 -1
  14. package/dist/link-handler/index.d.ts +0 -31
  15. package/dist/link-handler/index.d.ts.map +0 -1
  16. package/dist/link-handler/index.js +0 -65
  17. package/dist/link-handler/index.js.map +0 -1
  18. package/dist/listeners/headlessStateNavListener.d.ts +0 -3
  19. package/dist/listeners/headlessStateNavListener.d.ts.map +0 -1
  20. package/dist/listeners/headlessStateNavListener.js +0 -45
  21. package/dist/listeners/headlessStateNavListener.js.map +0 -1
  22. package/dist/localization/Localization.d.ts +0 -9
  23. package/dist/localization/Localization.d.ts.map +0 -1
  24. package/dist/localization/Localization.js +0 -46
  25. package/dist/localization/Localization.js.map +0 -1
  26. package/dist/localization/translations/en.json +0 -19
  27. package/dist/localization/translations/nl.json +0 -18
  28. package/dist/machines/firstPartyMachine.d.ts +0 -15
  29. package/dist/machines/firstPartyMachine.d.ts.map +0 -1
  30. package/dist/machines/firstPartyMachine.js +0 -222
  31. package/dist/machines/firstPartyMachine.js.map +0 -1
  32. package/dist/machines/oid4vciMachine.d.ts +0 -7
  33. package/dist/machines/oid4vciMachine.d.ts.map +0 -1
  34. package/dist/machines/oid4vciMachine.js +0 -727
  35. package/dist/machines/oid4vciMachine.js.map +0 -1
  36. package/dist/mappers/OIDC4VCIBrandingMapper.d.ts +0 -16
  37. package/dist/mappers/OIDC4VCIBrandingMapper.d.ts.map +0 -1
  38. package/dist/mappers/OIDC4VCIBrandingMapper.js +0 -201
  39. package/dist/mappers/OIDC4VCIBrandingMapper.js.map +0 -1
  40. package/dist/services/FirstPartyMachineServices.d.ts +0 -9
  41. package/dist/services/FirstPartyMachineServices.d.ts.map +0 -1
  42. package/dist/services/FirstPartyMachineServices.js +0 -53
  43. package/dist/services/FirstPartyMachineServices.js.map +0 -1
  44. package/dist/services/OID4VCIHolderService.d.ts +0 -28
  45. package/dist/services/OID4VCIHolderService.d.ts.map +0 -1
  46. package/dist/services/OID4VCIHolderService.js +0 -524
  47. package/dist/services/OID4VCIHolderService.js.map +0 -1
  48. package/dist/types/FirstPartyMachine.d.ts +0 -112
  49. package/dist/types/FirstPartyMachine.d.ts.map +0 -1
  50. package/dist/types/FirstPartyMachine.js +0 -30
  51. package/dist/types/FirstPartyMachine.js.map +0 -1
  52. package/dist/types/IOID4VCIHolder.d.ts +0 -558
  53. package/dist/types/IOID4VCIHolder.d.ts.map +0 -1
  54. package/dist/types/IOID4VCIHolder.js +0 -114
  55. package/dist/types/IOID4VCIHolder.js.map +0 -1
@@ -1,727 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.OID4VCIMachine = void 0;
13
- const oid4vci_common_1 = require("@sphereon/oid4vci-common");
14
- const xstate_1 = require("xstate");
15
- const Localization_1 = require("../localization/Localization");
16
- const IOID4VCIHolder_1 = require("../types/IOID4VCIHolder");
17
- const FirstPartyMachine_1 = require("../types/FirstPartyMachine");
18
- const oid4vciHasNoContactGuard = (_ctx, _event) => {
19
- const { contact } = _ctx;
20
- return contact === undefined;
21
- };
22
- const oid4vciHasContactGuard = (_ctx, _event) => {
23
- const { contact } = _ctx;
24
- return contact !== undefined;
25
- };
26
- const oid4vciContactHasLowTrustGuard = (_ctx, _event) => {
27
- const { contact, trustedAnchors } = _ctx;
28
- return contact !== undefined && trustedAnchors !== undefined && trustedAnchors.length === 0;
29
- };
30
- const oid4vciCredentialsToSelectRequiredGuard = (_ctx, _event) => {
31
- const { credentialToSelectFrom } = _ctx;
32
- return credentialToSelectFrom && credentialToSelectFrom.length > 1;
33
- };
34
- const oid4vciRequirePinGuard = (_ctx, _event) => {
35
- var _a;
36
- const { requestData } = _ctx;
37
- return ((_a = requestData === null || requestData === void 0 ? void 0 : requestData.credentialOffer) === null || _a === void 0 ? void 0 : _a.userPinRequired) === true;
38
- };
39
- const oid4vciHasNoContactIdentityGuard = (_ctx, _event) => {
40
- const { contact, credentialsToAccept } = _ctx;
41
- let toAcceptId = credentialsToAccept[0].correlationId;
42
- if (toAcceptId.match(/^https?:\/\/.*/)) {
43
- toAcceptId = new URL(toAcceptId).hostname;
44
- }
45
- return !(contact === null || contact === void 0 ? void 0 : contact.identities.some((identity) => identity.identifier.correlationId === toAcceptId));
46
- };
47
- const oid4vciVerificationCodeGuard = (_ctx, _event) => {
48
- const { verificationCode } = _ctx;
49
- return verificationCode !== undefined && verificationCode.length > 0;
50
- };
51
- const oid4vciCreateContactGuard = (_ctx, _event) => {
52
- const { contactAlias, hasContactConsent } = _ctx;
53
- return hasContactConsent && !!contactAlias && contactAlias.length > 0;
54
- };
55
- const oid4vciHasSelectedCredentialsGuard = (_ctx, _event) => {
56
- const { selectedCredentials } = _ctx;
57
- return selectedCredentials !== undefined && selectedCredentials.length > 0;
58
- };
59
- const oid4vciIsOIDFOriginGuard = (_ctx, _event) => {
60
- // TODO in the future we need to establish if a origin is a IDF origin. So we need to check if this metadata is on the well-known location
61
- const { trustAnchors } = _ctx;
62
- return trustAnchors.length > 0;
63
- };
64
- const oid4vciNoAuthorizationGuard = (ctx, _event) => {
65
- return !oid4vciHasAuthorizationResponse(ctx, _event);
66
- };
67
- // FIXME refactor this guard
68
- const oid4vciRequireAuthorizationGuard = (ctx, _event) => {
69
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
70
- const { openID4VCIClientState } = ctx;
71
- if (!openID4VCIClientState) {
72
- throw Error('Missing openID4VCI client state in context');
73
- }
74
- if (!openID4VCIClientState.authorizationURL) {
75
- return false;
76
- }
77
- else if (openID4VCIClientState.authorizationRequestOpts) {
78
- // We have authz options or there is not credential offer to begin with.
79
- // We require authz as long as we do not have the authz code response
80
- return !((_a = ctx.openID4VCIClientState) === null || _a === void 0 ? void 0 : _a.authorizationCodeResponse);
81
- }
82
- else if ((_c = (_b = openID4VCIClientState.credentialOffer) === null || _b === void 0 ? void 0 : _b.supportedFlows) === null || _c === void 0 ? void 0 : _c.includes(oid4vci_common_1.AuthzFlowType.AUTHORIZATION_CODE_FLOW)) {
83
- return !((_d = ctx.openID4VCIClientState) === null || _d === void 0 ? void 0 : _d.authorizationCodeResponse);
84
- }
85
- else if ((_f = (_e = openID4VCIClientState.credentialOffer) === null || _e === void 0 ? void 0 : _e.supportedFlows) === null || _f === void 0 ? void 0 : _f.includes(oid4vci_common_1.AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
86
- return false;
87
- }
88
- else if ((_h = (_g = openID4VCIClientState.endpointMetadata) === null || _g === void 0 ? void 0 : _g.credentialIssuerMetadata) === null || _h === void 0 ? void 0 : _h.authorization_endpoint) {
89
- return !((_j = ctx.openID4VCIClientState) === null || _j === void 0 ? void 0 : _j.authorizationCodeResponse);
90
- }
91
- return false;
92
- };
93
- const oid4vciHasAuthorizationResponse = (ctx, _event) => {
94
- var _a;
95
- return !!((_a = ctx.openID4VCIClientState) === null || _a === void 0 ? void 0 : _a.authorizationCodeResponse);
96
- };
97
- const oid4vciIsFirstPartyApplication = (ctx, _event) => {
98
- var _a;
99
- return !!((_a = ctx.serverMetadata) === null || _a === void 0 ? void 0 : _a.authorization_challenge_endpoint);
100
- };
101
- const createOID4VCIMachine = (opts) => {
102
- var _a, _b;
103
- const initialContext = {
104
- // TODO WAL-671 we need to store the data from OpenIdProvider here in the context and make sure we can restart the machine with it and init the OpenIdProvider
105
- accessTokenOpts: opts === null || opts === void 0 ? void 0 : opts.accessTokenOpts,
106
- requestData: opts === null || opts === void 0 ? void 0 : opts.requestData,
107
- trustAnchors: (_a = opts === null || opts === void 0 ? void 0 : opts.trustAnchors) !== null && _a !== void 0 ? _a : [],
108
- issuanceOpt: opts === null || opts === void 0 ? void 0 : opts.issuanceOpt,
109
- didMethodPreferences: opts === null || opts === void 0 ? void 0 : opts.didMethodPreferences,
110
- locale: opts === null || opts === void 0 ? void 0 : opts.locale,
111
- credentialsSupported: {},
112
- credentialToSelectFrom: [],
113
- selectedCredentials: [],
114
- credentialsToAccept: [],
115
- hasContactConsent: true,
116
- contactAlias: '',
117
- };
118
- return (0, xstate_1.createMachine)({
119
- id: (_b = opts === null || opts === void 0 ? void 0 : opts.machineName) !== null && _b !== void 0 ? _b : 'OID4VCIHolder',
120
- predictableActionArguments: true,
121
- initial: IOID4VCIHolder_1.OID4VCIMachineStates.start,
122
- schema: {
123
- events: {},
124
- guards: {},
125
- services: {},
126
- },
127
- context: initialContext,
128
- states: {
129
- [IOID4VCIHolder_1.OID4VCIMachineStates.start]: {
130
- id: IOID4VCIHolder_1.OID4VCIMachineStates.start,
131
- invoke: {
132
- src: IOID4VCIHolder_1.OID4VCIMachineServices.start,
133
- onDone: {
134
- target: IOID4VCIHolder_1.OID4VCIMachineStates.createCredentialsToSelectFrom,
135
- actions: (0, xstate_1.assign)({
136
- authorizationCodeURL: (_ctx, _event) => _event.data.authorizationCodeURL,
137
- credentialBranding: (_ctx, _event) => { var _a; return (_a = _event.data.credentialBranding) !== null && _a !== void 0 ? _a : {}; },
138
- credentialsSupported: (_ctx, _event) => _event.data.credentialsSupported,
139
- serverMetadata: (_ctx, _event) => _event.data.serverMetadata,
140
- openID4VCIClientState: (_ctx, _event) => _event.data.oid4vciClientState,
141
- }),
142
- },
143
- onError: {
144
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
145
- actions: (0, xstate_1.assign)({
146
- error: (_ctx, _event) => ({
147
- title: (0, Localization_1.translate)('oid4vci_machine_initiation_error_title'),
148
- message: _event.data.message,
149
- stack: _event.data.stack,
150
- }),
151
- }),
152
- },
153
- },
154
- },
155
- [IOID4VCIHolder_1.OID4VCIMachineStates.createCredentialsToSelectFrom]: {
156
- id: IOID4VCIHolder_1.OID4VCIMachineStates.createCredentialsToSelectFrom,
157
- invoke: {
158
- src: IOID4VCIHolder_1.OID4VCIMachineServices.createCredentialsToSelectFrom,
159
- onDone: {
160
- target: IOID4VCIHolder_1.OID4VCIMachineStates.getContact,
161
- actions: (0, xstate_1.assign)({
162
- credentialToSelectFrom: (_ctx, _event) => _event.data,
163
- }),
164
- // TODO WAL-670 would be nice if we can have guard that checks if we have at least 1 item in the selection. not sure if this can occur but it would be more defensive.
165
- // Still cannot find a nice way to do this inside of an invoke besides adding another transition state
166
- },
167
- onError: {
168
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
169
- actions: (0, xstate_1.assign)({
170
- error: (_ctx, _event) => ({
171
- title: (0, Localization_1.translate)('oid4vci_machine_credential_selection_error_title'),
172
- message: _event.data.message,
173
- stack: _event.data.stack,
174
- }),
175
- }),
176
- },
177
- },
178
- },
179
- [IOID4VCIHolder_1.OID4VCIMachineStates.getContact]: {
180
- id: IOID4VCIHolder_1.OID4VCIMachineStates.getContact,
181
- invoke: {
182
- src: IOID4VCIHolder_1.OID4VCIMachineServices.getContact,
183
- onDone: {
184
- target: IOID4VCIHolder_1.OID4VCIMachineStates.getIssuerBranding,
185
- actions: (0, xstate_1.assign)({ contact: (_ctx, _event) => _event.data }),
186
- },
187
- onError: {
188
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
189
- actions: (0, xstate_1.assign)({
190
- error: (_ctx, _event) => ({
191
- title: (0, Localization_1.translate)('oid4vci_machine_retrieve_contact_error_title'),
192
- message: _event.data.message,
193
- stack: _event.data.stack,
194
- }),
195
- }),
196
- },
197
- },
198
- },
199
- [IOID4VCIHolder_1.OID4VCIMachineStates.getIssuerBranding]: {
200
- id: IOID4VCIHolder_1.OID4VCIMachineStates.getIssuerBranding,
201
- invoke: {
202
- src: IOID4VCIHolder_1.OID4VCIMachineServices.getIssuerBranding,
203
- onDone: [
204
- {
205
- target: IOID4VCIHolder_1.OID4VCIMachineStates.getFederationTrust,
206
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.isOIDFOriginGuard,
207
- actions: (0, xstate_1.assign)({
208
- issuerBranding: (_ctx, _event) => _event.data,
209
- }),
210
- },
211
- {
212
- target: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromSetup,
213
- actions: (0, xstate_1.assign)({
214
- issuerBranding: (_ctx, _event) => _event.data,
215
- }),
216
- },
217
- ],
218
- onError: {
219
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
220
- actions: (0, xstate_1.assign)({
221
- error: (_ctx, _event) => ({
222
- title: (0, Localization_1.translate)('oid4vci_machine_retrieve_issuer_branding_error_title'),
223
- message: _event.data.message,
224
- stack: _event.data.stack,
225
- }),
226
- }),
227
- },
228
- },
229
- },
230
- [IOID4VCIHolder_1.OID4VCIMachineStates.getFederationTrust]: {
231
- id: IOID4VCIHolder_1.OID4VCIMachineStates.getFederationTrust,
232
- invoke: {
233
- src: IOID4VCIHolder_1.OID4VCIMachineServices.getFederationTrust,
234
- onDone: {
235
- target: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromSetup,
236
- actions: (0, xstate_1.assign)({
237
- trustedAnchors: (_ctx, _event) => _event.data,
238
- }),
239
- },
240
- onError: {
241
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
242
- actions: (0, xstate_1.assign)({
243
- error: (_ctx, _event) => ({
244
- title: (0, Localization_1.translate)('oid4vci_machine_retrieve_federation_trust_error_title'),
245
- message: _event.data.message,
246
- stack: _event.data.stack,
247
- }),
248
- }),
249
- },
250
- },
251
- },
252
- [IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromSetup]: {
253
- id: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromSetup,
254
- always: [
255
- {
256
- target: IOID4VCIHolder_1.OID4VCIMachineStates.addContact,
257
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.hasNoContactGuard,
258
- },
259
- {
260
- target: IOID4VCIHolder_1.OID4VCIMachineStates.reviewContact,
261
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.contactHasLowTrustGuard,
262
- },
263
- {
264
- target: IOID4VCIHolder_1.OID4VCIMachineStates.selectCredentials,
265
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.credentialsToSelectRequiredGuard,
266
- },
267
- {
268
- target: IOID4VCIHolder_1.OID4VCIMachineStates.startFirstPartApplicationFlow,
269
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.isFirstPartyApplication,
270
- },
271
- {
272
- target: IOID4VCIHolder_1.OID4VCIMachineStates.initiateAuthorizationRequest,
273
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.requireAuthorizationGuard,
274
- },
275
- {
276
- target: IOID4VCIHolder_1.OID4VCIMachineStates.verifyPin,
277
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.requirePinGuard,
278
- },
279
- {
280
- target: IOID4VCIHolder_1.OID4VCIMachineStates.getCredentials,
281
- },
282
- ],
283
- on: {
284
- [IOID4VCIHolder_1.OID4VCIMachineEvents.SET_AUTHORIZATION_CODE_URL]: {
285
- actions: (0, xstate_1.assign)({ authorizationCodeURL: (_ctx, _event) => _event.data }),
286
- },
287
- },
288
- },
289
- [IOID4VCIHolder_1.OID4VCIMachineStates.addContact]: {
290
- id: IOID4VCIHolder_1.OID4VCIMachineStates.addContact,
291
- initial: IOID4VCIHolder_1.OID4VCIMachineAddContactStates.idle,
292
- on: {
293
- [IOID4VCIHolder_1.OID4VCIMachineEvents.SET_CONTACT_CONSENT]: {
294
- actions: (0, xstate_1.assign)({ hasContactConsent: (_ctx, _event) => _event.data }),
295
- },
296
- [IOID4VCIHolder_1.OID4VCIMachineEvents.SET_CONTACT_ALIAS]: {
297
- actions: (0, xstate_1.assign)({ contactAlias: (_ctx, _event) => _event.data }),
298
- },
299
- [IOID4VCIHolder_1.OID4VCIMachineEvents.CREATE_CONTACT]: {
300
- target: `.${IOID4VCIHolder_1.OID4VCIMachineAddContactStates.next}`,
301
- actions: (0, xstate_1.assign)({ contact: (_ctx, _event) => _event.data }),
302
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.createContactGuard,
303
- },
304
- [IOID4VCIHolder_1.OID4VCIMachineEvents.DECLINE]: {
305
- target: IOID4VCIHolder_1.OID4VCIMachineStates.declined,
306
- },
307
- [IOID4VCIHolder_1.OID4VCIMachineEvents.PREVIOUS]: {
308
- target: IOID4VCIHolder_1.OID4VCIMachineStates.aborted,
309
- },
310
- },
311
- states: {
312
- [IOID4VCIHolder_1.OID4VCIMachineAddContactStates.idle]: {},
313
- [IOID4VCIHolder_1.OID4VCIMachineAddContactStates.next]: {
314
- always: {
315
- target: `#${IOID4VCIHolder_1.OID4VCIMachineStates.storeIssuerBranding}`,
316
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.hasContactGuard,
317
- },
318
- },
319
- },
320
- },
321
- [IOID4VCIHolder_1.OID4VCIMachineStates.reviewContact]: {
322
- id: IOID4VCIHolder_1.OID4VCIMachineStates.reviewContact,
323
- on: {
324
- [IOID4VCIHolder_1.OID4VCIMachineEvents.NEXT]: {
325
- target: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromContactSetup,
326
- },
327
- [IOID4VCIHolder_1.OID4VCIMachineEvents.DECLINE]: {
328
- target: IOID4VCIHolder_1.OID4VCIMachineStates.declined,
329
- },
330
- [IOID4VCIHolder_1.OID4VCIMachineEvents.PREVIOUS]: {
331
- target: IOID4VCIHolder_1.OID4VCIMachineStates.aborted,
332
- },
333
- },
334
- },
335
- [IOID4VCIHolder_1.OID4VCIMachineStates.storeIssuerBranding]: {
336
- id: IOID4VCIHolder_1.OID4VCIMachineStates.storeIssuerBranding,
337
- invoke: {
338
- src: IOID4VCIHolder_1.OID4VCIMachineServices.storeIssuerBranding,
339
- onDone: {
340
- target: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromContactSetup,
341
- },
342
- onError: {
343
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
344
- actions: (0, xstate_1.assign)({
345
- error: (_ctx, _event) => ({
346
- title: (0, Localization_1.translate)('oid4vci_machine_store_issuer_branding_error_title'),
347
- message: _event.data.message,
348
- stack: _event.data.stack,
349
- }),
350
- }),
351
- },
352
- },
353
- },
354
- [IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromContactSetup]: {
355
- id: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromContactSetup,
356
- always: [
357
- {
358
- target: IOID4VCIHolder_1.OID4VCIMachineStates.selectCredentials,
359
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.credentialsToSelectRequiredGuard,
360
- },
361
- {
362
- target: IOID4VCIHolder_1.OID4VCIMachineStates.startFirstPartApplicationFlow,
363
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.isFirstPartyApplication,
364
- },
365
- {
366
- target: IOID4VCIHolder_1.OID4VCIMachineStates.initiateAuthorizationRequest,
367
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.requireAuthorizationGuard,
368
- },
369
- {
370
- target: IOID4VCIHolder_1.OID4VCIMachineStates.verifyPin,
371
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.requirePinGuard,
372
- },
373
- {
374
- target: IOID4VCIHolder_1.OID4VCIMachineStates.getCredentials,
375
- },
376
- ],
377
- },
378
- [IOID4VCIHolder_1.OID4VCIMachineStates.startFirstPartApplicationFlow]: {
379
- id: IOID4VCIHolder_1.OID4VCIMachineStates.startFirstPartApplicationFlow,
380
- invoke: {
381
- src: IOID4VCIHolder_1.OID4VCIMachineServices.startFirstPartApplicationFlow,
382
- onDone: [
383
- {
384
- target: IOID4VCIHolder_1.OID4VCIMachineStates.aborted,
385
- cond: (_ctx, _event) => _event.data === FirstPartyMachine_1.FirstPartyMachineStateTypes.aborted,
386
- },
387
- {
388
- target: IOID4VCIHolder_1.OID4VCIMachineStates.declined,
389
- cond: (_ctx, _event) => _event.data === FirstPartyMachine_1.FirstPartyMachineStateTypes.declined,
390
- },
391
- {
392
- target: IOID4VCIHolder_1.OID4VCIMachineStates.getCredentials,
393
- actions: (0, xstate_1.assign)({
394
- openID4VCIClientState: (_ctx, _event) => {
395
- const authorizationCodeResponse = (0, oid4vci_common_1.toAuthorizationResponsePayload)(_event.data);
396
- return Object.assign(Object.assign({}, _ctx.openID4VCIClientState), { authorizationCodeResponse });
397
- },
398
- }),
399
- },
400
- ],
401
- onError: {
402
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
403
- actions: (0, xstate_1.assign)({
404
- error: (_ctx, _event) => {
405
- var _a;
406
- return ({
407
- title: (_a = _event.data.title) !== null && _a !== void 0 ? _a : (0, Localization_1.translate)('oid4vci_machine_first_party_error_title'),
408
- message: _event.data.message,
409
- stack: _event.data.stack,
410
- });
411
- },
412
- }),
413
- },
414
- },
415
- },
416
- [IOID4VCIHolder_1.OID4VCIMachineStates.selectCredentials]: {
417
- id: IOID4VCIHolder_1.OID4VCIMachineStates.selectCredentials,
418
- on: {
419
- [IOID4VCIHolder_1.OID4VCIMachineEvents.SET_SELECTED_CREDENTIALS]: {
420
- actions: (0, xstate_1.assign)({ selectedCredentials: (_ctx, _event) => _event.data }),
421
- },
422
- [IOID4VCIHolder_1.OID4VCIMachineEvents.NEXT]: {
423
- target: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromSelectingCredentials,
424
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.hasSelectedCredentialsGuard,
425
- },
426
- [IOID4VCIHolder_1.OID4VCIMachineEvents.PREVIOUS]: {
427
- target: IOID4VCIHolder_1.OID4VCIMachineStates.aborted,
428
- },
429
- },
430
- },
431
- [IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromSelectingCredentials]: {
432
- id: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromSelectingCredentials,
433
- always: [
434
- {
435
- target: IOID4VCIHolder_1.OID4VCIMachineStates.startFirstPartApplicationFlow,
436
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.isFirstPartyApplication,
437
- },
438
- {
439
- target: IOID4VCIHolder_1.OID4VCIMachineStates.verifyPin,
440
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.requirePinGuard,
441
- },
442
- {
443
- target: IOID4VCIHolder_1.OID4VCIMachineStates.initiateAuthorizationRequest,
444
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.requireAuthorizationGuard,
445
- },
446
- {
447
- target: IOID4VCIHolder_1.OID4VCIMachineStates.getCredentials,
448
- },
449
- ],
450
- },
451
- [IOID4VCIHolder_1.OID4VCIMachineStates.initiateAuthorizationRequest]: {
452
- id: IOID4VCIHolder_1.OID4VCIMachineStates.initiateAuthorizationRequest,
453
- on: {
454
- [IOID4VCIHolder_1.OID4VCIMachineEvents.PREVIOUS]: {
455
- target: IOID4VCIHolder_1.OID4VCIMachineStates.selectCredentials,
456
- },
457
- [IOID4VCIHolder_1.OID4VCIMachineEvents.INVOKED_AUTHORIZATION_CODE_REQUEST]: {
458
- target: IOID4VCIHolder_1.OID4VCIMachineStates.waitForAuthorizationResponse,
459
- },
460
- },
461
- },
462
- [IOID4VCIHolder_1.OID4VCIMachineStates.waitForAuthorizationResponse]: {
463
- id: IOID4VCIHolder_1.OID4VCIMachineStates.waitForAuthorizationResponse,
464
- on: {
465
- [IOID4VCIHolder_1.OID4VCIMachineEvents.PREVIOUS]: {
466
- target: IOID4VCIHolder_1.OID4VCIMachineStates.initiateAuthorizationRequest,
467
- },
468
- [IOID4VCIHolder_1.OID4VCIMachineEvents.PROVIDE_AUTHORIZATION_CODE_RESPONSE]: {
469
- actions: (0, xstate_1.assign)({
470
- openID4VCIClientState: (_ctx, _event) => {
471
- const authorizationCodeResponse = (0, oid4vci_common_1.toAuthorizationResponsePayload)(_event.data);
472
- return Object.assign(Object.assign({}, _ctx.openID4VCIClientState), { authorizationCodeResponse });
473
- },
474
- }),
475
- },
476
- },
477
- always: [
478
- {
479
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.hasAuthorizationResponse,
480
- target: IOID4VCIHolder_1.OID4VCIMachineStates.getCredentials,
481
- },
482
- ],
483
- },
484
- [IOID4VCIHolder_1.OID4VCIMachineStates.verifyPin]: {
485
- id: IOID4VCIHolder_1.OID4VCIMachineStates.verifyPin,
486
- initial: IOID4VCIHolder_1.OID4VCIMachineVerifyPinStates.idle,
487
- on: {
488
- [IOID4VCIHolder_1.OID4VCIMachineEvents.SET_VERIFICATION_CODE]: {
489
- target: `.${IOID4VCIHolder_1.OID4VCIMachineVerifyPinStates.next}`,
490
- actions: (0, xstate_1.assign)({ verificationCode: (_ctx, _event) => _event.data }),
491
- },
492
- [IOID4VCIHolder_1.OID4VCIMachineEvents.PREVIOUS]: [
493
- {
494
- target: IOID4VCIHolder_1.OID4VCIMachineStates.selectCredentials,
495
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.credentialsToSelectRequiredGuard,
496
- },
497
- {
498
- target: IOID4VCIHolder_1.OID4VCIMachineStates.aborted,
499
- },
500
- ],
501
- },
502
- states: {
503
- [IOID4VCIHolder_1.OID4VCIMachineVerifyPinStates.idle]: {},
504
- [IOID4VCIHolder_1.OID4VCIMachineVerifyPinStates.next]: {
505
- always: {
506
- target: `#${IOID4VCIHolder_1.OID4VCIMachineStates.getCredentials}`,
507
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.verificationCodeGuard,
508
- },
509
- },
510
- },
511
- },
512
- [IOID4VCIHolder_1.OID4VCIMachineStates.getCredentials]: {
513
- id: IOID4VCIHolder_1.OID4VCIMachineStates.getCredentials,
514
- invoke: {
515
- src: IOID4VCIHolder_1.OID4VCIMachineServices.getCredentials,
516
- onDone: {
517
- target: IOID4VCIHolder_1.OID4VCIMachineStates.verifyCredentials,
518
- actions: (0, xstate_1.assign)({
519
- credentialsToAccept: (_ctx, _event) => _event.data,
520
- }),
521
- },
522
- onError: {
523
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
524
- actions: (0, xstate_1.assign)({
525
- error: (_ctx, _event) => ({
526
- title: (0, Localization_1.translate)('oid4vci_machine_retrieve_credentials_error_title'),
527
- message: _event.data.message,
528
- stack: _event.data.stack,
529
- }),
530
- }),
531
- },
532
- },
533
- exit: (0, xstate_1.assign)({ verificationCode: undefined }),
534
- },
535
- [IOID4VCIHolder_1.OID4VCIMachineStates.verifyCredentials]: {
536
- id: IOID4VCIHolder_1.OID4VCIMachineStates.verifyCredentials,
537
- invoke: {
538
- src: IOID4VCIHolder_1.OID4VCIMachineServices.assertValidCredentials,
539
- onDone: {
540
- target: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromWalletInput,
541
- },
542
- onError: {
543
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
544
- actions: (0, xstate_1.assign)({
545
- error: (_ctx, _event) => ({
546
- title: (0, Localization_1.translate)('oid4vci_machine_verify_credentials_error_title'),
547
- message: _event.data.message,
548
- stack: _event.data.stack,
549
- }),
550
- }),
551
- },
552
- },
553
- },
554
- [IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromWalletInput]: {
555
- id: IOID4VCIHolder_1.OID4VCIMachineStates.transitionFromWalletInput,
556
- always: [
557
- {
558
- target: IOID4VCIHolder_1.OID4VCIMachineStates.addContactIdentity,
559
- cond: IOID4VCIHolder_1.OID4VCIMachineGuards.hasNoContactIdentityGuard,
560
- },
561
- {
562
- target: IOID4VCIHolder_1.OID4VCIMachineStates.reviewCredentials,
563
- },
564
- ],
565
- },
566
- [IOID4VCIHolder_1.OID4VCIMachineStates.addContactIdentity]: {
567
- id: IOID4VCIHolder_1.OID4VCIMachineStates.addContactIdentity,
568
- invoke: {
569
- src: IOID4VCIHolder_1.OID4VCIMachineServices.addContactIdentity,
570
- onDone: {
571
- target: IOID4VCIHolder_1.OID4VCIMachineStates.addIssuerBrandingAfterIdentity,
572
- actions: (_ctx, _event) => {
573
- var _a;
574
- (_a = _ctx.contact) === null || _a === void 0 ? void 0 : _a.identities.push(_event.data);
575
- },
576
- },
577
- onError: {
578
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
579
- actions: (0, xstate_1.assign)({
580
- error: (_ctx, _event) => ({
581
- title: (0, Localization_1.translate)('oid4vci_machine_add_contact_identity_error_title'),
582
- message: _event.data.message,
583
- stack: _event.data.stack,
584
- }),
585
- }),
586
- },
587
- },
588
- },
589
- [IOID4VCIHolder_1.OID4VCIMachineStates.addIssuerBrandingAfterIdentity]: {
590
- id: IOID4VCIHolder_1.OID4VCIMachineStates.addIssuerBrandingAfterIdentity,
591
- invoke: {
592
- src: IOID4VCIHolder_1.OID4VCIMachineServices.storeIssuerBranding,
593
- onDone: {
594
- target: IOID4VCIHolder_1.OID4VCIMachineStates.reviewCredentials,
595
- },
596
- onError: {
597
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
598
- actions: (0, xstate_1.assign)({
599
- error: (_ctx, _event) => ({
600
- title: (0, Localization_1.translate)('oid4vci_machine_store_issuer_branding_error_title'),
601
- message: _event.data.message,
602
- stack: _event.data.stack,
603
- }),
604
- }),
605
- },
606
- },
607
- },
608
- [IOID4VCIHolder_1.OID4VCIMachineStates.reviewCredentials]: {
609
- id: IOID4VCIHolder_1.OID4VCIMachineStates.reviewCredentials,
610
- on: {
611
- [IOID4VCIHolder_1.OID4VCIMachineEvents.NEXT]: {
612
- target: IOID4VCIHolder_1.OID4VCIMachineStates.storeCredentialBranding,
613
- },
614
- [IOID4VCIHolder_1.OID4VCIMachineEvents.DECLINE]: {
615
- target: IOID4VCIHolder_1.OID4VCIMachineStates.declined,
616
- },
617
- [IOID4VCIHolder_1.OID4VCIMachineEvents.PREVIOUS]: {
618
- target: IOID4VCIHolder_1.OID4VCIMachineStates.aborted,
619
- },
620
- },
621
- },
622
- [IOID4VCIHolder_1.OID4VCIMachineStates.storeCredentialBranding]: {
623
- id: IOID4VCIHolder_1.OID4VCIMachineStates.storeCredentialBranding,
624
- invoke: {
625
- src: IOID4VCIHolder_1.OID4VCIMachineServices.storeCredentialBranding,
626
- onDone: {
627
- target: IOID4VCIHolder_1.OID4VCIMachineStates.storeCredentials,
628
- },
629
- onError: {
630
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
631
- actions: (0, xstate_1.assign)({
632
- error: (_ctx, _event) => ({
633
- title: (0, Localization_1.translate)('oid4vci_machine_store_credential_branding_error_title'),
634
- message: _event.data.message,
635
- stack: _event.data.stack,
636
- }),
637
- }),
638
- },
639
- },
640
- },
641
- [IOID4VCIHolder_1.OID4VCIMachineStates.storeCredentials]: {
642
- id: IOID4VCIHolder_1.OID4VCIMachineStates.storeCredentials,
643
- invoke: {
644
- src: IOID4VCIHolder_1.OID4VCIMachineServices.storeCredentials,
645
- onDone: {
646
- target: IOID4VCIHolder_1.OID4VCIMachineStates.done,
647
- },
648
- onError: {
649
- target: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
650
- actions: (0, xstate_1.assign)({
651
- error: (_ctx, _event) => ({
652
- title: (0, Localization_1.translate)('oid4vci_machine_store_credential_error_title'),
653
- message: _event.data.message,
654
- stack: _event.data.stack,
655
- }),
656
- }),
657
- },
658
- },
659
- },
660
- [IOID4VCIHolder_1.OID4VCIMachineStates.handleError]: {
661
- id: IOID4VCIHolder_1.OID4VCIMachineStates.handleError,
662
- on: {
663
- [IOID4VCIHolder_1.OID4VCIMachineEvents.NEXT]: {
664
- target: IOID4VCIHolder_1.OID4VCIMachineStates.error,
665
- },
666
- [IOID4VCIHolder_1.OID4VCIMachineEvents.PREVIOUS]: {
667
- target: IOID4VCIHolder_1.OID4VCIMachineStates.error,
668
- },
669
- },
670
- },
671
- [IOID4VCIHolder_1.OID4VCIMachineStates.aborted]: {
672
- id: IOID4VCIHolder_1.OID4VCIMachineStates.aborted,
673
- type: 'final',
674
- },
675
- [IOID4VCIHolder_1.OID4VCIMachineStates.declined]: {
676
- id: IOID4VCIHolder_1.OID4VCIMachineStates.declined,
677
- type: 'final',
678
- },
679
- [IOID4VCIHolder_1.OID4VCIMachineStates.error]: {
680
- id: IOID4VCIHolder_1.OID4VCIMachineStates.error,
681
- type: 'final',
682
- },
683
- [IOID4VCIHolder_1.OID4VCIMachineStates.done]: {
684
- id: IOID4VCIHolder_1.OID4VCIMachineStates.done,
685
- type: 'final',
686
- },
687
- },
688
- });
689
- };
690
- class OID4VCIMachine {
691
- static newInstance(opts, context) {
692
- return __awaiter(this, void 0, void 0, function* () {
693
- const interpreter = (0, xstate_1.interpret)(createOID4VCIMachine(opts).withConfig({
694
- services: Object.assign({}, opts === null || opts === void 0 ? void 0 : opts.services),
695
- guards: Object.assign({ oid4vciHasNoContactGuard,
696
- oid4vciCredentialsToSelectRequiredGuard,
697
- oid4vciRequirePinGuard,
698
- oid4vciHasNoContactIdentityGuard,
699
- oid4vciVerificationCodeGuard,
700
- oid4vciHasContactGuard,
701
- oid4vciCreateContactGuard,
702
- oid4vciHasSelectedCredentialsGuard,
703
- oid4vciRequireAuthorizationGuard,
704
- oid4vciNoAuthorizationGuard,
705
- oid4vciHasAuthorizationResponse,
706
- oid4vciIsOIDFOriginGuard,
707
- oid4vciContactHasLowTrustGuard,
708
- oid4vciIsFirstPartyApplication }, opts === null || opts === void 0 ? void 0 : opts.guards),
709
- }));
710
- if (typeof (opts === null || opts === void 0 ? void 0 : opts.subscription) === 'function') {
711
- interpreter.onTransition(opts.subscription);
712
- }
713
- if ((opts === null || opts === void 0 ? void 0 : opts.requireCustomNavigationHook) !== true) {
714
- if (typeof (opts === null || opts === void 0 ? void 0 : opts.stateNavigationListener) === 'function') {
715
- interpreter.onTransition((snapshot) => {
716
- if (opts === null || opts === void 0 ? void 0 : opts.stateNavigationListener) {
717
- opts.stateNavigationListener(interpreter, snapshot);
718
- }
719
- });
720
- }
721
- }
722
- return { interpreter };
723
- });
724
- }
725
- }
726
- exports.OID4VCIMachine = OID4VCIMachine;
727
- //# sourceMappingURL=oid4vciMachine.js.map