@forgerock/davinci-client 1.0.0 → 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.
- package/LICENSE +21 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/authorize.utils.d.ts.map +1 -0
- package/dist/src/lib/authorize.utils.js +47 -0
- package/dist/src/lib/authorize.utils.js.map +1 -0
- package/dist/src/lib/client.store.d.ts +351 -0
- package/dist/src/lib/client.store.d.ts.map +1 -0
- package/dist/src/lib/client.store.js +295 -0
- package/dist/src/lib/client.store.js.map +1 -0
- package/dist/src/lib/client.store.utils.d.ts +61 -0
- package/dist/src/lib/client.store.utils.d.ts.map +1 -0
- package/dist/src/lib/client.store.utils.js +35 -0
- package/dist/src/lib/client.store.utils.js.map +1 -0
- package/dist/src/lib/client.types.d.ts +17 -0
- package/dist/src/lib/client.types.d.ts.map +1 -0
- package/dist/src/lib/client.types.js +2 -0
- package/dist/src/lib/client.types.js.map +1 -0
- package/dist/src/lib/collector.types.d.ts +255 -0
- package/dist/src/lib/collector.types.d.ts.map +1 -0
- package/dist/src/lib/collector.types.js +11 -0
- package/dist/src/lib/collector.types.js.map +1 -0
- package/dist/src/lib/collector.utils.d.ts +100 -0
- package/dist/src/lib/collector.utils.d.ts.map +1 -0
- package/dist/src/lib/collector.utils.js +349 -0
- package/dist/src/lib/collector.utils.js.map +1 -0
- package/dist/{lib → src/lib}/config.slice.d.ts +12 -5
- package/dist/src/lib/config.slice.d.ts.map +1 -0
- package/dist/src/lib/config.slice.js +59 -0
- package/dist/src/lib/config.slice.js.map +1 -0
- package/dist/src/lib/config.types.d.ts +12 -0
- package/dist/src/lib/config.types.d.ts.map +1 -0
- package/dist/src/lib/config.types.js +2 -0
- package/dist/src/lib/config.types.js.map +1 -0
- package/dist/src/lib/davinci.api.d.ts +29 -0
- package/dist/src/lib/davinci.api.d.ts.map +1 -0
- package/dist/src/lib/davinci.api.js +333 -0
- package/dist/src/lib/davinci.api.js.map +1 -0
- package/dist/{lib → src/lib}/davinci.types.d.ts +62 -8
- package/dist/src/lib/davinci.types.d.ts.map +1 -0
- package/dist/src/lib/davinci.types.js +11 -0
- package/dist/src/lib/davinci.types.js.map +1 -0
- package/dist/{lib → src/lib}/davinci.utils.d.ts +10 -3
- package/dist/src/lib/davinci.utils.d.ts.map +1 -0
- package/dist/src/lib/davinci.utils.js +185 -0
- package/dist/src/lib/davinci.utils.js.map +1 -0
- package/dist/src/lib/effects/request.effect.mock.d.ts +4 -0
- package/dist/src/lib/effects/request.effect.mock.d.ts.map +1 -0
- package/dist/src/lib/effects/request.effect.mock.js +106 -0
- package/dist/src/lib/effects/request.effect.mock.js.map +1 -0
- package/dist/src/lib/effects/request.effect.types.d.ts +20 -0
- package/dist/src/lib/effects/request.effect.types.d.ts.map +1 -0
- package/dist/src/lib/effects/request.effect.types.js +2 -0
- package/dist/src/lib/effects/request.effect.types.js.map +1 -0
- package/dist/src/lib/effects/request.effect.unions.d.ts +12 -0
- package/dist/src/lib/effects/request.effect.unions.d.ts.map +1 -0
- package/dist/src/lib/effects/request.effect.unions.js +16 -0
- package/dist/src/lib/effects/request.effect.unions.js.map +1 -0
- package/dist/src/lib/effects/request.effect.utils.d.ts +27 -0
- package/dist/src/lib/effects/request.effect.utils.d.ts.map +1 -0
- package/dist/src/lib/effects/request.effect.utils.js +57 -0
- package/dist/src/lib/effects/request.effect.utils.js.map +1 -0
- package/dist/src/lib/error.types.d.ts.map +1 -0
- package/dist/src/lib/error.types.js +2 -0
- package/dist/src/lib/error.types.js.map +1 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +9 -0
- package/dist/src/lib/index.js.map +1 -0
- package/dist/src/lib/node.reducer.d.ts +27 -0
- package/dist/src/lib/node.reducer.d.ts.map +1 -0
- package/dist/src/lib/node.reducer.js +143 -0
- package/dist/src/lib/node.reducer.js.map +1 -0
- package/dist/{lib → src/lib}/node.slice.d.ts +34 -23
- package/dist/src/lib/node.slice.d.ts.map +1 -0
- package/dist/src/lib/node.slice.js +231 -0
- package/dist/src/lib/node.slice.js.map +1 -0
- package/dist/{lib → src/lib}/node.types.d.ts +16 -7
- package/dist/src/lib/node.types.d.ts.map +1 -0
- package/dist/src/lib/node.types.js +2 -0
- package/dist/src/lib/node.types.js.map +1 -0
- package/dist/src/lib/node.utils.d.ts +4 -0
- package/dist/src/lib/node.utils.d.ts.map +1 -0
- package/dist/src/lib/node.utils.js +32 -0
- package/dist/src/lib/node.utils.js.map +1 -0
- package/dist/src/lib/wellknown.api.d.ts +5 -0
- package/dist/src/lib/wellknown.api.d.ts.map +1 -0
- package/dist/src/lib/wellknown.api.js +22 -0
- package/dist/src/lib/wellknown.api.js.map +1 -0
- package/dist/src/lib/wellknown.types.d.ts.map +1 -0
- package/dist/src/lib/wellknown.types.js +2 -0
- package/dist/src/lib/wellknown.types.js.map +1 -0
- package/dist/{types.d.ts → src/types.d.ts} +9 -1
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +8 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +49 -20
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -4
- package/dist/lib/authorize.utils.d.ts.map +0 -1
- package/dist/lib/authorize.utils.js +0 -23
- package/dist/lib/client.store.d.ts +0 -149
- package/dist/lib/client.store.d.ts.map +0 -1
- package/dist/lib/client.store.js +0 -131
- package/dist/lib/client.store.utils.d.ts +0 -46
- package/dist/lib/client.store.utils.d.ts.map +0 -1
- package/dist/lib/client.store.utils.js +0 -19
- package/dist/lib/client.types.d.ts +0 -9
- package/dist/lib/client.types.d.ts.map +0 -1
- package/dist/lib/collector.types.d.ts +0 -78
- package/dist/lib/collector.types.d.ts.map +0 -1
- package/dist/lib/collector.utils.d.ts +0 -54
- package/dist/lib/collector.utils.d.ts.map +0 -1
- package/dist/lib/collector.utils.js +0 -88
- package/dist/lib/config.slice.d.ts.map +0 -1
- package/dist/lib/config.slice.js +0 -40
- package/dist/lib/config.types.d.ts +0 -9
- package/dist/lib/config.types.d.ts.map +0 -1
- package/dist/lib/davinci.api.d.ts +0 -20
- package/dist/lib/davinci.api.d.ts.map +0 -1
- package/dist/lib/davinci.api.js +0 -172
- package/dist/lib/davinci.types.d.ts.map +0 -1
- package/dist/lib/davinci.utils.d.ts.map +0 -1
- package/dist/lib/davinci.utils.js +0 -102
- package/dist/lib/error.types.d.ts.map +0 -1
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/node.reducer.d.ts +0 -22
- package/dist/lib/node.reducer.d.ts.map +0 -1
- package/dist/lib/node.reducer.js +0 -31
- package/dist/lib/node.slice.d.ts.map +0 -1
- package/dist/lib/node.slice.js +0 -160
- package/dist/lib/node.types.d.ts.map +0 -1
- package/dist/lib/wellknown.api.d.ts +0 -5
- package/dist/lib/wellknown.api.d.ts.map +0 -1
- package/dist/lib/wellknown.api.js +0 -15
- package/dist/lib/wellknown.types.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{lib → src/lib}/authorize.utils.d.ts +0 -0
- /package/dist/{lib → src/lib}/error.types.d.ts +0 -0
- /package/dist/{lib → src/lib}/index.d.ts +0 -0
- /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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|