diff --git a/.changeset/big-tomatoes-deliver.md b/.changeset/big-tomatoes-deliver.md new file mode 100644 index 000000000..695b7fc82 --- /dev/null +++ b/.changeset/big-tomatoes-deliver.md @@ -0,0 +1,5 @@ +--- +"trigger.dev": patch +--- + +Hoist uncaughtException handler to the top of workers to better report error messages diff --git a/.changeset/pre.json b/.changeset/pre.json index 197e7c8ee..56db4e545 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -46,6 +46,7 @@ "changesets": [ "angry-eagles-trade", "beige-pens-dance", + "big-tomatoes-deliver", "breezy-gorillas-mate", "chilled-hornets-move", "clean-pianos-listen", diff --git a/apps/kubernetes-provider/src/index.ts b/apps/kubernetes-provider/src/index.ts index 3fcc4217f..1b1700883 100644 --- a/apps/kubernetes-provider/src/index.ts +++ b/apps/kubernetes-provider/src/index.ts @@ -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: [ diff --git a/apps/webapp/app/components/primitives/TreeView/TreeView.tsx b/apps/webapp/app/components/primitives/TreeView/TreeView.tsx index e07bbe889..003850e7f 100644 --- a/apps/webapp/app/components/primitives/TreeView/TreeView.tsx +++ b/apps/webapp/app/components/primitives/TreeView/TreeView.tsx @@ -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 = { tree: FlatTree; @@ -104,23 +103,22 @@ export function TreeView({ if (!node) return null; const state = nodes[node.id]; if (!state) return null; + if (!state.visible) return null; return (
- - {renderNode({ - node, - state, - index: virtualItem.index, - virtualizer: virtualizer, - virtualItem, - })} - + {renderNode({ + node, + state, + index: virtualItem.index, + virtualizer: virtualizer, + virtualItem, + })}
); })} @@ -130,19 +128,23 @@ export function TreeView({ ); } -type TreeStateHookProps = { +export type Filter = { + value?: TFilterValue; + fn: (value: TFilterValue, node: FlatTreeItem) => boolean; +}; + +type TreeStateHookProps = { tree: FlatTree; selectedId?: string; collapsedIds?: string[]; onSelectedIdChanged?: (selectedId: string | undefined) => void; - onCollapsedIdsChanged?: (collapsedIds: string[]) => void; estimatedRowHeight: (params: { node: FlatTreeItem; state: NodeState; index: number; }) => number; parentRef: RefObject; - filter?: (node: FlatTreeItem) => boolean; + filter?: Filter; }; //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({ +export function useTree({ tree, selectedId, collapsedIds, onSelectedIdChanged, - onCollapsedIdsChanged, parentRef, estimatedRowHeight, filter, -}: TreeStateHookProps): UseTreeStateOutput { +}: TreeStateHookProps): UseTreeStateOutput { const previousNodeCount = useRef(tree.length); const previousSelectedId = useRef(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({ } }, [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({ } }, [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({ 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({ (scrollToNode = true) => { dispatch({ type: "SELECT_FIRST_VISIBLE_NODE", - payload: { tree, scrollToNode, scrollToNodeFn }, + payload: { scrollToNode, scrollToNodeFn }, }); }, [tree, state] @@ -302,7 +315,7 @@ export function useTree({ (scrollToNode = true) => { dispatch({ type: "SELECT_LAST_VISIBLE_NODE", - payload: { tree, scrollToNode, scrollToNodeFn }, + payload: { scrollToNode, scrollToNodeFn }, }); }, [tree, state] @@ -312,7 +325,7 @@ export function useTree({ (scrollToNode = true) => { dispatch({ type: "SELECT_NEXT_VISIBLE_NODE", - payload: { tree, scrollToNode, scrollToNodeFn }, + payload: { scrollToNode, scrollToNodeFn }, }); }, [state] @@ -322,7 +335,7 @@ export function useTree({ (scrollToNode = true) => { dispatch({ type: "SELECT_PREVIOUS_VISIBLE_NODE", - payload: { tree, scrollToNode, scrollToNodeFn }, + payload: { scrollToNode, scrollToNodeFn }, }); }, [state] @@ -332,7 +345,7 @@ export function useTree({ (scrollToNode = true) => { dispatch({ type: "SELECT_PARENT_NODE", - payload: { tree, scrollToNode, scrollToNodeFn }, + payload: { scrollToNode, scrollToNodeFn }, }); }, [state] @@ -340,35 +353,35 @@ export function useTree({ 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({ return { selected: selectedIdFromState(state.nodes), - nodes: filter ? applyFilterToState(tree, state.nodes, filter) : state.nodes, + nodes: state.nodes, getTreeProps, getNodeProps, selectNode, diff --git a/apps/webapp/app/components/primitives/TreeView/reducer.ts b/apps/webapp/app/components/primitives/TreeView/reducer.ts index ace31e826..1f4290ba6 100644 --- a/apps/webapp/app/components/primitives/TreeView/reducer.ts +++ b/apps/webapp/app/components/primitives/TreeView/reducer.ts @@ -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; nodes: NodesState; + filteredNodes: NodesState; changes: Changes; + filter: Filter | undefined; + visibleNodeIds: string[]; }; export type NodesState = Record; @@ -72,7 +76,6 @@ type ExpandNodeAction = { type: "EXPAND_NODE"; payload: { id: string; - tree: FlatTree; } & WithScrollToNode; }; @@ -80,7 +83,6 @@ type CollapseNodeAction = { type: "COLLAPSE_NODE"; payload: { id: string; - tree: FlatTree; }; }; @@ -88,7 +90,6 @@ type ToggleExpandNodeAction = { type: "TOGGLE_EXPAND_NODE"; payload: { id: string; - tree: FlatTree; } & WithScrollToNode; }; @@ -96,7 +97,6 @@ type ExpandAllBelowDepthAction = { type: "EXPAND_ALL_BELOW_DEPTH"; payload: { depth: number; - tree: FlatTree; }; }; @@ -104,7 +104,6 @@ type CollapseAllBelowDepthAction = { type: "COLLAPSE_ALL_BELOW_DEPTH"; payload: { depth: number; - tree: FlatTree; }; }; @@ -112,7 +111,6 @@ type ExpandLevelAction = { type: "EXPAND_LEVEL"; payload: { level: number; - tree: FlatTree; }; }; @@ -120,7 +118,6 @@ type CollapseLevelAction = { type: "COLLAPSE_LEVEL"; payload: { level: number; - tree: FlatTree; }; }; @@ -128,43 +125,39 @@ type ToggleExpandLevelAction = { type: "TOGGLE_EXPAND_LEVEL"; payload: { level: number; - tree: FlatTree; }; }; type SelectFirstVisibleNodeAction = { type: "SELECT_FIRST_VISIBLE_NODE"; - payload: { - tree: FlatTree; - } & WithScrollToNode; + payload: {} & WithScrollToNode; }; type SelectLastVisibleNodeAction = { type: "SELECT_LAST_VISIBLE_NODE"; - payload: { - tree: FlatTree; - } & WithScrollToNode; + payload: {} & WithScrollToNode; }; type SelectNextVisibleNodeAction = { type: "SELECT_NEXT_VISIBLE_NODE"; - payload: { - tree: FlatTree; - } & WithScrollToNode; + payload: {} & WithScrollToNode; }; type SelectPreviousVisibleNodeAction = { type: "SELECT_PREVIOUS_VISIBLE_NODE"; - payload: { - tree: FlatTree; - } & WithScrollToNode; + payload: {} & WithScrollToNode; }; type SelectParentNodeAction = { type: "SELECT_PARENT_NODE"; + payload: {} & WithScrollToNode; +}; + +type UpdateFilterAction = { + type: "UPDATE_FILTER"; payload: { - tree: FlatTree; - } & WithScrollToNode; + filter: Filter | 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); } diff --git a/apps/webapp/app/components/primitives/TreeView/utils.ts b/apps/webapp/app/components/primitives/TreeView/utils.ts index 6fb98b535..fb9a02f73 100644 --- a/apps/webapp/app/components/primitives/TreeView/utils.ts +++ b/apps/webapp/app/components/primitives/TreeView/utils.ts @@ -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>; @@ -8,10 +8,12 @@ const defaultExpanded = true; export function concreteStateFromInput({ tree, + filter, selectedId, collapsedIds, }: { tree: FlatTree; + filter: Filter | 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( - tree: FlatTree, - inputNodes: NodesState, - filter: (node: FlatTreeItem) => boolean -): NodesState { +export function applyFilterToState({ + 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(); 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(); const expanded = new Set(); @@ -148,28 +175,35 @@ export function applyFilterToState( //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, 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, }; } diff --git a/apps/webapp/app/hooks/useDebounce.ts b/apps/webapp/app/hooks/useDebounce.ts index 747d0b309..a8670caf7 100644 --- a/apps/webapp/app/hooks/useDebounce.ts +++ b/apps/webapp/app/hooks/useDebounce.ts @@ -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 any>(fn: T, delay: number) { const timeout = useRef>(); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs.$runParam/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs.$runParam/route.tsx index e24696e37..639d45064 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs.$runParam/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs.$runParam/route.tsx @@ -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 (
- setFilterText(e.target.value)} - /> +
void
); } + +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 ( + updateValue(e.target.value)} + /> + ); +} diff --git a/apps/webapp/app/routes/storybook.tree-view/route.tsx b/apps/webapp/app/routes/storybook.tree-view/route.tsx index 33bb3c3d7..e75b7980b 100644 --- a/apps/webapp/app/routes/storybook.tree-view/route.tsx +++ b/apps/webapp/app/routes/storybook.tree-view/route.tsx @@ -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; + }, }, }); diff --git a/integrations/airtable/CHANGELOG.md b/integrations/airtable/CHANGELOG.md index 75cb63363..f866f92e1 100644 --- a/integrations/airtable/CHANGELOG.md +++ b/integrations/airtable/CHANGELOG.md @@ -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 diff --git a/integrations/airtable/package.json b/integrations/airtable/package.json index c70928999..473ea62f7 100644 --- a/integrations/airtable/package.json +++ b/integrations/airtable/package.json @@ -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" }, diff --git a/integrations/github/CHANGELOG.md b/integrations/github/CHANGELOG.md index 241ca7ea4..9f7854fdc 100644 --- a/integrations/github/CHANGELOG.md +++ b/integrations/github/CHANGELOG.md @@ -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 diff --git a/integrations/github/package.json b/integrations/github/package.json index bf145fd6a..7162f8130 100644 --- a/integrations/github/package.json +++ b/integrations/github/package.json @@ -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": { diff --git a/integrations/linear/CHANGELOG.md b/integrations/linear/CHANGELOG.md index 98bc8ab34..f785081c4 100644 --- a/integrations/linear/CHANGELOG.md +++ b/integrations/linear/CHANGELOG.md @@ -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 diff --git a/integrations/linear/package.json b/integrations/linear/package.json index f141adf89..674117abe 100644 --- a/integrations/linear/package.json +++ b/integrations/linear/package.json @@ -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": { diff --git a/integrations/openai/CHANGELOG.md b/integrations/openai/CHANGELOG.md index 3e38b31e7..857476015 100644 --- a/integrations/openai/CHANGELOG.md +++ b/integrations/openai/CHANGELOG.md @@ -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 diff --git a/integrations/openai/package.json b/integrations/openai/package.json index 601ba3a54..5db724d37 100644 --- a/integrations/openai/package.json +++ b/integrations/openai/package.json @@ -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" diff --git a/integrations/plain/CHANGELOG.md b/integrations/plain/CHANGELOG.md index 8d2f9b2ea..a1eeb3359 100644 --- a/integrations/plain/CHANGELOG.md +++ b/integrations/plain/CHANGELOG.md @@ -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 diff --git a/integrations/plain/package.json b/integrations/plain/package.json index afe2ca44a..8aeea0adf 100644 --- a/integrations/plain/package.json +++ b/integrations/plain/package.json @@ -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": { diff --git a/integrations/replicate/CHANGELOG.md b/integrations/replicate/CHANGELOG.md index 861f43242..89b1ed428 100644 --- a/integrations/replicate/CHANGELOG.md +++ b/integrations/replicate/CHANGELOG.md @@ -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 diff --git a/integrations/replicate/package.json b/integrations/replicate/package.json index a6040dcf2..6265695af 100644 --- a/integrations/replicate/package.json +++ b/integrations/replicate/package.json @@ -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" }, diff --git a/integrations/resend/CHANGELOG.md b/integrations/resend/CHANGELOG.md index e599fbe41..93a0f3358 100644 --- a/integrations/resend/CHANGELOG.md +++ b/integrations/resend/CHANGELOG.md @@ -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 diff --git a/integrations/resend/package.json b/integrations/resend/package.json index 6d3262a8b..206fa4b42 100644 --- a/integrations/resend/package.json +++ b/integrations/resend/package.json @@ -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": { diff --git a/integrations/sendgrid/CHANGELOG.md b/integrations/sendgrid/CHANGELOG.md index 3df4e79e3..cc5ca677a 100644 --- a/integrations/sendgrid/CHANGELOG.md +++ b/integrations/sendgrid/CHANGELOG.md @@ -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 diff --git a/integrations/sendgrid/package.json b/integrations/sendgrid/package.json index 1305840e4..855b1a9d1 100644 --- a/integrations/sendgrid/package.json +++ b/integrations/sendgrid/package.json @@ -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" diff --git a/integrations/shopify/CHANGELOG.md b/integrations/shopify/CHANGELOG.md index c7e1d62a3..ac4121142 100644 --- a/integrations/shopify/CHANGELOG.md +++ b/integrations/shopify/CHANGELOG.md @@ -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 diff --git a/integrations/shopify/package.json b/integrations/shopify/package.json index 39e005a13..a06251c19 100644 --- a/integrations/shopify/package.json +++ b/integrations/shopify/package.json @@ -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": { diff --git a/integrations/slack/CHANGELOG.md b/integrations/slack/CHANGELOG.md index bba779c61..4bf60263e 100644 --- a/integrations/slack/CHANGELOG.md +++ b/integrations/slack/CHANGELOG.md @@ -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 diff --git a/integrations/slack/package.json b/integrations/slack/package.json index 745a2af45..1ae95c1c0 100644 --- a/integrations/slack/package.json +++ b/integrations/slack/package.json @@ -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": { diff --git a/integrations/stripe/CHANGELOG.md b/integrations/stripe/CHANGELOG.md index 6f2defde9..f3fb391e8 100644 --- a/integrations/stripe/CHANGELOG.md +++ b/integrations/stripe/CHANGELOG.md @@ -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 diff --git a/integrations/stripe/package.json b/integrations/stripe/package.json index 810e0f555..9e60bc520 100644 --- a/integrations/stripe/package.json +++ b/integrations/stripe/package.json @@ -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" }, diff --git a/integrations/supabase/CHANGELOG.md b/integrations/supabase/CHANGELOG.md index ae0425f1a..d8728b059 100644 --- a/integrations/supabase/CHANGELOG.md +++ b/integrations/supabase/CHANGELOG.md @@ -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 diff --git a/integrations/supabase/package.json b/integrations/supabase/package.json index 3907d8a0e..de2103f0c 100644 --- a/integrations/supabase/package.json +++ b/integrations/supabase/package.json @@ -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" }, diff --git a/integrations/typeform/CHANGELOG.md b/integrations/typeform/CHANGELOG.md index 9c7e3d8e3..1e113b7bb 100644 --- a/integrations/typeform/CHANGELOG.md +++ b/integrations/typeform/CHANGELOG.md @@ -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 diff --git a/integrations/typeform/package.json b/integrations/typeform/package.json index ee266d7c1..1df5fa92d 100644 --- a/integrations/typeform/package.json +++ b/integrations/typeform/package.json @@ -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" }, diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index 00f9c61b6..b8b5ca97a 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -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 diff --git a/packages/astro/package.json b/packages/astro/package.json index 6ebbc82fa..0e9dda74f 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -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", diff --git a/packages/cli-v3/CHANGELOG.md b/packages/cli-v3/CHANGELOG.md index 52c728180..f02b5a53e 100644 --- a/packages/cli-v3/CHANGELOG.md +++ b/packages/cli-v3/CHANGELOG.md @@ -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 diff --git a/packages/cli-v3/package.json b/packages/cli-v3/package.json index 73bec575e..63feb7ca8 100644 --- a/packages/cli-v3/package.json +++ b/packages/cli-v3/package.json @@ -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", diff --git a/packages/cli-v3/src/commands/deploy.ts b/packages/cli-v3/src/commands/deploy.ts index 6ca164878..dc841c11e 100644 --- a/packages/cli-v3/src/commands/deploy.ts +++ b/packages/cli-v3/src/commands/deploy.ts @@ -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), diff --git a/packages/cli-v3/src/commands/dev.tsx b/packages/cli-v3/src/commands/dev.tsx index b182b535b..c9e684847 100644 --- a/packages/cli-v3/src/commands/dev.tsx +++ b/packages/cli-v3/src/commands/dev.tsx @@ -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 ); } diff --git a/packages/cli-v3/src/utilities/configFiles.ts b/packages/cli-v3/src/utilities/configFiles.ts index 5725e0e67..cee0df316 100644 --- a/packages/cli-v3/src/utilities/configFiles.ts +++ b/packages/cli-v3/src/utilities/configFiles.ts @@ -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 { diff --git a/packages/cli-v3/src/workers/dev/worker-setup.ts b/packages/cli-v3/src/workers/dev/worker-setup.ts index a9139eb31..a4364d1eb 100644 --- a/packages/cli-v3/src/workers/dev/worker-setup.ts +++ b/packages/cli-v3/src/workers/dev/worker-setup.ts @@ -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()); diff --git a/packages/cli-v3/src/workers/prod/worker-setup.ts b/packages/cli-v3/src/workers/prod/worker-setup.ts index 82bf65d47..4bad77fd5 100644 --- a/packages/cli-v3/src/workers/prod/worker-setup.ts +++ b/packages/cli-v3/src/workers/prod/worker-setup.ts @@ -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()); diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index d2ad9ebcb..bca332d2c 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -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 diff --git a/packages/cli/package.json b/packages/cli/package.json index 0e4c12447..c425fc0cb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -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", diff --git a/packages/core-apps/CHANGELOG.md b/packages/core-apps/CHANGELOG.md index 9eeb4ea27..5178b683a 100644 --- a/packages/core-apps/CHANGELOG.md +++ b/packages/core-apps/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/core-apps +## 3.0.0-beta.23 + ## 3.0.0-beta.22 ## 3.0.0-beta.21 diff --git a/packages/core-apps/package.json b/packages/core-apps/package.json index 85c444372..f7f776f26 100644 --- a/packages/core-apps/package.json +++ b/packages/core-apps/package.json @@ -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", diff --git a/packages/core-backend/CHANGELOG.md b/packages/core-backend/CHANGELOG.md index 42d69e538..e85118ed6 100644 --- a/packages/core-backend/CHANGELOG.md +++ b/packages/core-backend/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/core-backend +## 3.0.0-beta.23 + ## 3.0.0-beta.22 ## 3.0.0-beta.21 diff --git a/packages/core-backend/package.json b/packages/core-backend/package.json index e9c365beb..e69087107 100644 --- a/packages/core-backend/package.json +++ b/packages/core-backend/package.json @@ -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", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 5116d795d..77acfe5d4 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,7 @@ # internal-platform +## 3.0.0-beta.23 + ## 3.0.0-beta.22 ## 3.0.0-beta.21 diff --git a/packages/core/package.json b/packages/core/package.json index b4a8ddcf3..122f1d08f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -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", diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index cf5d78174..3e1319a18 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/eslint-plugin +## 3.0.0-beta.23 + ## 3.0.0-beta.22 ## 3.0.0-beta.21 diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index b9e34bf32..e48df6b85 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -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", diff --git a/packages/express/CHANGELOG.md b/packages/express/CHANGELOG.md index e7c8d92be..0753eb35a 100644 --- a/packages/express/CHANGELOG.md +++ b/packages/express/CHANGELOG.md @@ -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 diff --git a/packages/express/package.json b/packages/express/package.json index b1c010cbf..49c3432c2 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -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", diff --git a/packages/hono/CHANGELOG.md b/packages/hono/CHANGELOG.md index fb9258602..ef522e646 100644 --- a/packages/hono/CHANGELOG.md +++ b/packages/hono/CHANGELOG.md @@ -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 diff --git a/packages/hono/package.json b/packages/hono/package.json index 71c066982..59242b114 100644 --- a/packages/hono/package.json +++ b/packages/hono/package.json @@ -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:*", diff --git a/packages/integration-kit/CHANGELOG.md b/packages/integration-kit/CHANGELOG.md index c2b111017..51e0c2e55 100644 --- a/packages/integration-kit/CHANGELOG.md +++ b/packages/integration-kit/CHANGELOG.md @@ -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 diff --git a/packages/integration-kit/package.json b/packages/integration-kit/package.json index 83caa6082..e6db7a9f7 100644 --- a/packages/integration-kit/package.json +++ b/packages/integration-kit/package.json @@ -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", diff --git a/packages/nestjs/CHANGELOG.md b/packages/nestjs/CHANGELOG.md index 362305090..e8a25cf8f 100644 --- a/packages/nestjs/CHANGELOG.md +++ b/packages/nestjs/CHANGELOG.md @@ -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 diff --git a/packages/nestjs/package.json b/packages/nestjs/package.json index 1cf08a410..007ebc785 100644 --- a/packages/nestjs/package.json +++ b/packages/nestjs/package.json @@ -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", diff --git a/packages/nextjs/CHANGELOG.md b/packages/nextjs/CHANGELOG.md index 3e5126f04..bbc1e02e5 100644 --- a/packages/nextjs/CHANGELOG.md +++ b/packages/nextjs/CHANGELOG.md @@ -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 diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 2f077310d..437f03523 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -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": { diff --git a/packages/otlp-importer/CHANGELOG.md b/packages/otlp-importer/CHANGELOG.md index 6c7cf0c48..0f5b96e57 100644 --- a/packages/otlp-importer/CHANGELOG.md +++ b/packages/otlp-importer/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/otlp-importer +## 3.0.0-beta.23 + ## 3.0.0-beta.22 ## 3.0.0-beta.21 diff --git a/packages/otlp-importer/package.json b/packages/otlp-importer/package.json index f8df22b92..8bbf16e06 100644 --- a/packages/otlp-importer/package.json +++ b/packages/otlp-importer/package.json @@ -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", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 94871ecec..f0a4d0903 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -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 diff --git a/packages/react/package.json b/packages/react/package.json index 12b27e7b0..1db7b2aa5 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -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" }, diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md index aef9cde1a..5f5166ba0 100644 --- a/packages/remix/CHANGELOG.md +++ b/packages/remix/CHANGELOG.md @@ -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 diff --git a/packages/remix/package.json b/packages/remix/package.json index bea20bb4c..7d495ab4f 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -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": { diff --git a/packages/sveltekit/CHANGELOG.md b/packages/sveltekit/CHANGELOG.md index dbd580306..f03ba813a 100644 --- a/packages/sveltekit/CHANGELOG.md +++ b/packages/sveltekit/CHANGELOG.md @@ -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 diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 4746f628e..b7304492f 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -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" diff --git a/packages/testing/CHANGELOG.md b/packages/testing/CHANGELOG.md index f78c82e17..f5cc3e84c 100644 --- a/packages/testing/CHANGELOG.md +++ b/packages/testing/CHANGELOG.md @@ -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 diff --git a/packages/testing/package.json b/packages/testing/package.json index f8bbb1632..bd968f7d1 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -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", diff --git a/packages/trigger-sdk/CHANGELOG.md b/packages/trigger-sdk/CHANGELOG.md index 7aafd9e52..a65a1cea4 100644 --- a/packages/trigger-sdk/CHANGELOG.md +++ b/packages/trigger-sdk/CHANGELOG.md @@ -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 diff --git a/packages/trigger-sdk/package.json b/packages/trigger-sdk/package.json index 2475542d7..e8003e063 100644 --- a/packages/trigger-sdk/package.json +++ b/packages/trigger-sdk/package.json @@ -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", diff --git a/packages/yalt/CHANGELOG.md b/packages/yalt/CHANGELOG.md index 24a4f1696..32a80fb1a 100644 --- a/packages/yalt/CHANGELOG.md +++ b/packages/yalt/CHANGELOG.md @@ -1,5 +1,7 @@ # @trigger.dev/yalt +## 3.0.0-beta.23 + ## 3.0.0-beta.22 ## 3.0.0-beta.21 diff --git a/packages/yalt/package.json b/packages/yalt/package.json index 5e66fbb0b..dadb80220 100644 --- a/packages/yalt/package.json +++ b/packages/yalt/package.json @@ -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", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 598801951..674b46553 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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 diff --git a/references/v3-catalog/src/trigger/logging.ts b/references/v3-catalog/src/trigger/logging.ts index bd6878833..77ded013d 100644 --- a/references/v3-catalog/src/trigger/logging.ts +++ b/references/v3-catalog/src/trigger/logging.ts @@ -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)); +}