@forgerock/davinci-client 0.1.3 → 1.1.0

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 (142) hide show
  1. package/LICENSE +21 -0
  2. package/dist/src/index.d.ts.map +1 -0
  3. package/dist/src/index.js +9 -0
  4. package/dist/src/index.js.map +1 -0
  5. package/dist/src/lib/authorize.utils.d.ts.map +1 -0
  6. package/dist/src/lib/authorize.utils.js +47 -0
  7. package/dist/src/lib/authorize.utils.js.map +1 -0
  8. package/dist/src/lib/client.store.d.ts +351 -0
  9. package/dist/src/lib/client.store.d.ts.map +1 -0
  10. package/dist/src/lib/client.store.js +295 -0
  11. package/dist/src/lib/client.store.js.map +1 -0
  12. package/dist/src/lib/client.store.utils.d.ts +61 -0
  13. package/dist/src/lib/client.store.utils.d.ts.map +1 -0
  14. package/dist/src/lib/client.store.utils.js +35 -0
  15. package/dist/src/lib/client.store.utils.js.map +1 -0
  16. package/dist/src/lib/client.types.d.ts +17 -0
  17. package/dist/src/lib/client.types.d.ts.map +1 -0
  18. package/dist/src/lib/client.types.js +2 -0
  19. package/dist/src/lib/client.types.js.map +1 -0
  20. package/dist/src/lib/collector.types.d.ts +255 -0
  21. package/dist/src/lib/collector.types.d.ts.map +1 -0
  22. package/dist/src/lib/collector.types.js +11 -0
  23. package/dist/src/lib/collector.types.js.map +1 -0
  24. package/dist/src/lib/collector.utils.d.ts +100 -0
  25. package/dist/src/lib/collector.utils.d.ts.map +1 -0
  26. package/dist/src/lib/collector.utils.js +349 -0
  27. package/dist/src/lib/collector.utils.js.map +1 -0
  28. package/dist/{lib → src/lib}/config.slice.d.ts +12 -5
  29. package/dist/src/lib/config.slice.d.ts.map +1 -0
  30. package/dist/src/lib/config.slice.js +59 -0
  31. package/dist/src/lib/config.slice.js.map +1 -0
  32. package/dist/src/lib/config.types.d.ts +12 -0
  33. package/dist/src/lib/config.types.d.ts.map +1 -0
  34. package/dist/src/lib/config.types.js +2 -0
  35. package/dist/src/lib/config.types.js.map +1 -0
  36. package/dist/src/lib/davinci.api.d.ts +29 -0
  37. package/dist/src/lib/davinci.api.d.ts.map +1 -0
  38. package/dist/src/lib/davinci.api.js +333 -0
  39. package/dist/src/lib/davinci.api.js.map +1 -0
  40. package/dist/{lib → src/lib}/davinci.types.d.ts +62 -8
  41. package/dist/src/lib/davinci.types.d.ts.map +1 -0
  42. package/dist/src/lib/davinci.types.js +11 -0
  43. package/dist/src/lib/davinci.types.js.map +1 -0
  44. package/dist/{lib → src/lib}/davinci.utils.d.ts +10 -3
  45. package/dist/src/lib/davinci.utils.d.ts.map +1 -0
  46. package/dist/src/lib/davinci.utils.js +185 -0
  47. package/dist/src/lib/davinci.utils.js.map +1 -0
  48. package/dist/src/lib/effects/request.effect.mock.d.ts +4 -0
  49. package/dist/src/lib/effects/request.effect.mock.d.ts.map +1 -0
  50. package/dist/src/lib/effects/request.effect.mock.js +106 -0
  51. package/dist/src/lib/effects/request.effect.mock.js.map +1 -0
  52. package/dist/src/lib/effects/request.effect.types.d.ts +20 -0
  53. package/dist/src/lib/effects/request.effect.types.d.ts.map +1 -0
  54. package/dist/src/lib/effects/request.effect.types.js +2 -0
  55. package/dist/src/lib/effects/request.effect.types.js.map +1 -0
  56. package/dist/src/lib/effects/request.effect.unions.d.ts +12 -0
  57. package/dist/src/lib/effects/request.effect.unions.d.ts.map +1 -0
  58. package/dist/src/lib/effects/request.effect.unions.js +16 -0
  59. package/dist/src/lib/effects/request.effect.unions.js.map +1 -0
  60. package/dist/src/lib/effects/request.effect.utils.d.ts +27 -0
  61. package/dist/src/lib/effects/request.effect.utils.d.ts.map +1 -0
  62. package/dist/src/lib/effects/request.effect.utils.js +57 -0
  63. package/dist/src/lib/effects/request.effect.utils.js.map +1 -0
  64. package/dist/src/lib/error.types.d.ts.map +1 -0
  65. package/dist/src/lib/error.types.js +2 -0
  66. package/dist/src/lib/error.types.js.map +1 -0
  67. package/dist/src/lib/index.d.ts.map +1 -0
  68. package/dist/src/lib/index.js +9 -0
  69. package/dist/src/lib/index.js.map +1 -0
  70. package/dist/src/lib/node.reducer.d.ts +27 -0
  71. package/dist/src/lib/node.reducer.d.ts.map +1 -0
  72. package/dist/src/lib/node.reducer.js +143 -0
  73. package/dist/src/lib/node.reducer.js.map +1 -0
  74. package/dist/{lib → src/lib}/node.slice.d.ts +34 -23
  75. package/dist/src/lib/node.slice.d.ts.map +1 -0
  76. package/dist/src/lib/node.slice.js +231 -0
  77. package/dist/src/lib/node.slice.js.map +1 -0
  78. package/dist/{lib → src/lib}/node.types.d.ts +16 -7
  79. package/dist/src/lib/node.types.d.ts.map +1 -0
  80. package/dist/src/lib/node.types.js +2 -0
  81. package/dist/src/lib/node.types.js.map +1 -0
  82. package/dist/src/lib/node.utils.d.ts +4 -0
  83. package/dist/src/lib/node.utils.d.ts.map +1 -0
  84. package/dist/src/lib/node.utils.js +32 -0
  85. package/dist/src/lib/node.utils.js.map +1 -0
  86. package/dist/src/lib/wellknown.api.d.ts +5 -0
  87. package/dist/src/lib/wellknown.api.d.ts.map +1 -0
  88. package/dist/src/lib/wellknown.api.js +22 -0
  89. package/dist/src/lib/wellknown.api.js.map +1 -0
  90. package/dist/src/lib/wellknown.types.d.ts.map +1 -0
  91. package/dist/src/lib/wellknown.types.js +2 -0
  92. package/dist/src/lib/wellknown.types.js.map +1 -0
  93. package/dist/{types.d.ts → src/types.d.ts} +9 -1
  94. package/dist/src/types.d.ts.map +1 -0
  95. package/dist/src/types.js +8 -0
  96. package/dist/src/types.js.map +1 -0
  97. package/package.json +48 -23
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/index.js +0 -4
  100. package/dist/lib/authorize.utils.d.ts.map +0 -1
  101. package/dist/lib/authorize.utils.js +0 -23
  102. package/dist/lib/client.store.d.ts +0 -149
  103. package/dist/lib/client.store.d.ts.map +0 -1
  104. package/dist/lib/client.store.js +0 -131
  105. package/dist/lib/client.store.utils.d.ts +0 -46
  106. package/dist/lib/client.store.utils.d.ts.map +0 -1
  107. package/dist/lib/client.store.utils.js +0 -19
  108. package/dist/lib/client.types.d.ts +0 -9
  109. package/dist/lib/client.types.d.ts.map +0 -1
  110. package/dist/lib/collector.types.d.ts +0 -78
  111. package/dist/lib/collector.types.d.ts.map +0 -1
  112. package/dist/lib/collector.utils.d.ts +0 -54
  113. package/dist/lib/collector.utils.d.ts.map +0 -1
  114. package/dist/lib/collector.utils.js +0 -88
  115. package/dist/lib/config.slice.d.ts.map +0 -1
  116. package/dist/lib/config.slice.js +0 -40
  117. package/dist/lib/config.types.d.ts +0 -9
  118. package/dist/lib/config.types.d.ts.map +0 -1
  119. package/dist/lib/davinci.api.d.ts +0 -20
  120. package/dist/lib/davinci.api.d.ts.map +0 -1
  121. package/dist/lib/davinci.api.js +0 -172
  122. package/dist/lib/davinci.types.d.ts.map +0 -1
  123. package/dist/lib/davinci.utils.d.ts.map +0 -1
  124. package/dist/lib/davinci.utils.js +0 -102
  125. package/dist/lib/error.types.d.ts.map +0 -1
  126. package/dist/lib/index.d.ts.map +0 -1
  127. package/dist/lib/node.reducer.d.ts +0 -22
  128. package/dist/lib/node.reducer.d.ts.map +0 -1
  129. package/dist/lib/node.reducer.js +0 -31
  130. package/dist/lib/node.slice.d.ts.map +0 -1
  131. package/dist/lib/node.slice.js +0 -160
  132. package/dist/lib/node.types.d.ts.map +0 -1
  133. package/dist/lib/wellknown.api.d.ts +0 -5
  134. package/dist/lib/wellknown.api.d.ts.map +0 -1
  135. package/dist/lib/wellknown.api.js +0 -15
  136. package/dist/lib/wellknown.types.d.ts.map +0 -1
  137. package/dist/types.d.ts.map +0 -1
  138. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  139. /package/dist/{lib → src/lib}/authorize.utils.d.ts +0 -0
  140. /package/dist/{lib → src/lib}/error.types.d.ts +0 -0
  141. /package/dist/{lib → src/lib}/index.d.ts +0 -0
  142. /package/dist/{lib → src/lib}/wellknown.types.d.ts +0 -0
@@ -0,0 +1,185 @@
1
+ import { nodeSlice } from './node.slice.js';
2
+ /**
3
+ * @function transformSubmitRequest - Transforms a NextNode into a DaVinciRequest for form submissions
4
+ * @param {ContinueNode} node - The node to transform into a DaVinciRequest
5
+ * @returns {DaVinciRequest} - The transformed request object
6
+ */
7
+ export function transformSubmitRequest(node) {
8
+ // Filter out ActionCollectors as they are not used in form submissions
9
+ const collectors = node.client?.collectors?.filter((collector) => collector.category === 'MultiValueCollector' ||
10
+ collector.category === 'SingleValueCollector' ||
11
+ collector.category === 'ValidatedSingleValueCollector');
12
+ const formData = collectors?.reduce((acc, collector) => {
13
+ acc[collector.input.key] = collector.input.value;
14
+ return acc;
15
+ }, {});
16
+ return {
17
+ id: node.server.id || '',
18
+ eventName: node.server.eventName || '',
19
+ interactionId: node.server.interactionId || '',
20
+ parameters: {
21
+ eventType: 'submit',
22
+ data: {
23
+ actionKey: node.client?.action || '',
24
+ formData: formData || {},
25
+ },
26
+ },
27
+ };
28
+ }
29
+ /**
30
+ * @function transformActionRequest - Transforms a NextNode into a DaVinciRequest for action requests
31
+ * @param {ContinueNode} node - The node to transform into a DaVinciRequest
32
+ * @param {string} action - The action to transform into a DaVinciRequest
33
+ * @returns {DaVinciRequest} - The transformed request object
34
+ */
35
+ export function transformActionRequest(node, action) {
36
+ return {
37
+ id: node.server.id || '',
38
+ eventName: node.server.eventName || '',
39
+ interactionId: node.server.interactionId || '',
40
+ parameters: {
41
+ eventType: 'action',
42
+ data: {
43
+ actionKey: action,
44
+ },
45
+ },
46
+ };
47
+ }
48
+ export function handleResponse(cacheEntry, dispatch, status) {
49
+ /**
50
+ * 5XX errors are treated as unrecoverable failures
51
+ */
52
+ if (cacheEntry.isError && cacheEntry.error.status >= 500) {
53
+ const data = cacheEntry.error.data;
54
+ const requestId = cacheEntry.requestId;
55
+ dispatch(nodeSlice.actions.failure({ data, requestId, httpStatus: cacheEntry.error.status }));
56
+ return; // Filter out 5XX's
57
+ }
58
+ /**
59
+ * Check for 4XX errors that are unrecoverable
60
+ */
61
+ if (cacheEntry.isError && cacheEntry.error.status >= 400 && cacheEntry.error.status < 500) {
62
+ const data = cacheEntry.error.data;
63
+ const requestId = cacheEntry.requestId;
64
+ // Filter out client-side "timeout" related unrecoverable failures
65
+ if (data.code === 1999 || data.code === 'requestTimedOut') {
66
+ dispatch(nodeSlice.actions.failure({ data, requestId, httpStatus: cacheEntry.error.status }));
67
+ return; // Filter out timeouts
68
+ }
69
+ // Filter our "PingOne Authentication Connector" unrecoverable failures
70
+ if (data.connectorId === 'pingOneAuthenticationConnector' &&
71
+ (data.capabilityName === 'returnSuccessResponseRedirect' ||
72
+ data.capabilityName === 'setSession')) {
73
+ dispatch(nodeSlice.actions.failure({ data, requestId, httpStatus: cacheEntry.error.status }));
74
+ return;
75
+ }
76
+ // If we're still here, we have a 4XX failure that should be recoverable
77
+ dispatch(nodeSlice.actions.error({ data, requestId, httpStatus: cacheEntry.error.status }));
78
+ return;
79
+ }
80
+ /**
81
+ * Check for 3XX errors that result in CORS errors, reported as FETCH_ERROR
82
+ */
83
+ if (cacheEntry.isError && cacheEntry.error.status === 'FETCH_ERROR') {
84
+ const data = {
85
+ code: cacheEntry.error.status,
86
+ message: 'Fetch Error: Please ensure a correct Client ID for your OAuth application.',
87
+ };
88
+ const requestId = cacheEntry.requestId;
89
+ dispatch(nodeSlice.actions.failure({ data, requestId, httpStatus: cacheEntry.error.status }));
90
+ return;
91
+ }
92
+ /**
93
+ * If the response's HTTP status is a success (2XX), but the DaVinci API has returned an error,
94
+ * we need to handle this as a failure or return as unknown.
95
+ */
96
+ if (cacheEntry.isSuccess && 'error' in cacheEntry.data) {
97
+ const data = cacheEntry.data;
98
+ const requestId = cacheEntry.requestId;
99
+ dispatch(nodeSlice.actions.failure({
100
+ data: data.error,
101
+ requestId,
102
+ httpStatus: status,
103
+ }));
104
+ return; // Filter out 2XX errors
105
+ }
106
+ /**
107
+ * If the response's HTTP status is a success (2XX), but the DaVinci API has returned an error,
108
+ * we need to handle this as a failure or return as unknown.
109
+ */
110
+ if (cacheEntry.isSuccess && 'status' in cacheEntry.data) {
111
+ const status = cacheEntry.data.status.toLowerCase();
112
+ if (status === 'failure') {
113
+ const data = cacheEntry.data;
114
+ const requestId = cacheEntry.requestId;
115
+ dispatch(nodeSlice.actions.failure({
116
+ data: data.error,
117
+ requestId,
118
+ httpStatus: status,
119
+ }));
120
+ return; // Filter out 2XX errors with 'failure' status
121
+ }
122
+ else {
123
+ // Do nothing
124
+ }
125
+ }
126
+ /**
127
+ * If we've made it here, we have a successful response and do not have an error property.
128
+ * Parse for state of the flow and dispatch appropriate action.
129
+ */
130
+ if (cacheEntry.isSuccess) {
131
+ const requestId = cacheEntry.requestId;
132
+ const hasNextUrl = () => {
133
+ const data = cacheEntry.data;
134
+ if ('_links' in data) {
135
+ if ('next' in data._links) {
136
+ if ('href' in data._links.next) {
137
+ return true;
138
+ }
139
+ }
140
+ }
141
+ return false;
142
+ };
143
+ if ('session' in cacheEntry.data || 'authorizeResponse' in cacheEntry.data) {
144
+ const data = cacheEntry.data;
145
+ dispatch(nodeSlice.actions.success({ data, requestId, httpStatus: status }));
146
+ }
147
+ else if (hasNextUrl()) {
148
+ const data = cacheEntry.data;
149
+ dispatch(nodeSlice.actions.next({ data, requestId, httpStatus: status }));
150
+ }
151
+ else {
152
+ // If we got here, the response type is unknown and therefore an unrecoverable failure
153
+ const data = cacheEntry.data;
154
+ dispatch(nodeSlice.actions.failure({ data, requestId, httpStatus: status }));
155
+ }
156
+ }
157
+ }
158
+ export function authorize(serverSlice, collector) {
159
+ if (serverSlice && '_links' in serverSlice) {
160
+ const continueUrl = serverSlice._links?.['continue']?.href ?? null;
161
+ if (continueUrl) {
162
+ window.localStorage.setItem('continueUrl', continueUrl);
163
+ if (collector.output.url) {
164
+ window.location.assign(collector.output.url);
165
+ }
166
+ }
167
+ else {
168
+ return {
169
+ error: {
170
+ message: 'No url found in collector, social login needs a url in the collector to navigate to',
171
+ type: 'network_error',
172
+ },
173
+ type: 'internal_error',
174
+ };
175
+ }
176
+ return {
177
+ error: {
178
+ message: 'No Continue Url found, social login needs a continue url to be saved in localStorage',
179
+ type: 'network_error',
180
+ },
181
+ type: 'internal_error',
182
+ };
183
+ }
184
+ }
185
+ //# sourceMappingURL=davinci.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"davinci.utils.js","sourceRoot":"","sources":["../../../src/lib/davinci.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { RequestMiddleware } from './request.effect.types.js';
2
+ declare const middleware: RequestMiddleware[];
3
+ export default middleware;
4
+ //# sourceMappingURL=request.effect.mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.effect.mock.d.ts","sourceRoot":"","sources":["../../../../src/lib/effects/request.effect.mock.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAA6B,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAa9F,QAAA,MAAM,UAAU,EAAE,iBAAiB,EA2ElC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,106 @@
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
+ * @forgerock/javascript-sdk
9
+ *
10
+ * middleware.mock.data.ts
11
+ *
12
+ * Copyright (c) 2020 ForgeRock. All rights reserved.
13
+ * This software may be modified and distributed under the terms
14
+ * of the MIT license. See the LICENSE file for details.
15
+ */
16
+ const a = 'a';
17
+ const b = 'b';
18
+ const one = '1';
19
+ const two = '2';
20
+ const add = 'ADD';
21
+ const reassignment = 'REASSIGNMENT';
22
+ const mutateAction = 'MUTATE-ACTION';
23
+ const middleware = [
24
+ (req, action, next) => {
25
+ switch (action.type) {
26
+ case a:
27
+ case b:
28
+ req.url.searchParams.set('letter', 'true');
29
+ if (req.headers)
30
+ req.headers.set('x-letter', 'true');
31
+ break;
32
+ case one:
33
+ case two:
34
+ req.url.searchParams.set('letter', 'false');
35
+ if (req.headers)
36
+ req.headers.set('x-letter', 'false');
37
+ break;
38
+ }
39
+ next();
40
+ },
41
+ (req, action, next) => {
42
+ switch (action.type) {
43
+ case a:
44
+ req.url.searchParams.set('char', 'a');
45
+ if (req.headers)
46
+ req.headers.set('x-char', 'a');
47
+ break;
48
+ case b:
49
+ req.url.searchParams.set('char', 'b');
50
+ if (req.headers)
51
+ req.headers.set('x-char', 'b');
52
+ break;
53
+ }
54
+ next();
55
+ },
56
+ (req, action, next) => {
57
+ switch (action.type) {
58
+ case one:
59
+ req.url.searchParams.set('char', '1');
60
+ if (req.headers)
61
+ req.headers.set('x-char', '1');
62
+ break;
63
+ case two:
64
+ req.url.searchParams.set('char', '2');
65
+ if (req.headers)
66
+ req.headers.set('x-char', '2');
67
+ break;
68
+ }
69
+ next();
70
+ },
71
+ (req, action, next) => {
72
+ switch (action.type) {
73
+ case add:
74
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
75
+ // @ts-ignore
76
+ req.headers?.set('x-char', 'a,' + action.payload);
77
+ break;
78
+ }
79
+ next();
80
+ },
81
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
82
+ // @ts-ignore
83
+ (req, action, next) => {
84
+ switch (action.type) {
85
+ case reassignment:
86
+ req = {
87
+ url: new URL('https://bad.com'),
88
+ headers: new Headers({ 'x-bad': 'true' }),
89
+ };
90
+ break;
91
+ }
92
+ next();
93
+ },
94
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
95
+ // @ts-ignore
96
+ (req, action, next) => {
97
+ switch (action.type) {
98
+ case mutateAction:
99
+ action.type = 'hello';
100
+ break;
101
+ }
102
+ next();
103
+ },
104
+ ];
105
+ export default middleware;
106
+ //# sourceMappingURL=request.effect.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.effect.mock.js","sourceRoot":"","sources":["../../../../src/lib/effects/request.effect.mock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { FetchArgs, FetchBaseQueryError, FetchBaseQueryMeta, QueryReturnValue } from '@reduxjs/toolkit/query';
2
+ import type { ActionTypes } from './request.effect.unions.js';
3
+ export interface Action {
4
+ type: ActionTypes;
5
+ payload: any;
6
+ }
7
+ export interface ModifiedFetchArgs extends Omit<FetchArgs, 'url'> {
8
+ url: URL;
9
+ headers?: Headers;
10
+ }
11
+ export type RequestMiddleware = (req: ModifiedFetchArgs, action: Action, next: () => ModifiedFetchArgs) => void;
12
+ export interface RequestObj {
13
+ url: URL;
14
+ init: RequestInit;
15
+ }
16
+ export interface QueryApi {
17
+ applyMiddleware(middleware: RequestMiddleware[]): QueryApi;
18
+ applyQuery(callback: (request: FetchArgs) => Promise<QueryReturnValue<unknown, FetchBaseQueryError, FetchBaseQueryMeta>>): Promise<QueryReturnValue<unknown, FetchBaseQueryError, FetchBaseQueryMeta>>;
19
+ }
20
+ //# sourceMappingURL=request.effect.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.effect.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/effects/request.effect.types.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,WAAW,CAAC;IAElB,OAAO,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;IAC/D,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,iBAAiB,KAC1B,IAAI,CAAC;AAEV,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,eAAe,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,QAAQ,CAAC;IAC3D,UAAU,CACR,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,KACf,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,GAC/E,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,CAAC;CAChF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=request.effect.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.effect.types.js","sourceRoot":"","sources":["../../../../src/lib/effects/request.effect.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ export declare const actionTypes: {
2
+ readonly start: "DAVINCI_START";
3
+ readonly next: "DAVINCI_NEXT";
4
+ readonly flow: "DAVINCI_FLOW";
5
+ readonly success: "DAVINCI_SUCCESS";
6
+ readonly error: "DAVINCI_ERROR";
7
+ readonly failure: "DAVINCI_FAILURE";
8
+ readonly resume: "DAVINCI_RESUME";
9
+ };
10
+ export type ActionTypes = (typeof actionTypes)[keyof typeof actionTypes];
11
+ export type EndpointTypes = keyof typeof actionTypes;
12
+ //# sourceMappingURL=request.effect.unions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.effect.unions.d.ts","sourceRoot":"","sources":["../../../../src/lib/effects/request.effect.unions.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW;;;;;;;;CAQd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AACzE,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,WAAW,CAAC"}
@@ -0,0 +1,16 @@
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
+ export const actionTypes = {
8
+ start: 'DAVINCI_START',
9
+ next: 'DAVINCI_NEXT',
10
+ flow: 'DAVINCI_FLOW',
11
+ success: 'DAVINCI_SUCCESS',
12
+ error: 'DAVINCI_ERROR',
13
+ failure: 'DAVINCI_FAILURE',
14
+ resume: 'DAVINCI_RESUME',
15
+ };
16
+ //# sourceMappingURL=request.effect.unions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.effect.unions.js","sourceRoot":"","sources":["../../../../src/lib/effects/request.effect.unions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,iBAAiB;IAC1B,KAAK,EAAE,eAAe;IACtB,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE,gBAAgB;CAChB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { FetchArgs, FetchBaseQueryError, FetchBaseQueryMeta, QueryReturnValue } from '@reduxjs/toolkit/query';
2
+ import type { ActionTypes, EndpointTypes } from './request.effect.unions.js';
3
+ import type { ModifiedFetchArgs, RequestMiddleware } from './request.effect.types.js';
4
+ /**
5
+ * @function middlewareWrapper - A "Node" and "Redux" style middleware that is called just before
6
+ * the request is made from the SDK. This allows you access to the request for modification.
7
+ * @param request - A request object container of the URL and the Request Init object
8
+ * @param action - The action object that is passed into the middleware communicating intent
9
+ * @param action.type - A "Redux" style type that contains the serialized action
10
+ * @param action.payload - The payload of the action that can contain metadata
11
+ * @returns {function} - Function that takes middleware parameter & runs middleware against request
12
+ */
13
+ export declare function middlewareWrapper(request: ModifiedFetchArgs, { type, payload }: {
14
+ type: ActionTypes;
15
+ payload?: any;
16
+ }): (middleware: RequestMiddleware[] | undefined) => ModifiedFetchArgs;
17
+ /**
18
+ * @function initQuery - Initializes a query object with the provided request object
19
+ * @param {FetchArgs} fetchArgs - The request object to initialize the query with
20
+ * @param {string} endpoint - The endpoint to be used for the query
21
+ * @returns
22
+ */
23
+ export declare function initQuery(fetchArgs: FetchArgs, endpoint: EndpointTypes): {
24
+ applyMiddleware(middleware: RequestMiddleware[] | undefined): /*elided*/ any;
25
+ applyQuery(callback: (request: FetchArgs) => Promise<QueryReturnValue<unknown, FetchBaseQueryError, FetchBaseQueryMeta>>): Promise<QueryReturnValue<unknown, FetchBaseQueryError, FetchBaseQueryMeta>>;
26
+ };
27
+ //# sourceMappingURL=request.effect.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.effect.utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/effects/request.effect.utils.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEtF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAE1B,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,GACtD,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,SAAS,KAAK,iBAAiB,CAoBpE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa;gCAOvC,iBAAiB,EAAE,GAAG,SAAS;yBAS/C,CACR,OAAO,EAAE,SAAS,KACf,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;EAOrF"}
@@ -0,0 +1,57 @@
1
+ import { actionTypes } from './request.effect.unions.js';
2
+ /**
3
+ * @function middlewareWrapper - A "Node" and "Redux" style middleware that is called just before
4
+ * the request is made from the SDK. This allows you access to the request for modification.
5
+ * @param request - A request object container of the URL and the Request Init object
6
+ * @param action - The action object that is passed into the middleware communicating intent
7
+ * @param action.type - A "Redux" style type that contains the serialized action
8
+ * @param action.payload - The payload of the action that can contain metadata
9
+ * @returns {function} - Function that takes middleware parameter & runs middleware against request
10
+ */
11
+ export function middlewareWrapper(request,
12
+ // eslint-disable-next-line
13
+ { type, payload }) {
14
+ // no mutation and no reassignment
15
+ const actionCopy = Object.freeze({ type, payload });
16
+ return (middleware) => {
17
+ if (!Array.isArray(middleware)) {
18
+ return request;
19
+ }
20
+ // Copy middleware so the `shift` below doesn't mutate source
21
+ const mwareCopy = middleware.map((fn) => fn);
22
+ function iterator() {
23
+ const nextMiddlewareToBeCalled = mwareCopy.shift();
24
+ if (nextMiddlewareToBeCalled)
25
+ nextMiddlewareToBeCalled(request, actionCopy, iterator);
26
+ return request;
27
+ }
28
+ return iterator();
29
+ };
30
+ }
31
+ /**
32
+ * @function initQuery - Initializes a query object with the provided request object
33
+ * @param {FetchArgs} fetchArgs - The request object to initialize the query with
34
+ * @param {string} endpoint - The endpoint to be used for the query
35
+ * @returns
36
+ */
37
+ export function initQuery(fetchArgs, endpoint) {
38
+ let modifiedRequest = {
39
+ ...fetchArgs,
40
+ url: new URL(fetchArgs.url),
41
+ headers: new Headers(fetchArgs.headers),
42
+ };
43
+ const queryApi = {
44
+ applyMiddleware(middleware) {
45
+ // Iterates and executes provided middleware functions
46
+ // Allow middleware to mutate `request` argument
47
+ const runMiddleware = middlewareWrapper(modifiedRequest, { type: actionTypes[endpoint] });
48
+ modifiedRequest = runMiddleware(middleware);
49
+ return queryApi;
50
+ },
51
+ async applyQuery(callback) {
52
+ return await callback({ ...modifiedRequest, url: modifiedRequest.url.toString() });
53
+ },
54
+ };
55
+ return queryApi;
56
+ }
57
+ //# sourceMappingURL=request.effect.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.effect.utils.js","sourceRoot":"","sources":["../../../../src/lib/effects/request.effect.utils.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAKzD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA0B;AAC1B,2BAA2B;AAC3B,EAAE,IAAI,EAAE,OAAO,EAAwC;IAEvD,kCAAkC;IAClC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpD,OAAO,CAAC,UAA2C,EAAE,EAAE;QACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,6DAA6D;QAC7D,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAE7C,SAAS,QAAQ;YACf,MAAM,wBAAwB,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YACnD,IAAI,wBAAwB;gBAAE,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtF,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,SAAoB,EAAE,QAAuB;IACrE,IAAI,eAAe,GAAsB;QACvC,GAAG,SAAS;QACZ,GAAG,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;QAC3B,OAAO,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,OAAiC,CAAC;KAClE,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,eAAe,CAAC,UAA2C;YACzD,sDAAsD;YACtD,gDAAgD;YAChD,MAAM,aAAa,GAAG,iBAAiB,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1F,eAAe,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YAE5C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,UAAU,CACd,QAEgF;YAEhF,OAAO,MAAM,QAAQ,CAAC,EAAE,GAAG,eAAe,EAAE,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.types.d.ts","sourceRoot":"","sources":["../../../src/lib/error.types.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EACA,gBAAgB,GAChB,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,eAAe,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=error.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.types.js","sourceRoot":"","sources":["../../../src/lib/error.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,9 @@
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 { davinci } from './client.store.js';
8
+ export { davinci };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { DaVinciField } from './davinci.types.js';
2
+ import { ActionCollector, MultiSelectCollector, SingleSelectCollector, FlowCollector, PasswordCollector, SingleValueCollector, IdpCollector, SubmitCollector, TextCollector, ReadOnlyCollector, ValidatedTextCollector } from './collector.types.js';
3
+ /**
4
+ * @const nextCollectorValues - Action for setting the next collector values
5
+ * @see https://redux-toolkit.js.org/api/createAction
6
+ *
7
+ * This is for internal "collector" setup for handling the state of the current node
8
+ */
9
+ export declare const nextCollectorValues: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
10
+ fields: DaVinciField[];
11
+ formData: {
12
+ value: Record<string, unknown>;
13
+ };
14
+ }, string>;
15
+ export declare const updateCollectorValues: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
16
+ id: string;
17
+ value: string | string[];
18
+ index?: number;
19
+ }, string>;
20
+ /**
21
+ * @const nodeCollectorReducer - Reducer for handling the collector values
22
+ * @see https://redux-toolkit.js.org/api/createReducer
23
+ */
24
+ export declare const nodeCollectorReducer: import("@reduxjs/toolkit").Reducer<(TextCollector | SingleSelectCollector | PasswordCollector | ValidatedTextCollector | MultiSelectCollector | IdpCollector | SubmitCollector | FlowCollector | ReadOnlyCollector | ActionCollector<"ActionCollector"> | SingleValueCollector<"SingleValueCollector">)[]> & {
25
+ getInitialState: () => (TextCollector | SingleSelectCollector | PasswordCollector | ValidatedTextCollector | MultiSelectCollector | IdpCollector | SubmitCollector | FlowCollector | ReadOnlyCollector | ActionCollector<"ActionCollector"> | SingleValueCollector<"SingleValueCollector">)[];
26
+ };
27
+ //# sourceMappingURL=node.reducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.reducer.d.ts","sourceRoot":"","sources":["../../../src/lib/node.reducer.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAE9B;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;YACtB,YAAY,EAAE;cACZ;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;UAC/B,CAAC;AAChB,eAAO,MAAM,qBAAqB;QAC5B,MAAM;WACH,MAAM,GAAG,MAAM,EAAE;YAChB,MAAM;UACC,CAAC;AAmBlB;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;CAuH/B,CAAC"}