@forgerock/davinci-client 0.0.0-beta-20251124184351 → 0.0.0-beta-20251222204813

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 (85) hide show
  1. package/dist/src/index.d.ts +4 -0
  2. package/dist/src/index.d.ts.map +1 -0
  3. package/dist/src/index.js +10 -0
  4. package/dist/src/index.js.map +1 -0
  5. package/dist/src/lib/client.store.d.ts +352 -0
  6. package/dist/src/lib/client.store.d.ts.map +1 -0
  7. package/dist/src/lib/client.store.js +308 -0
  8. package/dist/src/lib/client.store.js.map +1 -0
  9. package/dist/src/lib/client.store.utils.d.ts +74 -0
  10. package/dist/src/lib/client.store.utils.d.ts.map +1 -0
  11. package/dist/src/lib/client.store.utils.js +48 -0
  12. package/dist/src/lib/client.store.utils.js.map +1 -0
  13. package/dist/src/lib/client.types.d.ts +71 -0
  14. package/dist/src/lib/client.types.d.ts.map +1 -0
  15. package/dist/src/lib/client.types.js +2 -0
  16. package/dist/src/lib/client.types.js.map +1 -0
  17. package/dist/src/lib/collector.types.d.ts +448 -0
  18. package/dist/src/lib/collector.types.d.ts.map +1 -0
  19. package/dist/src/lib/collector.types.js +8 -0
  20. package/dist/src/lib/collector.types.js.map +1 -0
  21. package/dist/src/lib/collector.utils.d.ts +154 -0
  22. package/dist/src/lib/collector.utils.d.ts.map +1 -0
  23. package/dist/src/lib/collector.utils.js +651 -0
  24. package/dist/src/lib/collector.utils.js.map +1 -0
  25. package/dist/src/lib/config.slice.d.ts +42 -0
  26. package/dist/src/lib/config.slice.d.ts.map +1 -0
  27. package/dist/src/lib/config.slice.js +59 -0
  28. package/dist/src/lib/config.slice.js.map +1 -0
  29. package/dist/src/lib/config.types.d.ts +12 -0
  30. package/dist/src/lib/config.types.d.ts.map +1 -0
  31. package/dist/src/lib/config.types.js +2 -0
  32. package/dist/src/lib/config.types.js.map +1 -0
  33. package/dist/src/lib/davinci.api.d.ts +31 -0
  34. package/dist/src/lib/davinci.api.d.ts.map +1 -0
  35. package/dist/src/lib/davinci.api.js +347 -0
  36. package/dist/src/lib/davinci.api.js.map +1 -0
  37. package/dist/src/lib/davinci.types.d.ts +328 -0
  38. package/dist/src/lib/davinci.types.d.ts.map +1 -0
  39. package/dist/src/lib/davinci.types.js +11 -0
  40. package/dist/src/lib/davinci.types.js.map +1 -0
  41. package/dist/src/lib/davinci.utils.d.ts +22 -0
  42. package/dist/src/lib/davinci.utils.d.ts.map +1 -0
  43. package/dist/src/lib/davinci.utils.js +170 -0
  44. package/dist/src/lib/davinci.utils.js.map +1 -0
  45. package/dist/src/lib/fido/fido.d.ts +27 -0
  46. package/dist/src/lib/fido/fido.d.ts.map +1 -0
  47. package/dist/src/lib/fido/fido.js +108 -0
  48. package/dist/src/lib/fido/fido.js.map +1 -0
  49. package/dist/src/lib/fido/fido.utils.d.ts +31 -0
  50. package/dist/src/lib/fido/fido.utils.d.ts.map +1 -0
  51. package/dist/src/lib/fido/fido.utils.js +115 -0
  52. package/dist/src/lib/fido/fido.utils.js.map +1 -0
  53. package/dist/src/lib/index.d.ts +3 -0
  54. package/dist/src/lib/index.d.ts.map +1 -0
  55. package/dist/src/lib/index.js +9 -0
  56. package/dist/src/lib/index.js.map +1 -0
  57. package/dist/src/lib/node.reducer.d.ts +27 -0
  58. package/dist/src/lib/node.reducer.d.ts.map +1 -0
  59. package/dist/src/lib/node.reducer.js +230 -0
  60. package/dist/src/lib/node.reducer.js.map +1 -0
  61. package/dist/src/lib/node.slice.d.ts +181 -0
  62. package/dist/src/lib/node.slice.d.ts.map +1 -0
  63. package/dist/src/lib/node.slice.js +261 -0
  64. package/dist/src/lib/node.slice.js.map +1 -0
  65. package/dist/src/lib/node.types.d.ts +119 -0
  66. package/dist/src/lib/node.types.d.ts.map +1 -0
  67. package/dist/src/lib/node.types.js +2 -0
  68. package/dist/src/lib/node.types.js.map +1 -0
  69. package/dist/src/lib/node.utils.d.ts +4 -0
  70. package/dist/src/lib/node.utils.d.ts.map +1 -0
  71. package/dist/src/lib/node.utils.js +32 -0
  72. package/dist/src/lib/node.utils.js.map +1 -0
  73. package/dist/src/lib/wellknown.api.d.ts +5 -0
  74. package/dist/src/lib/wellknown.api.d.ts.map +1 -0
  75. package/dist/src/lib/wellknown.api.js +22 -0
  76. package/dist/src/lib/wellknown.api.js.map +1 -0
  77. package/dist/src/lib/wellknown.types.d.ts +38 -0
  78. package/dist/src/lib/wellknown.types.d.ts.map +1 -0
  79. package/dist/src/lib/wellknown.types.js +2 -0
  80. package/dist/src/lib/wellknown.types.js.map +1 -0
  81. package/dist/src/types.d.ts +45 -0
  82. package/dist/src/types.d.ts.map +1 -0
  83. package/dist/src/types.js +7 -0
  84. package/dist/src/types.js.map +1 -0
  85. package/package.json +6 -6
@@ -0,0 +1,308 @@
1
+ /*
2
+ * Copyright (c) 2025 Ping Identity Corporation. All rights reserved.
3
+ *
4
+ * This software may be modified and distributed under the terms
5
+ * of the MIT license. See the LICENSE file for details.
6
+ */
7
+ /**
8
+ * Import RTK slices and api
9
+ */
10
+ import { logger as loggerFn } from '@forgerock/sdk-logger';
11
+ import { createStorage } from '@forgerock/storage';
12
+ import { createClientStore, handleUpdateValidateError } from './client.store.utils.js';
13
+ import { nodeSlice } from './node.slice.js';
14
+ import { davinciApi } from './davinci.api.js';
15
+ import { configSlice } from './config.slice.js';
16
+ import { wellknownApi } from './wellknown.api.js';
17
+ import { returnValidator } from './collector.utils.js';
18
+ /**
19
+ * Create a client function that returns a set of methods
20
+ * to interact with and normalize the DaVinci API.
21
+ *
22
+ * @function davinciClient - returns an "observable" client for DaVinci flows
23
+ * @param {ConfigurationOptions} options - the configuration options for the client
24
+ * @returns {Observable} - an observable client for DaVinci flows
25
+ */
26
+ export async function davinci({ config, requestMiddleware, logger, }) {
27
+ const log = loggerFn({ level: logger?.level || 'error', custom: logger?.custom });
28
+ const store = createClientStore({ requestMiddleware, logger: log });
29
+ const serverInfo = createStorage({
30
+ type: 'localStorage',
31
+ name: 'serverInfo',
32
+ });
33
+ if (!config.serverConfig.wellknown) {
34
+ const error = new Error('`wellknown` property is a required as part of the `config.serverConfig`');
35
+ log.error(error.message);
36
+ throw error;
37
+ }
38
+ if (!config.clientId) {
39
+ const error = new Error('`clientId` property is a required as part of the `config`');
40
+ log.error(error.message);
41
+ throw error;
42
+ }
43
+ const { data: openIdResponse } = await store.dispatch(wellknownApi.endpoints.wellknown.initiate(config.serverConfig.wellknown));
44
+ if (!openIdResponse) {
45
+ const error = new Error('error fetching `wellknown` response for OpenId Configuration');
46
+ log.error(error.message);
47
+ throw error;
48
+ }
49
+ store.dispatch(configSlice.actions.set({ ...config, wellknownResponse: openIdResponse }));
50
+ return {
51
+ // Pass store methods to the client
52
+ subscribe: store.subscribe,
53
+ /**
54
+ * Social Login Handler
55
+ * Use this as part of an event when clicking on
56
+ * a social login button. Pass in the collector responsible
57
+ * for the social login being started.
58
+ *
59
+ * This method will save the `continueUrl`
60
+ * and then the app developer can use the url
61
+ * from the collector to redirect their application
62
+ *
63
+ * Can return an error when no continue url is found
64
+ * or no authenticate url is found in the collectors
65
+ *
66
+ * @method: externalIdp
67
+ * @param collector IdpCollector
68
+ * @returns {function}
69
+ */
70
+ externalIdp: () => {
71
+ const rootState = store.getState();
72
+ const serverSlice = nodeSlice.selectors.selectServer(rootState);
73
+ if (serverSlice && serverSlice.status === 'continue') {
74
+ return async () => {
75
+ await serverInfo.set(serverSlice);
76
+ };
77
+ }
78
+ return async () => {
79
+ return {
80
+ error: {
81
+ message: 'Not in a continue node state, must be in a continue node to use external idp method',
82
+ type: 'state_error',
83
+ },
84
+ };
85
+ };
86
+ },
87
+ /**
88
+ * @method flow - Method for initiating a new flow, different than current flow
89
+ * @param {DaVinciAction} action - the action to initiate the flow
90
+ * @returns {function} - an async function to call the flow
91
+ */
92
+ flow: (action) => {
93
+ if (!action.action) {
94
+ log.error('Missing `argument.action`');
95
+ return async function () {
96
+ return {
97
+ error: { message: 'Missing argument.action', type: 'argument_error' },
98
+ type: 'internal_error',
99
+ };
100
+ };
101
+ }
102
+ return async function () {
103
+ await store.dispatch(davinciApi.endpoints.flow.initiate(action));
104
+ const node = nodeSlice.selectSlice(store.getState());
105
+ return node;
106
+ };
107
+ },
108
+ /**
109
+ * @method next - Method for initiating the next node in the current flow
110
+ * @param {DaVinciRequest} args - the arguments to pass to the next
111
+ * @returns {Promise} - a promise that resolves to the next node
112
+ */
113
+ next: async (args) => {
114
+ const nodeCheck = nodeSlice.selectSlice(store.getState());
115
+ if (nodeCheck.status === 'start') {
116
+ return {
117
+ ...nodeCheck,
118
+ error: {
119
+ status: 'error',
120
+ type: 'state_error',
121
+ message: 'Please use `start` before calling `next`',
122
+ },
123
+ };
124
+ }
125
+ await store.dispatch(davinciApi.endpoints.next.initiate(args));
126
+ const node = nodeSlice.selectSlice(store.getState());
127
+ return node;
128
+ },
129
+ /**
130
+ * @method: resume - Resume a social login flow when returned to application
131
+ * @returns unknown
132
+ */
133
+ resume: async ({ continueToken, }) => {
134
+ try {
135
+ const storedServerInfo = (await serverInfo.get());
136
+ await store.dispatch(davinciApi.endpoints.resume.initiate({ continueToken, serverInfo: storedServerInfo }));
137
+ await serverInfo.remove();
138
+ const node = nodeSlice.selectSlice(store.getState());
139
+ return node;
140
+ }
141
+ catch {
142
+ // logger.error('No url found in collector, social login needs a url in the collector');
143
+ return {
144
+ error: {
145
+ message: 'No url found in storage, social login needs a continue url which is saved in local storage. You may have cleared your browser data',
146
+ type: 'internal_error',
147
+ },
148
+ type: 'internal_error',
149
+ };
150
+ }
151
+ },
152
+ /**
153
+ * @method start - Method for initiating a DaVinci flow
154
+ * @returns {Promise} - a promise that initiates a DaVinci flow and returns a node
155
+ */
156
+ start: async (options) => {
157
+ await store.dispatch(davinciApi.endpoints.start.initiate(options));
158
+ return store.getState().node;
159
+ },
160
+ /**
161
+ * @method update - Exclusive method for updating the current node with user provided values
162
+ * @param {SingleValueCollector | MultiSelectCollector | ObjectValueCollectors | AutoCollectors} collector - the collector to update
163
+ * @returns {function} - a function to call for updating collector value
164
+ */
165
+ update: (collector) => {
166
+ if (!collector.id) {
167
+ return handleUpdateValidateError('Argument for `collector` has no ID', 'argument_error', log.error);
168
+ }
169
+ const { id } = collector;
170
+ const { error, state: collectorToUpdate } = nodeSlice.selectors.selectCollector(store.getState(), id);
171
+ if (error) {
172
+ return handleUpdateValidateError(error.message, 'state_error', log.error);
173
+ }
174
+ if (!collectorToUpdate) {
175
+ return handleUpdateValidateError('Collector not found', 'state_error', log.error);
176
+ }
177
+ if (collectorToUpdate.category !== 'MultiValueCollector' &&
178
+ collectorToUpdate.category !== 'SingleValueCollector' &&
179
+ collectorToUpdate.category !== 'ValidatedSingleValueCollector' &&
180
+ collectorToUpdate.category !== 'ObjectValueCollector' &&
181
+ collectorToUpdate.category !== 'SingleValueAutoCollector' &&
182
+ collectorToUpdate.category !== 'ObjectValueAutoCollector') {
183
+ return handleUpdateValidateError('Collector does not fall into a category that can be updated', 'state_error', log.error);
184
+ }
185
+ return function (value, index) {
186
+ try {
187
+ store.dispatch(nodeSlice.actions.update({ id, value, index }));
188
+ return null;
189
+ }
190
+ catch (err) {
191
+ const error = err;
192
+ return {
193
+ type: 'internal_error',
194
+ error: { message: error.message, type: 'internal_error' },
195
+ };
196
+ }
197
+ };
198
+ },
199
+ /**
200
+ * @method validate - Method for validating the value against validation rules
201
+ * @param {SingleValueCollectors | ObjectValueCollectors | MultiValueCollectors | AutoCollectors} collector - the collector to validate
202
+ * @returns {function} - a function to call for validating collector value
203
+ * @throws {Error} - if the collector cannot be validated
204
+ */
205
+ validate: (collector) => {
206
+ if (!collector.id) {
207
+ return handleUpdateValidateError('Argument for `collector` has no ID', 'argument_error', log.error);
208
+ }
209
+ const { id } = collector;
210
+ const { error, state: collectorToUpdate } = nodeSlice.selectors.selectCollector(store.getState(), id);
211
+ if (error) {
212
+ return handleUpdateValidateError(error.message, 'state_error', log.error);
213
+ }
214
+ if (!collectorToUpdate) {
215
+ return handleUpdateValidateError('Collector not found', 'state_error', log.error);
216
+ }
217
+ if (collectorToUpdate.category !== 'ValidatedSingleValueCollector' &&
218
+ collectorToUpdate.category !== 'ObjectValueCollector' &&
219
+ collectorToUpdate.category !== 'MultiValueCollector' &&
220
+ collectorToUpdate.category !== 'ObjectValueAutoCollector') {
221
+ return handleUpdateValidateError('Collector does not fall into a category that can be validated', 'state_error', log.error);
222
+ }
223
+ if (!('validation' in collectorToUpdate.input)) {
224
+ return handleUpdateValidateError('Collector has no validation rules', 'state_error', log.error);
225
+ }
226
+ return returnValidator(collectorToUpdate);
227
+ },
228
+ /**
229
+ * @method client - Selector to get the node.client from state
230
+ * @returns {Node.client} - the client property from the current node
231
+ */
232
+ getClient: () => nodeSlice.selectors.selectClient(store.getState()),
233
+ /**
234
+ * @method collectors - Selector to get the collectors from state
235
+ * @returns {Collector[]} - The collectors from the current node in state
236
+ */
237
+ getCollectors: () => {
238
+ const state = store.getState();
239
+ const client = nodeSlice.selectors.selectClient(state);
240
+ // Let's check if the node has a client and collectors
241
+ if (client && 'collectors' in client) {
242
+ const { error, state: collectors } = nodeSlice.selectors.selectCollectors(state) || [];
243
+ if (error) {
244
+ log.error(error.message);
245
+ return [];
246
+ }
247
+ return collectors;
248
+ }
249
+ // Return an empty array if no client or collectors are found
250
+ return [];
251
+ },
252
+ getError: () => {
253
+ const state = store.getState();
254
+ return nodeSlice.selectors.selectError(state);
255
+ },
256
+ getErrorCollectors: () => {
257
+ const state = store.getState();
258
+ const { error, state: collectors } = nodeSlice.selectors.selectErrorCollectors(state);
259
+ if (error) {
260
+ log.error(error.message);
261
+ return [];
262
+ }
263
+ return collectors;
264
+ },
265
+ /**
266
+ * @method node - Selector to get the node from state
267
+ * @returns {Node} - the current node from state
268
+ */
269
+ getNode: () => {
270
+ return nodeSlice.selectSlice(store.getState());
271
+ },
272
+ /**
273
+ * @method server - Selector to get the node.server from state
274
+ * @returns {Node.server} - the server property from the current node
275
+ */
276
+ getServer: () => {
277
+ const state = store.getState();
278
+ return nodeSlice.selectors.selectServer(state);
279
+ },
280
+ /**
281
+ * Utilities to help query cached responses from server
282
+ */
283
+ cache: {
284
+ getLatestResponse: () => {
285
+ const node = nodeSlice.selectSlice(store.getState());
286
+ if (!node.cache?.key) {
287
+ log.error(`Cannot find current node's cache key or no current node`);
288
+ return { error: { message: 'Cannot find current node', type: 'state_error' } };
289
+ }
290
+ const flowItem = davinciApi.endpoints.flow.select(node.cache.key);
291
+ const nextItem = davinciApi.endpoints.next.select(node.cache.key);
292
+ const startItem = davinciApi.endpoints.start.select(node.cache.key);
293
+ return flowItem || nextItem || startItem;
294
+ },
295
+ getResponseWithId: (requestId) => {
296
+ if (!requestId) {
297
+ log.error('Please provide the cache key');
298
+ return { error: { message: 'Please provide the cache key', type: 'argument_error' } };
299
+ }
300
+ const flowItem = davinciApi.endpoints.flow.select(requestId);
301
+ const nextItem = davinciApi.endpoints.next.select(requestId);
302
+ const startItem = davinciApi.endpoints.start.select(requestId);
303
+ return flowItem || nextItem || startItem;
304
+ },
305
+ },
306
+ };
307
+ }
308
+ //# sourceMappingURL=client.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.store.js","sourceRoot":"","sources":["../../../src/lib/client.store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { ActionTypes, RequestMiddleware } from '@forgerock/sdk-request-middleware';
2
+ import type { logger as loggerFn } from '@forgerock/sdk-logger';
3
+ import { ErrorNode, ContinueNode, StartNode, SuccessNode } from '../types.js';
4
+ import { InternalErrorResponse } from './client.types.js';
5
+ export declare function createClientStore<ActionType extends ActionTypes>({ requestMiddleware, logger, }: {
6
+ requestMiddleware?: RequestMiddleware<ActionType, unknown>[];
7
+ logger?: ReturnType<typeof loggerFn>;
8
+ }): import("@reduxjs/toolkit").EnhancedStore<{
9
+ config: {
10
+ endpoints: import("./wellknown.types.js").Endpoints;
11
+ clientId: string;
12
+ redirectUri: string;
13
+ responseType: string;
14
+ scope: string;
15
+ };
16
+ node: import("./node.types.js").ContinueNode | import("./node.types.js").ErrorNode | import("./node.types.js").FailureNode | import("./node.types.js").StartNode | import("./node.types.js").SuccessNode;
17
+ davinci: import("@reduxjs/toolkit/query").CombinedState<{
18
+ flow: import("@reduxjs/toolkit/query").MutationDefinition<any, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, unknown, "davinci", any>;
19
+ next: import("@reduxjs/toolkit/query").MutationDefinition<any, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, unknown, "davinci", any>;
20
+ start: import("@reduxjs/toolkit/query").MutationDefinition<import("./davinci.types.js").StartOptions<import("./davinci.types.js").OutgoingQueryParams> | undefined, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, unknown, "davinci", unknown>;
21
+ resume: import("@reduxjs/toolkit/query").QueryDefinition<{
22
+ serverInfo: import("./node.types.js").ContinueNode["server"];
23
+ continueToken: string;
24
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, unknown, "davinci", unknown>;
25
+ }, never, "davinci">;
26
+ wellknown: import("@reduxjs/toolkit/query").CombinedState<{
27
+ wellknown: import("@reduxjs/toolkit/query").QueryDefinition<string, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, import("./wellknown.types.js").WellknownResponse, "wellknown", unknown>;
28
+ }, never, "wellknown">;
29
+ }, import("@reduxjs/toolkit").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("@reduxjs/toolkit").StoreEnhancer<{
30
+ dispatch: import("@reduxjs/toolkit").ThunkDispatch<{
31
+ config: {
32
+ endpoints: import("./wellknown.types.js").Endpoints;
33
+ clientId: string;
34
+ redirectUri: string;
35
+ responseType: string;
36
+ scope: string;
37
+ };
38
+ node: import("./node.types.js").ContinueNode | import("./node.types.js").ErrorNode | import("./node.types.js").FailureNode | import("./node.types.js").StartNode | import("./node.types.js").SuccessNode;
39
+ davinci: import("@reduxjs/toolkit/query").CombinedState<{
40
+ flow: import("@reduxjs/toolkit/query").MutationDefinition<any, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, unknown, "davinci", any>;
41
+ next: import("@reduxjs/toolkit/query").MutationDefinition<any, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, unknown, "davinci", any>;
42
+ start: import("@reduxjs/toolkit/query").MutationDefinition<import("./davinci.types.js").StartOptions<import("./davinci.types.js").OutgoingQueryParams> | undefined, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, unknown, "davinci", unknown>;
43
+ resume: import("@reduxjs/toolkit/query").QueryDefinition<{
44
+ serverInfo: import("./node.types.js").ContinueNode["server"];
45
+ continueToken: string;
46
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, unknown, "davinci", unknown>;
47
+ }, never, "davinci">;
48
+ wellknown: import("@reduxjs/toolkit/query").CombinedState<{
49
+ wellknown: import("@reduxjs/toolkit/query").QueryDefinition<string, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {}, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, never, import("./wellknown.types.js").WellknownResponse, "wellknown", unknown>;
50
+ }, never, "wellknown">;
51
+ }, {
52
+ /**
53
+ * This becomes the `api.extra` argument, and will be passed into the
54
+ * customer query wrapper for `baseQuery`
55
+ */
56
+ requestMiddleware: RequestMiddleware<ActionType, unknown>[] | undefined;
57
+ logger: {
58
+ changeLevel: (level: import("@forgerock/sdk-logger").LogLevel) => void;
59
+ error: (...args: import("@forgerock/sdk-logger").LogMessage[]) => void;
60
+ warn: (...args: import("@forgerock/sdk-logger").LogMessage[]) => void;
61
+ info: (...args: import("@forgerock/sdk-logger").LogMessage[]) => void;
62
+ debug: (...args: import("@forgerock/sdk-logger").LogMessage[]) => void;
63
+ } | undefined;
64
+ }, import("@reduxjs/toolkit").UnknownAction>;
65
+ }>, import("@reduxjs/toolkit").StoreEnhancer]>>;
66
+ export declare function handleUpdateValidateError(message: string, type: 'argument_error' | 'state_error', cb: (message: string) => void): () => InternalErrorResponse;
67
+ type ClientStore = typeof createClientStore;
68
+ export type RootState = ReturnType<ReturnType<ClientStore>['getState']>;
69
+ export interface RootStateWithNode<T extends ErrorNode | ContinueNode | StartNode | SuccessNode> extends RootState {
70
+ node: T;
71
+ }
72
+ export type AppDispatch = ReturnType<ReturnType<ClientStore>['dispatch']>;
73
+ export {};
74
+ //# sourceMappingURL=client.store.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.store.utils.d.ts","sourceRoot":"","sources":["../../../src/lib/client.store.utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,KAAK,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAKhE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,wBAAgB,iBAAiB,CAAC,UAAU,SAAS,WAAW,EAAE,EAChE,iBAAiB,EACjB,MAAM,GACP,EAAE;IACD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;IAC7D,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;CACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAYW;;;WAGG;;;;oBAjCM,GAAG;mBAEZ,GAAG;mBAAwC,GAAG;oBAChD,GAAG;;;gDAuCZ;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,gBAAgB,GAAG,aAAa,EACtC,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC5B,MAAM,qBAAqB,CAW7B;AAED,KAAK,WAAW,GAAG,OAAO,iBAAiB,CAAC;AAE5C,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAExE,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAC7F,SAAQ,SAAS;IACjB,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ /*
2
+ * Copyright (c) 2025 Ping Identity Corporation. All rights reserved.
3
+ *
4
+ * This software may be modified and distributed under the terms
5
+ * of the MIT license. See the LICENSE file for details.
6
+ */
7
+ import { configureStore } from '@reduxjs/toolkit';
8
+ import { configSlice } from './config.slice.js';
9
+ import { nodeSlice } from './node.slice.js';
10
+ import { davinciApi } from './davinci.api.js';
11
+ import { wellknownApi } from './wellknown.api.js';
12
+ export function createClientStore({ requestMiddleware, logger, }) {
13
+ return configureStore({
14
+ reducer: {
15
+ config: configSlice.reducer,
16
+ node: nodeSlice.reducer,
17
+ [davinciApi.reducerPath]: davinciApi.reducer,
18
+ [wellknownApi.reducerPath]: wellknownApi.reducer,
19
+ },
20
+ middleware: (getDefaultMiddleware) => getDefaultMiddleware({
21
+ thunk: {
22
+ extraArgument: {
23
+ /**
24
+ * This becomes the `api.extra` argument, and will be passed into the
25
+ * customer query wrapper for `baseQuery`
26
+ */
27
+ requestMiddleware,
28
+ logger,
29
+ },
30
+ },
31
+ })
32
+ .concat(davinciApi.middleware)
33
+ .concat(wellknownApi.middleware),
34
+ });
35
+ }
36
+ export function handleUpdateValidateError(message, type, cb) {
37
+ cb(message);
38
+ return function () {
39
+ return {
40
+ error: {
41
+ message: message,
42
+ type: type,
43
+ },
44
+ type: 'internal_error',
45
+ };
46
+ };
47
+ }
48
+ //# sourceMappingURL=client.store.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.store.utils.js","sourceRoot":"","sources":["../../../src/lib/client.store.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,UAAU,iBAAiB,CAAiC,EAChE,iBAAiB,EACjB,MAAM,GAIP;IACC,OAAO,cAAc,CAAC;QACpB,OAAO,EAAE;YACP,MAAM,EAAE,WAAW,CAAC,OAAO;YAC3B,IAAI,EAAE,SAAS,CAAC,OAAO;YACvB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO;YAC5C,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,OAAO;SACjD;QACD,UAAU,EAAE,CAAC,oBAAoB,EAAE,EAAE,CACnC,oBAAoB,CAAC;YACnB,KAAK,EAAE;gBACL,aAAa,EAAE;oBACb;;;uBAGG;oBACH,iBAAiB;oBACjB,MAAM;iBACP;aACF;SACF,CAAC;aACC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;aAC7B,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;KACrC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAAe,EACf,IAAsC,EACtC,EAA6B;IAE7B,EAAE,CAAC,OAAO,CAAC,CAAC;IACZ,OAAO;QACL,OAAO;YACL,KAAK,EAAE;gBACL,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,IAAI;aACX;YACD,IAAI,EAAE,gBAAyB;SAChC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { GenericError } from '@forgerock/sdk-types';
2
+ import type { FidoRegistrationInputValue, FidoAuthenticationInputValue, PhoneNumberInputValue } from './collector.types.js';
3
+ import type { ErrorNode, FailureNode, ContinueNode, StartNode, SuccessNode } from './node.types.js';
4
+ export type FlowNode = ContinueNode | ErrorNode | StartNode | SuccessNode | FailureNode;
5
+ export interface InternalErrorResponse {
6
+ error: Omit<GenericError, 'error'> & {
7
+ message: string;
8
+ };
9
+ type: 'internal_error';
10
+ }
11
+ export type InitFlow = () => Promise<FlowNode | InternalErrorResponse>;
12
+ /**
13
+ * Maps collector types to the specific value type they accept.
14
+ * This enables type narrowing when using the update method with specific collector types.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * if (collector.type === "PasswordCollector") {
19
+ * const updater = davinciClient.update(collector);
20
+ * // updater now only accepts: (value: string, index?: number) => ...
21
+ * }
22
+ * ```
23
+ */
24
+ export type CollectorValueType<T> = T extends {
25
+ type: 'PasswordCollector';
26
+ } ? string : T extends {
27
+ type: 'TextCollector';
28
+ category: 'SingleValueCollector';
29
+ } ? string : T extends {
30
+ type: 'TextCollector';
31
+ category: 'ValidatedSingleValueCollector';
32
+ } ? string : T extends {
33
+ type: 'SingleSelectCollector';
34
+ } ? string : T extends {
35
+ type: 'MultiSelectCollector';
36
+ } ? string[] : T extends {
37
+ type: 'DeviceRegistrationCollector';
38
+ } ? string : T extends {
39
+ type: 'DeviceAuthenticationCollector';
40
+ } ? string : T extends {
41
+ type: 'PhoneNumberCollector';
42
+ } ? PhoneNumberInputValue : T extends {
43
+ type: 'FidoRegistrationCollector';
44
+ } ? FidoRegistrationInputValue : T extends {
45
+ type: 'FidoAuthenticationCollector';
46
+ } ? FidoAuthenticationInputValue : T extends {
47
+ category: 'SingleValueCollector';
48
+ } ? string : T extends {
49
+ category: 'ValidatedSingleValueCollector';
50
+ } ? string : T extends {
51
+ category: 'MultiValueCollector';
52
+ } ? string[] : string | string[] | PhoneNumberInputValue | FidoRegistrationInputValue | FidoAuthenticationInputValue;
53
+ /**
54
+ * Generic updater function that accepts values appropriate for the collector type.
55
+ * When used with type narrowing, the value parameter will be constrained to the correct type.
56
+ *
57
+ * @template T The collector type (inferred from the collector passed to update())
58
+ * @param value The value to update the collector with (type depends on T)
59
+ * @param index Optional index for multi-value collectors
60
+ * @returns null on success, or an InternalErrorResponse on failure
61
+ */
62
+ export type Updater<T = unknown> = (value: CollectorValueType<T>, index?: number) => InternalErrorResponse | null;
63
+ export type Validator = (value: string) => string[] | {
64
+ error: {
65
+ message: string;
66
+ type: string;
67
+ };
68
+ type: string;
69
+ };
70
+ export type NodeStates = StartNode | ContinueNode | ErrorNode | SuccessNode | FailureNode;
71
+ //# sourceMappingURL=client.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.types.d.ts","sourceRoot":"","sources":["../../../src/lib/client.types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC5B,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEpG,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAExF,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,GAAG,qBAAqB,CAAC,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GACvE,MAAM,GACN,CAAC,SAAS;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,sBAAsB,CAAA;CAAE,GACnE,MAAM,GACN,CAAC,SAAS;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,+BAA+B,CAAA;CAAE,GAC5E,MAAM,GACN,CAAC,SAAS;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,GACzC,MAAM,GACN,CAAC,SAAS;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,GACxC,MAAM,EAAE,GACR,CAAC,SAAS;IAAE,IAAI,EAAE,6BAA6B,CAAA;CAAE,GAC/C,MAAM,GACN,CAAC,SAAS;IAAE,IAAI,EAAE,+BAA+B,CAAA;CAAE,GACjD,MAAM,GACN,CAAC,SAAS;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,GACxC,qBAAqB,GACrB,CAAC,SAAS;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,GAC7C,0BAA0B,GAC1B,CAAC,SAAS;IAAE,IAAI,EAAE,6BAA6B,CAAA;CAAE,GAC/C,4BAA4B,GAC5B,CAAC,SAAS;IAAE,QAAQ,EAAE,sBAAsB,CAAA;CAAE,GAC5C,MAAM,GACN,CAAC,SAAS;IAAE,QAAQ,EAAE,+BAA+B,CAAA;CAAE,GACrD,MAAM,GACN,CAAC,SAAS;IAAE,QAAQ,EAAE,qBAAqB,CAAA;CAAE,GAC3C,MAAM,EAAE,GAEJ,MAAM,GACN,MAAM,EAAE,GACR,qBAAqB,GACrB,0BAA0B,GAC1B,4BAA4B,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,OAAO,IAAI,CACjC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,KAAK,CAAC,EAAE,MAAM,KACX,qBAAqB,GAAG,IAAI,CAAC;AAClC,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,KAClC,MAAM,EAAE,GACR;IACE,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEN,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.types.js","sourceRoot":"","sources":["../../../src/lib/client.types.ts"],"names":[],"mappings":""}