@peers-app/peers-ui 0.13.6 → 0.14.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/dist/components/left-bar.js +0 -9
- package/dist/components/router.js +0 -44
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/mention-configs.d.ts +0 -2
- package/dist/mention-configs.js +1 -38
- package/dist/screens/search/global-search.js +2 -4
- package/dist/screens/workflows/workflow-details.js +5 -56
- package/dist/system-apps/index.d.ts +0 -4
- package/dist/system-apps/index.js +1 -18
- package/dist/ui-defaults/index.d.ts +0 -1
- package/dist/ui-defaults/index.js +0 -1
- package/dist/ui-defaults/list-screen.js +0 -1
- package/docs/tabs-ui.md +6 -21
- package/package.json +3 -3
- package/src/components/left-bar.tsx +0 -12
- package/src/components/router.tsx +0 -48
- package/src/index.tsx +2 -2
- package/src/mention-configs.ts +1 -40
- package/src/screens/search/global-search.tsx +2 -6
- package/src/screens/workflows/workflow-details.tsx +3 -28
- package/src/system-apps/index.ts +0 -14
- package/src/ui-defaults/index.ts +0 -1
- package/src/ui-defaults/list-screen.tsx +0 -1
- package/dist/screens/events/cron.d.ts +0 -3
- package/dist/screens/events/cron.js +0 -77
- package/dist/screens/events/event-details.d.ts +0 -6
- package/dist/screens/events/event-details.js +0 -112
- package/dist/screens/events/event-handlers.d.ts +0 -7
- package/dist/screens/events/event-handlers.js +0 -84
- package/dist/screens/events/event-info.d.ts +0 -5
- package/dist/screens/events/event-info.js +0 -19
- package/dist/screens/events/event-list.d.ts +0 -2
- package/dist/screens/events/event-list.js +0 -107
- package/dist/screens/events/event-schedule.d.ts +0 -5
- package/dist/screens/events/event-schedule.js +0 -124
- package/dist/screens/knowledge/knowledge-frame-details.bk.d.ts +0 -6
- package/dist/screens/knowledge/knowledge-frame-details.bk.js +0 -84
- package/dist/screens/knowledge/knowledge-frame-details.d.ts +0 -8
- package/dist/screens/knowledge/knowledge-frame-details.js +0 -143
- package/dist/screens/knowledge/knowledge-frame-list.d.ts +0 -2
- package/dist/screens/knowledge/knowledge-frame-list.js +0 -45
- package/dist/screens/knowledge/knowledge-value-details.d.ts +0 -6
- package/dist/screens/knowledge/knowledge-value-details.js +0 -150
- package/dist/screens/knowledge/knowledge-value-list-item.d.ts +0 -5
- package/dist/screens/knowledge/knowledge-value-list-item.js +0 -39
- package/dist/screens/knowledge/knowledge-value-list.d.ts +0 -3
- package/dist/screens/knowledge/knowledge-value-list.js +0 -123
- package/dist/screens/predicates/predicate-details.d.ts +0 -6
- package/dist/screens/predicates/predicate-details.js +0 -103
- package/dist/screens/predicates/predicate-list.d.ts +0 -2
- package/dist/screens/predicates/predicate-list.js +0 -46
- package/dist/screens/workflows/workflow-subscriptions.d.ts +0 -6
- package/dist/screens/workflows/workflow-subscriptions.js +0 -81
- package/dist/system-apps/events.app.d.ts +0 -2
- package/dist/system-apps/events.app.js +0 -8
- package/dist/system-apps/knowledge-frames.app.d.ts +0 -2
- package/dist/system-apps/knowledge-frames.app.js +0 -9
- package/dist/system-apps/knowledge-values.app.d.ts +0 -2
- package/dist/system-apps/knowledge-values.app.js +0 -9
- package/dist/system-apps/predicates.app.d.ts +0 -2
- package/dist/system-apps/predicates.app.js +0 -8
- package/dist/ui-defaults/notes-editor.d.ts +0 -7
- package/dist/ui-defaults/notes-editor.js +0 -41
- package/src/screens/events/cron.ts +0 -74
- package/src/screens/events/event-details.tsx +0 -117
- package/src/screens/events/event-handlers.tsx +0 -61
- package/src/screens/events/event-info.tsx +0 -29
- package/src/screens/events/event-list.tsx +0 -104
- package/src/screens/events/event-schedule.tsx +0 -130
- package/src/screens/knowledge/knowledge-frame-details.bk.tsx +0 -160
- package/src/screens/knowledge/knowledge-frame-details.tsx +0 -176
- package/src/screens/knowledge/knowledge-frame-list.tsx +0 -49
- package/src/screens/knowledge/knowledge-value-details.tsx +0 -181
- package/src/screens/knowledge/knowledge-value-list-item.tsx +0 -48
- package/src/screens/knowledge/knowledge-value-list.tsx +0 -131
- package/src/screens/predicates/predicate-details.tsx +0 -125
- package/src/screens/predicates/predicate-list.tsx +0 -50
- package/src/screens/workflows/workflow-subscriptions.tsx +0 -58
- package/src/system-apps/events.app.ts +0 -7
- package/src/system-apps/knowledge-frames.app.ts +0 -8
- package/src/system-apps/knowledge-values.app.ts +0 -8
- package/src/system-apps/predicates.app.ts +0 -7
- package/src/ui-defaults/notes-editor.tsx +0 -51
|
@@ -10,22 +10,14 @@ import { ToolTestDetails } from "../screens/tools/tool-test-details";
|
|
|
10
10
|
import { WorkflowDetails } from "../screens/workflows/workflow-details";
|
|
11
11
|
import { WorkflowList } from "../screens/workflows/workflow-list";
|
|
12
12
|
import { ChannelMessages } from "./messages/channel-view";
|
|
13
|
-
import { PeerEventList } from "../screens/events/event-list";
|
|
14
|
-
import { PeerEventDetails } from "../screens/events/event-details";
|
|
15
13
|
import { SettingsPage } from "../screens/settings/settings-page";
|
|
16
14
|
import { PackageDetails } from "../screens/packages/package-details";
|
|
17
15
|
import { PackageList } from "../screens/packages/package-list";
|
|
18
16
|
import { PackageNewLocal } from "../screens/packages/package-new-local";
|
|
19
17
|
import { VariableList } from "../screens/variables/variable-list";
|
|
20
18
|
import { VariableDetails } from "../screens/variables/variable-details";
|
|
21
|
-
import { KnowledgeFrameList } from "../screens/knowledge/knowledge-frame-list";
|
|
22
|
-
import { KnowledgeFrameDetails } from "../screens/knowledge/knowledge-frame-details";
|
|
23
19
|
import { PeerTypeLists } from "../screens/peer-types/peer-type-list";
|
|
24
20
|
import { PeerTypeDetails } from "../screens/peer-types/peer-type-details";
|
|
25
|
-
import { PredicateList } from "../screens/predicates/predicate-list";
|
|
26
|
-
import { PredicateDetails } from "../screens/predicates/predicate-details";
|
|
27
|
-
import { KnowledgeValueList } from "../screens/knowledge/knowledge-value-list";
|
|
28
|
-
import { KnowledgeValueDetails } from "../screens/knowledge/knowledge-value-details";
|
|
29
21
|
import { UIRouter } from "../ui-router/ui-loader";
|
|
30
22
|
import { useObservable } from "../hooks";
|
|
31
23
|
import { ThreadMessageList } from "./messages/thread-message-list";
|
|
@@ -126,16 +118,6 @@ export function Router({ path: providedPath }: { path?: string } = {}) {
|
|
|
126
118
|
return <ToolDetails toolId={toolId} />;
|
|
127
119
|
}
|
|
128
120
|
|
|
129
|
-
if (path === 'events') {
|
|
130
|
-
return <PeerEventList />;
|
|
131
|
-
}
|
|
132
|
-
if (path.match(/^events\//)) {
|
|
133
|
-
const parts = path.split('/');
|
|
134
|
-
parts.shift();
|
|
135
|
-
const id = parts[0];
|
|
136
|
-
return <PeerEventDetails peerEventTypeId={id} />;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
121
|
if (path === 'packages') {
|
|
140
122
|
return <PackageList />;
|
|
141
123
|
}
|
|
@@ -159,26 +141,6 @@ export function Router({ path: providedPath }: { path?: string } = {}) {
|
|
|
159
141
|
return <VariableDetails persistentVarId={id} />;
|
|
160
142
|
}
|
|
161
143
|
|
|
162
|
-
if (path === 'knowledge-values') {
|
|
163
|
-
return <KnowledgeValueList />;
|
|
164
|
-
}
|
|
165
|
-
if (path.match(/^knowledge-values\/([a-zA-Z0-9]{25})/)) {
|
|
166
|
-
const parts = path.split('/');
|
|
167
|
-
parts.shift();
|
|
168
|
-
const id = parts[0];
|
|
169
|
-
return <KnowledgeValueDetails knowledgeValueId={id} />;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
if (path === 'knowledge-frames') {
|
|
173
|
-
return <KnowledgeFrameList />;
|
|
174
|
-
}
|
|
175
|
-
if (path.match(/^knowledge-frames\//)) {
|
|
176
|
-
const parts = path.split('/');
|
|
177
|
-
parts.shift();
|
|
178
|
-
const id = parts[0];
|
|
179
|
-
return <KnowledgeFrameDetails knowledgeFrameId={id} />;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
144
|
if (path === 'peer-types') {
|
|
183
145
|
return <PeerTypeLists />;
|
|
184
146
|
}
|
|
@@ -189,16 +151,6 @@ export function Router({ path: providedPath }: { path?: string } = {}) {
|
|
|
189
151
|
return <PeerTypeDetails peerTypeId={id} />;
|
|
190
152
|
}
|
|
191
153
|
|
|
192
|
-
if (path === 'predicates') {
|
|
193
|
-
return <PredicateList />;
|
|
194
|
-
}
|
|
195
|
-
if (path.match(/^predicates\//)) {
|
|
196
|
-
const parts = path.split('/');
|
|
197
|
-
parts.shift();
|
|
198
|
-
const id = parts[0];
|
|
199
|
-
return <PredicateDetails predicateId={id} />;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
154
|
if (path.match(/^threads\//)) {
|
|
203
155
|
const parts = path.split('/');
|
|
204
156
|
parts.shift();
|
package/src/index.tsx
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export * from "./hooks";
|
|
2
|
-
export * from "./screens/events/cron";
|
|
3
2
|
|
|
4
3
|
export * from "./tabs-layout/tabs-layout";
|
|
5
4
|
export { activeTabId, activeTabs, TabState, updateActiveTabTitle, closeCurrentTab, goToTabPath } from "./tabs-layout/tabs-state";
|
|
@@ -10,4 +9,5 @@ export * from "./components/sortable-list";
|
|
|
10
9
|
export * from "./components/tabs";
|
|
11
10
|
export * from "./components/inverse-lazy-list";
|
|
12
11
|
export * from "./components/markdown-editor/editor-inline";
|
|
13
|
-
export * from "./components/markdown-editor/editor";
|
|
12
|
+
export * from "./components/markdown-editor/editor";
|
|
13
|
+
export * from "./components/markdown-with-mentions";
|
package/src/mention-configs.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Assistants, IMentionData,
|
|
1
|
+
import { Assistants, IMentionData, PeerTypes, rpcClientCalls, Tools, Users, Workflows } from "@peers-app/peers-sdk";
|
|
2
2
|
// import { MENTIONS_MAX_RESULTS } from "../client/components/markdown-editor/mentions-plugin";
|
|
3
3
|
|
|
4
4
|
const MENTIONS_MAX_RESULTS = 10;
|
|
@@ -89,43 +89,6 @@ export const workflowMentionConfig: IMentionConfig = {
|
|
|
89
89
|
}),
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
export const peerEventTypeMentionConfig: IMentionConfig = {
|
|
93
|
-
kind: 'event',
|
|
94
|
-
iconClass: 'bi bi-lightning-charge-fill',
|
|
95
|
-
styleClass: 'mention-event',
|
|
96
|
-
query: async (search: string) => {
|
|
97
|
-
return PeerEventTypes().list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS })
|
|
98
|
-
.then((events) => events.map((event) => ({
|
|
99
|
-
kind: 'event' as const,
|
|
100
|
-
id: event.peerEventTypeId,
|
|
101
|
-
name: event.name,
|
|
102
|
-
})));
|
|
103
|
-
},
|
|
104
|
-
getById: id => PeerEventTypes().get(id).then(item => item && {
|
|
105
|
-
kind: 'event',
|
|
106
|
-
id: item.peerEventTypeId,
|
|
107
|
-
name: item.name
|
|
108
|
-
}),
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
export const predicateMentionConfig: IMentionConfig = {
|
|
112
|
-
kind: 'predicate',
|
|
113
|
-
iconClass: 'bi bi-node-plus-fill',
|
|
114
|
-
query: async (search: string) => {
|
|
115
|
-
const results = await Predicates().list({ name: { $matchWords: search } }, { pageSize: MENTIONS_MAX_RESULTS });
|
|
116
|
-
return results.map(p => ({
|
|
117
|
-
kind: 'predicate',
|
|
118
|
-
id: p.predicateId,
|
|
119
|
-
name: p.name
|
|
120
|
-
}));
|
|
121
|
-
},
|
|
122
|
-
getById: id => Predicates().get(id).then(item => item && {
|
|
123
|
-
kind: 'predicate',
|
|
124
|
-
id: item.predicateId,
|
|
125
|
-
name: item.name
|
|
126
|
-
}),
|
|
127
|
-
};
|
|
128
|
-
|
|
129
92
|
export const valueTypeMentionConfig: IMentionConfig = {
|
|
130
93
|
kind: 'type',
|
|
131
94
|
iconClass: 'bi bi-code-square',
|
|
@@ -160,7 +123,5 @@ export const mentionConfigs = [
|
|
|
160
123
|
userMentionConfig,
|
|
161
124
|
assistantMentionConfig,
|
|
162
125
|
workflowMentionConfig,
|
|
163
|
-
peerEventTypeMentionConfig,
|
|
164
|
-
predicateMentionConfig,
|
|
165
126
|
valueTypeMentionConfig,
|
|
166
127
|
];
|
|
@@ -7,8 +7,6 @@ import {
|
|
|
7
7
|
userMentionConfig,
|
|
8
8
|
assistantMentionConfig,
|
|
9
9
|
workflowMentionConfig,
|
|
10
|
-
peerEventTypeMentionConfig,
|
|
11
|
-
predicateMentionConfig,
|
|
12
10
|
valueTypeMentionConfig,
|
|
13
11
|
IMentionConfig
|
|
14
12
|
} from '../../mention-configs';
|
|
@@ -55,8 +53,6 @@ export function GlobalSearch() {
|
|
|
55
53
|
{ config: toolMentionConfig, category: 'Tools', navigationPath: 'tools' },
|
|
56
54
|
{ config: assistantMentionConfig, category: 'Assistants', navigationPath: 'assistants' },
|
|
57
55
|
{ config: workflowMentionConfig, category: 'Workflows', navigationPath: 'workflows' },
|
|
58
|
-
{ config: peerEventTypeMentionConfig, category: 'Events', navigationPath: 'events' },
|
|
59
|
-
{ config: predicateMentionConfig, category: 'Predicates', navigationPath: 'predicates' },
|
|
60
56
|
{ config: valueTypeMentionConfig, category: 'Types', navigationPath: 'peer-types' },
|
|
61
57
|
{ config: userMentionConfig, category: 'Users', navigationPath: 'profile' },
|
|
62
58
|
];
|
|
@@ -191,7 +187,7 @@ export function GlobalSearch() {
|
|
|
191
187
|
ref={inputRef}
|
|
192
188
|
type="text"
|
|
193
189
|
className={`form-control form-control-lg ${isDark ? 'bg-dark text-light border-secondary' : ''}`}
|
|
194
|
-
placeholder="Search across apps, tools, assistants, workflows,
|
|
190
|
+
placeholder="Search across apps, tools, assistants, workflows, and more..."
|
|
195
191
|
value={searchQuery}
|
|
196
192
|
onChange={(e) => setSearchQuery(e.target.value)}
|
|
197
193
|
style={{
|
|
@@ -372,7 +368,7 @@ export function GlobalSearch() {
|
|
|
372
368
|
<i className="bi-search mb-3 d-block text-muted" style={{ fontSize: '64px' }} />
|
|
373
369
|
<h3 className="text-muted mb-3">Search across everything</h3>
|
|
374
370
|
<p className="text-muted mb-4" style={{ maxWidth: '400px', margin: '0 auto' }}>
|
|
375
|
-
Find apps, tools, assistants, workflows,
|
|
371
|
+
Find apps, tools, assistants, workflows, types, and users all in one place.
|
|
376
372
|
</p>
|
|
377
373
|
<div className="d-flex flex-wrap justify-content-center gap-2">
|
|
378
374
|
{searchConfigs.map(({ config, category }) => (
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defaultAssistantId, getAllAssistantIdsMentioned,
|
|
2
|
-
import React
|
|
1
|
+
import { defaultAssistantId, getAllAssistantIdsMentioned, IWorkflow, runWorkflow, Workflows } from "@peers-app/peers-sdk";
|
|
2
|
+
import React from "react";
|
|
3
3
|
import { Input } from "../../components/input";
|
|
4
4
|
import { LoadingIndicator } from "../../components/loading-indicator";
|
|
5
5
|
import { SaveButton } from "../../components/save-button";
|
|
@@ -9,7 +9,6 @@ import { usePromise } from "../../hooks";
|
|
|
9
9
|
import { updateActiveTabTitle } from "../../tabs-layout/tabs-state";
|
|
10
10
|
import { WorkflowInfo } from "./workflow-info";
|
|
11
11
|
import { WorkflowInstructions } from "./workflow-instructions";
|
|
12
|
-
import { WorkflowEventSubscriptions } from "./workflow-subscriptions";
|
|
13
12
|
|
|
14
13
|
interface IProps {
|
|
15
14
|
workflowId: string;
|
|
@@ -26,18 +25,7 @@ export const WorkflowDetails = (props: IProps) => {
|
|
|
26
25
|
return Workflows().initDoc(workflow);
|
|
27
26
|
}, undefined, [props.workflowId]);
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const handlersLoaded = usePromise(async () => {
|
|
32
|
-
if (!workflow) return false;
|
|
33
|
-
const _handlers = await PeerEventHandlers().list({ handlerWorkflowId: workflow.workflowId });
|
|
34
|
-
handlers(_handlers);
|
|
35
|
-
return true;
|
|
36
|
-
}, false, [workflow]);
|
|
37
|
-
|
|
38
|
-
const allLoaded = !!(workflow && handlersLoaded);
|
|
39
|
-
|
|
40
|
-
if (!allLoaded) {
|
|
28
|
+
if (!workflow) {
|
|
41
29
|
return <LoadingIndicator />;
|
|
42
30
|
}
|
|
43
31
|
|
|
@@ -47,13 +35,6 @@ export const WorkflowDetails = (props: IProps) => {
|
|
|
47
35
|
const assistantsMentioned = await getAllAssistantIdsMentioned(workflow.instructions[0].markdown ?? '');
|
|
48
36
|
workflow.defaultAssistantId = assistantsMentioned[0] || defaultAssistantId;
|
|
49
37
|
workflow.save();
|
|
50
|
-
const oldHandlers = await PeerEventHandlers().list({ handlerWorkflowId: workflow.workflowId });
|
|
51
|
-
for (const oldHandler of oldHandlers) {
|
|
52
|
-
await PeerEventHandlers().delete(oldHandler.peerEventHandlerId);
|
|
53
|
-
}
|
|
54
|
-
for (const handler of handlers()) {
|
|
55
|
-
PeerEventHandlers().save(handler, { restoreIfDeleted: true });
|
|
56
|
-
}
|
|
57
38
|
}
|
|
58
39
|
|
|
59
40
|
return (
|
|
@@ -107,12 +88,6 @@ export const WorkflowDetails = (props: IProps) => {
|
|
|
107
88
|
<WorkflowInstructions workflow={workflow} />
|
|
108
89
|
</ScreenTabBody>
|
|
109
90
|
},
|
|
110
|
-
{
|
|
111
|
-
name: 'Subscriptions', content:
|
|
112
|
-
<ScreenTabBody>
|
|
113
|
-
<WorkflowEventSubscriptions workflow={workflow} eventSubscriptions={handlers} />
|
|
114
|
-
</ScreenTabBody>
|
|
115
|
-
},
|
|
116
91
|
]}
|
|
117
92
|
/>
|
|
118
93
|
</div>
|
package/src/system-apps/index.ts
CHANGED
|
@@ -5,14 +5,10 @@ export { searchApp } from './search.app';
|
|
|
5
5
|
export { assistantsApp } from './assistants.app';
|
|
6
6
|
export { toolsApp } from './tools.app';
|
|
7
7
|
export { workflowsApp } from './workflows.app';
|
|
8
|
-
export { eventsApp } from './events.app';
|
|
9
8
|
export { variablesApp } from './variables.app';
|
|
10
9
|
export { typesApp } from './types.app';
|
|
11
10
|
export { packagesApp } from './packages.app';
|
|
12
11
|
export { threadsApp } from './threads.app';
|
|
13
|
-
export { knowledgeValuesApp } from './knowledge-values.app';
|
|
14
|
-
export { knowledgeFramesApp } from './knowledge-frames.app';
|
|
15
|
-
export { predicatesApp } from './predicates.app';
|
|
16
12
|
export { settingsApp } from './settings.app';
|
|
17
13
|
export { groupsApp } from './groups.app';
|
|
18
14
|
export { joinGroupApp } from './join-group.app';
|
|
@@ -27,14 +23,10 @@ import { searchApp } from './search.app';
|
|
|
27
23
|
import { assistantsApp } from './assistants.app';
|
|
28
24
|
import { toolsApp } from './tools.app';
|
|
29
25
|
import { workflowsApp } from './workflows.app';
|
|
30
|
-
import { eventsApp } from './events.app';
|
|
31
26
|
import { variablesApp } from './variables.app';
|
|
32
27
|
import { typesApp } from './types.app';
|
|
33
28
|
import { packagesApp } from './packages.app';
|
|
34
29
|
import { threadsApp } from './threads.app';
|
|
35
|
-
import { knowledgeValuesApp } from './knowledge-values.app';
|
|
36
|
-
import { knowledgeFramesApp } from './knowledge-frames.app';
|
|
37
|
-
import { predicatesApp } from './predicates.app';
|
|
38
30
|
import { settingsApp } from './settings.app';
|
|
39
31
|
import { groupsApp } from './groups.app';
|
|
40
32
|
import { joinGroupApp } from './join-group.app';
|
|
@@ -55,18 +47,12 @@ export const systemApps: IAppNav[] = [
|
|
|
55
47
|
searchApp,
|
|
56
48
|
threadsApp,
|
|
57
49
|
|
|
58
|
-
// Knowledge & Data
|
|
59
|
-
knowledgeValuesApp,
|
|
60
|
-
knowledgeFramesApp,
|
|
61
|
-
predicatesApp,
|
|
62
|
-
|
|
63
50
|
// Core Management Apps
|
|
64
51
|
variablesApp,
|
|
65
52
|
typesApp,
|
|
66
53
|
assistantsApp,
|
|
67
54
|
toolsApp,
|
|
68
55
|
workflowsApp,
|
|
69
|
-
eventsApp,
|
|
70
56
|
packagesApp,
|
|
71
57
|
groupsApp,
|
|
72
58
|
joinGroupApp,
|
package/src/ui-defaults/index.ts
CHANGED
|
@@ -15,7 +15,6 @@ export const DefaultListScreen = (props: IProps) => {
|
|
|
15
15
|
const path = mainContentPath().toLowerCase().trim().split('?')[0].split('#').pop()?.split('/')[0] || '';
|
|
16
16
|
const fuzzyTableName = ({
|
|
17
17
|
variables: 'persistent_vars',
|
|
18
|
-
"events": 'peer_event_types',
|
|
19
18
|
}[path] || path).replace(/[_-]/g, '').trim();
|
|
20
19
|
|
|
21
20
|
const allTables = getAllTables();
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getCronErrors = getCronErrors;
|
|
7
|
-
exports.getCronExplanation = getCronExplanation;
|
|
8
|
-
exports.getNextCronDate = getNextCronDate;
|
|
9
|
-
const cron_validate_1 = __importDefault(require("cron-validate"));
|
|
10
|
-
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
11
|
-
const cron_parser_1 = require("cron-parser");
|
|
12
|
-
function getCronErrors(cronExpression) {
|
|
13
|
-
const validationResult = (0, cron_validate_1.default)(cronExpression);
|
|
14
|
-
if (validationResult.isError()) {
|
|
15
|
-
const errors = validationResult.getError();
|
|
16
|
-
const errorMarkdown = ['Validation errors:', ...errors].join('\n- ');
|
|
17
|
-
return errorMarkdown;
|
|
18
|
-
}
|
|
19
|
-
let parseError = '';
|
|
20
|
-
try {
|
|
21
|
-
(0, cron_parser_1.parseExpression)(cronExpression);
|
|
22
|
-
}
|
|
23
|
-
catch (e) {
|
|
24
|
-
parseError = e.message;
|
|
25
|
-
}
|
|
26
|
-
if (parseError) {
|
|
27
|
-
return 'Validation error: ' + parseError;
|
|
28
|
-
}
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
function getCronExplanation(cronExpression) {
|
|
32
|
-
if (!cronExpression) {
|
|
33
|
-
return '';
|
|
34
|
-
}
|
|
35
|
-
function formatDate(date) {
|
|
36
|
-
// let dtStr = moment
|
|
37
|
-
return (0, moment_timezone_1.default)(date).calendar(null, {
|
|
38
|
-
sameDay: '[Today at] LT',
|
|
39
|
-
nextDay: '[Tomorrow at] LT',
|
|
40
|
-
nextWeek: 'dddd [at] LT',
|
|
41
|
-
lastDay: '[Yesterday at] LT',
|
|
42
|
-
lastWeek: '[Last] dddd [at] LT',
|
|
43
|
-
sameElse: 'L [at] LT'
|
|
44
|
-
}) + `\n - \`${date.toISOString().replace(':00.000Z', 'Z')}\``;
|
|
45
|
-
}
|
|
46
|
-
let parsed = (0, cron_parser_1.parseExpression)(cronExpression);
|
|
47
|
-
const strDates = [];
|
|
48
|
-
let i = 1;
|
|
49
|
-
while (true) {
|
|
50
|
-
const dt = parsed.prev().toString();
|
|
51
|
-
strDates.push(`- ${formatDate(new Date(dt))}`);
|
|
52
|
-
i++;
|
|
53
|
-
if (i > 3)
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
strDates.push('Prior three dates:');
|
|
57
|
-
strDates.reverse();
|
|
58
|
-
strDates.push('\nNext three dates:');
|
|
59
|
-
i = 1;
|
|
60
|
-
parsed = (0, cron_parser_1.parseExpression)(cronExpression);
|
|
61
|
-
while (true) {
|
|
62
|
-
const dt = parsed.next().toString();
|
|
63
|
-
strDates.push(`- ${formatDate(new Date(dt))}`);
|
|
64
|
-
i++;
|
|
65
|
-
if (i > 3)
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
return strDates.join('\n');
|
|
69
|
-
}
|
|
70
|
-
function getNextCronDate(cronExpression) {
|
|
71
|
-
const errors = getCronErrors(cronExpression);
|
|
72
|
-
if (errors) {
|
|
73
|
-
throw new Error(errors);
|
|
74
|
-
}
|
|
75
|
-
const parsed = (0, cron_parser_1.parseExpression)(cronExpression);
|
|
76
|
-
return new Date(parsed.next().toString());
|
|
77
|
-
}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.PeerEventDetails = void 0;
|
|
37
|
-
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
38
|
-
const react_1 = __importStar(require("react"));
|
|
39
|
-
const input_1 = require("../../components/input");
|
|
40
|
-
const io_schema_1 = require("../../components/io-schema");
|
|
41
|
-
const loading_indicator_1 = require("../../components/loading-indicator");
|
|
42
|
-
const save_button_1 = require("../../components/save-button");
|
|
43
|
-
const tabs_1 = require("../../components/tabs");
|
|
44
|
-
const hooks_1 = require("../../hooks");
|
|
45
|
-
const tabs_state_1 = require("../../tabs-layout/tabs-state");
|
|
46
|
-
const event_handlers_1 = require("./event-handlers");
|
|
47
|
-
const event_info_1 = require("./event-info");
|
|
48
|
-
const event_schedule_1 = require("./event-schedule");
|
|
49
|
-
const PeerEventDetails = (props) => {
|
|
50
|
-
const peerEventType = (0, hooks_1.usePromise)(async () => {
|
|
51
|
-
const peerEvent = await (0, peers_sdk_1.PeerEventTypes)().get(props.peerEventTypeId);
|
|
52
|
-
if (!peerEvent) {
|
|
53
|
-
throw new Error('Workflow not found');
|
|
54
|
-
}
|
|
55
|
-
const doc = (0, peers_sdk_1.PeerEventTypes)().initDoc(peerEvent);
|
|
56
|
-
(0, tabs_state_1.updateActiveTabTitle)(doc.name || "Event");
|
|
57
|
-
return doc;
|
|
58
|
-
}, undefined, [props.peerEventTypeId]);
|
|
59
|
-
const [handlers] = (0, react_1.useState)(() => (0, peers_sdk_1.observable)([]));
|
|
60
|
-
const handlersLoaded = (0, hooks_1.usePromise)(async () => {
|
|
61
|
-
if (!peerEventType)
|
|
62
|
-
return false;
|
|
63
|
-
const _handlers = await (0, peers_sdk_1.PeerEventHandlers)().list({ peerEventTypeId: peerEventType?.peerEventTypeId });
|
|
64
|
-
handlers(_handlers);
|
|
65
|
-
return true;
|
|
66
|
-
}, false, [peerEventType]);
|
|
67
|
-
const allLoaded = !!(peerEventType && handlersLoaded);
|
|
68
|
-
if (!allLoaded) {
|
|
69
|
-
return react_1.default.createElement(loading_indicator_1.LoadingIndicator, null);
|
|
70
|
-
}
|
|
71
|
-
async function saveChanges() {
|
|
72
|
-
if (!peerEventType)
|
|
73
|
-
return;
|
|
74
|
-
await peerEventType.save();
|
|
75
|
-
const oldHandlers = await (0, peers_sdk_1.PeerEventHandlers)().list({ peerEventTypeId: peerEventType.peerEventTypeId });
|
|
76
|
-
for (const oldHandler of oldHandlers) {
|
|
77
|
-
await (0, peers_sdk_1.PeerEventHandlers)().delete(oldHandler.peerEventHandlerId);
|
|
78
|
-
}
|
|
79
|
-
for (const handler of handlers()) {
|
|
80
|
-
(0, peers_sdk_1.PeerEventHandlers)().save(handler, { restoreIfDeleted: true });
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return (react_1.default.createElement("div", { className: "container-fluid p-3" },
|
|
84
|
-
react_1.default.createElement("div", { className: "d-flex" },
|
|
85
|
-
react_1.default.createElement("div", null,
|
|
86
|
-
react_1.default.createElement("h4", null,
|
|
87
|
-
react_1.default.createElement("i", { className: "bi bi-lightning-charge-fill me-2" }))),
|
|
88
|
-
react_1.default.createElement("div", { className: "flex-grow-1" },
|
|
89
|
-
react_1.default.createElement("h4", null,
|
|
90
|
-
react_1.default.createElement(input_1.Input, { key: peerEventType.peerEventTypeId, className: 'border border-0', style: { width: '100%', outline: 'none', backgroundColor: 'transparent' }, value: peerEventType.qs.name }))),
|
|
91
|
-
react_1.default.createElement("div", null,
|
|
92
|
-
react_1.default.createElement(save_button_1.SaveButton, { key: peerEventType.peerEventTypeId, onClick: saveChanges, doc: peerEventType }))),
|
|
93
|
-
react_1.default.createElement(tabs_1.Tabs, { key: peerEventType.peerEventTypeId, tabs: [
|
|
94
|
-
{
|
|
95
|
-
name: 'Info', content: react_1.default.createElement(tabs_1.ScreenTabBody, null,
|
|
96
|
-
react_1.default.createElement(event_info_1.PeerEventInfo, { peerEventType: peerEventType }))
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Schema', content: react_1.default.createElement(tabs_1.ScreenTabBody, null,
|
|
100
|
-
react_1.default.createElement(io_schema_1.IOSchemaEditor, { ioSchema: peerEventType.qs.schema, simpleValueName: "Event" }))
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: 'Triggers', content: react_1.default.createElement(tabs_1.ScreenTabBody, null,
|
|
104
|
-
react_1.default.createElement(event_schedule_1.PeerEventSchedule, { peerEventType: peerEventType }))
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
name: 'Handlers', content: react_1.default.createElement(tabs_1.ScreenTabBody, null,
|
|
108
|
-
react_1.default.createElement(event_handlers_1.PeerEventHandlersUI, { peerEventType: peerEventType, handlers: handlers }))
|
|
109
|
-
},
|
|
110
|
-
] })));
|
|
111
|
-
};
|
|
112
|
-
exports.PeerEventDetails = PeerEventDetails;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Observable } from "@peers-app/peers-sdk";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { IDoc, IPeerEventHandler, IPeerEventType } from "@peers-app/peers-sdk";
|
|
4
|
-
export declare const PeerEventHandlersUI: (props: {
|
|
5
|
-
peerEventType: IDoc<IPeerEventType>;
|
|
6
|
-
handlers: Observable<IPeerEventHandler[]>;
|
|
7
|
-
}) => React.JSX.Element;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.PeerEventHandlersUI = void 0;
|
|
37
|
-
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
38
|
-
const lodash_1 = require("lodash");
|
|
39
|
-
const react_1 = __importStar(require("react"));
|
|
40
|
-
const peers_sdk_2 = require("@peers-app/peers-sdk");
|
|
41
|
-
const tooltip_1 = require("../../components/tooltip");
|
|
42
|
-
const editor_inline_1 = require("../../components/markdown-editor/editor-inline");
|
|
43
|
-
const loading_indicator_1 = require("../../components/loading-indicator");
|
|
44
|
-
const peers_sdk_3 = require("@peers-app/peers-sdk");
|
|
45
|
-
const hooks_1 = require("../../hooks");
|
|
46
|
-
const PeerEventHandlersUI = (props) => {
|
|
47
|
-
const { peerEventType, handlers } = props;
|
|
48
|
-
const [handlersMarkdown] = (0, react_1.useState)(() => (0, peers_sdk_1.observable)(''));
|
|
49
|
-
const markdownInitialized = (0, hooks_1.usePromise)(async () => {
|
|
50
|
-
const workflowIds = handlers().map(h => h.handlerWorkflowId);
|
|
51
|
-
const handlerWorkflows = await (0, peers_sdk_2.Workflows)().list({ workflowId: { $in: workflowIds } });
|
|
52
|
-
const workflowTitles = handlerWorkflows.reduce((acc, wf) => ({ ...acc, [wf.workflowId]: wf.name }), {});
|
|
53
|
-
const mentions = workflowIds.map(workflowId => '- ' + (0, peers_sdk_3.formatMention)({ kind: 'workflow', id: workflowId, name: workflowTitles[workflowId] ?? workflowId }));
|
|
54
|
-
const markdown = `${mentions.join('\n') || '- '}`;
|
|
55
|
-
handlersMarkdown(markdown);
|
|
56
|
-
return true;
|
|
57
|
-
});
|
|
58
|
-
(0, hooks_1.useSubscription)(handlersMarkdown, () => {
|
|
59
|
-
if (!markdownInitialized)
|
|
60
|
-
return;
|
|
61
|
-
const startWorkflowIds = handlers().map(h => h.handlerWorkflowId);
|
|
62
|
-
const workflowIds = (0, peers_sdk_3.getAllMentions)(handlersMarkdown()).filter(m => m.kind === 'workflow').map(m => m.id);
|
|
63
|
-
if ((0, lodash_1.isEqual)(startWorkflowIds, workflowIds))
|
|
64
|
-
return;
|
|
65
|
-
const newHandlers = workflowIds.map(workflowId => ({
|
|
66
|
-
peerEventHandlerId: (0, peers_sdk_2.newid)(),
|
|
67
|
-
peerEventTypeId: peerEventType.peerEventTypeId,
|
|
68
|
-
handlerWorkflowId: workflowId,
|
|
69
|
-
}));
|
|
70
|
-
handlers(newHandlers);
|
|
71
|
-
peerEventType.q(peerEventType.q() + 1);
|
|
72
|
-
console.log('new handlers', newHandlers.map(h => h.handlerWorkflowId));
|
|
73
|
-
});
|
|
74
|
-
if (!markdownInitialized) {
|
|
75
|
-
return react_1.default.createElement(loading_indicator_1.LoadingIndicator, null);
|
|
76
|
-
}
|
|
77
|
-
return (react_1.default.createElement("div", null,
|
|
78
|
-
react_1.default.createElement("div", { className: 'mt-2' },
|
|
79
|
-
react_1.default.createElement("small", null, "Mention workflows this event should trigger:"),
|
|
80
|
-
react_1.default.createElement("small", null,
|
|
81
|
-
react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: `The mentions will be reformatted as a bulleted list regardless of how they are entered. All other content except for workflow mentions will be discarded.` })),
|
|
82
|
-
react_1.default.createElement(editor_inline_1.MarkdownEditorInline, { value: handlersMarkdown }))));
|
|
83
|
-
};
|
|
84
|
-
exports.PeerEventHandlersUI = PeerEventHandlersUI;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.PeerEventInfo = void 0;
|
|
7
|
-
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const editor_inline_1 = require("../../components/markdown-editor/editor-inline");
|
|
9
|
-
const input_1 = require("../../components/input");
|
|
10
|
-
const PeerEventInfo = (props) => {
|
|
11
|
-
const { peerEventType } = props;
|
|
12
|
-
return (react_1.default.createElement("div", null,
|
|
13
|
-
react_1.default.createElement("small", null, "Name:"),
|
|
14
|
-
react_1.default.createElement(input_1.Input, { value: peerEventType.qs.name, className: "form-control mb-3 p-0 ps-2", placeholder: "Event name", title: "Event name" }),
|
|
15
|
-
react_1.default.createElement("div", { className: 'mt-2' },
|
|
16
|
-
react_1.default.createElement("small", null, "Description:"),
|
|
17
|
-
react_1.default.createElement(editor_inline_1.MarkdownEditorInline, { value: peerEventType.qs.description }))));
|
|
18
|
-
};
|
|
19
|
-
exports.PeerEventInfo = PeerEventInfo;
|