@integration-app/react 0.2.1 → 0.3.2
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/dist/index.d.ts +396 -165
- package/dist/index.js +527 -234
- package/dist/index.js.map +1 -1
- package/dist/index.module.d.ts +396 -165
- package/dist/index.module.mjs +515 -235
- package/dist/index.module.mjs.map +1 -1
- package/dist/index.umd.d.ts +396 -165
- package/dist/index.umd.js +527 -238
- package/dist/index.umd.js.map +1 -1
- package/package.json +5 -2
- package/src/actions/useAction.ts +35 -0
- package/src/actions/useActionInstance.ts +56 -0
- package/src/actions/useActionInstances.ts +11 -0
- package/src/actions/useActions.ts +11 -0
- package/src/app-events/useAppEventSubscription.ts +6 -6
- package/src/app-events/useAppEventSubscriptions.ts +5 -4
- package/src/app-events/useAppEventType.ts +10 -7
- package/src/app-events/useAppEventTypes.ts +2 -4
- package/src/app-events/useAppEvents.ts +2 -4
- package/src/contexts/index.tsx +4 -0
- package/src/customers/useCustomer.ts +19 -0
- package/src/customers/useCustomers.ts +11 -0
- package/src/data-collections/useDataCollectionSpec.ts +26 -0
- package/src/data-links/useDataLinkTable.ts +18 -0
- package/src/data-links/useDataLinkTableInstance.ts +39 -0
- package/src/data-links/useDataLinkTableInstances.ts +19 -0
- package/src/data-links/useDataLinkTables.ts +11 -0
- package/src/data-sources/useDataSource.ts +29 -6
- package/src/data-sources/useDataSourceEvents.ts +2 -4
- package/src/data-sources/useDataSourceInstance.ts +120 -26
- package/src/data-sources/useDataSourceInstanceCollection.ts +14 -4
- package/src/data-sources/useDataSourceInstanceLocations.ts +17 -6
- package/src/data-sources/useDataSourceInstances.ts +5 -4
- package/src/data-sources/useDataSources.ts +2 -4
- package/src/field-mappings/useFieldMapping.ts +29 -8
- package/src/field-mappings/useFieldMappingInstance.ts +35 -12
- package/src/field-mappings/useFieldMappingInstances.ts +5 -4
- package/src/field-mappings/useFieldMappings.ts +2 -4
- package/src/flows/useFlow.ts +29 -8
- package/src/flows/useFlowInstance.ts +62 -5
- package/src/flows/useFlowInstances.ts +2 -4
- package/src/flows/useFlowRun.ts +18 -6
- package/src/flows/useFlowRuns.ts +5 -5
- package/src/flows/useFlows.ts +5 -5
- package/src/hooks/useElement.tsx +137 -149
- package/src/hooks/useElements.tsx +44 -73
- package/src/hooks/useIntegrationAppSWR.tsx +13 -0
- package/src/index.tsx +30 -14
- package/src/integrations/useConnection.ts +14 -5
- package/src/integrations/useConnections.ts +3 -4
- package/src/integrations/useConnectorSpec.ts +9 -18
- package/src/integrations/useIntegration.ts +11 -7
- package/src/integrations/useIntegrations.ts +3 -4
- package/src/screens/useScreen.ts +19 -0
- package/src/flows/useFlowTemplate.ts +0 -0
- package/src/flows/useFlowTemplates.ts +0 -0
- package/src/hooks/useGetter.tsx +0 -38
package/dist/index.umd.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
(function (global, factory) {
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime'), require('@integration-app/sdk'), require('react')) :
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime', '@integration-app/sdk', 'react'], factory) :
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.integrationAppReact = {}, global.jsxRuntime, global.sdk, global.react));
|
5
|
-
})(this, (function (exports, jsxRuntime, sdk, react) { 'use strict';
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime'), require('@integration-app/sdk'), require('react'), require('swr'), require('awesome-debounce-promise'), require('swr/infinite'), require('query-string')) :
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime', '@integration-app/sdk', 'react', 'swr', 'awesome-debounce-promise', 'swr/infinite', 'query-string'], factory) :
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.integrationAppReact = {}, global.jsxRuntime, global.sdk, global.react, global.useSWR, global.AwesomeDebouncePromise, global.useSWRInfinite, global.qs));
|
5
|
+
})(this, (function (exports, jsxRuntime, sdk, react, useSWR, AwesomeDebouncePromise, useSWRInfinite, qs) { 'use strict';
|
6
6
|
|
7
7
|
const IntegrationAppContext = react.createContext(null);
|
8
8
|
IntegrationAppContext.displayName = 'IntegrationAppClientContext';
|
@@ -21,373 +21,649 @@
|
|
21
21
|
return react.useContext(IntegrationAppContext);
|
22
22
|
}
|
23
23
|
|
24
|
-
function
|
25
|
-
const
|
26
|
-
const
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
return;
|
32
|
-
}
|
33
|
-
integrationApp
|
34
|
-
.integration(integrationKey)
|
35
|
-
.getConnectorSpec()
|
36
|
-
.then(setData)
|
37
|
-
.catch(setError)
|
38
|
-
.finally(() => setLoading(false));
|
39
|
-
}, [integrationApp, integrationKey]);
|
40
|
-
return { data, loading, error };
|
24
|
+
function useIntegrationAppSWR(path, options) {
|
25
|
+
const client = useIntegrationApp();
|
26
|
+
const fetcher = async () => {
|
27
|
+
const response = await client.get(path, options);
|
28
|
+
return response;
|
29
|
+
};
|
30
|
+
return useSWR(client ? path : undefined, fetcher, options);
|
41
31
|
}
|
42
32
|
|
43
|
-
|
33
|
+
const elementStateCache = new Map();
|
34
|
+
function useElement(selector, accessorGenerator) {
|
44
35
|
const integrationApp = useIntegrationApp();
|
45
|
-
const
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
36
|
+
const elementKeyData = {
|
37
|
+
token: integrationApp.token,
|
38
|
+
selector,
|
39
|
+
};
|
40
|
+
const elementKey = JSON.stringify(elementKeyData);
|
41
|
+
if (!elementStateCache.has(elementKey)) {
|
42
|
+
elementStateCache.set(elementKey, {
|
43
|
+
updatedLocally: false,
|
44
|
+
savingToServer: false,
|
45
|
+
debouncedPut: AwesomeDebouncePromise(async (data) => {
|
46
|
+
elementState.updatedLocally = false;
|
47
|
+
elementState.savingToServer = true;
|
48
|
+
try {
|
49
|
+
const result = await (accessor === null || accessor === void 0 ? void 0 : accessor.put(data));
|
50
|
+
if (!elementState.updatedLocally) {
|
51
|
+
elementState.savingToServer = false;
|
52
|
+
await mutate(result, false);
|
53
|
+
}
|
54
|
+
}
|
55
|
+
catch (e) {
|
56
|
+
elementState.updatedLocally = true;
|
57
|
+
throw e;
|
58
|
+
}
|
59
|
+
finally {
|
60
|
+
elementState.savingToServer = false;
|
61
|
+
}
|
62
|
+
}, 500),
|
63
|
+
});
|
56
64
|
}
|
57
|
-
|
58
|
-
|
59
|
-
}
|
60
|
-
const
|
61
|
-
|
62
|
-
|
63
|
-
const
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
if (
|
70
|
-
accessor
|
71
|
-
.get()
|
72
|
-
.then(setData)
|
73
|
-
.catch(setError)
|
74
|
-
.finally(() => setLoading(false));
|
75
|
-
}
|
76
|
-
else {
|
77
|
-
setError(new Error('IntegrationApp not found. Was this component wrapped in <IntegrationAppProvider>?'));
|
78
|
-
}
|
79
|
-
}, [
|
80
|
-
integrationApp,
|
81
|
-
JSON.stringify(selector),
|
82
|
-
JSON.stringify(props),
|
83
|
-
refreshCounter,
|
84
|
-
]);
|
85
|
-
async function create(createData) {
|
86
|
-
const returnedData = await accessor.create(createData);
|
87
|
-
replaceDataWith(returnedData);
|
88
|
-
return returnedData;
|
89
|
-
}
|
90
|
-
function refresh() {
|
91
|
-
setRefreshCounter(refreshCounter + 1);
|
92
|
-
}
|
93
|
-
async function patch(patch) {
|
94
|
-
if (typeof patch === 'object') {
|
95
|
-
updateDataWith(patch !== null && patch !== void 0 ? patch : {});
|
96
|
-
return accessor.patch(patch);
|
97
|
-
}
|
98
|
-
else {
|
99
|
-
return data;
|
65
|
+
const elementState = elementStateCache.get(elementKey);
|
66
|
+
const accessor = integrationApp ? accessorGenerator(integrationApp) : null;
|
67
|
+
const swrKey = accessor && selector ? `element:${elementKey}` : null;
|
68
|
+
const { data: item, mutate, error, isLoading, isValidating, } = useSWR(swrKey, () => accessor === null || accessor === void 0 ? void 0 : accessor.get(), {
|
69
|
+
isPaused: () => elementState.updatedLocally || elementState.savingToServer,
|
70
|
+
});
|
71
|
+
const loading = isLoading;
|
72
|
+
const refreshing = isValidating;
|
73
|
+
async function refresh() {
|
74
|
+
return await mutate();
|
75
|
+
}
|
76
|
+
async function put(data) {
|
77
|
+
if (!(accessor === null || accessor === void 0 ? void 0 : accessor.put)) {
|
78
|
+
throw new Error(`"put method is not supported for accessor ${accessor.constructor.name}`);
|
100
79
|
}
|
80
|
+
elementState.updatedLocally = true;
|
81
|
+
const newLocalData = {
|
82
|
+
...item,
|
83
|
+
...data,
|
84
|
+
};
|
85
|
+
await mutate(newLocalData, false);
|
86
|
+
await elementState.debouncedPut(data);
|
101
87
|
}
|
102
|
-
async function
|
103
|
-
|
104
|
-
|
88
|
+
async function patch(data) {
|
89
|
+
const newData = {
|
90
|
+
...item,
|
91
|
+
...data,
|
92
|
+
};
|
93
|
+
return put(newData);
|
105
94
|
}
|
106
95
|
async function archive() {
|
107
|
-
|
108
|
-
|
96
|
+
if (!(accessor === null || accessor === void 0 ? void 0 : accessor.archive)) {
|
97
|
+
return;
|
98
|
+
}
|
99
|
+
await mutate({ ...item, archivedAt: new Date().toISOString() }, false);
|
100
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.archive());
|
101
|
+
await mutate();
|
102
|
+
}
|
103
|
+
async function create(data) {
|
104
|
+
if (!(accessor === null || accessor === void 0 ? void 0 : accessor.create)) {
|
105
|
+
throw new Error(`"create method is not supported for accessor ${accessor.constructor.name}`);
|
106
|
+
}
|
107
|
+
const result = await (accessor === null || accessor === void 0 ? void 0 : accessor.create(data));
|
108
|
+
return await mutate(result);
|
109
109
|
}
|
110
110
|
return {
|
111
|
-
|
111
|
+
accessor,
|
112
|
+
item,
|
113
|
+
loading,
|
114
|
+
saving: elementState.updatedLocally || elementState.savingToServer,
|
115
|
+
error,
|
116
|
+
refresh,
|
117
|
+
refreshing,
|
112
118
|
create,
|
113
119
|
patch,
|
114
120
|
put,
|
115
121
|
archive,
|
116
|
-
refresh,
|
117
|
-
loading,
|
118
|
-
error,
|
119
|
-
accessor,
|
120
122
|
};
|
121
123
|
}
|
122
124
|
|
123
|
-
function
|
124
|
-
const {
|
125
|
-
return {
|
125
|
+
function useConnection(id) {
|
126
|
+
const { item: connection, ...rest } = useElement(id, (integrationApp) => integrationApp.connection(id));
|
127
|
+
return {
|
128
|
+
connection,
|
129
|
+
...rest,
|
130
|
+
};
|
126
131
|
}
|
127
132
|
|
128
|
-
|
133
|
+
const LIMIT = 25;
|
134
|
+
function useElements(route, query = {}) {
|
129
135
|
const integrationApp = useIntegrationApp();
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
136
|
+
function getKey(page, previousPageData) {
|
137
|
+
var _a;
|
138
|
+
if (page === 0)
|
139
|
+
return `/${route}?${qs.stringify({
|
140
|
+
...query,
|
141
|
+
limit: LIMIT,
|
142
|
+
})}`;
|
143
|
+
if (((_a = previousPageData.items) === null || _a === void 0 ? void 0 : _a.length) < LIMIT)
|
144
|
+
return null;
|
145
|
+
return `/${route}?${qs.stringify({
|
146
|
+
...query,
|
147
|
+
limit: LIMIT,
|
148
|
+
cursor: previousPageData.cursor,
|
149
|
+
})}`;
|
150
|
+
}
|
151
|
+
const [loadingMore, setIsLoadingMore] = react.useState(false);
|
152
|
+
const { data, size, setSize, isLoading, error, mutate, isValidating } = useSWRInfinite(getKey, (url) => integrationApp.get(url));
|
153
|
+
const items = data ? data.map((page) => page.items).flat() : [];
|
154
|
+
const loading = isLoading;
|
155
|
+
const refreshing = isValidating;
|
135
156
|
async function loadMore() {
|
136
|
-
|
137
|
-
const
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
setStateIfCurrentRefresh(setLoading, () => true);
|
143
|
-
const queryParams = {
|
144
|
-
...initialQuery,
|
145
|
-
};
|
146
|
-
if (nextCursor)
|
147
|
-
queryParams.cursor = nextCursor;
|
148
|
-
try {
|
149
|
-
const data = await accessorGenerator(integrationApp).find(queryParams);
|
150
|
-
setStateIfCurrentRefresh(setNextCursor, () => data.cursor);
|
151
|
-
setStateIfCurrentRefresh(setItems, (items) => isFirstPage ? data.items : [...items, ...data.items]);
|
152
|
-
}
|
153
|
-
catch (e) {
|
154
|
-
setStateIfCurrentRefresh(setError, () => e);
|
155
|
-
}
|
156
|
-
finally {
|
157
|
-
setStateIfCurrentRefresh(setLoading, () => false);
|
157
|
+
var _a, _b;
|
158
|
+
const hasMoreToLoad = ((_b = (_a = data[size - 1]) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.length) === LIMIT;
|
159
|
+
if (hasMoreToLoad) {
|
160
|
+
setIsLoadingMore(true);
|
161
|
+
await setSize(size + 1);
|
162
|
+
setIsLoadingMore(false);
|
158
163
|
}
|
159
164
|
}
|
160
|
-
react.useEffect(() => {
|
161
|
-
if (!integrationApp) {
|
162
|
-
setError(new Error('IntegrationApp not found. Was this component wrapped in <IntegrationAppProvider>?'));
|
163
|
-
return;
|
164
|
-
}
|
165
|
-
refresh();
|
166
|
-
}, [integrationApp, JSON.stringify(initialQuery)]);
|
167
165
|
async function refresh() {
|
168
|
-
|
169
|
-
setNextCursor(undefined);
|
170
|
-
await loadMore();
|
166
|
+
await mutate();
|
171
167
|
}
|
172
168
|
return {
|
173
169
|
items,
|
174
170
|
refresh,
|
171
|
+
refreshing,
|
175
172
|
loadMore,
|
173
|
+
loadingMore,
|
176
174
|
loading,
|
177
175
|
error,
|
178
176
|
};
|
179
177
|
}
|
180
178
|
|
181
|
-
function
|
182
|
-
const { ...rest } = useElements(
|
179
|
+
function useConnections(query) {
|
180
|
+
const { ...rest } = useElements('connections', query);
|
183
181
|
return {
|
182
|
+
connections: rest.items,
|
184
183
|
...rest,
|
185
184
|
};
|
186
185
|
}
|
187
186
|
|
188
|
-
function
|
189
|
-
const
|
190
|
-
|
187
|
+
function useConnectorSpec(integrationIdOrKey) {
|
188
|
+
const integrationApp = useIntegrationApp();
|
189
|
+
const { data, isLoading, error } = useSWR(integrationIdOrKey
|
190
|
+
? `/integrations/${integrationIdOrKey}/connector-spec`
|
191
|
+
: undefined, () => integrationApp.integration(integrationIdOrKey).getConnectorSpec());
|
192
|
+
return { data, loading: isLoading, error };
|
191
193
|
}
|
192
194
|
|
193
|
-
function
|
194
|
-
const { ...rest } =
|
195
|
+
function useIntegration(id) {
|
196
|
+
const { item: integration, ...rest } = useElement(id, (integrationApp) => integrationApp.integration(id));
|
197
|
+
return { integration, ...rest };
|
198
|
+
}
|
199
|
+
|
200
|
+
function useIntegrations(query) {
|
201
|
+
const { ...rest } = useElements('integrations', query);
|
195
202
|
return {
|
203
|
+
integrations: rest.items,
|
196
204
|
...rest,
|
197
205
|
};
|
198
206
|
}
|
199
207
|
|
200
|
-
function useFieldMapping(
|
201
|
-
const {
|
202
|
-
|
208
|
+
function useFieldMapping(selector) {
|
209
|
+
const { item: fieldMapping, accessor, refresh, ...rest } = useElement(selector, (integrationApp) => integrationApp.fieldMapping(selector));
|
210
|
+
async function apply(integrationKeys) {
|
211
|
+
const result = await (accessor === null || accessor === void 0 ? void 0 : accessor.apply(integrationKeys));
|
212
|
+
await refresh();
|
213
|
+
return result;
|
214
|
+
}
|
215
|
+
async function reset() {
|
216
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.reset());
|
217
|
+
await refresh();
|
218
|
+
}
|
219
|
+
return { fieldMapping, apply, reset, refresh, accessor, ...rest };
|
203
220
|
}
|
204
221
|
|
205
|
-
function
|
206
|
-
const { ...rest } =
|
222
|
+
function useFieldMappingInstance(selector) {
|
223
|
+
const { item: fieldMappingInstance, accessor, refresh, ...rest } = useElement(selector, (integrationApp) => integrationApp.fieldMappingInstance(selector));
|
224
|
+
async function setup() {
|
225
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.setup());
|
226
|
+
await refresh();
|
227
|
+
}
|
228
|
+
async function reset() {
|
229
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.reset());
|
230
|
+
await refresh();
|
231
|
+
}
|
232
|
+
async function openConfiguration(options) {
|
233
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.openConfiguration(options);
|
234
|
+
}
|
207
235
|
return {
|
236
|
+
fieldMappingInstance,
|
237
|
+
accessor,
|
238
|
+
refresh,
|
239
|
+
setup,
|
240
|
+
reset,
|
241
|
+
openConfiguration,
|
208
242
|
...rest,
|
209
243
|
};
|
210
244
|
}
|
211
245
|
|
212
|
-
function
|
213
|
-
const {
|
214
|
-
const accessor = rest.accessor;
|
246
|
+
function useFieldMappingInstances(query) {
|
247
|
+
const { ...rest } = useElements('field-mapping-instances', query);
|
215
248
|
return {
|
216
|
-
|
217
|
-
setup: () => accessor.setup(),
|
218
|
-
reset: () => accessor.reset(),
|
219
|
-
openConfiguration: (options) => accessor.openConfiguration(options),
|
249
|
+
fieldMappingInstances: rest.items,
|
220
250
|
...rest,
|
221
251
|
};
|
222
252
|
}
|
223
253
|
|
224
|
-
function
|
225
|
-
const { ...rest } = useElements(
|
254
|
+
function useFieldMappings(query) {
|
255
|
+
const { ...rest } = useElements('field-mappings', query);
|
226
256
|
return {
|
257
|
+
fieldMappings: rest.items,
|
227
258
|
...rest,
|
228
259
|
};
|
229
260
|
}
|
230
261
|
|
231
|
-
function useDataSource(
|
232
|
-
const {
|
233
|
-
|
262
|
+
function useDataSource(selector) {
|
263
|
+
const { item: dataSource, refresh, accessor, ...rest } = useElement(selector, (integrationApp) => integrationApp.dataSource(selector));
|
264
|
+
async function apply(integrationKeys) {
|
265
|
+
const result = await (accessor === null || accessor === void 0 ? void 0 : accessor.apply(integrationKeys));
|
266
|
+
await refresh();
|
267
|
+
return result;
|
268
|
+
}
|
269
|
+
async function reset() {
|
270
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.reset());
|
271
|
+
await refresh();
|
272
|
+
}
|
273
|
+
return { dataSource, apply, reset, refresh, accessor, ...rest };
|
234
274
|
}
|
235
275
|
|
236
|
-
function
|
237
|
-
const { ...rest } = useElements(
|
276
|
+
function useDataSourceEvents(query) {
|
277
|
+
const { ...rest } = useElements('data-source-events', query);
|
238
278
|
return {
|
279
|
+
dataSourceEvents: rest,
|
239
280
|
...rest,
|
240
281
|
};
|
241
282
|
}
|
242
283
|
|
243
284
|
function useDataSourceInstance(selector) {
|
244
|
-
const {
|
245
|
-
|
285
|
+
const { item: dataSourceInstance, accessor, refresh, ...rest } = useElement(selector, (integrationApp) => integrationApp.dataSourceInstance(selector));
|
286
|
+
async function setup() {
|
287
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.setup());
|
288
|
+
await refresh();
|
289
|
+
}
|
290
|
+
async function reset() {
|
291
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.reset());
|
292
|
+
await refresh();
|
293
|
+
}
|
294
|
+
async function subscribe(eventType) {
|
295
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.subscribe(eventType));
|
296
|
+
await refresh();
|
297
|
+
}
|
298
|
+
async function resubscribe(eventType) {
|
299
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.resubscribe(eventType));
|
300
|
+
await refresh();
|
301
|
+
}
|
302
|
+
async function unsubscribe(eventType) {
|
303
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.unsubscribe(eventType));
|
304
|
+
await refresh();
|
305
|
+
}
|
306
|
+
async function pullUpdates() {
|
307
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.pullUpdates());
|
308
|
+
await refresh();
|
309
|
+
}
|
310
|
+
async function fullSync() {
|
311
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.fullSync());
|
312
|
+
await refresh();
|
313
|
+
}
|
314
|
+
async function getSyncsList() {
|
315
|
+
return await (accessor === null || accessor === void 0 ? void 0 : accessor.getSyncsList());
|
316
|
+
}
|
317
|
+
async function openConfiguration(options) {
|
318
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.openConfiguration(options);
|
319
|
+
}
|
320
|
+
async function listRecords(request) {
|
321
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.listRecords(request);
|
322
|
+
}
|
323
|
+
async function findRecords(request) {
|
324
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.findRecords(request);
|
325
|
+
}
|
326
|
+
async function findRecordById(id) {
|
327
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.findRecordById(id);
|
328
|
+
}
|
329
|
+
async function createRecord(request) {
|
330
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.createRecord(request);
|
331
|
+
}
|
332
|
+
async function updateRecord(request) {
|
333
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.updateRecord(request);
|
334
|
+
}
|
335
|
+
async function deleteRecord(id) {
|
336
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.deleteRecord(id);
|
337
|
+
}
|
338
|
+
async function unifiedFieldsToNative(unifiedFields) {
|
339
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.unifiedFieldsToNative(unifiedFields);
|
340
|
+
}
|
341
|
+
async function getCollection() {
|
342
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.getCollection();
|
343
|
+
}
|
344
|
+
async function getLocations(request) {
|
345
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.getLocations(request);
|
346
|
+
}
|
246
347
|
return {
|
247
348
|
dataSourceInstance,
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
return {
|
349
|
+
accessor,
|
350
|
+
refresh,
|
351
|
+
setup,
|
352
|
+
reset,
|
353
|
+
subscribe,
|
354
|
+
resubscribe,
|
355
|
+
unsubscribe,
|
356
|
+
pullUpdates,
|
357
|
+
fullSync,
|
358
|
+
getSyncsList,
|
359
|
+
openConfiguration,
|
360
|
+
listRecords,
|
361
|
+
findRecords,
|
362
|
+
findRecordById,
|
363
|
+
createRecord,
|
364
|
+
updateRecord,
|
365
|
+
deleteRecord,
|
366
|
+
unifiedFieldsToNative,
|
367
|
+
getLocations,
|
368
|
+
getCollection,
|
269
369
|
...rest,
|
270
370
|
};
|
271
371
|
}
|
272
372
|
|
273
|
-
function useGetter(key, getter) {
|
274
|
-
const integrationApp = useIntegrationApp();
|
275
|
-
const [data, setData] = react.useState();
|
276
|
-
const [loading, setLoading] = react.useState(true);
|
277
|
-
const [error, setError] = react.useState(null);
|
278
|
-
const [refreshCounter, setRefreshCounter] = react.useState(0);
|
279
|
-
function refresh() {
|
280
|
-
setRefreshCounter(refreshCounter + 1);
|
281
|
-
}
|
282
|
-
react.useEffect(() => {
|
283
|
-
if (key !== undefined) {
|
284
|
-
setLoading(true);
|
285
|
-
setError(null);
|
286
|
-
if (integrationApp) {
|
287
|
-
getter()
|
288
|
-
.then(setData)
|
289
|
-
.catch(setError)
|
290
|
-
.finally(() => setLoading(false));
|
291
|
-
}
|
292
|
-
else {
|
293
|
-
setError(new Error('IntegrationApp not found. Was this component wrapped in <IntegrationAppProvider>?'));
|
294
|
-
}
|
295
|
-
}
|
296
|
-
}, [integrationApp, key, refreshCounter]);
|
297
|
-
return { data, loading, error, refresh };
|
298
|
-
}
|
299
|
-
|
300
373
|
function useDataSourceInstanceCollection(dataSourceInstance) {
|
301
374
|
const integrationApp = useIntegrationApp();
|
302
|
-
const { data
|
375
|
+
const { data, error, isLoading, mutate } = useSWR(dataSourceInstance ? `${dataSourceInstance.id}/collection` : null, () => integrationApp.dataSourceInstance(dataSourceInstance.id).getCollection());
|
376
|
+
async function refresh() {
|
377
|
+
return await mutate();
|
378
|
+
}
|
379
|
+
const collection = data;
|
303
380
|
return {
|
304
381
|
collection,
|
305
|
-
|
382
|
+
refresh,
|
383
|
+
error,
|
384
|
+
loading: isLoading,
|
306
385
|
};
|
307
386
|
}
|
308
387
|
|
309
388
|
function useDataSourceInstanceLocations(dataSourceInstance, args) {
|
310
389
|
var _a;
|
311
390
|
const integrationApp = useIntegrationApp();
|
312
|
-
const { data,
|
313
|
-
? `${dataSourceInstance.id}
|
314
|
-
:
|
391
|
+
const { data, error, isLoading, mutate } = useSWR(dataSourceInstance
|
392
|
+
? `${dataSourceInstance.id}/locations?${qs.stringify(args)}`
|
393
|
+
: null, () => integrationApp
|
315
394
|
.dataSourceInstance(dataSourceInstance.id)
|
316
395
|
.getLocations(args));
|
396
|
+
async function refresh() {
|
397
|
+
return await mutate();
|
398
|
+
}
|
399
|
+
const locations = (_a = data === null || data === void 0 ? void 0 : data.locations) !== null && _a !== void 0 ? _a : [];
|
317
400
|
return {
|
318
|
-
locations
|
401
|
+
locations,
|
402
|
+
refresh,
|
403
|
+
error,
|
404
|
+
loading: isLoading,
|
405
|
+
};
|
406
|
+
}
|
407
|
+
|
408
|
+
function useDataSourceInstances(query) {
|
409
|
+
const { ...rest } = useElements('data-source-instances', query);
|
410
|
+
return {
|
411
|
+
dataSourceInstances: rest.items,
|
319
412
|
...rest,
|
320
413
|
};
|
321
414
|
}
|
322
415
|
|
323
|
-
function
|
324
|
-
const { ...rest } = useElements(
|
416
|
+
function useDataSources(query) {
|
417
|
+
const { ...rest } = useElements('data-sources', query);
|
325
418
|
return {
|
419
|
+
dataSources: rest.items,
|
326
420
|
...rest,
|
327
421
|
};
|
328
422
|
}
|
329
423
|
|
330
|
-
function
|
331
|
-
const { ...rest } =
|
424
|
+
function useAppEventSubscription(selector) {
|
425
|
+
const { item: appEventSubscription, ...rest } = useElement(selector, (integrationApp) => integrationApp.appEventSubscription(selector));
|
426
|
+
return { appEventSubscription, ...rest };
|
427
|
+
}
|
428
|
+
|
429
|
+
function useAppEventSubscriptions(query) {
|
430
|
+
const { ...rest } = useElements('app-event-subscriptions', query);
|
332
431
|
return {
|
432
|
+
appEventSubscriptions: rest.items,
|
333
433
|
...rest,
|
334
434
|
};
|
335
435
|
}
|
336
436
|
|
337
|
-
function useAppEventType(
|
338
|
-
const {
|
437
|
+
function useAppEventType(id) {
|
438
|
+
const { item: appEventType, ...rest } = useElement(id, (integrationApp) => integrationApp.appEventType(id));
|
339
439
|
return { appEventType, ...rest };
|
340
440
|
}
|
341
441
|
|
342
442
|
function useAppEventTypes(query) {
|
343
|
-
const { ...rest } = useElements(
|
443
|
+
const { ...rest } = useElements('app-event-types', query);
|
344
444
|
return {
|
445
|
+
appEventTypes: rest.items,
|
345
446
|
...rest,
|
346
447
|
};
|
347
448
|
}
|
348
449
|
|
349
|
-
function
|
350
|
-
const {
|
351
|
-
return { appEventSubscription, ...rest };
|
352
|
-
}
|
353
|
-
|
354
|
-
function useAppEventSubscriptions(query) {
|
355
|
-
const { ...rest } = useElements(query, (integrationApp) => integrationApp.appEventSubscriptions);
|
450
|
+
function useAppEvents(query) {
|
451
|
+
const { ...rest } = useElements('app-events', query);
|
356
452
|
return {
|
453
|
+
appEvents: rest.items,
|
357
454
|
...rest,
|
358
455
|
};
|
359
456
|
}
|
360
457
|
|
361
|
-
function useFlow(
|
362
|
-
const {
|
363
|
-
|
458
|
+
function useFlow(selector) {
|
459
|
+
const { item: flow, accessor, refresh, ...rest } = useElement(selector, (integrationApp) => integrationApp.flow(selector));
|
460
|
+
async function apply(integrationKeys) {
|
461
|
+
const result = await (accessor === null || accessor === void 0 ? void 0 : accessor.apply(integrationKeys));
|
462
|
+
await refresh();
|
463
|
+
return result;
|
464
|
+
}
|
465
|
+
async function reset() {
|
466
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.reset());
|
467
|
+
return await refresh();
|
468
|
+
}
|
469
|
+
return { flow, apply, reset, refresh, accessor, ...rest };
|
364
470
|
}
|
365
471
|
|
366
472
|
function useFlows(query) {
|
367
|
-
const { ...rest } = useElements(
|
368
|
-
return {
|
473
|
+
const { ...rest } = useElements('flows', query);
|
474
|
+
return {
|
475
|
+
flows: rest.items,
|
476
|
+
...rest,
|
477
|
+
};
|
369
478
|
}
|
370
479
|
|
371
|
-
function useFlowInstance(
|
372
|
-
const {
|
373
|
-
|
480
|
+
function useFlowInstance(selector) {
|
481
|
+
const { item: flowInstance, accessor, refresh, ...rest } = useElement(selector, (integrationApp) => integrationApp.flowInstance(selector));
|
482
|
+
async function enable() {
|
483
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.enable());
|
484
|
+
await refresh();
|
485
|
+
}
|
486
|
+
async function disable() {
|
487
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.disable());
|
488
|
+
await refresh();
|
489
|
+
}
|
490
|
+
async function reset() {
|
491
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.reset());
|
492
|
+
await refresh();
|
493
|
+
}
|
494
|
+
async function setup() {
|
495
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.setup());
|
496
|
+
await refresh();
|
497
|
+
}
|
498
|
+
async function openConfiguration(options) {
|
499
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.openConfiguration(options);
|
500
|
+
}
|
501
|
+
async function run(options = {}) {
|
502
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.run(options);
|
503
|
+
}
|
504
|
+
async function startRun(options = {}) {
|
505
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.startRun(options);
|
506
|
+
}
|
507
|
+
return {
|
508
|
+
flowInstance,
|
509
|
+
accessor,
|
510
|
+
refresh,
|
511
|
+
enable,
|
512
|
+
disable,
|
513
|
+
reset,
|
514
|
+
setup,
|
515
|
+
openConfiguration,
|
516
|
+
run,
|
517
|
+
startRun,
|
518
|
+
...rest,
|
519
|
+
};
|
374
520
|
}
|
375
521
|
|
376
522
|
function useFlowInstances(query) {
|
377
|
-
const { ...rest } = useElements(
|
523
|
+
const { ...rest } = useElements('flow-instances', query);
|
378
524
|
return {
|
525
|
+
flowInstances: rest.items,
|
379
526
|
...rest,
|
380
527
|
};
|
381
528
|
}
|
382
529
|
|
383
530
|
function useFlowRun(id) {
|
384
|
-
const {
|
385
|
-
return {
|
531
|
+
const { item: flowRun, archive, refresh, error, loading, } = useElement(id, (integrationApp) => integrationApp.flowRun(id));
|
532
|
+
return {
|
533
|
+
flowRun,
|
534
|
+
error,
|
535
|
+
loading,
|
536
|
+
refresh,
|
537
|
+
archive,
|
538
|
+
};
|
386
539
|
}
|
387
540
|
|
388
541
|
function useFlowRuns(query) {
|
389
|
-
const { ...rest } = useElements(
|
390
|
-
return {
|
542
|
+
const { ...rest } = useElements('flow-runs', query);
|
543
|
+
return {
|
544
|
+
flowRuns: rest.items,
|
545
|
+
...rest,
|
546
|
+
};
|
547
|
+
}
|
548
|
+
|
549
|
+
function useDataLinkTable(selector) {
|
550
|
+
const { item: dataLinkTable, ...rest } = useElement(selector, (integrationApp) => integrationApp.dataLinkTable(selector));
|
551
|
+
return { dataLinkTable, ...rest };
|
552
|
+
}
|
553
|
+
|
554
|
+
function useDataLinkTableInstance(selector) {
|
555
|
+
const { item: dataLinkTableInstance, accessor, refresh, ...rest } = useElement(selector, (integrationApp) => integrationApp.dataLinkTableInstance(selector));
|
556
|
+
return {
|
557
|
+
dataLinkTableInstance,
|
558
|
+
accessor,
|
559
|
+
refresh,
|
560
|
+
findLinks: accessor === null || accessor === void 0 ? void 0 : accessor.findLinks,
|
561
|
+
createLink: accessor === null || accessor === void 0 ? void 0 : accessor.createLink,
|
562
|
+
deleteLink: accessor === null || accessor === void 0 ? void 0 : accessor.deleteLink,
|
563
|
+
...rest,
|
564
|
+
};
|
565
|
+
}
|
566
|
+
|
567
|
+
function useDataLinkTableInstances(query) {
|
568
|
+
const { ...rest } = useElements('data-link-table-instances', query);
|
569
|
+
return {
|
570
|
+
dataLinkTableInstances: rest.items,
|
571
|
+
...rest,
|
572
|
+
};
|
573
|
+
}
|
574
|
+
|
575
|
+
function useDataLinkTables(query) {
|
576
|
+
const { ...rest } = useElements('data-link-tables', query);
|
577
|
+
return {
|
578
|
+
dataLinkTables: rest.items,
|
579
|
+
...rest,
|
580
|
+
};
|
581
|
+
}
|
582
|
+
|
583
|
+
function useAction(selector) {
|
584
|
+
const { item: action, accessor, refresh, ...rest } = useElement(selector, (integrationApp) => integrationApp.action(selector));
|
585
|
+
async function apply(integrationKeys) {
|
586
|
+
const result = await (accessor === null || accessor === void 0 ? void 0 : accessor.apply(integrationKeys));
|
587
|
+
await refresh();
|
588
|
+
return result;
|
589
|
+
}
|
590
|
+
async function reset() {
|
591
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.reset());
|
592
|
+
await refresh();
|
593
|
+
}
|
594
|
+
return { action, apply, reset, refresh, accessor, ...rest };
|
595
|
+
}
|
596
|
+
|
597
|
+
function useActionInstance(selector) {
|
598
|
+
const { item: actionInstance, accessor, refresh, ...rest } = useElement(selector, (integrationApp) => integrationApp.actionInstance(selector));
|
599
|
+
async function run(input) {
|
600
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.run(input);
|
601
|
+
}
|
602
|
+
async function setup() {
|
603
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.setup());
|
604
|
+
await refresh();
|
605
|
+
}
|
606
|
+
async function reset() {
|
607
|
+
await (accessor === null || accessor === void 0 ? void 0 : accessor.reset());
|
608
|
+
await refresh();
|
609
|
+
}
|
610
|
+
async function openConfiguration(options) {
|
611
|
+
return accessor === null || accessor === void 0 ? void 0 : accessor.open(options);
|
612
|
+
}
|
613
|
+
return {
|
614
|
+
actionInstance,
|
615
|
+
accessor,
|
616
|
+
refresh,
|
617
|
+
setup,
|
618
|
+
reset,
|
619
|
+
openConfiguration,
|
620
|
+
run,
|
621
|
+
...rest,
|
622
|
+
};
|
623
|
+
}
|
624
|
+
|
625
|
+
function useActionInstances(query) {
|
626
|
+
const { ...rest } = useElements('action-instances', query);
|
627
|
+
return {
|
628
|
+
actionInstances: rest.items,
|
629
|
+
...rest,
|
630
|
+
};
|
631
|
+
}
|
632
|
+
|
633
|
+
function useActions(query) {
|
634
|
+
const { ...rest } = useElements('actions', query);
|
635
|
+
return {
|
636
|
+
actions: rest.items,
|
637
|
+
...rest,
|
638
|
+
};
|
639
|
+
}
|
640
|
+
|
641
|
+
function useScreen(selector) {
|
642
|
+
const { item: screen, ...rest } = useElement(selector, (integrationApp) => integrationApp.screen(selector));
|
643
|
+
return { screen, ...rest };
|
644
|
+
}
|
645
|
+
|
646
|
+
function useCustomer(selector) {
|
647
|
+
const { item: customer, ...rest } = useElement(selector, (c) => c.customer(selector));
|
648
|
+
return { customer, ...rest };
|
649
|
+
}
|
650
|
+
|
651
|
+
function useCustomers(query) {
|
652
|
+
const { ...rest } = useElements('users', query);
|
653
|
+
return {
|
654
|
+
customers: rest.items,
|
655
|
+
...rest,
|
656
|
+
};
|
657
|
+
}
|
658
|
+
|
659
|
+
function useDataCollectionSpec({ path, key, integrationId, }) {
|
660
|
+
var _a;
|
661
|
+
const client = useIntegrationApp();
|
662
|
+
const dataCollectionKey = key !== null && key !== void 0 ? key : (_a = sdk.parseDataLocationPath(path)) === null || _a === void 0 ? void 0 : _a.key;
|
663
|
+
const { data: dataCollectionSpec } = useSWR(dataCollectionKey && integrationId
|
664
|
+
? `/integrations/${integrationId}/data/${dataCollectionKey}`
|
665
|
+
: null, () => client.integration(integrationId).getDataLocation(dataCollectionKey));
|
666
|
+
return dataCollectionSpec;
|
391
667
|
}
|
392
668
|
|
393
669
|
Object.defineProperty(exports, 'DataForm', {
|
@@ -395,6 +671,10 @@
|
|
395
671
|
get: function () { return sdk.DataForm; }
|
396
672
|
});
|
397
673
|
exports.IntegrationAppProvider = IntegrationAppProvider;
|
674
|
+
exports.useAction = useAction;
|
675
|
+
exports.useActionInstance = useActionInstance;
|
676
|
+
exports.useActionInstances = useActionInstances;
|
677
|
+
exports.useActions = useActions;
|
398
678
|
exports.useAppEventSubscription = useAppEventSubscription;
|
399
679
|
exports.useAppEventSubscriptions = useAppEventSubscriptions;
|
400
680
|
exports.useAppEventType = useAppEventType;
|
@@ -403,12 +683,19 @@
|
|
403
683
|
exports.useConnection = useConnection;
|
404
684
|
exports.useConnections = useConnections;
|
405
685
|
exports.useConnectorSpec = useConnectorSpec;
|
686
|
+
exports.useCustomer = useCustomer;
|
687
|
+
exports.useCustomers = useCustomers;
|
688
|
+
exports.useDataCollectionSpec = useDataCollectionSpec;
|
689
|
+
exports.useDataLinkTable = useDataLinkTable;
|
690
|
+
exports.useDataLinkTableInstance = useDataLinkTableInstance;
|
691
|
+
exports.useDataLinkTableInstances = useDataLinkTableInstances;
|
692
|
+
exports.useDataLinkTables = useDataLinkTables;
|
406
693
|
exports.useDataSource = useDataSource;
|
407
|
-
exports.useDataSourceCollection = useDataSourceInstanceCollection;
|
408
694
|
exports.useDataSourceEvents = useDataSourceEvents;
|
409
695
|
exports.useDataSourceInstance = useDataSourceInstance;
|
696
|
+
exports.useDataSourceInstanceCollection = useDataSourceInstanceCollection;
|
697
|
+
exports.useDataSourceInstanceLocations = useDataSourceInstanceLocations;
|
410
698
|
exports.useDataSourceInstances = useDataSourceInstances;
|
411
|
-
exports.useDataSourceLocations = useDataSourceInstanceLocations;
|
412
699
|
exports.useDataSources = useDataSources;
|
413
700
|
exports.useFieldMapping = useFieldMapping;
|
414
701
|
exports.useFieldMappingInstance = useFieldMappingInstance;
|
@@ -422,7 +709,9 @@
|
|
422
709
|
exports.useFlows = useFlows;
|
423
710
|
exports.useIntegration = useIntegration;
|
424
711
|
exports.useIntegrationApp = useIntegrationApp;
|
712
|
+
exports.useIntegrationAppSWR = useIntegrationAppSWR;
|
425
713
|
exports.useIntegrations = useIntegrations;
|
714
|
+
exports.useScreen = useScreen;
|
426
715
|
|
427
716
|
}));
|
428
717
|
//# sourceMappingURL=index.umd.js.map
|