@shipfox/client-triggers 22.0.2 → 23.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,8 +12,8 @@ import {
12
12
 
13
13
  if (typeof document !== 'undefined' && document.fonts) {
14
14
  void Promise.all([
15
- document.fonts.load("16px 'Inter'"),
16
- document.fonts.load("italic 16px 'Inter'"),
15
+ document.fonts.load("16px 'IBM Plex Sans'"),
16
+ document.fonts.load("italic 16px 'IBM Plex Sans'"),
17
17
  document.fonts.load("16px 'Commit Mono'"),
18
18
  document.fonts.load("bold 16px 'Commit Mono'"),
19
19
  ]);
@@ -1,2 +1,2 @@
1
1
  $ shipfox-swc
2
- Successfully compiled: 18 files with swc (192.33ms)
2
+ Successfully compiled: 18 files with swc (495.16ms)
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @shipfox/client-triggers
2
2
 
3
+ ## 23.0.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 05c7c4d: Adds dev-run and replay-link support to trigger journal interfaces and client types.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [693e656]
12
+ - Updated dependencies [05c7c4d]
13
+ - Updated dependencies [f7b3db8]
14
+ - Updated dependencies [b6c7871]
15
+ - @shipfox/client-shell@23.0.0
16
+ - @shipfox/client-projects@23.0.0
17
+ - @shipfox/api-triggers-dto@14.0.0
18
+
19
+ ## 22.0.3
20
+
21
+ ### Patch Changes
22
+
23
+ - Updated dependencies [a7fb52d]
24
+ - Updated dependencies [ddcc546]
25
+ - @shipfox/react-ui@2.2.0
26
+ - @shipfox/client-projects@22.0.3
27
+ - @shipfox/client-shell@22.0.3
28
+ - @shipfox/client-ui@22.0.3
29
+ - @shipfox/integration-icons@0.3.7
30
+
3
31
  ## 22.0.2
4
32
 
5
33
  ### Patch Changes
@@ -21,6 +21,10 @@ declare const meta: {
21
21
  value: string;
22
22
  count: number;
23
23
  }[];
24
+ origins: {
25
+ value: string;
26
+ count: number;
27
+ }[];
24
28
  };
25
29
  filters: {};
26
30
  onFiltersChange: () => undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"events-list.stories.d.ts","sourceRoot":"","sources":["../../src/components/events-list.stories.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,SAAS,EAAQ,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAGhE,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,YAAY,CAAC;AA2EvD,QAAA,MAAM,IAAI;;;;QAGK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;CAec,CAAC;eAErB,IAAI;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,UAAU,EAAE,KAAU,CAAC;AAEpC,eAAO,MAAM,UAAU,EAAE,KAiBxB,CAAC"}
1
+ {"version":3,"file":"events-list.stories.d.ts","sourceRoot":"","sources":["../../src/components/events-list.stories.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,SAAS,EAAQ,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAGhE,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,YAAY,CAAC;AA6EvD,QAAA,MAAM,IAAI;;;;QAGK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAec,CAAC;eAErB,IAAI;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,UAAU,EAAE,KAAU,CAAC;AAEpC,eAAO,MAAM,UAAU,EAAE,KAiBxB,CAAC"}
@@ -38,6 +38,7 @@ function makeEvent(outcome, provider, source, event, matchedCount, minutesAgo) {
38
38
  provider,
39
39
  source,
40
40
  event,
41
+ replay_of_event_id: null,
41
42
  delivery_id: `delivery-${String(seq).padStart(6, '0')}`,
42
43
  connection_id: 'conn-demo',
43
44
  outcome,
@@ -82,6 +83,12 @@ const SAMPLE_FACETS = {
82
83
  value: 'issue_comment',
83
84
  count: 1
84
85
  }
86
+ ],
87
+ origins: [
88
+ {
89
+ value: 'integration',
90
+ count: 5
91
+ }
85
92
  ]
86
93
  };
87
94
  const meta = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/events-list.stories.tsx"],"sourcesContent":["import type {\n TriggerEventFacetsResponseDto,\n TriggerEventListItemDto,\n TriggerEventOutcomeDto,\n} from '@shipfox/api-triggers-dto';\nimport {RelativeTimeProvider} from '@shipfox/react-ui/relative-time';\nimport {Code} from '@shipfox/react-ui/typography';\nimport type {Decorator, Meta, StoryObj} from '@storybook/react';\nimport type {ReactNode} from 'react';\nimport {toTriggerEventSummary} from '#hooks/api/trigger-event-mapper.js';\nimport {EventsList} from './events-list.js';\nimport type {TriggerEventsListQuery} from './types.js';\n\nconst STORY_NOW = '2026-06-25T20:00:00.000Z';\nconst STORY_NOW_MS = Date.parse(STORY_NOW);\n\n// Typed so meta's inferred type stays nameable (TS2883) under the package's tsconfig.\nconst withWidth: Decorator = (Story) => (\n <RelativeTimeProvider now={STORY_NOW}>\n <div className=\"w-[900px]\">\n <Story />\n </div>\n </RelativeTimeProvider>\n);\n\nfunction makeQuery(overrides: Partial<TriggerEventsListQuery> = {}): TriggerEventsListQuery {\n return {\n isPending: false,\n isError: false,\n isFetching: false,\n data: {pages: [], pageParams: []},\n error: null,\n refetch: () => undefined,\n ...overrides,\n };\n}\n\nlet seq = 0;\nfunction makeEvent(\n outcome: TriggerEventOutcomeDto,\n provider: string | null,\n source: string,\n event: string,\n matchedCount: number,\n minutesAgo: number,\n): TriggerEventListItemDto {\n seq += 1;\n return {\n id: `evt-${String(seq).padStart(8, '0')}`,\n event_ref: `ref-${seq}`,\n origin: 'integration',\n workspace_id: 'ws-demo',\n provider,\n source,\n event,\n delivery_id: `delivery-${String(seq).padStart(6, '0')}`,\n connection_id: 'conn-demo',\n outcome,\n matched_count: matchedCount,\n received_at: new Date(STORY_NOW_MS - minutesAgo * 60_000).toISOString(),\n processed_at: new Date(STORY_NOW_MS - minutesAgo * 60_000).toISOString(),\n created_at: new Date(STORY_NOW_MS - minutesAgo * 60_000).toISOString(),\n };\n}\n\nconst SAMPLE_EVENTS = [\n makeEvent('received', 'github', 'github_acme', 'push', 0, 0),\n makeEvent('routed', 'github', 'github_acme', 'push', 2, 3),\n makeEvent('routed', 'gitea', 'gitea_acme', 'pull_request', 1, 12),\n makeEvent('discarded', 'github', 'github_acme', 'issue_comment', 0, 38),\n makeEvent('failed', 'gitlab', 'gitlab_acme', 'push', 1, 95),\n].map(toTriggerEventSummary);\n\nconst SAMPLE_FACETS: TriggerEventFacetsResponseDto = {\n sources: [\n {value: 'github_acme', count: 3},\n {value: 'gitea_acme', count: 1},\n {value: 'gitlab_acme', count: 1},\n ],\n events: [\n {value: 'push', count: 3},\n {value: 'pull_request', count: 1},\n {value: 'issue_comment', count: 1},\n ],\n};\n\nconst meta = {\n title: 'Triggers/EventsList',\n component: EventsList,\n parameters: {layout: 'padded'},\n decorators: [withWidth],\n args: {\n workspaceSlug: 'acme',\n events: SAMPLE_EVENTS,\n query: makeQuery(),\n facets: SAMPLE_FACETS,\n filters: {},\n onFiltersChange: () => undefined,\n hasNextPage: false,\n isFetchingNextPage: false,\n onLoadMore: () => undefined,\n selectedEventId: 'evt-00000002',\n onSelectEvent: () => undefined,\n },\n} satisfies Meta<typeof EventsList>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Playground: Story = {};\n\nexport const DataStates: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-32\">\n <StateExample label=\"Loading\">\n <EventsList {...args} events={[]} query={makeQuery({isPending: true, data: undefined})} />\n </StateExample>\n <StateExample label=\"Empty\">\n <EventsList {...args} events={[]} facets={{sources: [], events: []}} />\n </StateExample>\n <StateExample label=\"No matches\">\n <EventsList {...args} events={[]} filters={{outcome: ['failed']}} />\n </StateExample>\n <StateExample label=\"Load error\">\n <EventsList {...args} events={[]} query={makeQuery({isError: true, data: undefined})} />\n </StateExample>\n </div>\n ),\n};\n\nfunction StateExample({label, children}: {label: string; children: ReactNode}) {\n return (\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {label}\n </Code>\n <div className=\"min-h-280 rounded-8 border border-border-neutral-base bg-background-neutral-base p-12\">\n {children}\n </div>\n </div>\n );\n}\n"],"names":["RelativeTimeProvider","Code","toTriggerEventSummary","EventsList","STORY_NOW","STORY_NOW_MS","Date","parse","withWidth","Story","now","div","className","makeQuery","overrides","isPending","isError","isFetching","data","pages","pageParams","error","refetch","undefined","seq","makeEvent","outcome","provider","source","event","matchedCount","minutesAgo","id","String","padStart","event_ref","origin","workspace_id","delivery_id","connection_id","matched_count","received_at","toISOString","processed_at","created_at","SAMPLE_EVENTS","map","SAMPLE_FACETS","sources","value","count","events","meta","title","component","parameters","layout","decorators","args","workspaceSlug","query","facets","filters","onFiltersChange","hasNextPage","isFetchingNextPage","onLoadMore","selectedEventId","onSelectEvent","Playground","DataStates","render","StateExample","label","children","variant"],"mappings":";AAKA,SAAQA,oBAAoB,QAAO,kCAAkC;AACrE,SAAQC,IAAI,QAAO,+BAA+B;AAGlD,SAAQC,qBAAqB,QAAO,qCAAqC;AACzE,SAAQC,UAAU,QAAO,mBAAmB;AAG5C,MAAMC,YAAY;AAClB,MAAMC,eAAeC,KAAKC,KAAK,CAACH;AAEhC,sFAAsF;AACtF,MAAMI,YAAuB,CAACC,sBAC5B,KAACT;QAAqBU,KAAKN;kBACzB,cAAA,KAACO;YAAIC,WAAU;sBACb,cAAA,KAACH;;;AAKP,SAASI,UAAUC,YAA6C,CAAC,CAAC;IAChE,OAAO;QACLC,WAAW;QACXC,SAAS;QACTC,YAAY;QACZC,MAAM;YAACC,OAAO,EAAE;YAAEC,YAAY,EAAE;QAAA;QAChCC,OAAO;QACPC,SAAS,IAAMC;QACf,GAAGT,SAAS;IACd;AACF;AAEA,IAAIU,MAAM;AACV,SAASC,UACPC,OAA+B,EAC/BC,QAAuB,EACvBC,MAAc,EACdC,KAAa,EACbC,YAAoB,EACpBC,UAAkB;IAElBP,OAAO;IACP,OAAO;QACLQ,IAAI,CAAC,IAAI,EAAEC,OAAOT,KAAKU,QAAQ,CAAC,GAAG,MAAM;QACzCC,WAAW,CAAC,IAAI,EAAEX,KAAK;QACvBY,QAAQ;QACRC,cAAc;QACdV;QACAC;QACAC;QACAS,aAAa,CAAC,SAAS,EAAEL,OAAOT,KAAKU,QAAQ,CAAC,GAAG,MAAM;QACvDK,eAAe;QACfb;QACAc,eAAeV;QACfW,aAAa,IAAInC,KAAKD,eAAe0B,aAAa,QAAQW,WAAW;QACrEC,cAAc,IAAIrC,KAAKD,eAAe0B,aAAa,QAAQW,WAAW;QACtEE,YAAY,IAAItC,KAAKD,eAAe0B,aAAa,QAAQW,WAAW;IACtE;AACF;AAEA,MAAMG,gBAAgB;IACpBpB,UAAU,YAAY,UAAU,eAAe,QAAQ,GAAG;IAC1DA,UAAU,UAAU,UAAU,eAAe,QAAQ,GAAG;IACxDA,UAAU,UAAU,SAAS,cAAc,gBAAgB,GAAG;IAC9DA,UAAU,aAAa,UAAU,eAAe,iBAAiB,GAAG;IACpEA,UAAU,UAAU,UAAU,eAAe,QAAQ,GAAG;CACzD,CAACqB,GAAG,CAAC5C;AAEN,MAAM6C,gBAA+C;IACnDC,SAAS;QACP;YAACC,OAAO;YAAeC,OAAO;QAAC;QAC/B;YAACD,OAAO;YAAcC,OAAO;QAAC;QAC9B;YAACD,OAAO;YAAeC,OAAO;QAAC;KAChC;IACDC,QAAQ;QACN;YAACF,OAAO;YAAQC,OAAO;QAAC;QACxB;YAACD,OAAO;YAAgBC,OAAO;QAAC;QAChC;YAACD,OAAO;YAAiBC,OAAO;QAAC;KAClC;AACH;AAEA,MAAME,OAAO;IACXC,OAAO;IACPC,WAAWnD;IACXoD,YAAY;QAACC,QAAQ;IAAQ;IAC7BC,YAAY;QAACjD;KAAU;IACvBkD,MAAM;QACJC,eAAe;QACfR,QAAQN;QACRe,OAAO/C;QACPgD,QAAQd;QACRe,SAAS,CAAC;QACVC,iBAAiB,IAAMxC;QACvByC,aAAa;QACbC,oBAAoB;QACpBC,YAAY,IAAM3C;QAClB4C,iBAAiB;QACjBC,eAAe,IAAM7C;IACvB;AACF;AAEA,eAAe6B,KAAK;AAGpB,OAAO,MAAMiB,aAAoB,CAAC,EAAE;AAEpC,OAAO,MAAMC,aAAoB;IAC/BC,QAAQ,CAACb,qBACP,MAAC/C;YAAIC,WAAU;;8BACb,KAAC4D;oBAAaC,OAAM;8BAClB,cAAA,KAACtE;wBAAY,GAAGuD,IAAI;wBAAEP,QAAQ,EAAE;wBAAES,OAAO/C,UAAU;4BAACE,WAAW;4BAAMG,MAAMK;wBAAS;;;8BAEtF,KAACiD;oBAAaC,OAAM;8BAClB,cAAA,KAACtE;wBAAY,GAAGuD,IAAI;wBAAEP,QAAQ,EAAE;wBAAEU,QAAQ;4BAACb,SAAS,EAAE;4BAAEG,QAAQ,EAAE;wBAAA;;;8BAEpE,KAACqB;oBAAaC,OAAM;8BAClB,cAAA,KAACtE;wBAAY,GAAGuD,IAAI;wBAAEP,QAAQ,EAAE;wBAAEW,SAAS;4BAACpC,SAAS;gCAAC;6BAAS;wBAAA;;;8BAEjE,KAAC8C;oBAAaC,OAAM;8BAClB,cAAA,KAACtE;wBAAY,GAAGuD,IAAI;wBAAEP,QAAQ,EAAE;wBAAES,OAAO/C,UAAU;4BAACG,SAAS;4BAAME,MAAMK;wBAAS;;;;;AAI1F,EAAE;AAEF,SAASiD,aAAa,EAACC,KAAK,EAAEC,QAAQ,EAAuC;IAC3E,qBACE,MAAC/D;QAAIC,WAAU;;0BACb,KAACX;gBAAK0E,SAAQ;gBAAQ/D,WAAU;0BAC7B6D;;0BAEH,KAAC9D;gBAAIC,WAAU;0BACZ8D;;;;AAIT"}
1
+ {"version":3,"sources":["../../src/components/events-list.stories.tsx"],"sourcesContent":["import type {\n TriggerEventFacetsResponseDto,\n TriggerEventListItemDto,\n TriggerEventOutcomeDto,\n} from '@shipfox/api-triggers-dto';\nimport {RelativeTimeProvider} from '@shipfox/react-ui/relative-time';\nimport {Code} from '@shipfox/react-ui/typography';\nimport type {Decorator, Meta, StoryObj} from '@storybook/react';\nimport type {ReactNode} from 'react';\nimport {toTriggerEventSummary} from '#hooks/api/trigger-event-mapper.js';\nimport {EventsList} from './events-list.js';\nimport type {TriggerEventsListQuery} from './types.js';\n\nconst STORY_NOW = '2026-06-25T20:00:00.000Z';\nconst STORY_NOW_MS = Date.parse(STORY_NOW);\n\n// Typed so meta's inferred type stays nameable (TS2883) under the package's tsconfig.\nconst withWidth: Decorator = (Story) => (\n <RelativeTimeProvider now={STORY_NOW}>\n <div className=\"w-[900px]\">\n <Story />\n </div>\n </RelativeTimeProvider>\n);\n\nfunction makeQuery(overrides: Partial<TriggerEventsListQuery> = {}): TriggerEventsListQuery {\n return {\n isPending: false,\n isError: false,\n isFetching: false,\n data: {pages: [], pageParams: []},\n error: null,\n refetch: () => undefined,\n ...overrides,\n };\n}\n\nlet seq = 0;\nfunction makeEvent(\n outcome: TriggerEventOutcomeDto,\n provider: string | null,\n source: string,\n event: string,\n matchedCount: number,\n minutesAgo: number,\n): TriggerEventListItemDto {\n seq += 1;\n return {\n id: `evt-${String(seq).padStart(8, '0')}`,\n event_ref: `ref-${seq}`,\n origin: 'integration',\n workspace_id: 'ws-demo',\n provider,\n source,\n event,\n replay_of_event_id: null,\n delivery_id: `delivery-${String(seq).padStart(6, '0')}`,\n connection_id: 'conn-demo',\n outcome,\n matched_count: matchedCount,\n received_at: new Date(STORY_NOW_MS - minutesAgo * 60_000).toISOString(),\n processed_at: new Date(STORY_NOW_MS - minutesAgo * 60_000).toISOString(),\n created_at: new Date(STORY_NOW_MS - minutesAgo * 60_000).toISOString(),\n };\n}\n\nconst SAMPLE_EVENTS = [\n makeEvent('received', 'github', 'github_acme', 'push', 0, 0),\n makeEvent('routed', 'github', 'github_acme', 'push', 2, 3),\n makeEvent('routed', 'gitea', 'gitea_acme', 'pull_request', 1, 12),\n makeEvent('discarded', 'github', 'github_acme', 'issue_comment', 0, 38),\n makeEvent('failed', 'gitlab', 'gitlab_acme', 'push', 1, 95),\n].map(toTriggerEventSummary);\n\nconst SAMPLE_FACETS: TriggerEventFacetsResponseDto = {\n sources: [\n {value: 'github_acme', count: 3},\n {value: 'gitea_acme', count: 1},\n {value: 'gitlab_acme', count: 1},\n ],\n events: [\n {value: 'push', count: 3},\n {value: 'pull_request', count: 1},\n {value: 'issue_comment', count: 1},\n ],\n origins: [{value: 'integration', count: 5}],\n};\n\nconst meta = {\n title: 'Triggers/EventsList',\n component: EventsList,\n parameters: {layout: 'padded'},\n decorators: [withWidth],\n args: {\n workspaceSlug: 'acme',\n events: SAMPLE_EVENTS,\n query: makeQuery(),\n facets: SAMPLE_FACETS,\n filters: {},\n onFiltersChange: () => undefined,\n hasNextPage: false,\n isFetchingNextPage: false,\n onLoadMore: () => undefined,\n selectedEventId: 'evt-00000002',\n onSelectEvent: () => undefined,\n },\n} satisfies Meta<typeof EventsList>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Playground: Story = {};\n\nexport const DataStates: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-32\">\n <StateExample label=\"Loading\">\n <EventsList {...args} events={[]} query={makeQuery({isPending: true, data: undefined})} />\n </StateExample>\n <StateExample label=\"Empty\">\n <EventsList {...args} events={[]} facets={{sources: [], events: []}} />\n </StateExample>\n <StateExample label=\"No matches\">\n <EventsList {...args} events={[]} filters={{outcome: ['failed']}} />\n </StateExample>\n <StateExample label=\"Load error\">\n <EventsList {...args} events={[]} query={makeQuery({isError: true, data: undefined})} />\n </StateExample>\n </div>\n ),\n};\n\nfunction StateExample({label, children}: {label: string; children: ReactNode}) {\n return (\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {label}\n </Code>\n <div className=\"min-h-280 rounded-8 border border-border-neutral-base bg-background-neutral-base p-12\">\n {children}\n </div>\n </div>\n );\n}\n"],"names":["RelativeTimeProvider","Code","toTriggerEventSummary","EventsList","STORY_NOW","STORY_NOW_MS","Date","parse","withWidth","Story","now","div","className","makeQuery","overrides","isPending","isError","isFetching","data","pages","pageParams","error","refetch","undefined","seq","makeEvent","outcome","provider","source","event","matchedCount","minutesAgo","id","String","padStart","event_ref","origin","workspace_id","replay_of_event_id","delivery_id","connection_id","matched_count","received_at","toISOString","processed_at","created_at","SAMPLE_EVENTS","map","SAMPLE_FACETS","sources","value","count","events","origins","meta","title","component","parameters","layout","decorators","args","workspaceSlug","query","facets","filters","onFiltersChange","hasNextPage","isFetchingNextPage","onLoadMore","selectedEventId","onSelectEvent","Playground","DataStates","render","StateExample","label","children","variant"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-event-detail.stories.d.ts","sourceRoot":"","sources":["../../src/components/trigger-event-detail.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,SAAS,EAAQ,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAYhE,OAAO,EAAC,sBAAsB,EAAC,MAAM,2BAA2B,CAAC;AAsIjE,QAAA,MAAM,IAAI;;;;QAIN,MAAM;QACN,KAAK;YACH,KAAK;gBACH,KAAK;oBAAG,KAAK;;gBACb,IAAI;oBAAG,KAAK;;;;;;;;;;;;CAW2B,CAAC;eAEjC,IAAI;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAOnC,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC"}
1
+ {"version":3,"file":"trigger-event-detail.stories.d.ts","sourceRoot":"","sources":["../../src/components/trigger-event-detail.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,SAAS,EAAQ,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAYhE,OAAO,EAAC,sBAAsB,EAAC,MAAM,2BAA2B,CAAC;AAwIjE,QAAA,MAAM,IAAI;;;;QAIN,MAAM;QACN,KAAK;YACH,KAAK;gBACH,KAAK;oBAAG,KAAK;;gBACb,IAAI;oBAAG,KAAK;;;;;;;;;;;;CAW2B,CAAC;eAEjC,IAAI;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAOnC,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC"}
@@ -92,6 +92,7 @@ const routedEventDto = {
92
92
  provider: 'github',
93
93
  source: 'github_acme',
94
94
  event: 'push',
95
+ replay_of_event_id: null,
95
96
  delivery_id: 'delivery-179',
96
97
  connection_id: '55555555-5555-4555-8555-555555555555',
97
98
  connection_name: 'ShipfoxHQ Production',
@@ -147,7 +148,8 @@ const routedEventDto = {
147
148
  reason: null,
148
149
  created_at: '2026-06-25T19:30:02.000Z'
149
150
  }
150
- ]
151
+ ],
152
+ replays: []
151
153
  };
152
154
  const discardedEventDto = {
153
155
  ...routedEventDto,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/trigger-event-detail.stories.tsx"],"sourcesContent":["import {argosScreenshot} from '@argos-ci/storybook/vitest';\nimport type {TriggerEventDetailResponseDto} from '@shipfox/api-triggers-dto';\nimport {projectsQueryKeys} from '@shipfox/client-projects';\nimport {RelativeTimeProvider} from '@shipfox/react-ui/relative-time';\nimport type {Decorator, Meta, StoryObj} from '@storybook/react';\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query';\nimport {\n createMemoryHistory,\n createRootRoute,\n createRoute,\n createRouter,\n Outlet,\n RouterProvider,\n} from '@tanstack/react-router';\nimport {screen} from 'storybook/test';\nimport {toTriggerEventDetail} from '#hooks/api/trigger-event-mapper.js';\nimport {TriggerEventDetailView} from './trigger-event-detail.js';\n\nconst WORKSPACE_ID = '11111111-1111-4111-8111-111111111111';\nconst PROJECT_ID = '22222222-2222-4222-8222-222222222222';\nconst RUN_ID = '33333333-3333-4333-8333-333333333333';\n\nfunction minutesAgo(minutes: number): string {\n return new Date(Date.now() - minutes * 60_000).toISOString();\n}\n\nfunction createStoryQueryClient() {\n const queryClient = new QueryClient({\n defaultOptions: {queries: {staleTime: Number.POSITIVE_INFINITY, retry: false}},\n });\n queryClient.setQueryData(projectsQueryKeys.list(WORKSPACE_ID), {\n pages: [{projects: [{id: PROJECT_ID, slug: 'checkout-api'}], nextCursor: null}],\n pageParams: [undefined],\n });\n return queryClient;\n}\n\nconst withRouter: Decorator = (Story) => {\n const queryClient = createStoryQueryClient();\n\n function StoryRoute() {\n return (\n <QueryClientProvider client={queryClient}>\n <RelativeTimeProvider>\n <div className=\"min-h-screen bg-background-subtle-base p-24 [--app-content-h:calc(100dvh_-_96px)]\">\n <div className=\"@container ml-auto w-[860px]\">\n <Story />\n </div>\n </div>\n </RelativeTimeProvider>\n </QueryClientProvider>\n );\n }\n\n const rootRoute = createRootRoute({component: Outlet});\n const storyRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: '/',\n component: StoryRoute,\n });\n const runRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: '/w/$workspaceSlug/p/$projectSlug/runs/$workflowRunId',\n component: StoryRoute,\n });\n const router = createRouter({\n history: createMemoryHistory({initialEntries: ['/']}),\n routeTree: rootRoute.addChildren([storyRoute, runRoute]),\n });\n\n return <RouterProvider router={router} />;\n};\n\nconst routedEventDto: TriggerEventDetailResponseDto = {\n id: '44444444-4444-4444-8444-444444444444',\n event_ref: 'github:delivery-179:push',\n origin: 'integration',\n workspace_id: WORKSPACE_ID,\n provider: 'github',\n source: 'github_acme',\n event: 'push',\n delivery_id: 'delivery-179',\n connection_id: '55555555-5555-4555-8555-555555555555',\n connection_name: 'ShipfoxHQ Production',\n outcome: 'routed',\n matched_count: 2,\n payload: {\n ref: 'refs/heads/main',\n repository: {full_name: 'ShipfoxHQ/platform'},\n head_commit: {id: '9f1a0f2c7a1b', message: 'Deploy event detail'},\n },\n received_at: minutesAgo(15),\n processed_at: '2026-06-25T19:30:02.000Z',\n created_at: '2026-06-25T19:30:00.000Z',\n decisions: [\n {\n id: '66666666-6666-4666-8666-666666666666',\n received_event_id: '44444444-4444-4444-8444-444444444444',\n subscription_kind: 'trigger',\n subscription_id: '77777777-7777-4777-8777-777777777777',\n subscription_name: 'Deploy production',\n workflow_definition_id: '88888888-8888-4888-8888-888888888888',\n project_id: PROJECT_ID,\n workflow_run_id: null,\n job_id: null,\n matcher_kind: null,\n matcher_ordinal: null,\n decision: 'triggered',\n run_id: RUN_ID,\n run_name: 'deploy-web #184',\n reason: null,\n created_at: '2026-06-25T19:30:02.000Z',\n },\n {\n id: '99999999-9999-4999-8999-999999999999',\n received_event_id: '44444444-4444-4444-8444-444444444444',\n subscription_kind: 'trigger',\n subscription_id: 'aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa',\n subscription_name: 'Mirror staging',\n workflow_definition_id: 'bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb',\n project_id: PROJECT_ID,\n workflow_run_id: null,\n job_id: null,\n matcher_kind: null,\n matcher_ordinal: null,\n decision: 'triggered',\n run_id: 'cccccccc-cccc-4ccc-8ccc-cccccccccccc',\n run_name: 'mirror-staging #51',\n reason: null,\n created_at: '2026-06-25T19:30:02.000Z',\n },\n ],\n};\n\nconst discardedEventDto: TriggerEventDetailResponseDto = {\n ...routedEventDto,\n id: 'dddddddd-dddd-4ddd-8ddd-dddddddddddd',\n event_ref: 'github:delivery-180:issue_comment',\n event: 'issue_comment',\n delivery_id: 'delivery-180',\n outcome: 'discarded',\n matched_count: 0,\n payload: {action: 'created', comment: {body: '/preview'}},\n processed_at: '2026-06-25T19:33:01.000Z',\n decisions: [],\n};\n\nconst routedEvent = toTriggerEventDetail(routedEventDto);\nconst discardedEvent = toTriggerEventDetail(discardedEventDto);\n\nconst meta = {\n title: 'Triggers/EventDetail',\n component: TriggerEventDetailView,\n parameters: {\n layout: 'fullscreen',\n argos: {\n modes: {\n light: {theme: 'light'},\n dark: {theme: 'dark'},\n },\n },\n },\n decorators: [withRouter],\n args: {\n workspaceId: WORKSPACE_ID,\n workspaceSlug: 'acme',\n event: routedEvent,\n onBack: () => undefined,\n },\n} satisfies Meta<typeof TriggerEventDetailView>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nasync function captureDetail(ctx: Parameters<NonNullable<Story['play']>>[0], name: string) {\n await screen.findByRole('complementary', {name: 'Event details'});\n await argosScreenshot(ctx, name);\n}\n\nexport const Playground: Story = {\n play: async (ctx) => {\n await captureDetail(ctx, 'Trigger Event Detail Playground');\n },\n};\n\nexport const Discarded: Story = {\n args: {event: discardedEvent},\n play: async (ctx) => {\n await captureDetail(ctx, 'Trigger Event Detail Discarded');\n },\n};\n"],"names":["argosScreenshot","projectsQueryKeys","RelativeTimeProvider","QueryClient","QueryClientProvider","createMemoryHistory","createRootRoute","createRoute","createRouter","Outlet","RouterProvider","screen","toTriggerEventDetail","TriggerEventDetailView","WORKSPACE_ID","PROJECT_ID","RUN_ID","minutesAgo","minutes","Date","now","toISOString","createStoryQueryClient","queryClient","defaultOptions","queries","staleTime","Number","POSITIVE_INFINITY","retry","setQueryData","list","pages","projects","id","slug","nextCursor","pageParams","undefined","withRouter","Story","StoryRoute","client","div","className","rootRoute","component","storyRoute","getParentRoute","path","runRoute","router","history","initialEntries","routeTree","addChildren","routedEventDto","event_ref","origin","workspace_id","provider","source","event","delivery_id","connection_id","connection_name","outcome","matched_count","payload","ref","repository","full_name","head_commit","message","received_at","processed_at","created_at","decisions","received_event_id","subscription_kind","subscription_id","subscription_name","workflow_definition_id","project_id","workflow_run_id","job_id","matcher_kind","matcher_ordinal","decision","run_id","run_name","reason","discardedEventDto","action","comment","body","routedEvent","discardedEvent","meta","title","parameters","layout","argos","modes","light","theme","dark","decorators","args","workspaceId","workspaceSlug","onBack","captureDetail","ctx","name","findByRole","Playground","play","Discarded"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/components/trigger-event-detail.stories.tsx"],"sourcesContent":["import {argosScreenshot} from '@argos-ci/storybook/vitest';\nimport type {TriggerEventDetailResponseDto} from '@shipfox/api-triggers-dto';\nimport {projectsQueryKeys} from '@shipfox/client-projects';\nimport {RelativeTimeProvider} from '@shipfox/react-ui/relative-time';\nimport type {Decorator, Meta, StoryObj} from '@storybook/react';\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query';\nimport {\n createMemoryHistory,\n createRootRoute,\n createRoute,\n createRouter,\n Outlet,\n RouterProvider,\n} from '@tanstack/react-router';\nimport {screen} from 'storybook/test';\nimport {toTriggerEventDetail} from '#hooks/api/trigger-event-mapper.js';\nimport {TriggerEventDetailView} from './trigger-event-detail.js';\n\nconst WORKSPACE_ID = '11111111-1111-4111-8111-111111111111';\nconst PROJECT_ID = '22222222-2222-4222-8222-222222222222';\nconst RUN_ID = '33333333-3333-4333-8333-333333333333';\n\nfunction minutesAgo(minutes: number): string {\n return new Date(Date.now() - minutes * 60_000).toISOString();\n}\n\nfunction createStoryQueryClient() {\n const queryClient = new QueryClient({\n defaultOptions: {queries: {staleTime: Number.POSITIVE_INFINITY, retry: false}},\n });\n queryClient.setQueryData(projectsQueryKeys.list(WORKSPACE_ID), {\n pages: [{projects: [{id: PROJECT_ID, slug: 'checkout-api'}], nextCursor: null}],\n pageParams: [undefined],\n });\n return queryClient;\n}\n\nconst withRouter: Decorator = (Story) => {\n const queryClient = createStoryQueryClient();\n\n function StoryRoute() {\n return (\n <QueryClientProvider client={queryClient}>\n <RelativeTimeProvider>\n <div className=\"min-h-screen bg-background-subtle-base p-24 [--app-content-h:calc(100dvh_-_96px)]\">\n <div className=\"@container ml-auto w-[860px]\">\n <Story />\n </div>\n </div>\n </RelativeTimeProvider>\n </QueryClientProvider>\n );\n }\n\n const rootRoute = createRootRoute({component: Outlet});\n const storyRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: '/',\n component: StoryRoute,\n });\n const runRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: '/w/$workspaceSlug/p/$projectSlug/runs/$workflowRunId',\n component: StoryRoute,\n });\n const router = createRouter({\n history: createMemoryHistory({initialEntries: ['/']}),\n routeTree: rootRoute.addChildren([storyRoute, runRoute]),\n });\n\n return <RouterProvider router={router} />;\n};\n\nconst routedEventDto: TriggerEventDetailResponseDto = {\n id: '44444444-4444-4444-8444-444444444444',\n event_ref: 'github:delivery-179:push',\n origin: 'integration',\n workspace_id: WORKSPACE_ID,\n provider: 'github',\n source: 'github_acme',\n event: 'push',\n replay_of_event_id: null,\n delivery_id: 'delivery-179',\n connection_id: '55555555-5555-4555-8555-555555555555',\n connection_name: 'ShipfoxHQ Production',\n outcome: 'routed',\n matched_count: 2,\n payload: {\n ref: 'refs/heads/main',\n repository: {full_name: 'ShipfoxHQ/platform'},\n head_commit: {id: '9f1a0f2c7a1b', message: 'Deploy event detail'},\n },\n received_at: minutesAgo(15),\n processed_at: '2026-06-25T19:30:02.000Z',\n created_at: '2026-06-25T19:30:00.000Z',\n decisions: [\n {\n id: '66666666-6666-4666-8666-666666666666',\n received_event_id: '44444444-4444-4444-8444-444444444444',\n subscription_kind: 'trigger',\n subscription_id: '77777777-7777-4777-8777-777777777777',\n subscription_name: 'Deploy production',\n workflow_definition_id: '88888888-8888-4888-8888-888888888888',\n project_id: PROJECT_ID,\n workflow_run_id: null,\n job_id: null,\n matcher_kind: null,\n matcher_ordinal: null,\n decision: 'triggered',\n run_id: RUN_ID,\n run_name: 'deploy-web #184',\n reason: null,\n created_at: '2026-06-25T19:30:02.000Z',\n },\n {\n id: '99999999-9999-4999-8999-999999999999',\n received_event_id: '44444444-4444-4444-8444-444444444444',\n subscription_kind: 'trigger',\n subscription_id: 'aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa',\n subscription_name: 'Mirror staging',\n workflow_definition_id: 'bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb',\n project_id: PROJECT_ID,\n workflow_run_id: null,\n job_id: null,\n matcher_kind: null,\n matcher_ordinal: null,\n decision: 'triggered',\n run_id: 'cccccccc-cccc-4ccc-8ccc-cccccccccccc',\n run_name: 'mirror-staging #51',\n reason: null,\n created_at: '2026-06-25T19:30:02.000Z',\n },\n ],\n replays: [],\n};\n\nconst discardedEventDto: TriggerEventDetailResponseDto = {\n ...routedEventDto,\n id: 'dddddddd-dddd-4ddd-8ddd-dddddddddddd',\n event_ref: 'github:delivery-180:issue_comment',\n event: 'issue_comment',\n delivery_id: 'delivery-180',\n outcome: 'discarded',\n matched_count: 0,\n payload: {action: 'created', comment: {body: '/preview'}},\n processed_at: '2026-06-25T19:33:01.000Z',\n decisions: [],\n};\n\nconst routedEvent = toTriggerEventDetail(routedEventDto);\nconst discardedEvent = toTriggerEventDetail(discardedEventDto);\n\nconst meta = {\n title: 'Triggers/EventDetail',\n component: TriggerEventDetailView,\n parameters: {\n layout: 'fullscreen',\n argos: {\n modes: {\n light: {theme: 'light'},\n dark: {theme: 'dark'},\n },\n },\n },\n decorators: [withRouter],\n args: {\n workspaceId: WORKSPACE_ID,\n workspaceSlug: 'acme',\n event: routedEvent,\n onBack: () => undefined,\n },\n} satisfies Meta<typeof TriggerEventDetailView>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nasync function captureDetail(ctx: Parameters<NonNullable<Story['play']>>[0], name: string) {\n await screen.findByRole('complementary', {name: 'Event details'});\n await argosScreenshot(ctx, name);\n}\n\nexport const Playground: Story = {\n play: async (ctx) => {\n await captureDetail(ctx, 'Trigger Event Detail Playground');\n },\n};\n\nexport const Discarded: Story = {\n args: {event: discardedEvent},\n play: async (ctx) => {\n await captureDetail(ctx, 'Trigger Event Detail Discarded');\n },\n};\n"],"names":["argosScreenshot","projectsQueryKeys","RelativeTimeProvider","QueryClient","QueryClientProvider","createMemoryHistory","createRootRoute","createRoute","createRouter","Outlet","RouterProvider","screen","toTriggerEventDetail","TriggerEventDetailView","WORKSPACE_ID","PROJECT_ID","RUN_ID","minutesAgo","minutes","Date","now","toISOString","createStoryQueryClient","queryClient","defaultOptions","queries","staleTime","Number","POSITIVE_INFINITY","retry","setQueryData","list","pages","projects","id","slug","nextCursor","pageParams","undefined","withRouter","Story","StoryRoute","client","div","className","rootRoute","component","storyRoute","getParentRoute","path","runRoute","router","history","initialEntries","routeTree","addChildren","routedEventDto","event_ref","origin","workspace_id","provider","source","event","replay_of_event_id","delivery_id","connection_id","connection_name","outcome","matched_count","payload","ref","repository","full_name","head_commit","message","received_at","processed_at","created_at","decisions","received_event_id","subscription_kind","subscription_id","subscription_name","workflow_definition_id","project_id","workflow_run_id","job_id","matcher_kind","matcher_ordinal","decision","run_id","run_name","reason","replays","discardedEventDto","action","comment","body","routedEvent","discardedEvent","meta","title","parameters","layout","argos","modes","light","theme","dark","decorators","args","workspaceId","workspaceSlug","onBack","captureDetail","ctx","name","findByRole","Playground","play","Discarded"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type TriggerEventOrigin = 'integration' | 'manual' | 'cron';
1
+ export type TriggerEventOrigin = 'integration' | 'manual' | 'cron' | 'dev';
2
2
  export type TriggerEventOutcome = 'received' | 'routed' | 'discarded' | 'failed' | 'errored';
3
3
  export declare const triggerEventOutcomes: readonly ["received", "routed", "discarded", "failed", "errored"];
4
4
  export type TriggerEventDecisionOutcome = 'triggered' | 'filter-error' | 'dispatch-error';
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-event.d.ts","sourceRoot":"","sources":["../../src/core/trigger-event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trigger-event.d.ts","sourceRoot":"","sources":["../../src/core/trigger-event.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/trigger-event.ts"],"sourcesContent":["export type TriggerEventOrigin = 'integration' | 'manual' | 'cron';\n\nexport type TriggerEventOutcome = 'received' | 'routed' | 'discarded' | 'failed' | 'errored';\n\nexport const triggerEventOutcomes = [\n 'received',\n 'routed',\n 'discarded',\n 'failed',\n 'errored',\n] as const satisfies readonly TriggerEventOutcome[];\n\nexport type TriggerEventDecisionOutcome = 'triggered' | 'filter-error' | 'dispatch-error';\n\nexport interface TriggerEventSource {\n provider: string | null;\n source: string;\n}\n\nexport interface TriggerEventSummary extends TriggerEventSource {\n id: string;\n eventRef: string;\n origin: TriggerEventOrigin;\n workspaceId: string;\n event: string;\n deliveryId: string | null;\n connectionId: string | null;\n outcome: TriggerEventOutcome;\n matchedCount: number;\n receivedAt: string;\n processedAt: string | null;\n createdAt: string;\n}\n\nexport interface TriggerEventMatchedWorkflowResult {\n id: string;\n subscriptionName: string;\n decision: TriggerEventDecisionOutcome;\n projectId: string | null;\n runId: string | null;\n runName: string | null;\n reason: string | null;\n}\n\nexport interface TriggerEventDetail extends TriggerEventSummary {\n connectionName: string | null;\n payload: Record<string, unknown> | null;\n decisions: TriggerEventMatchedWorkflowResult[];\n}\n\nexport interface TriggerEventFacetItem {\n value: string;\n count: number;\n}\n\nexport interface TriggerEventFacets {\n sources: TriggerEventFacetItem[];\n events: TriggerEventFacetItem[];\n}\n\nexport interface TriggerEventListPage {\n events: TriggerEventSummary[];\n nextCursor: string | null;\n}\n\nexport interface TriggerEventFilters {\n source?: string[] | undefined;\n event?: string[] | undefined;\n outcome?: TriggerEventOutcome[] | undefined;\n from?: string | undefined;\n to?: string | undefined;\n}\n\nexport function normalizeTriggerEventFilterValues(\n values: readonly string[] | undefined,\n): string[] | null {\n return values && values.length > 0 ? [...new Set(values)].sort() : null;\n}\n\nexport function normalizeTriggerEventFilters(filters: TriggerEventFilters) {\n return {\n source: normalizeTriggerEventFilterValues(filters.source),\n event: normalizeTriggerEventFilterValues(filters.event),\n outcome: normalizeTriggerEventFilterValues(filters.outcome),\n from: filters.from ?? null,\n to: filters.to ?? null,\n };\n}\n\nexport function hasTriggerEventFilters(filters: TriggerEventFilters): boolean {\n const normalized = normalizeTriggerEventFilters(filters);\n return Boolean(\n normalized.source || normalized.event || normalized.outcome || normalized.from || normalized.to,\n );\n}\n\nexport type TriggerEventResultKind = 'triggered' | 'no-match' | 'failed' | 'evaluating';\n\nexport interface TriggerEventResult {\n kind: TriggerEventResultKind;\n matchedWorkflowCount: number;\n isFailure: boolean;\n}\n\nexport function getTriggerEventResult(\n event: Pick<TriggerEventSummary, 'outcome' | 'matchedCount'>,\n): TriggerEventResult {\n switch (event.outcome) {\n case 'routed':\n return {kind: 'triggered', matchedWorkflowCount: event.matchedCount, isFailure: false};\n case 'discarded':\n return {kind: 'no-match', matchedWorkflowCount: 0, isFailure: false};\n case 'failed':\n case 'errored':\n return {kind: 'failed', matchedWorkflowCount: event.matchedCount, isFailure: true};\n case 'received':\n return {kind: 'evaluating', matchedWorkflowCount: 0, isFailure: false};\n }\n}\n\nexport const triggerEventResultFilterOutcomes = {\n triggered: ['routed'],\n 'no-match': ['discarded'],\n failed: ['failed', 'errored'],\n evaluating: ['received'],\n} as const satisfies Record<TriggerEventResultKind, readonly TriggerEventOutcome[]>;\n"],"names":["triggerEventOutcomes","normalizeTriggerEventFilterValues","values","length","Set","sort","normalizeTriggerEventFilters","filters","source","event","outcome","from","to","hasTriggerEventFilters","normalized","Boolean","getTriggerEventResult","kind","matchedWorkflowCount","matchedCount","isFailure","triggerEventResultFilterOutcomes","triggered","failed","evaluating"],"mappings":"AAIA,OAAO,MAAMA,uBAAuB;IAClC;IACA;IACA;IACA;IACA;CACD,CAAmD;AA+DpD,OAAO,SAASC,kCACdC,MAAqC;IAErC,OAAOA,UAAUA,OAAOC,MAAM,GAAG,IAAI;WAAI,IAAIC,IAAIF;KAAQ,CAACG,IAAI,KAAK;AACrE;AAEA,OAAO,SAASC,6BAA6BC,OAA4B;IACvE,OAAO;QACLC,QAAQP,kCAAkCM,QAAQC,MAAM;QACxDC,OAAOR,kCAAkCM,QAAQE,KAAK;QACtDC,SAAST,kCAAkCM,QAAQG,OAAO;QAC1DC,MAAMJ,QAAQI,IAAI,IAAI;QACtBC,IAAIL,QAAQK,EAAE,IAAI;IACpB;AACF;AAEA,OAAO,SAASC,uBAAuBN,OAA4B;IACjE,MAAMO,aAAaR,6BAA6BC;IAChD,OAAOQ,QACLD,WAAWN,MAAM,IAAIM,WAAWL,KAAK,IAAIK,WAAWJ,OAAO,IAAII,WAAWH,IAAI,IAAIG,WAAWF,EAAE;AAEnG;AAUA,OAAO,SAASI,sBACdP,KAA4D;IAE5D,OAAQA,MAAMC,OAAO;QACnB,KAAK;YACH,OAAO;gBAACO,MAAM;gBAAaC,sBAAsBT,MAAMU,YAAY;gBAAEC,WAAW;YAAK;QACvF,KAAK;YACH,OAAO;gBAACH,MAAM;gBAAYC,sBAAsB;gBAAGE,WAAW;YAAK;QACrE,KAAK;QACL,KAAK;YACH,OAAO;gBAACH,MAAM;gBAAUC,sBAAsBT,MAAMU,YAAY;gBAAEC,WAAW;YAAI;QACnF,KAAK;YACH,OAAO;gBAACH,MAAM;gBAAcC,sBAAsB;gBAAGE,WAAW;YAAK;IACzE;AACF;AAEA,OAAO,MAAMC,mCAAmC;IAC9CC,WAAW;QAAC;KAAS;IACrB,YAAY;QAAC;KAAY;IACzBC,QAAQ;QAAC;QAAU;KAAU;IAC7BC,YAAY;QAAC;KAAW;AAC1B,EAAoF"}
1
+ {"version":3,"sources":["../../src/core/trigger-event.ts"],"sourcesContent":["export type TriggerEventOrigin = 'integration' | 'manual' | 'cron' | 'dev';\n\nexport type TriggerEventOutcome = 'received' | 'routed' | 'discarded' | 'failed' | 'errored';\n\nexport const triggerEventOutcomes = [\n 'received',\n 'routed',\n 'discarded',\n 'failed',\n 'errored',\n] as const satisfies readonly TriggerEventOutcome[];\n\nexport type TriggerEventDecisionOutcome = 'triggered' | 'filter-error' | 'dispatch-error';\n\nexport interface TriggerEventSource {\n provider: string | null;\n source: string;\n}\n\nexport interface TriggerEventSummary extends TriggerEventSource {\n id: string;\n eventRef: string;\n origin: TriggerEventOrigin;\n workspaceId: string;\n event: string;\n deliveryId: string | null;\n connectionId: string | null;\n outcome: TriggerEventOutcome;\n matchedCount: number;\n receivedAt: string;\n processedAt: string | null;\n createdAt: string;\n}\n\nexport interface TriggerEventMatchedWorkflowResult {\n id: string;\n subscriptionName: string;\n decision: TriggerEventDecisionOutcome;\n projectId: string | null;\n runId: string | null;\n runName: string | null;\n reason: string | null;\n}\n\nexport interface TriggerEventDetail extends TriggerEventSummary {\n connectionName: string | null;\n payload: Record<string, unknown> | null;\n decisions: TriggerEventMatchedWorkflowResult[];\n}\n\nexport interface TriggerEventFacetItem {\n value: string;\n count: number;\n}\n\nexport interface TriggerEventFacets {\n sources: TriggerEventFacetItem[];\n events: TriggerEventFacetItem[];\n}\n\nexport interface TriggerEventListPage {\n events: TriggerEventSummary[];\n nextCursor: string | null;\n}\n\nexport interface TriggerEventFilters {\n source?: string[] | undefined;\n event?: string[] | undefined;\n outcome?: TriggerEventOutcome[] | undefined;\n from?: string | undefined;\n to?: string | undefined;\n}\n\nexport function normalizeTriggerEventFilterValues(\n values: readonly string[] | undefined,\n): string[] | null {\n return values && values.length > 0 ? [...new Set(values)].sort() : null;\n}\n\nexport function normalizeTriggerEventFilters(filters: TriggerEventFilters) {\n return {\n source: normalizeTriggerEventFilterValues(filters.source),\n event: normalizeTriggerEventFilterValues(filters.event),\n outcome: normalizeTriggerEventFilterValues(filters.outcome),\n from: filters.from ?? null,\n to: filters.to ?? null,\n };\n}\n\nexport function hasTriggerEventFilters(filters: TriggerEventFilters): boolean {\n const normalized = normalizeTriggerEventFilters(filters);\n return Boolean(\n normalized.source || normalized.event || normalized.outcome || normalized.from || normalized.to,\n );\n}\n\nexport type TriggerEventResultKind = 'triggered' | 'no-match' | 'failed' | 'evaluating';\n\nexport interface TriggerEventResult {\n kind: TriggerEventResultKind;\n matchedWorkflowCount: number;\n isFailure: boolean;\n}\n\nexport function getTriggerEventResult(\n event: Pick<TriggerEventSummary, 'outcome' | 'matchedCount'>,\n): TriggerEventResult {\n switch (event.outcome) {\n case 'routed':\n return {kind: 'triggered', matchedWorkflowCount: event.matchedCount, isFailure: false};\n case 'discarded':\n return {kind: 'no-match', matchedWorkflowCount: 0, isFailure: false};\n case 'failed':\n case 'errored':\n return {kind: 'failed', matchedWorkflowCount: event.matchedCount, isFailure: true};\n case 'received':\n return {kind: 'evaluating', matchedWorkflowCount: 0, isFailure: false};\n }\n}\n\nexport const triggerEventResultFilterOutcomes = {\n triggered: ['routed'],\n 'no-match': ['discarded'],\n failed: ['failed', 'errored'],\n evaluating: ['received'],\n} as const satisfies Record<TriggerEventResultKind, readonly TriggerEventOutcome[]>;\n"],"names":["triggerEventOutcomes","normalizeTriggerEventFilterValues","values","length","Set","sort","normalizeTriggerEventFilters","filters","source","event","outcome","from","to","hasTriggerEventFilters","normalized","Boolean","getTriggerEventResult","kind","matchedWorkflowCount","matchedCount","isFailure","triggerEventResultFilterOutcomes","triggered","failed","evaluating"],"mappings":"AAIA,OAAO,MAAMA,uBAAuB;IAClC;IACA;IACA;IACA;IACA;CACD,CAAmD;AA+DpD,OAAO,SAASC,kCACdC,MAAqC;IAErC,OAAOA,UAAUA,OAAOC,MAAM,GAAG,IAAI;WAAI,IAAIC,IAAIF;KAAQ,CAACG,IAAI,KAAK;AACrE;AAEA,OAAO,SAASC,6BAA6BC,OAA4B;IACvE,OAAO;QACLC,QAAQP,kCAAkCM,QAAQC,MAAM;QACxDC,OAAOR,kCAAkCM,QAAQE,KAAK;QACtDC,SAAST,kCAAkCM,QAAQG,OAAO;QAC1DC,MAAMJ,QAAQI,IAAI,IAAI;QACtBC,IAAIL,QAAQK,EAAE,IAAI;IACpB;AACF;AAEA,OAAO,SAASC,uBAAuBN,OAA4B;IACjE,MAAMO,aAAaR,6BAA6BC;IAChD,OAAOQ,QACLD,WAAWN,MAAM,IAAIM,WAAWL,KAAK,IAAIK,WAAWJ,OAAO,IAAII,WAAWH,IAAI,IAAIG,WAAWF,EAAE;AAEnG;AAUA,OAAO,SAASI,sBACdP,KAA4D;IAE5D,OAAQA,MAAMC,OAAO;QACnB,KAAK;YACH,OAAO;gBAACO,MAAM;gBAAaC,sBAAsBT,MAAMU,YAAY;gBAAEC,WAAW;YAAK;QACvF,KAAK;YACH,OAAO;gBAACH,MAAM;gBAAYC,sBAAsB;gBAAGE,WAAW;YAAK;QACrE,KAAK;QACL,KAAK;YACH,OAAO;gBAACH,MAAM;gBAAUC,sBAAsBT,MAAMU,YAAY;gBAAEC,WAAW;YAAI;QACnF,KAAK;YACH,OAAO;gBAACH,MAAM;gBAAcC,sBAAsB;gBAAGE,WAAW;YAAK;IACzE;AACF;AAEA,OAAO,MAAMC,mCAAmC;IAC9CC,WAAW;QAAC;KAAS;IACrB,YAAY;QAAC;KAAY;IACzBC,QAAQ;QAAC;QAAU;KAAU;IAC7BC,YAAY;QAAC;KAAW;AAC1B,EAAoF"}