Merge branch 'main' into v3/fix-consecutive-waits
🚀 Publish Trigger.dev Docker / typecheck (push) Failing after 0s
🚀 Publish Trigger.dev Docker / units (push) Failing after 0s
🚀 Publish Trigger.dev Docker / publish (push) Has been skipped

This commit is contained in:
nicktrn
2024-04-29 17:16:58 +01:00
80 changed files with 608 additions and 313 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"trigger.dev": patch
---
Hoist uncaughtException handler to the top of workers to better report error messages
+1
View File
@@ -46,6 +46,7 @@
"changesets": [
"angry-eagles-trade",
"beige-pens-dance",
"big-tomatoes-deliver",
"breezy-gorillas-mate",
"chilled-hornets-move",
"clean-pianos-listen",
+1
View File
@@ -212,6 +212,7 @@ class KubernetesTaskOperations implements TaskOperations {
{
name: "populate-taskinfo",
image: "docker.io/library/busybox",
imagePullPolicy: "IfNotPresent",
command: ["/bin/sh", "-c"],
args: ["printenv COORDINATOR_HOST | tee /etc/taskinfo/coordinator-host"],
env: [
@@ -1,10 +1,9 @@
import { VirtualItem, Virtualizer, useVirtualizer } from "@tanstack/react-virtual";
import { motion } from "framer-motion";
import { MutableRefObject, RefObject, useCallback, useEffect, useReducer, useRef } from "react";
import { UnmountClosed } from "react-collapse";
import { cn } from "~/utils/cn";
import { NodeState, NodesState, reducer } from "./reducer";
import { applyFilterToState, concreteStateFromInput, selectedIdFromState } from "./utils";
import { concreteStateFromInput, selectedIdFromState } from "./utils";
export type TreeViewProps<TData> = {
tree: FlatTree<TData>;
@@ -104,23 +103,22 @@ export function TreeView<TData>({
if (!node) return null;
const state = nodes[node.id];
if (!state) return null;
if (!state.visible) return null;
return (
<div
key={node.id}
data-index={virtualItem.index}
ref={virtualizer.measureElement}
className="overflow-clip [&_.ReactCollapse--collapse]:transition-all"
className="overflow-clip"
{...getNodeProps(node.id)}
>
<UnmountClosed key={node.id} isOpened={state.visible}>
{renderNode({
node,
state,
index: virtualItem.index,
virtualizer: virtualizer,
virtualItem,
})}
</UnmountClosed>
{renderNode({
node,
state,
index: virtualItem.index,
virtualizer: virtualizer,
virtualItem,
})}
</div>
);
})}
@@ -130,19 +128,23 @@ export function TreeView<TData>({
);
}
type TreeStateHookProps<TData> = {
export type Filter<TData, TFilterValue> = {
value?: TFilterValue;
fn: (value: TFilterValue, node: FlatTreeItem<TData>) => boolean;
};
type TreeStateHookProps<TData, TFilterValue> = {
tree: FlatTree<TData>;
selectedId?: string;
collapsedIds?: string[];
onSelectedIdChanged?: (selectedId: string | undefined) => void;
onCollapsedIdsChanged?: (collapsedIds: string[]) => void;
estimatedRowHeight: (params: {
node: FlatTreeItem<TData>;
state: NodeState;
index: number;
}) => number;
parentRef: RefObject<any>;
filter?: (node: FlatTreeItem<TData>) => boolean;
filter?: Filter<TData, TFilterValue>;
};
//this is so Framer Motion can be used to render the components
@@ -178,24 +180,24 @@ export type UseTreeStateOutput = {
scrollToNode: (id: string) => void;
};
export function useTree<TData>({
export function useTree<TData, TFilterValue>({
tree,
selectedId,
collapsedIds,
onSelectedIdChanged,
onCollapsedIdsChanged,
parentRef,
estimatedRowHeight,
filter,
}: TreeStateHookProps<TData>): UseTreeStateOutput {
}: TreeStateHookProps<TData, TFilterValue>): UseTreeStateOutput {
const previousNodeCount = useRef(tree.length);
const previousSelectedId = useRef<string | undefined>(selectedId);
const [state, dispatch] = useReducer(
reducer,
concreteStateFromInput({ tree, selectedId, collapsedIds })
concreteStateFromInput({ tree, selectedId, collapsedIds, filter })
);
//fire onSelectedIdChanged()
useEffect(() => {
const selectedId = selectedIdFromState(state.nodes);
if (selectedId !== previousSelectedId.current) {
@@ -204,12 +206,7 @@ export function useTree<TData>({
}
}, [state.changes.selectedId]);
useEffect(() => {
if (state.changes.collapsedIds) {
onCollapsedIdsChanged?.(state.changes.collapsedIds);
}
}, [state.changes.collapsedIds]);
//update tree when the number of nodes changes
useEffect(() => {
if (tree.length !== previousNodeCount.current) {
previousNodeCount.current = tree.length;
@@ -217,9 +214,25 @@ export function useTree<TData>({
}
}, [previousNodeCount.current, tree.length]);
//update the filter, if it's changed
const previousFilter = useRef(filter);
useEffect(() => {
//check if the value (not reference) of the filter is the same
const previousValue = previousFilter.current
? JSON.stringify(previousFilter.current.value)
: undefined;
const newValue = filter ? JSON.stringify(filter.value) : undefined;
previousFilter.current = filter;
if (previousValue !== newValue) {
dispatch({ type: "UPDATE_FILTER", payload: { filter } });
}
}, [filter?.value]);
const virtualizer = useVirtualizer({
count: tree.length,
getItemKey: (index) => tree[index].id,
count: state.visibleNodeIds.length,
getItemKey: (index) => state.visibleNodeIds[index],
getScrollElement: () => parentRef.current,
estimateSize: (index: number) => {
return estimatedRowHeight({
@@ -269,21 +282,21 @@ export function useTree<TData>({
const expandNode = useCallback(
(id: string, scrollToNode = true) => {
dispatch({ type: "EXPAND_NODE", payload: { id, tree, scrollToNode, scrollToNodeFn } });
dispatch({ type: "EXPAND_NODE", payload: { id, scrollToNode, scrollToNodeFn } });
},
[state]
);
const collapseNode = useCallback(
(id: string) => {
dispatch({ type: "COLLAPSE_NODE", payload: { id, tree } });
dispatch({ type: "COLLAPSE_NODE", payload: { id } });
},
[state]
);
const toggleExpandNode = useCallback(
(id: string, scrollToNode = true) => {
dispatch({ type: "TOGGLE_EXPAND_NODE", payload: { id, tree, scrollToNode, scrollToNodeFn } });
dispatch({ type: "TOGGLE_EXPAND_NODE", payload: { id, scrollToNode, scrollToNodeFn } });
},
[state]
);
@@ -292,7 +305,7 @@ export function useTree<TData>({
(scrollToNode = true) => {
dispatch({
type: "SELECT_FIRST_VISIBLE_NODE",
payload: { tree, scrollToNode, scrollToNodeFn },
payload: { scrollToNode, scrollToNodeFn },
});
},
[tree, state]
@@ -302,7 +315,7 @@ export function useTree<TData>({
(scrollToNode = true) => {
dispatch({
type: "SELECT_LAST_VISIBLE_NODE",
payload: { tree, scrollToNode, scrollToNodeFn },
payload: { scrollToNode, scrollToNodeFn },
});
},
[tree, state]
@@ -312,7 +325,7 @@ export function useTree<TData>({
(scrollToNode = true) => {
dispatch({
type: "SELECT_NEXT_VISIBLE_NODE",
payload: { tree, scrollToNode, scrollToNodeFn },
payload: { scrollToNode, scrollToNodeFn },
});
},
[state]
@@ -322,7 +335,7 @@ export function useTree<TData>({
(scrollToNode = true) => {
dispatch({
type: "SELECT_PREVIOUS_VISIBLE_NODE",
payload: { tree, scrollToNode, scrollToNodeFn },
payload: { scrollToNode, scrollToNodeFn },
});
},
[state]
@@ -332,7 +345,7 @@ export function useTree<TData>({
(scrollToNode = true) => {
dispatch({
type: "SELECT_PARENT_NODE",
payload: { tree, scrollToNode, scrollToNodeFn },
payload: { scrollToNode, scrollToNodeFn },
});
},
[state]
@@ -340,35 +353,35 @@ export function useTree<TData>({
const expandAllBelowDepth = useCallback(
(depth: number) => {
dispatch({ type: "EXPAND_ALL_BELOW_DEPTH", payload: { tree, depth } });
dispatch({ type: "EXPAND_ALL_BELOW_DEPTH", payload: { depth } });
},
[state]
);
const collapseAllBelowDepth = useCallback(
(depth: number) => {
dispatch({ type: "COLLAPSE_ALL_BELOW_DEPTH", payload: { tree, depth } });
dispatch({ type: "COLLAPSE_ALL_BELOW_DEPTH", payload: { depth } });
},
[state]
);
const expandLevel = useCallback(
(level: number) => {
dispatch({ type: "EXPAND_LEVEL", payload: { tree, level } });
dispatch({ type: "EXPAND_LEVEL", payload: { level } });
},
[state]
);
const collapseLevel = useCallback(
(level: number) => {
dispatch({ type: "COLLAPSE_LEVEL", payload: { tree, level } });
dispatch({ type: "COLLAPSE_LEVEL", payload: { level } });
},
[state]
);
const toggleExpandLevel = useCallback(
(level: number) => {
dispatch({ type: "TOGGLE_EXPAND_LEVEL", payload: { tree, level } });
dispatch({ type: "TOGGLE_EXPAND_LEVEL", payload: { level } });
},
[state]
);
@@ -480,7 +493,7 @@ export function useTree<TData>({
return {
selected: selectedIdFromState(state.nodes),
nodes: filter ? applyFilterToState(tree, state.nodes, filter) : state.nodes,
nodes: state.nodes,
getTreeProps,
getNodeProps,
selectNode,
@@ -1,6 +1,7 @@
import assertNever from "assert-never";
import { FlatTree } from "./TreeView";
import { Filter, FlatTree } from "./TreeView";
import {
applyFilterToState,
applyVisibility,
collapsedIdsFromState,
concreteStateFromInput,
@@ -19,12 +20,15 @@ export type NodeState = {
export type Changes = {
selectedId: string | undefined;
collapsedIds: string[] | undefined;
};
export type TreeState = {
tree: FlatTree<any>;
nodes: NodesState;
filteredNodes: NodesState;
changes: Changes;
filter: Filter<any, any> | undefined;
visibleNodeIds: string[];
};
export type NodesState = Record<string, NodeState>;
@@ -72,7 +76,6 @@ type ExpandNodeAction = {
type: "EXPAND_NODE";
payload: {
id: string;
tree: FlatTree<any>;
} & WithScrollToNode;
};
@@ -80,7 +83,6 @@ type CollapseNodeAction = {
type: "COLLAPSE_NODE";
payload: {
id: string;
tree: FlatTree<any>;
};
};
@@ -88,7 +90,6 @@ type ToggleExpandNodeAction = {
type: "TOGGLE_EXPAND_NODE";
payload: {
id: string;
tree: FlatTree<any>;
} & WithScrollToNode;
};
@@ -96,7 +97,6 @@ type ExpandAllBelowDepthAction = {
type: "EXPAND_ALL_BELOW_DEPTH";
payload: {
depth: number;
tree: FlatTree<any>;
};
};
@@ -104,7 +104,6 @@ type CollapseAllBelowDepthAction = {
type: "COLLAPSE_ALL_BELOW_DEPTH";
payload: {
depth: number;
tree: FlatTree<any>;
};
};
@@ -112,7 +111,6 @@ type ExpandLevelAction = {
type: "EXPAND_LEVEL";
payload: {
level: number;
tree: FlatTree<any>;
};
};
@@ -120,7 +118,6 @@ type CollapseLevelAction = {
type: "COLLAPSE_LEVEL";
payload: {
level: number;
tree: FlatTree<any>;
};
};
@@ -128,43 +125,39 @@ type ToggleExpandLevelAction = {
type: "TOGGLE_EXPAND_LEVEL";
payload: {
level: number;
tree: FlatTree<any>;
};
};
type SelectFirstVisibleNodeAction = {
type: "SELECT_FIRST_VISIBLE_NODE";
payload: {
tree: FlatTree<any>;
} & WithScrollToNode;
payload: {} & WithScrollToNode;
};
type SelectLastVisibleNodeAction = {
type: "SELECT_LAST_VISIBLE_NODE";
payload: {
tree: FlatTree<any>;
} & WithScrollToNode;
payload: {} & WithScrollToNode;
};
type SelectNextVisibleNodeAction = {
type: "SELECT_NEXT_VISIBLE_NODE";
payload: {
tree: FlatTree<any>;
} & WithScrollToNode;
payload: {} & WithScrollToNode;
};
type SelectPreviousVisibleNodeAction = {
type: "SELECT_PREVIOUS_VISIBLE_NODE";
payload: {
tree: FlatTree<any>;
} & WithScrollToNode;
payload: {} & WithScrollToNode;
};
type SelectParentNodeAction = {
type: "SELECT_PARENT_NODE";
payload: {} & WithScrollToNode;
};
type UpdateFilterAction = {
type: "UPDATE_FILTER";
payload: {
tree: FlatTree<any>;
} & WithScrollToNode;
filter: Filter<any, any> | undefined;
};
};
export type Action =
@@ -185,7 +178,8 @@ export type Action =
| SelectLastVisibleNodeAction
| SelectNextVisibleNodeAction
| SelectPreviousVisibleNodeAction
| SelectParentNodeAction;
| SelectParentNodeAction
| UpdateFilterAction;
export function reducer(state: TreeState, action: Action): TreeState {
switch (action.type) {
@@ -205,7 +199,12 @@ export function reducer(state: TreeState, action: Action): TreeState {
action.payload.scrollToNodeFn(action.payload.id);
}
return { nodes: newNodes, changes: generateChanges(state.nodes, newNodes) };
return applyFilterToState({
...state,
tree: state.tree,
nodes: newNodes,
changes: generateChanges(state.nodes, newNodes),
});
}
case "DESELECT_NODE": {
const nodes = {
@@ -213,13 +212,21 @@ export function reducer(state: TreeState, action: Action): TreeState {
[action.payload.id]: { ...state.nodes[action.payload.id], selected: false },
};
return { nodes, changes: generateChanges(state.nodes, nodes) };
return applyFilterToState({
...state,
nodes,
changes: generateChanges(state.nodes, nodes),
});
}
case "DESELECT_ALL_NODES": {
const nodes = Object.fromEntries(
Object.entries(state.nodes).map(([key, value]) => [key, { ...value, selected: false }])
);
return { nodes, changes: generateChanges(state.nodes, nodes) };
return applyFilterToState({
...state,
nodes,
changes: generateChanges(state.nodes, nodes),
});
}
case "TOGGLE_NODE_SELECTION": {
const currentlySelected = state.nodes[action.payload.id]?.selected ?? false;
@@ -246,29 +253,36 @@ export function reducer(state: TreeState, action: Action): TreeState {
action.payload.scrollToNodeFn(action.payload.id);
}
const visibleNodes = applyVisibility(action.payload.tree, newNodes);
return { nodes: visibleNodes, changes: generateChanges(state.nodes, visibleNodes) };
const visibleNodes = applyVisibility(state.tree, newNodes);
return applyFilterToState({
...state,
nodes: visibleNodes,
changes: generateChanges(state.nodes, visibleNodes),
});
}
case "COLLAPSE_NODE": {
const visibleNodes = applyVisibility(action.payload.tree, {
const visibleNodes = applyVisibility(state.tree, {
...state.nodes,
[action.payload.id]: { ...state.nodes[action.payload.id], expanded: false },
});
return { nodes: visibleNodes, changes: generateChanges(state.nodes, visibleNodes) };
return applyFilterToState({
...state,
nodes: visibleNodes,
changes: generateChanges(state.nodes, visibleNodes),
});
}
case "TOGGLE_EXPAND_NODE": {
const currentlyExpanded = state.nodes[action.payload.id]?.expanded ?? true;
if (currentlyExpanded) {
return reducer(state, {
type: "COLLAPSE_NODE",
payload: { id: action.payload.id, tree: action.payload.tree },
payload: { id: action.payload.id },
});
} else {
return reducer(state, {
type: "EXPAND_NODE",
payload: {
id: action.payload.id,
tree: action.payload.tree,
scrollToNode: action.payload.scrollToNode,
scrollToNodeFn: action.payload.scrollToNodeFn,
},
@@ -276,7 +290,7 @@ export function reducer(state: TreeState, action: Action): TreeState {
}
}
case "EXPAND_ALL_BELOW_DEPTH": {
const nodesToExpand = action.payload.tree.filter(
const nodesToExpand = state.tree.filter(
(n) => n.level >= action.payload.depth && n.hasChildren
);
@@ -290,11 +304,15 @@ export function reducer(state: TreeState, action: Action): TreeState {
])
);
const visibleNodes = applyVisibility(action.payload.tree, newNodes);
return { nodes: visibleNodes, changes: generateChanges(state.nodes, visibleNodes) };
const visibleNodes = applyVisibility(state.tree, newNodes);
return applyFilterToState({
...state,
nodes: visibleNodes,
changes: generateChanges(state.nodes, visibleNodes),
});
}
case "COLLAPSE_ALL_BELOW_DEPTH": {
const nodesToCollapse = action.payload.tree.filter(
const nodesToCollapse = state.tree.filter(
(n) => n.level >= action.payload.depth && n.hasChildren
);
@@ -308,11 +326,15 @@ export function reducer(state: TreeState, action: Action): TreeState {
])
);
const visibleNodes = applyVisibility(action.payload.tree, newNodes);
return { nodes: visibleNodes, changes: generateChanges(state.nodes, visibleNodes) };
const visibleNodes = applyVisibility(state.tree, newNodes);
return applyFilterToState({
...state,
nodes: visibleNodes,
changes: generateChanges(state.nodes, visibleNodes),
});
}
case "EXPAND_LEVEL": {
const nodesToExpand = action.payload.tree.filter(
const nodesToExpand = state.tree.filter(
(n) => n.level <= action.payload.level && n.hasChildren
);
@@ -326,11 +348,15 @@ export function reducer(state: TreeState, action: Action): TreeState {
])
);
const visibleNodes = applyVisibility(action.payload.tree, newNodes);
return { nodes: visibleNodes, changes: generateChanges(state.nodes, visibleNodes) };
const visibleNodes = applyVisibility(state.tree, newNodes);
return applyFilterToState({
...state,
nodes: visibleNodes,
changes: generateChanges(state.nodes, visibleNodes),
});
}
case "COLLAPSE_LEVEL": {
const nodesToCollapse = action.payload.tree.filter(
const nodesToCollapse = state.tree.filter(
(n) => n.level === action.payload.level && n.hasChildren
);
@@ -344,13 +370,17 @@ export function reducer(state: TreeState, action: Action): TreeState {
])
);
const visibleNodes = applyVisibility(action.payload.tree, newNodes);
return { nodes: visibleNodes, changes: generateChanges(state.nodes, visibleNodes) };
const visibleNodes = applyVisibility(state.tree, newNodes);
return applyFilterToState({
...state,
nodes: visibleNodes,
changes: generateChanges(state.nodes, visibleNodes),
});
}
case "TOGGLE_EXPAND_LEVEL": {
//first get the first item at that level in the tree. If it is expanded, collapse all nodes at that level
//if it is collapsed, expand all nodes at that level
const nodesAtLevel = action.payload.tree.filter(
const nodesAtLevel = state.tree.filter(
(n) => n.level === action.payload.level && n.hasChildren
);
const firstNode = nodesAtLevel[0];
@@ -365,7 +395,6 @@ export function reducer(state: TreeState, action: Action): TreeState {
type: "COLLAPSE_LEVEL",
payload: {
level: action.payload.level,
tree: action.payload.tree,
},
});
} else {
@@ -373,13 +402,12 @@ export function reducer(state: TreeState, action: Action): TreeState {
type: "EXPAND_LEVEL",
payload: {
level: action.payload.level,
tree: action.payload.tree,
},
});
}
}
case "SELECT_FIRST_VISIBLE_NODE": {
const node = firstVisibleNode(action.payload.tree, state.nodes);
const node = firstVisibleNode(state.tree, state.nodes);
if (node) {
return reducer(state, {
type: "SELECT_NODE",
@@ -394,7 +422,7 @@ export function reducer(state: TreeState, action: Action): TreeState {
return state;
}
case "SELECT_LAST_VISIBLE_NODE": {
const node = lastVisibleNode(action.payload.tree, state.nodes);
const node = lastVisibleNode(state.tree, state.nodes);
if (node) {
return reducer(state, {
type: "SELECT_NODE",
@@ -414,14 +442,13 @@ export function reducer(state: TreeState, action: Action): TreeState {
return reducer(state, {
type: "SELECT_FIRST_VISIBLE_NODE",
payload: {
tree: action.payload.tree,
scrollToNode: action.payload.scrollToNode,
scrollToNodeFn: action.payload.scrollToNodeFn,
},
});
}
const visible = visibleNodes(action.payload.tree, state.nodes);
const visible = visibleNodes(state.tree, state.nodes);
const selectedIndex = visible.findIndex((node) => node.id === selected);
const nextNode = visible[selectedIndex + 1];
if (nextNode) {
@@ -444,14 +471,13 @@ export function reducer(state: TreeState, action: Action): TreeState {
return reducer(state, {
type: "SELECT_FIRST_VISIBLE_NODE",
payload: {
tree: action.payload.tree,
scrollToNode: action.payload.scrollToNode,
scrollToNodeFn: action.payload.scrollToNodeFn,
},
});
}
const visible = visibleNodes(action.payload.tree, state.nodes);
const visible = visibleNodes(state.tree, state.nodes);
const selectedIndex = visible.findIndex((node) => node.id === selected);
const previousNode = visible[selectedIndex - 1];
if (previousNode) {
@@ -474,19 +500,18 @@ export function reducer(state: TreeState, action: Action): TreeState {
return reducer(state, {
type: "SELECT_FIRST_VISIBLE_NODE",
payload: {
tree: action.payload.tree,
scrollToNode: action.payload.scrollToNode,
scrollToNodeFn: action.payload.scrollToNodeFn,
},
});
}
const selectedNode = action.payload.tree.find((node) => node.id === selected);
const selectedNode = state.tree.find((node) => node.id === selected);
if (!selectedNode) {
return state;
}
const parentNode = action.payload.tree.find((node) => node.id === selectedNode.parentId);
const parentNode = state.tree.find((node) => node.id === selectedNode.parentId);
if (parentNode) {
return reducer(state, {
type: "SELECT_NODE",
@@ -505,12 +530,20 @@ export function reducer(state: TreeState, action: Action): TreeState {
const selectedId = selectedIdFromState(state.nodes);
const collapsedIds = collapsedIdsFromState(state.nodes);
const newState = concreteStateFromInput({
...state,
tree: action.payload.tree,
selectedId,
collapsedIds,
});
return newState;
}
case "UPDATE_FILTER": {
const newState = applyFilterToState({
...state,
filter: action.payload.filter,
});
return newState;
}
default: {
assertNever(action);
}
@@ -1,4 +1,4 @@
import { FlatTree, FlatTreeItem } from "./TreeView";
import { Filter, FlatTree, FlatTreeItem } from "./TreeView";
import { Changes, NodeState, NodesState, TreeState } from "./reducer";
type PartialNodeState = Record<string, Partial<NodeState>>;
@@ -8,10 +8,12 @@ const defaultExpanded = true;
export function concreteStateFromInput({
tree,
filter,
selectedId,
collapsedIds,
}: {
tree: FlatTree<any>;
filter: Filter<any, any> | undefined;
selectedId: string | undefined;
collapsedIds: string[] | undefined;
}): TreeState {
@@ -35,10 +37,15 @@ export function concreteStateFromInput({
}
}
}
const nodes = concreteStateFromPartialState(tree, state);
return {
nodes: concreteStateFromPartialState(tree, state),
changes: { selectedId, collapsedIds: [] },
tree,
nodes,
changes: { selectedId },
filter,
filteredNodes: nodes,
visibleNodeIds: visibleNodes(tree, nodes).map((node) => node.id),
};
}
@@ -82,28 +89,48 @@ export function selectedIdFromState(state: NodesState): string | undefined {
return selected?.[0];
}
export function applyFilterToState<TData>(
tree: FlatTree<TData>,
inputNodes: NodesState,
filter: (node: FlatTreeItem<TData>) => boolean
): NodesState {
export function applyFilterToState<TData>({
tree,
nodes,
filter,
visibleNodeIds,
changes,
}: TreeState): TreeState {
if (!filter || !filter.value) {
return {
tree,
nodes,
filteredNodes: nodes,
changes,
filter,
visibleNodeIds: visibleNodes(tree, nodes).map((node) => node.id),
};
}
//we need to do two passes, first collect all the nodes that are results
const newFilteredOut = new Set<string>();
for (const node of tree) {
if (!filter(node)) {
if (!filter.fn(filter.value, node)) {
newFilteredOut.add(node.id);
}
}
//nothing is filtered out
if (newFilteredOut.size === 0) {
return inputNodes;
return {
tree,
nodes,
filteredNodes: nodes,
changes,
filter,
visibleNodeIds: visibleNodes(tree, nodes).map((node) => node.id),
};
}
//copy of nodes
const nodes = { ...inputNodes };
const filteredNodes = { ...nodes };
const selected = selectedIdFromState(nodes);
const selected = selectedIdFromState(filteredNodes);
const visible = new Set<string>();
const expanded = new Set<string>();
@@ -148,28 +175,35 @@ export function applyFilterToState<TData>(
//now set the visibility and expanded state
for (const id of hidden) {
nodes[id] = { ...nodes[id], visible: false };
filteredNodes[id] = { ...filteredNodes[id], visible: false };
}
for (const id of visible) {
nodes[id] = { ...nodes[id], visible: true };
filteredNodes[id] = { ...filteredNodes[id], visible: true };
}
for (const id of collapsed) {
nodes[id] = { ...nodes[id], expanded: false };
filteredNodes[id] = { ...filteredNodes[id], expanded: false };
}
for (const id of expanded) {
nodes[id] = { ...nodes[id], expanded: true };
filteredNodes[id] = { ...filteredNodes[id], expanded: true };
}
if (selected) {
if (visible.has(selected)) {
nodes[selected] = { ...nodes[selected], selected: true };
filteredNodes[selected] = { ...filteredNodes[selected], selected: true };
} else {
nodes[selected] = { ...nodes[selected], selected: false };
filteredNodes[selected] = { ...filteredNodes[selected], selected: false };
}
}
return nodes;
return {
tree,
nodes,
filteredNodes,
changes,
filter,
visibleNodeIds: visibleNodes(tree, filteredNodes).map((node) => node.id),
};
}
export function visibleNodes(tree: FlatTree<any>, nodes: NodesState) {
@@ -215,6 +249,5 @@ export function generateChanges(a: NodesState, b: NodesState): Changes {
return {
selectedId: selectedIdA !== selectedIdB ? selectedIdB : undefined,
collapsedIds: collapsedChanges.length > 0 ? collapsedChanges : undefined,
};
}
+6 -1
View File
@@ -1,6 +1,11 @@
import { useRef } from "react";
//a function that you call with a debounce delay, the function will only be called after the delay has passed
/**
* A function that you call with a debounce delay, the function will only be called after the delay has passed
*
* @param fn The function to debounce
* @param delay In ms
*/
export function useDebounce<T extends (...args: any[]) => any>(fn: T, delay: number) {
const timeout = useRef<ReturnType<typeof setTimeout>>();
@@ -1,6 +1,4 @@
import {
ArrowsPointingInIcon,
ArrowsPointingOutIcon,
ChevronDownIcon,
ChevronRightIcon,
MagnifyingGlassMinusIcon,
@@ -17,7 +15,8 @@ import {
} from "@trigger.dev/core/v3";
import { RuntimeEnvironmentType } from "@trigger.dev/database";
import { motion } from "framer-motion";
import { useEffect, useRef, useState } from "react";
import { useCallback, useEffect, useRef, useState } from "react";
import { useHotkeys } from "react-hotkeys-hook";
import { typedjson, useTypedLoaderData } from "remix-typedjson";
import { ShowParentIcon, ShowParentIconSelected } from "~/assets/icons/ShowParentIcon";
import tileBgPath from "~/assets/images/error-banner-tile@2x.png";
@@ -26,11 +25,13 @@ import { InlineCode } from "~/components/code/InlineCode";
import { EnvironmentLabel } from "~/components/environments/EnvironmentLabel";
import { MainCenteredContainer, PageBody } from "~/components/layout/AppLayout";
import { Badge } from "~/components/primitives/Badge";
import { Button, LinkButton } from "~/components/primitives/Buttons";
import { LinkButton } from "~/components/primitives/Buttons";
import { Callout } from "~/components/primitives/Callout";
import { Header3 } from "~/components/primitives/Headers";
import { Input } from "~/components/primitives/Input";
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
import { Paragraph } from "~/components/primitives/Paragraph";
import { Popover, PopoverArrowTrigger, PopoverContent } from "~/components/primitives/Popover";
import {
ResizableHandle,
ResizablePanel,
@@ -66,10 +67,6 @@ import {
v3RunsPath,
} from "~/utils/pathBuilder";
import { SpanView } from "../resources.orgs.$organizationSlug.projects.v3.$projectParam.runs.$runParam.spans.$spanParam/route";
import { number } from "zod";
import { useHotkeys } from "react-hotkeys-hook";
import { Popover, PopoverArrowTrigger, PopoverContent } from "~/components/primitives/Popover";
import { Header3 } from "~/components/primitives/Headers";
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
const userId = await requireUserId(request);
@@ -268,29 +265,25 @@ function TasksTreeView({
onSelectedIdChanged,
estimatedRowHeight: () => 32,
parentRef,
filter: (node) => {
const nodePassesErrorTest = (errorsOnly && node.data.isError) || !errorsOnly;
if (!nodePassesErrorTest) return false;
filter: {
value: { text: filterText, errorsOnly },
fn: (value, node) => {
const nodePassesErrorTest = (value.errorsOnly && node.data.isError) || !value.errorsOnly;
if (!nodePassesErrorTest) return false;
if (filterText === "") return true;
if (node.data.message.toLowerCase().includes(filterText.toLowerCase())) {
return true;
}
return false;
if (value.text === "") return true;
if (node.data.message.toLowerCase().includes(value.text.toLowerCase())) {
return true;
}
return false;
},
},
});
return (
<div className="grid h-full grid-rows-[2.5rem_1fr_3.25rem] overflow-hidden">
<div className="mx-3 flex items-center justify-between gap-2 border-b border-grid-dimmed">
<Input
placeholder="Search log"
variant="tertiary"
icon="search"
fullWidth={true}
value={filterText}
onChange={(e) => setFilterText(e.target.value)}
/>
<SearchField onChange={setFilterText} />
<div className="flex items-center gap-2">
<Switch
variant="small"
@@ -1004,3 +997,27 @@ function NumberShortcuts({ toggleLevel }: { toggleLevel: (depth: number) => void
</div>
);
}
function SearchField({ onChange }: { onChange: (value: string) => void }) {
const [value, setValue] = useState("");
const updateFilterText = useDebounce((text: string) => {
onChange(text);
}, 250);
const updateValue = useCallback((value: string) => {
setValue(value);
updateFilterText(value);
}, []);
return (
<Input
placeholder="Search log"
variant="tertiary"
icon="search"
fullWidth={true}
value={value}
onChange={(e) => updateValue(e.target.value)}
/>
);
}
@@ -157,17 +157,17 @@ function TreeViewParent({
onSelectedIdChanged: (id) => {
console.log("onSelectedIdChanged", id);
},
onCollapsedIdsChanged: (ids) => {
console.log("onCollapsedIdsChanged", ids);
},
estimatedRowHeight: () => 32,
parentRef,
filter: (node) => {
if (filterText === "") return true;
if (node.data.title.toLowerCase().includes(filterText.toLowerCase())) {
return true;
}
return false;
filter: {
value: filterText,
fn: (text, node) => {
if (text === "") return true;
if (node.data.title.toLowerCase().includes(text.toLowerCase())) {
return true;
}
return false;
},
},
});
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/airtable
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/airtable",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev integration for airtable",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"airtable": "^0.12.1",
"zod": "3.22.3"
},
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/github
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/github",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "The official GitHub integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -30,8 +30,8 @@
"@octokit/request-error": "^5.0.1",
"@octokit/webhooks": "^12.0.10",
"octokit": "^3.1.2",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"zod": "3.22.3"
},
"engines": {
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/linear
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/linear",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev integration for @linear/sdk",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@linear/sdk": "^8.0.0",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"zod": "3.22.3"
},
"engines": {
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/slack
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/openai",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "The official OpenAI integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -42,8 +42,8 @@
},
"dependencies": {
"openai": "^4.16.1",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23"
},
"engines": {
"node": ">=18.0.0"
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/plain
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/plain",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "The official Plain.com integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,8 +24,8 @@
"build:tsup": "tsup"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"@team-plain/typescript-sdk": "^2.7.0"
},
"engines": {
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/replicate
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/replicate",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev integration for replicate",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"replicate": "^0.18.1",
"zod": "3.22.3"
},
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/resend
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/resend",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "The official Resend.com integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,8 +24,8 @@
"build:tsup": "tsup"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"resend": "^2.1.0"
},
"engines": {
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/sendgrid
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sendgrid",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev integration for @sendgrid/mail",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@sendgrid/mail": "^7.7.0",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23"
},
"engines": {
"node": ">=16.8.0"
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/shopify
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/shopify",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev integration for @shopify/shopify-api",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@shopify/shopify-api": "^8.0.2",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"zod": "3.22.3"
},
"engines": {
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/slack
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/slack",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "The official Slack integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,7 +25,7 @@
},
"dependencies": {
"@slack/web-api": "^6.8.1",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"zod": "3.22.3"
},
"engines": {
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/stripe
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/stripe",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev integration for stripe",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"stripe": "^12.14.0",
"zod": "3.22.3"
},
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/supabase
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/supabase",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev integration for @supabase/supabase-js",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@supabase/supabase-js": "^2.26.0",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"supabase-management-js": "^1.0.0",
"zod": "3.22.3"
},
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/typeform
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/integration-kit@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/typeform",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "The official Typeform integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,8 +24,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/integration-kit": "workspace:^3.0.0-beta.23",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"@typeform/api-client": "^1.8.0",
"zod": "3.22.3"
},
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/astro
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@trigger.dev/astro",
"description": "An Astro-native integration for Trigger.dev background jobs platform",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
@@ -20,7 +20,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23"
},
"devDependencies": {
"astro": "^3.0.12",
+7
View File
@@ -1,5 +1,12 @@
# trigger.dev
## 3.0.0-beta.23
### Patch Changes
- 43bc7ed94: Hoist uncaughtException handler to the top of workers to better report error messages
- @trigger.dev/core@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "trigger.dev",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "A Command-Line Interface for Trigger.dev (v3) projects",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -86,7 +86,7 @@
"@opentelemetry/sdk-trace-base": "^1.22.0",
"@opentelemetry/sdk-trace-node": "^1.22.0",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@trigger.dev/core": "workspace:3.0.0-beta.22",
"@trigger.dev/core": "workspace:3.0.0-beta.23",
"@types/degit": "^2.8.3",
"chalk": "^5.2.0",
"chokidar": "^3.5.3",
+10
View File
@@ -202,6 +202,13 @@ async function _deployCommand(dir: string, options: DeployCommandOptions) {
projectRef: options.projectRef,
});
if (resolvedConfig.status === "error") {
logger.error("Failed to read config:", resolvedConfig.error);
span && recordSpanException(span, resolvedConfig.error);
throw new SkipLoggingError("Failed to read config");
}
logger.debug("Resolved config", { resolvedConfig });
span?.setAttributes({
@@ -1126,6 +1133,9 @@ async function compileProject(
format: "cjs", // This is needed to support opentelemetry instrumentation that uses module patching
target: ["node18", "es2020"],
outdir: "out",
banner: {
js: `process.on("uncaughtException", function(error, origin) { if (error instanceof Error) { process.send && process.send({ type: "EVENT", message: { type: "UNCAUGHT_EXCEPTION", payload: { error: { name: error.name, message: error.message, stack: error.stack }, origin }, version: "v1" } }); } else { process.send && process.send({ type: "EVENT", message: { type: "UNCAUGHT_EXCEPTION", payload: { error: { name: "Error", message: typeof error === "string" ? error : JSON.stringify(error) }, origin }, version: "v1" } }); } });`,
},
define: {
TRIGGER_API_URL: `"${config.triggerUrl}"`,
__PROJECT_CONFIG__: JSON.stringify(config),
+13 -5
View File
@@ -153,6 +153,11 @@ async function startDev(
logger.debug("Initial config", { config });
if (config.status === "error") {
logger.error("Failed to read config", config.error);
process.exit(1);
}
async function getDevReactElement(
configParam: ResolvedConfig,
authorization: { apiUrl: string; accessToken: string },
@@ -164,18 +169,18 @@ async function startDev(
apiClient = new CliApiClient(apiUrl, accessToken);
const devEnv = await apiClient.getProjectEnv({
projectRef: config.config.project,
projectRef: configParam.project,
env: "dev",
});
if (!devEnv.success) {
if (devEnv.error === "Project not found") {
logger.error(
`Project not found: ${config.config.project}. Ensure you are using the correct project ref and CLI profile (use --profile). Currently using the "${options.profile}" profile, which points to ${authorization.apiUrl}`
`Project not found: ${configParam.project}. Ensure you are using the correct project ref and CLI profile (use --profile). Currently using the "${options.profile}" profile, which points to ${authorization.apiUrl}`
);
} else {
logger.error(
`Failed to initialize dev environment: ${devEnv.error}. Using project ref ${config.config.project}`
`Failed to initialize dev environment: ${devEnv.error}. Using project ref ${configParam.project}`
);
}
@@ -388,6 +393,9 @@ function useDev({
resolveDir: process.cwd(),
sourcefile: "__entryPoint.ts",
},
banner: {
js: `process.on("uncaughtException", function(error, origin) { if (error instanceof Error) { process.send && process.send({ type: "UNCAUGHT_EXCEPTION", payload: { error: { name: error.name, message: error.message, stack: error.stack }, origin }, version: "v1" }); } else { process.send && process.send({ type: "UNCAUGHT_EXCEPTION", payload: { error: { name: "Error", message: typeof error === "string" ? error : JSON.stringify(error) }, origin }, version: "v1" }); } });`,
},
bundle: true,
metafile: true,
write: false,
@@ -602,10 +610,10 @@ function useDev({
} else {
}
if (e.originalError.stack) {
if (e.originalError.message || e.originalError.stack) {
logger.log(
`${chalkError("X Error:")} Worker failed to start`,
e.originalError.stack
e.originalError.stack ?? e.originalError.message
);
}
+24 -13
View File
@@ -126,6 +126,10 @@ export type ReadConfigResult =
| {
status: "in-memory";
config: ResolvedConfig;
}
| {
status: "error";
error: unknown;
};
export async function readConfig(
@@ -182,22 +186,29 @@ export async function readConfig(
],
});
// import the config file
const userConfigModule = await import(builtConfigFileHref);
try {
// import the config file
const userConfigModule = await import(builtConfigFileHref);
// The --project-ref CLI arg will always override the project specified in the config file
const rawConfig = await normalizeConfig(
userConfigModule?.config,
options?.projectRef ? { project: options?.projectRef } : undefined
);
// The --project-ref CLI arg will always override the project specified in the config file
const rawConfig = await normalizeConfig(
userConfigModule?.config,
options?.projectRef ? { project: options?.projectRef } : undefined
);
const config = Config.parse(rawConfig);
const config = Config.parse(rawConfig);
return {
status: "file",
config: await resolveConfig(absoluteDir, config),
path: configPath,
};
return {
status: "file",
config: await resolveConfig(absoluteDir, config),
path: configPath,
};
} catch (error) {
return {
status: "error",
error,
};
}
}
export async function resolveConfig(path: string, config: Config): Promise<ResolvedConfig> {
@@ -33,19 +33,4 @@ export const sender = new ZodMessageSender({
},
});
process.on("uncaughtException", (error, origin) => {
sender
.send("UNCAUGHT_EXCEPTION", {
error: {
name: error.name,
message: error.message,
stack: error.stack,
},
origin,
})
.catch((err) => {
console.error("Failed to send UNCAUGHT_EXCEPTION message", err);
});
});
taskCatalog.setGlobalTaskCatalog(new StandardTaskCatalog());
@@ -19,22 +19,4 @@ export const tracingSDK = new TracingSDK({
diagLogLevel: (process.env.OTEL_LOG_LEVEL as TracingDiagnosticLogLevel) ?? "none",
});
process.on("uncaughtException", (error, origin) => {
process.send?.({
type: "EVENT",
message: {
type: "UNCAUGHT_EXCEPTION",
payload: {
error: {
name: error.name,
message: error.message,
stack: error.stack,
},
origin,
},
version: "v1",
},
});
});
taskCatalog.setGlobalTaskCatalog(new StandardTaskCatalog());
+7
View File
@@ -1,5 +1,12 @@
# create-trigger
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/core@3.0.0-beta.23
- @trigger.dev/yalt@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/cli",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "The Trigger.dev CLI",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/core-apps
## 3.0.0-beta.23
## 3.0.0-beta.22
## 3.0.0-beta.21
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@trigger.dev/core-apps",
"description": "Backend core code used across apps",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"private": true,
"license": "MIT",
"main": "./dist/index.js",
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/core-backend
## 3.0.0-beta.23
## 3.0.0-beta.22
## 3.0.0-beta.21
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/core-backend",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Core code used across `@trigger.dev/sdk` and Trigger.dev server",
"license": "MIT",
"main": "./dist/index.js",
+2
View File
@@ -1,5 +1,7 @@
# internal-platform
## 3.0.0-beta.23
## 3.0.0-beta.22
## 3.0.0-beta.21
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/core",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Core code used across the Trigger.dev SDK and platform",
"license": "MIT",
"main": "./dist/index.js",
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/eslint-plugin
## 3.0.0-beta.23
## 3.0.0-beta.22
## 3.0.0-beta.21
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/eslint-plugin",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "ESLint plugin with trigger.dev best practices",
"keywords": [
"eslint",
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/express
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/express",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Official Express adapter for Trigger.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -23,7 +23,7 @@
"./package.json": "./package.json"
},
"devDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/express": "^4.17.13",
@@ -39,7 +39,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23"
},
"dependencies": {
"debug": "^4.3.4",
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/hono
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/hono",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "A Trigger.dev adapter for Hono.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -32,7 +32,7 @@
},
"peerDependencies": {
"hono": "3.x",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23"
},
"devDependencies": {
"@trigger.dev/tsconfig": "workspace:*",
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/integration-kit
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/core@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/integration-kit",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev Integration Kit has helpers to make creating integrations easier",
"license": "MIT",
"main": "./dist/index.js",
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/nestjs
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/nestjs",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Official NestJS adapter for Trigger.dev",
"license": "MIT",
"main": "./dist/index.js",
@@ -23,7 +23,7 @@
"./package.json": "./package.json"
},
"devDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/express": "^4.17.13",
@@ -41,7 +41,7 @@
},
"peerDependencies": {
"@nestjs/common": ">=10.0.0",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23"
},
"dependencies": {
"@nestjs/common": "^10.2.4",
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/nextjs
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/nextjs",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev Next.js integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -41,7 +41,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"next": ">=12.0.0"
},
"dependencies": {
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/otlp-importer
## 3.0.0-beta.23
## 3.0.0-beta.22
## 3.0.0-beta.21
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/otlp-importer",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "OpenTelemetry OTLP Importer for Node.js written in TypeScript",
"license": "MIT",
"main": "./dist/index.js",
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/react
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/core@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/react",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev React SDK",
"license": "MIT",
"types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
},
"dependencies": {
"@tanstack/react-query": "5.0.0-beta.2",
"@trigger.dev/core": "workspace:^3.0.0-beta.22",
"@trigger.dev/core": "workspace:^3.0.0-beta.23",
"debug": "^4.3.4",
"zod": "3.22.3"
},
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/remix
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/remix",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev Remix integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -39,7 +39,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22",
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23",
"@remix-run/server-runtime": ">1.19.0"
},
"dependencies": {
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/sveltekit
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sveltekit",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "Trigger.dev svelteKit integration",
"license": "MIT",
"main": "./dist/index.js",
@@ -39,7 +39,7 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^3.0.0-beta.22"
"@trigger.dev/sdk": "workspace:^3.0.0-beta.23"
},
"dependencies": {
"debug": "^4.3.4"
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/testing
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/core@3.0.0-beta.23
- @trigger.dev/sdk@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@trigger.dev/testing",
"description": "A collection of useful tools to write tests for Trigger.dev.",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"license": "MIT",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
+7
View File
@@ -1,5 +1,12 @@
# @trigger.dev/sdk
## 3.0.0-beta.23
### Patch Changes
- @trigger.dev/core@3.0.0-beta.23
- @trigger.dev/core-backend@3.0.0-beta.23
## 3.0.0-beta.22
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sdk",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "trigger.dev Node.JS SDK",
"license": "MIT",
"main": "./dist/index.js",
@@ -48,8 +48,8 @@
"@opentelemetry/api": "^1.8.0",
"@opentelemetry/api-logs": "^0.48.0",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@trigger.dev/core": "workspace:3.0.0-beta.22",
"@trigger.dev/core-backend": "workspace:3.0.0-beta.22",
"@trigger.dev/core": "workspace:3.0.0-beta.23",
"@trigger.dev/core-backend": "workspace:3.0.0-beta.23",
"chalk": "^5.2.0",
"cronstrue": "^2.21.0",
"debug": "^4.3.4",
+2
View File
@@ -1,5 +1,7 @@
# @trigger.dev/yalt
## 3.0.0-beta.23
## 3.0.0-beta.22
## 3.0.0-beta.21
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/yalt",
"version": "3.0.0-beta.22",
"version": "3.0.0-beta.23",
"description": "yalt.dev client library",
"license": "MIT",
"main": "./dist/index.js",
+35 -35
View File
@@ -836,10 +836,10 @@ importers:
integrations/airtable:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
airtable:
specifier: ^0.12.1
@@ -879,10 +879,10 @@ importers:
specifier: ^12.0.10
version: 12.0.10
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
octokit:
specifier: ^3.1.2
@@ -922,10 +922,10 @@ importers:
specifier: ^8.0.0
version: 8.0.0
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
zod:
specifier: 3.22.3
@@ -953,10 +953,10 @@ importers:
integrations/openai:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
openai:
specifier: ^4.16.1
@@ -996,10 +996,10 @@ importers:
specifier: ^2.7.0
version: 2.7.0
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
devDependencies:
'@trigger.dev/tsconfig':
@@ -1024,10 +1024,10 @@ importers:
integrations/replicate:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
replicate:
specifier: ^0.18.1
@@ -1058,10 +1058,10 @@ importers:
integrations/resend:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
resend:
specifier: ^2.1.0
@@ -1092,10 +1092,10 @@ importers:
specifier: ^7.7.0
version: 7.7.0
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
devDependencies:
'@trigger.dev/tsconfig':
@@ -1123,10 +1123,10 @@ importers:
specifier: ^8.0.2
version: 8.0.2
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
zod:
specifier: 3.22.3
@@ -1157,7 +1157,7 @@ importers:
specifier: ^6.8.1
version: 6.8.1
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
zod:
specifier: 3.22.3
@@ -1185,10 +1185,10 @@ importers:
integrations/stripe:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
stripe:
specifier: ^12.14.0
@@ -1222,10 +1222,10 @@ importers:
specifier: ^2.26.0
version: 2.31.0
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
supabase-management-js:
specifier: ^1.0.0
@@ -1256,10 +1256,10 @@ importers:
integrations/typeform:
dependencies:
'@trigger.dev/integration-kit':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/integration-kit
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../../packages/trigger-sdk
'@typeform/api-client':
specifier: ^1.8.0
@@ -1287,7 +1287,7 @@ importers:
packages/astro:
dependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../trigger-sdk
debug:
specifier: ^4.3.4
@@ -1505,7 +1505,7 @@ importers:
specifier: ^1.22.0
version: 1.22.0
'@trigger.dev/core':
specifier: workspace:3.0.0-beta.22
specifier: workspace:3.0.0-beta.23
version: link:../core
'@types/degit':
specifier: ^2.8.3
@@ -1947,7 +1947,7 @@ importers:
version: 4.18.2
devDependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../trigger-sdk
'@trigger.dev/tsconfig':
specifier: workspace:*
@@ -2042,7 +2042,7 @@ importers:
version: 4.3.4(supports-color@8.1.1)
devDependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../trigger-sdk
'@trigger.dev/tsconfig':
specifier: workspace:*
@@ -2075,7 +2075,7 @@ importers:
packages/nextjs:
dependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../trigger-sdk
debug:
specifier: ^4.3.4
@@ -2161,7 +2161,7 @@ importers:
specifier: 5.0.0-beta.2
version: 5.0.0-beta.2(react@18.2.0)
'@trigger.dev/core':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../core
debug:
specifier: ^4.3.4
@@ -2204,7 +2204,7 @@ importers:
packages/remix:
dependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../trigger-sdk
debug:
specifier: ^4.3.4
@@ -2241,7 +2241,7 @@ importers:
packages/sveltekit:
dependencies:
'@trigger.dev/sdk':
specifier: workspace:^3.0.0-beta.22
specifier: workspace:^3.0.0-beta.23
version: link:../trigger-sdk
debug:
specifier: ^4.3.4
@@ -2315,10 +2315,10 @@ importers:
specifier: ^1.22.0
version: 1.22.0
'@trigger.dev/core':
specifier: workspace:3.0.0-beta.22
specifier: workspace:3.0.0-beta.23
version: link:../core
'@trigger.dev/core-backend':
specifier: workspace:3.0.0-beta.22
specifier: workspace:3.0.0-beta.23
version: link:../core-backend
chalk:
specifier: ^5.2.0
+11 -4
View File
@@ -22,10 +22,17 @@ export const loggingTask = task({
export const lotsOfLogs = task({
id: "lots-of-logs",
run: async (payload: { count: number }) => {
for (let i = 0; i < payload.count; i++) {
logger.info(`Hello world ${i} ${slugify("foo bar")}`);
await wait.for({ seconds: 0.1 });
run: async ({ count = 400, delay = 10 }: { count?: number; delay?: number }) => {
for (let i = 0; i < count; i++) {
logger.info(
`Log #${i}. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?`,
{}
);
await sleepMs(delay);
}
},
});
function sleepMs(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}