This commit is contained in:
Simon Larsen 2023-02-08 20:40:06 +00:00
parent 2808db2683
commit 5f001fd105
No known key found for this signature in database
GPG key ID: AB45983AA9C81CDE
18 changed files with 168488 additions and 39329 deletions

19548
Accounts/package-lock.json generated

File diff suppressed because it is too large Load diff

21092
ApiDocs/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
import React, { FunctionComponent, useCallback, useRef } from 'react';
import React, { FunctionComponent, useCallback, useRef, useEffect } from 'react';
import ReactFlow, {
MiniMap,
Controls,
@ -20,10 +20,30 @@ import ReactFlow, {
import 'reactflow/dist/style.css';
import WorkflowComponent, { NodeDataProp } from './Component';
import AddNewComponent from './AddNewComponent';
import ObjectID from 'Common/Types/ObjectID';
import IconProp from 'Common/Types/Icon/IconProp';
export const getPlaceholderTriggerNode = (): Node => {
return ({
id: ObjectID.generate().toString(),
type: NodeType.PlaceholderNode,
position: { x: 100, y: 100 },
data: {
icon: IconProp.Bolt,
isTrigger: true,
},
})
}
export enum NodeType {
Node = 'Node',
PlaceholderNode = 'PlaceholderNode'
}
const nodeTypes: NodeTypes = {
node: WorkflowComponent,
addNewNode: AddNewComponent,
[NodeType.Node]: WorkflowComponent,
[NodeType.PlaceholderNode]: AddNewComponent,
};
const edgeStyle: React.CSSProperties = {
@ -42,12 +62,13 @@ const newNodeEdgeStyle: React.CSSProperties = {
export interface ComponentProps {
initialNodes: Array<Node>;
initialEdges: Array<Edge>;
onWorkflowUpdated: (nodes: Array<Node>, edges: Array<Edge>) => void;
}
const Workflow: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
const edgeUpdateSuccessful: any = useRef(true);
const onClickNode: Function = (_data: NodeDataProp) => {};
const onClickNode: Function = (_data: NodeDataProp) => { };
const deleteNode: Function = (id: string): void => {
// remove the node.
@ -78,6 +99,8 @@ const Workflow: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
});
};
const [nodes, setNodes, onNodesChange] = useNodesState(
props.initialNodes.map((node: Node) => {
node.data.onDeleteClick = deleteNode;
@ -98,7 +121,7 @@ const Workflow: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
}
);
if (node && node.type === 'addNewNode') {
if (node && node.type === NodeType.PlaceholderNode) {
isDarkEdge = false;
}
@ -117,6 +140,12 @@ const Workflow: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
})
);
useEffect(() => {
if (props.onWorkflowUpdated) {
props.onWorkflowUpdated(nodes, edges);
}
}, [nodes, edges])
const proOptions: ProOptions = { hideAttribution: true };
const onConnect: OnConnect = useCallback(

View file

@ -1,68 +1,166 @@
import Route from 'Common/Types/API/Route';
import Page from 'CommonUI/src/Components/Page/Page';
import React, { FunctionComponent, ReactElement } from 'react';
import React, { FunctionComponent, ReactElement, useEffect, useState } from 'react';
import PageMap from '../../../Utils/PageMap';
import RouteMap, { RouteUtil } from '../../../Utils/RouteMap';
import PageComponentProps from '../../PageComponentProps';
import SideMenu from './SideMenu';
import Navigation from 'CommonUI/src/Utils/Navigation';
import ObjectID from 'Common/Types/ObjectID';
import Workflow from 'CommonUI/src/Components/Workflow/Workflow';
import Workflow, { getPlaceholderTriggerNode } from 'CommonUI/src/Components/Workflow/Workflow';
import Card from 'CommonUI/src/Components/Card/Card';
import IconProp from 'Common/Types/Icon/IconProp';
import { Edge, Node } from 'reactflow';
import { JSONObject } from 'Common/Types/JSON';
import ModelAPI from 'CommonUI/src/Utils/ModelAPI/ModelAPI';
import WorkflowModel from 'Model/Models/Workflow';
import HTTPErrorResponse from 'Common/Types/API/HTTPErrorResponse';
import ConfirmModal from 'CommonUI/src/Components/Modal/ConfirmModal';
import { ButtonStyleType } from 'CommonUI/src/Components/Button/Button';
import ComponentLoader from 'CommonUI/src/Components/ComponentLoader/ComponentLoader';
const Delete: FunctionComponent<PageComponentProps> = (
_props: PageComponentProps
): ReactElement => {
const initialNodes: Array<Node> = [
{
id: '1',
type: 'node',
position: { x: 100, y: 100 },
data: {
id: 'slack-1',
title: 'Slack',
description: 'Open a channel',
icon: IconProp.Add,
isTrigger: true,
},
},
{
id: '3',
type: 'node',
position: { x: 100, y: 300 },
data: {
id: 'slack-2',
title: 'Slack',
description: 'Open a channel',
icon: IconProp.Add,
isTrigger: false,
},
},
{
id: '2',
type: 'addNewNode',
position: { x: 100, y: 500 },
data: {
id: 'slack-3',
title: 'Slack',
description: 'Open a channel',
icon: IconProp.Add,
isTrigger: true,
},
},
];
const initialEdges: Array<Edge> = [
{
id: 'e1-2',
source: '1',
target: '3',
},
];
const [isLoading, setIsLoading] = useState<boolean>(true);
const modelId: ObjectID = Navigation.getLastParamAsObjectID(1);
const [nodes, setNodes] = useState<Array<Node>>([]);
const [edges, setEdges] = useState<Array<Edge>>([]);
const [error, setError] = useState<string>('');
const loadGraph = async () => {
try {
setIsLoading(true)
const workflow: WorkflowModel | null = await ModelAPI.getItem(WorkflowModel, modelId, {
graph: true
}, {});
if (workflow) {
if (workflow.graph && (workflow.graph as JSONObject)['nodes']) {
if (((workflow.graph as JSONObject)['nodes'] as Array<Node>).length === 0) {
// add a placeholder trigger node.
setNodes([
getPlaceholderTriggerNode()
])
} else {
setNodes((workflow.graph as JSONObject)['nodes'] as Array<Node>)
}
} else {
// add a placeholder trigger node.
setNodes([
getPlaceholderTriggerNode()
])
}
if (workflow.graph && (workflow.graph as JSONObject)['edges']) {
setEdges((workflow.graph as JSONObject)['edges'] as Array<Edge>)
} else {
setEdges([])
}
} else {
setError('Workflow not found')
}
} catch (err) {
try {
setError(
(err as HTTPErrorResponse).message ||
'Server Error. Please try again'
);
} catch (e) {
setError('Server Error. Please try again');
}
}
setIsLoading(false)
}
const saveGraph = async (nodes: Array<Node>, edges: Array<Edge>) => {
try {
const graph: JSONObject = {
nodes, edges
}
await ModelAPI.updateById(WorkflowModel, modelId, {
graph
});
} catch (err) {
try {
setError(
(err as HTTPErrorResponse).message ||
'Server Error. Please try again'
);
} catch (e) {
setError('Server Error. Please try again');
}
}
}
useEffect(() => {
loadGraph();
}, []);
// const initialNodes: Array<Node> = [
// {
// id: '1',
// type: 'node',
// position: { x: 100, y: 100 },
// data: {
// id: 'slack-1',
// title: 'Slack',
// description: 'Open a channel',
// icon: IconProp.Add,
// isTrigger: true,
// },
// },
// {
// id: '3',
// type: 'node',
// position: { x: 100, y: 300 },
// data: {
// id: 'slack-2',
// title: 'Slack',
// description: 'Open a channel',
// icon: IconProp.Add,
// isTrigger: false,
// },
// },
// {
// id: '2',
// type: 'addNewNode',
// position: { x: 100, y: 500 },
// data: {
// id: 'slack-3',
// title: 'Slack',
// description: 'Open a channel',
// icon: IconProp.Add,
// isTrigger: true,
// },
// },
// ];
// const initialEdges: Array<Edge> = [
// {
// id: 'e1-2',
// source: '1',
// target: '3',
// },
// ];
return (
<Page
@ -98,16 +196,36 @@ const Delete: FunctionComponent<PageComponentProps> = (
},
]}
sideMenu={<SideMenu modelId={modelId} />}
>
<Card
title={'Workflow Builder'}
description={'Workflow builder for OneUptime'}
>
<Workflow
initialNodes={initialNodes}
initialEdges={initialEdges}
/>
</Card>
><>
<Card
title={'Workflow Builder'}
description={'Workflow builder for OneUptime'}
>
{isLoading ? <ComponentLoader /> : <></>}
{!isLoading ? <Workflow
initialNodes={nodes}
initialEdges={edges}
onWorkflowUpdated={(nodes: Array<Node>, edges: Array<Edge>) => {
setNodes(nodes)
setEdges(edges);
saveGraph(nodes, edges);
}}
/> : <></>}
</Card>
{error && (
<ConfirmModal
title={`Error`}
description={`${error}`}
submitButtonText={'Close'}
onSubmit={() => {
setError('');
}}
submitButtonType={ButtonStyleType.NORMAL}
/>
)}
</>
</Page>
);
};

File diff suppressed because it is too large Load diff

10253
File/package-lock.json generated

File diff suppressed because it is too large Load diff

20759
HelmChart/package-lock.json generated

File diff suppressed because it is too large Load diff

9844
Home/package-lock.json generated

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

10253
Identity/package-lock.json generated

File diff suppressed because it is too large Load diff

10395
Mail/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -16,6 +16,7 @@ import UniqueColumnBy from 'Common/Types/Database/UniqueColumnBy';
import TenantColumn from 'Common/Types/Database/TenantColumn';
import SingularPluralName from 'Common/Types/Database/SingularPluralName';
import BaseModel from 'Common/Models/BaseModel';
import { JSONObject } from 'Common/Types/JSON';
@TenantColumn('projectId')
@TableAccessControl({
@ -309,4 +310,29 @@ export default class Workflow extends BaseModel {
default: false,
})
public isEnabled?: boolean = undefined;
@ColumnAccessControl({
create: [
Permission.ProjectOwner,
Permission.ProjectAdmin,
Permission.CanCreateWorkflow,
],
read: [
Permission.ProjectOwner,
Permission.ProjectAdmin,
Permission.ProjectMember,
Permission.CanReadWorkflow,
],
update: [
Permission.ProjectOwner,
Permission.ProjectAdmin,
Permission.CanEditWorkflow,
],
})
@TableColumn({ isDefaultValueColumn: false, required: false, type: TableColumnType.JSON })
@Column({
type: ColumnType.JSON,
nullable: true
})
public graph?: JSONObject = undefined;
}

35513
Probe/package-lock.json generated

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -6068,7 +6068,8 @@
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
@ -8149,6 +8150,7 @@
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
"integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
"dev": true,
"engines": {
"node": ">= 4.9.1"
}
@ -10293,13 +10295,6 @@
"resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.1.tgz",
"integrity": "sha512-kGZJY+R+WnR5Rk+RPHUMERtb2qBRViIHCBdtUrY+NmwuGb8pQdfTqQiCKPrxpdoycl8KWm2DLdkpoSdt479XoQ=="
},
"node_modules/@eslint/eslintrc/node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
"peer": true
},
"node_modules/@typescript-eslint/parser/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@ -10600,7 +10595,8 @@
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
"node_modules/@webassemblyjs/wasm-opt": {
"version": "1.11.1",
@ -10847,7 +10843,9 @@
"node_modules/ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
"dev": true,
"peer": true
},
"node_modules/avvio/node_modules/debug": {
"version": "4.3.4",
@ -11486,9 +11484,9 @@
"integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw=="
},
"node_modules/mini-css-extract-plugin/node_modules/ajv": {
"version": "8.11.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
"integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"peer": true,
"dependencies": {
@ -12003,7 +12001,8 @@
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
"node_modules/eslint-plugin-react-hooks": {
"version": "4.6.0",
@ -12961,9 +12960,9 @@
}
},
"node_modules/eslint-webpack-plugin/node_modules/ajv": {
"version": "8.11.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
"integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"peer": true,
"dependencies": {
@ -14825,6 +14824,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
"dependencies": {
"glob": "^7.1.3"
},
@ -15530,6 +15530,16 @@
"@babel/core": "^7.0.0-0"
}
},
"node_modules/encoding": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
"optional": true,
"peer": true,
"dependencies": {
"iconv-lite": "^0.6.2"
}
},
"node_modules/@floating-ui/core": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.0.tgz",
@ -18845,6 +18855,8 @@
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
"dev": true,
"peer": true,
"dependencies": {
"is-typedarray": "^1.0.0"
}
@ -21505,7 +21517,9 @@
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
"dev": true,
"peer": true
},
"node_modules/@babel/plugin-transform-modules-amd": {
"version": "7.19.6",
@ -22646,6 +22660,7 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
"integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
"dev": true,
"dependencies": {
"abbrev": "1"
},
@ -26138,6 +26153,8 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
"integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
"dev": true,
"peer": true,
"dependencies": {
"imurmurhash": "^0.1.4",
"is-typedarray": "^1.0.0",
@ -26939,6 +26956,8 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
"peer": true,
"engines": {
"node": ">=0.8.19"
}
@ -27203,6 +27222,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
@ -28524,7 +28544,9 @@
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true,
"peer": true
},
"node_modules/@babel/helper-member-expression-to-functions": {
"version": "7.18.9",
@ -31731,13 +31753,6 @@
"strip-json-comments": "^3.1.1"
},
"dependencies": {
"argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
"peer": true
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@ -35513,7 +35528,8 @@
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
"abort-controller": {
"version": "3.0.0",
@ -38018,6 +38034,16 @@
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
},
"encoding": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
"optional": true,
"peer": true,
"requires": {
"iconv-lite": "^0.6.2"
}
},
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@ -38664,9 +38690,9 @@
},
"dependencies": {
"ajv": {
"version": "8.11.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
"integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"peer": true,
"requires": {
@ -39036,7 +39062,8 @@
"fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
"integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg=="
"integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
"dev": true
},
"fastify": {
"version": "3.29.5",
@ -40289,7 +40316,9 @@
"imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
"peer": true
},
"indent-string": {
"version": "4.0.0",
@ -40314,7 +40343,9 @@
"ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
"dev": true,
"peer": true
},
"inline-style-parser": {
"version": "0.1.1",
@ -40629,7 +40660,9 @@
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
"dev": true,
"peer": true
},
"is-weakmap": {
"version": "2.0.1",
@ -40675,7 +40708,8 @@
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
"isobject": {
"version": "3.0.1",
@ -42654,9 +42688,9 @@
},
"dependencies": {
"ajv": {
"version": "8.11.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
"integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"peer": true,
"requires": {
@ -43008,6 +43042,7 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
"integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
"dev": true,
"requires": {
"abbrev": "1"
}
@ -47204,6 +47239,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
@ -47613,7 +47649,8 @@
"signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
"simple-swizzle": {
"version": "0.2.2",
@ -48479,7 +48516,9 @@
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true,
"peer": true
},
"the-new-css-reset": {
"version": "1.7.3",
@ -48784,6 +48823,8 @@
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
"dev": true,
"peer": true,
"requires": {
"is-typedarray": "^1.0.0"
}
@ -49694,6 +49735,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
}
@ -50133,6 +50175,8 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
"integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
"dev": true,
"peer": true,
"requires": {
"imurmurhash": "^0.1.4",
"is-typedarray": "^1.0.0",

10409
Workers/package-lock.json generated

File diff suppressed because it is too large Load diff

8
install-node-modules.sh Normal file
View file

@ -0,0 +1,8 @@
for d in */ ; do
cd $d || echo "Cannot cd into $d"
rm -rf node_modules || echo "node_modules directory not found $d"
npm install --force || echo "Cannot npm install $d"
cd .. || echo "Cannot cd out"
done