Compare commits

...

23 Commits

Author SHA1 Message Date
Eric Allam f275b47755 Fixed pnpm lock 2023-07-11 11:31:42 +01:00
Eric Allam cfb7481d7e Merge pull request #152 from triggerdotdev/changeset-release/main
chore: Update version for release (next)
2023-07-11 11:22:55 +01:00
github-actions[bot] 57fcce90d9 chore: Update version for release (next) 2023-07-11 10:22:13 +00:00
Eric Allam 2c0ea0c108 Published packages now work with 16.8 and above 2023-07-11 11:20:47 +01:00
Eric Allam e81317b72c Loosen the @trigger.dev/nextjs next version 2023-07-11 11:04:21 +01:00
James Ritchie 946e429906 Merge pull request #151 from triggerdotdev/changeset-release/main
chore: Update version for release (next)
2023-07-10 13:44:20 +01:00
github-actions[bot] 2e5a401ff7 chore: Update version for release (next) 2023-07-10 12:42:38 +00:00
James Ritchie b8b84d8d16 CLI: Improved the endpoint prompt 2023-07-10 13:41:04 +01:00
Matt Aitken 039777bf63 Merge pull request #150 from triggerdotdev/changeset-release/main
chore: Update version for release (next)
2023-07-10 10:59:15 +01:00
github-actions[bot] 3547ec13c3 chore: Update version for release (next) 2023-07-10 09:58:47 +00:00
Matt Aitken 3763577451 CLI dev: improved spinner and made port clear in logs 2023-07-10 10:57:10 +01:00
Matt Aitken c6618049f2 Merge pull request #149 from triggerdotdev/changeset-release/main
chore: Update version for release (next)
2023-07-10 10:35:07 +01:00
github-actions[bot] 28d6aa9885 chore: Update version for release (next) 2023-07-10 09:33:29 +00:00
Matt Aitken 568786e4f6 Fix when setting the url as an option 2023-07-10 10:32:07 +01:00
Eric Allam 38614ee526 Update pnpm lockfile 2023-07-09 20:43:27 +01:00
Eric Allam 15ad6bb5f8 Merge pull request #148 from triggerdotdev/changeset-release/main
chore: Update version for release (next)
2023-07-09 20:41:41 +01:00
github-actions[bot] 15f431ada6 chore: Update version for release (next) 2023-07-09 18:48:48 +00:00
Matt Aitken 5163acc6ef Plain changed to @latest
🚀 Publish Trigger.dev Docker / ʦ TypeScript (push) Has been cancelled
🚀 Publish Trigger.dev Docker / publish (push) Has been cancelled
2023-07-09 19:47:32 +01:00
Matt Aitken f9297d783a Added Plain to the integration catalog 2023-07-08 22:17:58 +01:00
Eric Allam c34a02c06f Improved OpenAI integration task errors
And also now allowing runTask.onError to also return an Error by itself if it wants to not retry the task
2023-07-08 22:14:27 +01:00
Eric Allam 61ed1fb202 Added support for output properties on tasks 2023-07-08 22:14:27 +01:00
Eric Allam 87638ba6c5 Merge pull request #147 from owen-duncan-snobel/main
Update README.md
2023-07-07 21:51:36 +01:00
owen-duncan-snobel 26b4100bb0 Update README.md
Use the permanent link to the discord
2023-07-07 15:26:34 -04:00
65 changed files with 1514 additions and 225 deletions
+6
View File
@@ -0,0 +1,6 @@
---
"@trigger.dev/sdk": patch
"@trigger.dev/openai": patch
---
Improved OpenAI task errors
+14
View File
@@ -0,0 +1,14 @@
---
"@trigger.dev/integration-kit": patch
"@trigger.dev/typeform": patch
"@trigger.dev/sdk": patch
"@trigger.dev/github": patch
"@trigger.dev/openai": patch
"@trigger.dev/resend": patch
"@trigger.dev/plain": patch
"@trigger.dev/slack": patch
"@trigger.dev/nextjs": patch
"@trigger.dev/cli": patch
---
Set Node version to 16.8 and above
+5
View File
@@ -0,0 +1,5 @@
---
"@trigger.dev/nextjs": patch
---
Loosen the Next.js dependency version
+7
View File
@@ -25,6 +25,7 @@
"big-tables-search",
"bright-buses-join",
"bright-horses-bathe",
"brown-bikes-bathe",
"chatty-cars-agree",
"chilly-meals-warn",
"clever-bats-learn",
@@ -59,17 +60,21 @@
"moody-islands-melt",
"odd-colts-smash",
"pink-islands-pay",
"pink-numbers-jam",
"plenty-ties-raise",
"popular-cooks-boil",
"pretty-bats-obey",
"quick-stingrays-own",
"quiet-berries-tickle",
"quiet-dryers-collect",
"rich-clocks-attack",
"rude-bees-taste",
"shiny-mirrors-beam",
"shy-bobcats-hear",
"silent-mirrors-lay",
"silver-insects-sneeze",
"six-humans-happen",
"sixty-pandas-deliver",
"sixty-squids-wink",
"strange-jobs-shout",
"strong-cars-visit",
@@ -80,8 +85,10 @@
"tame-flowers-invite",
"tasty-bats-flow",
"ten-birds-confess",
"thirty-apes-happen",
"tidy-planes-compete",
"tough-walls-share",
"two-tools-hide",
"wild-rats-mix",
"young-birds-unite"
]
+5
View File
@@ -0,0 +1,5 @@
---
"@trigger.dev/cli": patch
---
Fix when setting the url as an option
+6
View File
@@ -0,0 +1,6 @@
---
"@trigger.dev/sdk": patch
"@trigger.dev/openai": patch
---
Adding support for output properties on tasks
+5
View File
@@ -0,0 +1,5 @@
---
"@trigger.dev/cli": patch
---
Improved the endpoint prompt
+5
View File
@@ -0,0 +1,5 @@
---
"@trigger.dev/cli": patch
---
Improved spinner and made port clear in logs
+1 -1
View File
@@ -7,7 +7,7 @@
### The background jobs framework for Next.js
[Discord](https://discord.gg/bpVDSjcG) | [Website](https://trigger.dev) | [Issues](https://github.com/triggerdotdev/trigger.dev/issues) | [Docs](https://trigger.dev/docs)
[Discord](https://discord.gg/JtBAxBr2m3) | [Website](https://trigger.dev) | [Issues](https://github.com/triggerdotdev/trigger.dev/issues) | [Docs](https://trigger.dev/docs)
[![Twitter](https://img.shields.io/twitter/url/https/twitter.com/triggerdotdev.svg?style=social&label=Follow%20%40trigger.dev)](https://twitter.com/triggerdotdev)
[![GitHub Repo stars](https://img.shields.io/github/stars/triggerdotdev/trigger.dev?style=social)](https://github.com/triggerdotdev/trigger.dev)
@@ -1,14 +1,11 @@
import {
DisplayPropertiesSchema,
DisplayProperty,
DisplayPropertySchema,
ErrorWithStack,
ErrorWithStackSchema,
EventSpecificationSchema,
StyleSchema,
} from "@trigger.dev/internal";
import { z } from "zod";
import { PrismaClient, prisma } from "~/db.server";
import { mergeProperties } from "~/utils/mergeProperties.server";
type RunOptions = {
id: string;
@@ -35,6 +32,7 @@ const taskSelect = {
delayUntil: true,
description: true,
properties: true,
outputProperties: true,
error: true,
startedAt: true,
completedAt: true,
@@ -67,30 +65,15 @@ export class RunPresenter {
return undefined;
}
//merge the properties from the version and the run, with the run properties taking precedence
const mergedProperties = new Map<string, DisplayProperty>();
if (run.version.properties) {
const properties = DisplayPropertiesSchema.parse(run.version.properties);
for (const property of properties) {
mergedProperties.set(property.label, property);
}
}
if (run.properties) {
const properties = DisplayPropertiesSchema.parse(run.properties);
for (const property of properties) {
mergedProperties.set(property.label, property);
}
}
if (run.version.eventSpecification) {
const eventSpecification = EventSpecificationSchema.parse(
run.version.eventSpecification
);
if (eventSpecification.properties) {
for (const properties of eventSpecification.properties) {
mergedProperties.set(properties.label, properties);
}
}
}
const eventSpecification = EventSpecificationSchema.parse(
run.version.eventSpecification
);
const runProperties = mergeProperties(
run.version.properties,
run.properties,
eventSpecification.properties
);
const enrichTask = (task: QueryTask) => {
const { children, ...t } = task;
@@ -98,10 +81,7 @@ export class RunPresenter {
...t,
error: t.error ? ErrorWithStackSchema.parse(t.error) : undefined,
connection: t.runConnection,
properties:
t.properties == null
? []
: z.array(DisplayPropertySchema).parse(t.properties),
properties: mergeProperties(t.properties, t.outputProperties),
style: t.style ? StyleSchema.parse(t.style) : undefined,
};
};
@@ -147,7 +127,7 @@ export class RunPresenter {
isTest: run.isTest,
version: run.version.version,
output: runOutput,
properties: Array.from(mergedProperties.values()),
properties: runProperties,
environment: {
type: run.environment.type,
slug: run.environment.slug,
@@ -1,5 +1,6 @@
import { DisplayPropertiesSchema, StyleSchema } from "@trigger.dev/internal";
import { PrismaClient, prisma } from "~/db.server";
import { mergeProperties } from "~/utils/mergeProperties.server";
type DetailsProps = {
id: string;
@@ -56,6 +57,7 @@ export class TaskDetailsPresenter {
noop: true,
description: true,
properties: true,
outputProperties: true,
params: true,
output: true,
error: true,
@@ -89,10 +91,7 @@ export class TaskDetailsPresenter {
...task,
connection: task.runConnection,
params: task.params as Record<string, any>,
properties:
task.properties == null
? []
: DisplayPropertiesSchema.parse(task.properties),
properties: mergeProperties(task.properties, task.outputProperties),
style: task.style ? StyleSchema.parse(task.style) : undefined,
};
}
@@ -3,7 +3,6 @@ import { typedjson, useTypedLoaderData } from "remix-typedjson";
import { CodeBlock } from "~/components/code/CodeBlock";
import { DateTime } from "~/components/primitives/DateTime";
import { Header3 } from "~/components/primitives/Headers";
import { useLocales } from "~/components/primitives/LocaleProvider";
import { Paragraph } from "~/components/primitives/Paragraph";
import {
Table,
@@ -58,7 +57,6 @@ export const loader = async ({ request, params }: LoaderArgs) => {
export default function Page() {
const { task } = useTypedLoaderData<typeof loader>();
const locales = useLocales();
const {
name,
@@ -139,7 +137,7 @@ export default function Page() {
{properties.length > 0 && (
<div className="mt-4 flex flex-col gap-2">
<Header3>Properties</Header3>
<RunPanelProperties properties={properties} layout="vertical" />
<RunPanelProperties properties={properties} layout="horizontal" />
</div>
)}
@@ -67,7 +67,7 @@ export default function Page() {
<Header3>Properties</Header3>
<RunPanelProperties
properties={run.properties}
layout="vertical"
layout="horizontal"
/>
</div>
)}
@@ -146,6 +146,7 @@ export class CompleteRunTaskService {
status: "COMPLETED",
output: taskBody.output ?? undefined,
completedAt: new Date(),
outputProperties: taskBody.properties,
},
include: {
attempts: true,
@@ -1,5 +1,6 @@
import { github } from "./integrations/github";
import { openai } from "./integrations/openai";
import { plain } from "./integrations/plain";
import { resend } from "./integrations/resend";
import { slack } from "./integrations/slack";
import { typeform } from "./integrations/typeform";
@@ -30,6 +31,7 @@ export const integrationCatalog = new IntegrationCatalog({
// airtable,
github,
openai,
plain,
resend,
slack,
typeform,
@@ -0,0 +1,103 @@
import type { Integration } from "../types";
export const plain: Integration = {
identifier: "plain",
name: "Plain",
packageName: "@trigger.dev/plain@latest",
authenticationMethods: {
apikey: {
type: "apikey",
help: {
samples: [
{
title: "Creating the client",
code: `
import { Plain } from "@trigger.dev/plain";
export const plain = new Plain({
id: "__SLUG__",
apiKey: process.env.PLAIN_API_KEY!,
});
`,
},
{
title: "Using the client",
code: `
new Job(client, {
id: "plain-playground",
name: "Plain Playground",
version: "0.1.1",
integrations: {
plain,
},
trigger: eventTrigger({
name: "plain.playground",
}),
run: async (payload, io, ctx) => {
const { customer } = await io.plain.upsertCustomer("upsert-customer", {
identifier: {
emailAddress: "rick.astley@gmail.com",
},
onCreate: {
email: {
email: "rick.astley@gmail.com",
isVerified: true,
},
fullName: "Rick Astley",
externalId: "u_123",
},
onUpdate: {
fullName: {
value: "Rick Astley",
},
externalId: {
value: "u_123",
},
},
});
const foundCustomer = await io.plain.getCustomerById("get-customer", {
customerId: customer.id,
});
const timelineEntry = await io.plain.upsertCustomTimelineEntry(
"upsert-timeline-entry",
{
customerId: customer.id,
title: "My timeline entry",
components: [
{
componentText: {
text: \`This is a nice title\`,
},
},
{
componentDivider: {
dividerSpacingSize: ComponentDividerSpacingSize.M,
},
},
{
componentText: {
textSize: ComponentTextSize.S,
textColor: ComponentTextColor.Muted,
text: "External id",
},
},
{
componentText: {
text: foundCustomer?.externalId ?? "",
},
},
],
}
);
},
});
`,
highlight: [[12, 68]],
},
],
},
},
},
};
@@ -0,0 +1,36 @@
import {
DisplayProperty,
DisplayPropertiesSchema,
} from "@trigger.dev/internal";
// Takes a list of potential arrays of DisplayProperties and merges them together so no duplicates exist based on the label
// For example, if the propertyLists are:
// [
// [{label: "foo", value: "bar"}],
// [{label: "foo", value: "baz"}],
// [{label: "bar", value: "baz"}],
// ]
// The result would be:
// [
// {label: "foo", value: "baz"},
// {label: "bar", value: "baz"},
// ]
//
// We will use the DisplayPropertiesSchema zod schema to safely parse the properties and if they aren't valid then we'll just ignore them
export function mergeProperties(
...propertyLists: Array<unknown>
): Array<DisplayProperty> {
const mergedProperties = new Map<string, DisplayProperty>();
for (const propertyList of propertyLists) {
const properties = DisplayPropertiesSchema.safeParse(propertyList);
if (properties.success) {
for (const property of properties.data) {
mergedProperties.set(property.label, property);
}
}
}
return Array.from(mergedProperties.values());
}
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "next/core-web-vitals"
}
+36
View File
@@ -0,0 +1,36 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts
+34
View File
@@ -0,0 +1,34 @@
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
## Getting Started
First, run the development server:
```bash
npm run dev
# or
yarn dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.
[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.
The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
## Learn More
To learn more about Next.js, take a look at the following resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
## Deploy on Vercel
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
+7
View File
@@ -0,0 +1,7 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
}
module.exports = nextConfig
+25
View File
@@ -0,0 +1,25 @@
{
"name": "nextjs-12",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"next": "12.3.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"@trigger.dev/nextjs": "workspace:*",
"@trigger.dev/sdk": "workspace:*"
},
"devDependencies": {
"eslint": "8.44.0",
"eslint-config-next": "12.3.4"
},
"trigger.dev": {
"endpointId": "nextjs-12"
}
}
+7
View File
@@ -0,0 +1,7 @@
import '../styles/globals.css'
function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />
}
export default MyApp
+5
View File
@@ -0,0 +1,5 @@
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
export default function handler(req, res) {
res.status(200).json({ name: 'John Doe' })
}
+16
View File
@@ -0,0 +1,16 @@
import { TriggerClient } from "@trigger.dev/sdk";
import { createPagesRoute } from "@trigger.dev/nextjs";
export const client = new TriggerClient({
id: "nextjs-12",
apiKey: process.env.TRIGGER_API_KEY,
apiUrl: process.env.TRIGGER_API_URL,
verbose: false,
ioLogLocalEnabled: true,
});
const { handler, config } = createPagesRoute(client);
export { config };
export default handler;
+69
View File
@@ -0,0 +1,69 @@
import Head from 'next/head'
import Image from 'next/image'
import styles from '../styles/Home.module.css'
export default function Home() {
return (
<div className={styles.container}>
<Head>
<title>Create Next App</title>
<meta name="description" content="Generated by create next app" />
<link rel="icon" href="/favicon.ico" />
</Head>
<main className={styles.main}>
<h1 className={styles.title}>
Welcome to <a href="https://nextjs.org">Next.js!</a>
</h1>
<p className={styles.description}>
Get started by editing{' '}
<code className={styles.code}>pages/index.js</code>
</p>
<div className={styles.grid}>
<a href="https://nextjs.org/docs" className={styles.card}>
<h2>Documentation &rarr;</h2>
<p>Find in-depth information about Next.js features and API.</p>
</a>
<a href="https://nextjs.org/learn" className={styles.card}>
<h2>Learn &rarr;</h2>
<p>Learn about Next.js in an interactive course with quizzes!</p>
</a>
<a
href="https://github.com/vercel/next.js/tree/canary/examples"
className={styles.card}
>
<h2>Examples &rarr;</h2>
<p>Discover and deploy boilerplate example Next.js projects.</p>
</a>
<a
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className={styles.card}
>
<h2>Deploy &rarr;</h2>
<p>
Instantly deploy your Next.js site to a public URL with Vercel.
</p>
</a>
</div>
</main>
<footer className={styles.footer}>
<a
href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
target="_blank"
rel="noopener noreferrer"
>
Powered by{' '}
<span className={styles.logo}>
<Image src="/vercel.svg" alt="Vercel Logo" width={72} height={16} />
</span>
</a>
</footer>
</div>
)
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

+4
View File
@@ -0,0 +1,4 @@
<svg width="283" height="64" viewBox="0 0 283 64" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path d="M141.04 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.46 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM248.72 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.45 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM200.24 34c0 6 3.92 10 10 10 4.12 0 7.21-1.87 8.8-4.92l7.68 4.43c-3.18 5.3-9.14 8.49-16.48 8.49-11.05 0-19-7.2-19-18s7.96-18 19-18c7.34 0 13.29 3.19 16.48 8.49l-7.68 4.43c-1.59-3.05-4.68-4.92-8.8-4.92-6.07 0-10 4-10 10zm82.48-29v46h-9V5h9zM36.95 0L73.9 64H0L36.95 0zm92.38 5l-27.71 48L73.91 5H84.3l17.32 30 17.32-30h10.39zm58.91 12v9.69c-1-.29-2.06-.49-3.2-.49-5.81 0-10 4-10 10V51h-9V17h9v9.2c0-5.08 5.91-9.2 13.2-9.2z" fill="#000"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+129
View File
@@ -0,0 +1,129 @@
.container {
padding: 0 2rem;
}
.main {
min-height: 100vh;
padding: 4rem 0;
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.footer {
display: flex;
flex: 1;
padding: 2rem 0;
border-top: 1px solid #eaeaea;
justify-content: center;
align-items: center;
}
.footer a {
display: flex;
justify-content: center;
align-items: center;
flex-grow: 1;
}
.title a {
color: #0070f3;
text-decoration: none;
}
.title a:hover,
.title a:focus,
.title a:active {
text-decoration: underline;
}
.title {
margin: 0;
line-height: 1.15;
font-size: 4rem;
}
.title,
.description {
text-align: center;
}
.description {
margin: 4rem 0;
line-height: 1.5;
font-size: 1.5rem;
}
.code {
background: #fafafa;
border-radius: 5px;
padding: 0.75rem;
font-size: 1.1rem;
font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono,
Bitstream Vera Sans Mono, Courier New, monospace;
}
.grid {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
max-width: 800px;
}
.card {
margin: 1rem;
padding: 1.5rem;
text-align: left;
color: inherit;
text-decoration: none;
border: 1px solid #eaeaea;
border-radius: 10px;
transition: color 0.15s ease, border-color 0.15s ease;
max-width: 300px;
}
.card:hover,
.card:focus,
.card:active {
color: #0070f3;
border-color: #0070f3;
}
.card h2 {
margin: 0 0 1rem 0;
font-size: 1.5rem;
}
.card p {
margin: 0;
font-size: 1.25rem;
line-height: 1.5;
}
.logo {
height: 1em;
margin-left: 0.5rem;
}
@media (max-width: 600px) {
.grid {
width: 100%;
flex-direction: column;
}
}
@media (prefers-color-scheme: dark) {
.card,
.footer {
border-color: #222;
}
.code {
background: #111;
}
.logo img {
filter: invert(1);
}
}
+26
View File
@@ -0,0 +1,26 @@
html,
body {
padding: 0;
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
a {
color: inherit;
text-decoration: none;
}
* {
box-sizing: border-box;
}
@media (prefers-color-scheme: dark) {
html {
color-scheme: dark;
}
body {
color: white;
background: black;
}
}
@@ -137,6 +137,50 @@ new Job(client, {
},
});
new Job(client, {
id: "openai-errors",
name: "OpenAI Errors",
version: "0.0.1",
enabled,
trigger: eventTrigger({
name: "openai.errors",
}),
integrations: {
openai,
},
run: async (payload, io, ctx) => {
await io.openai.createChatCompletion("chat-completion", {
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content:
"You are an AI assistant that is helpful, creative, clever, and very friendly.",
},
{
role: "user",
content:
"Call the supplied function that will tweet a really funny joke",
},
],
function_call: { name: "tweetFunnyJoke" },
functions: [
{
name: "tweetFunnyJoke",
description:
"Tweets a really funny joke. The joke is so funny that it will make you laugh out loud.",
parameters: {
type: "array",
items: {
type: "string",
},
},
},
],
});
},
});
new Job(client, {
id: "on-missing-auth-connection",
name: "On missing auth connection",
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/github
## 1.0.0-next.6
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
- Updated dependencies [2c0ea0c1]
- @trigger.dev/integration-kit@2.0.0-next.5
- @trigger.dev/sdk@2.0.0-next.15
## 1.0.0-next.5
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/github",
"version": "1.0.0-next.5",
"version": "1.0.0-next.6",
"description": "The official GitHub integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -29,12 +29,12 @@
"@octokit/request": "^6.2.5",
"@octokit/request-error": "^4.0.1",
"@octokit/webhooks": "^10.4.0",
"@trigger.dev/sdk": "workspace:^2.0.0-next.12",
"@trigger.dev/integration-kit": "workspace:^2.0.0-next.4",
"@trigger.dev/sdk": "workspace:^2.0.0-next.15",
"@trigger.dev/integration-kit": "workspace:^2.0.0-next.5",
"octokit": "^2.0.14",
"zod": "3.21.4"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
+19
View File
@@ -1,5 +1,24 @@
# @trigger.dev/slack
## 1.0.0-next.5
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
- Updated dependencies [2c0ea0c1]
- @trigger.dev/integration-kit@2.0.0-next.5
- @trigger.dev/sdk@2.0.0-next.15
## 1.0.0-next.4
### Patch Changes
- c34a02c0: Improved OpenAI task errors
- 61ed1fb2: Adding support for output properties on tasks
- Updated dependencies [c34a02c0]
- Updated dependencies [61ed1fb2]
- @trigger.dev/sdk@2.0.0-next.14
## 1.0.0-next.3
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/openai",
"version": "1.0.0-next.3",
"version": "1.0.0-next.5",
"description": "The official OpenAI integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,11 +25,11 @@
},
"dependencies": {
"openai": "^3.3.0",
"@trigger.dev/sdk": "workspace:^2.0.0-next.12",
"@trigger.dev/integration-kit": "workspace:^2.0.0-next.4",
"@trigger.dev/sdk": "workspace:^2.0.0-next.15",
"@trigger.dev/integration-kit": "workspace:^2.0.0-next.5",
"zod": "3.21.4"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
+1 -41
View File
@@ -1,48 +1,8 @@
import type { IntegrationClient, TriggerIntegration } from "@trigger.dev/sdk";
import { Configuration, OpenAIApi } from "openai";
import {
backgroundCreateChatCompletion,
backgroundCreateCompletion,
cancelFineTune,
createChatCompletion,
createCompletion,
createEdit,
createEmbedding,
createFile,
createFineTune,
createFineTuneFile,
createImage,
deleteFineTune,
listFiles,
listFineTuneEvents,
listFineTunes,
listModels,
retrieveFineTune,
retrieveModel,
} from "./tasks";
import * as tasks from "./tasks";
import { OpenAIIntegrationOptions } from "./types";
const tasks = {
retrieveModel,
listModels,
createCompletion,
createChatCompletion,
backgroundCreateCompletion,
backgroundCreateChatCompletion,
createEdit,
createImage,
createEmbedding,
createFile,
listFiles,
createFineTuneFile,
createFineTune,
listFineTunes,
retrieveFineTune,
cancelFineTune,
listFineTuneEvents,
deleteFineTune,
};
export class OpenAI
implements TriggerIntegration<IntegrationClient<OpenAIApi, typeof tasks>>
{
+59
View File
@@ -0,0 +1,59 @@
import {
CreateCompletionResponseUsage,
CreateEmbeddingResponseUsage,
} from "openai";
import { z } from "zod";
export function createTaskUsageProperties(
usage:
| CreateCompletionResponseUsage
| CreateEmbeddingResponseUsage
| undefined
) {
if (!usage) {
return;
}
return [
{
label: "Prompt Usage",
text: String(usage.prompt_tokens),
},
...("completion_tokens" in usage
? [
{
label: "Completion Usage",
text: String(usage.completion_tokens),
},
]
: []),
{
label: "Total Usage",
text: String(usage.total_tokens),
},
];
}
const OpenAIErrorSchema = z.object({
response: z.object({
data: z.object({
error: z.object({
code: z.string().nullable().optional(),
message: z.string(),
type: z.string(),
}),
}),
}),
});
export function onTaskError(error: unknown) {
const openAIError = OpenAIErrorSchema.safeParse(error);
if (!openAIError.success) {
return;
}
const { message, code, type } = openAIError.data.response.data.error;
return new Error(`${type}: ${message}${code ? ` (${code})` : ""}`);
}
+53 -11
View File
@@ -15,6 +15,7 @@ import {
fileFromString,
truncate,
} from "@trigger.dev/integration-kit";
import { createTaskUsageProperties, onTaskError } from "./taskUtils";
type OpenAIClientType = InstanceType<typeof OpenAIApi>;
@@ -31,6 +32,7 @@ export const retrieveModel: AuthenticatedTask<
Prettify<RetrieveModelRequest>,
RetrieveModelResponseData
> = {
onError: onTaskError,
run: async (params, client) => {
return client.retrieveModel(params.model).then((res) => res.data);
},
@@ -58,6 +60,7 @@ export const listModels: AuthenticatedTask<
void,
Prettify<ListModelsResponseData>
> = {
onError: onTaskError,
run: async (params, client) => {
return client.listModels().then((res) => res.data);
},
@@ -76,8 +79,12 @@ export const createCompletion: AuthenticatedTask<
Prettify<CreateCompletionRequest>,
Prettify<Awaited<ReturnType<OpenAIClientType["createCompletion"]>>["data"]>
> = {
run: async (params, client) => {
return client.createCompletion(params).then((res) => res.data);
run: async (params, client, task) => {
const response = await client.createCompletion(params);
task.outputProperties = createTaskUsageProperties(response.data.usage);
return response.data;
},
init: (params) => {
return {
@@ -105,7 +112,7 @@ export const backgroundCreateCompletion: AuthenticatedTask<
OpenAIIntegrationAuth
> = {
run: async (params, client, task, io, auth) => {
return io.backgroundFetch<CreateCompletionResponseData>(
const response = await io.backgroundFetch<CreateCompletionResponseData>(
"background",
"https://api.openai.com/v1/completions",
{
@@ -120,6 +127,10 @@ export const backgroundCreateCompletion: AuthenticatedTask<
body: JSON.stringify(params),
}
);
task.outputProperties = createTaskUsageProperties(response.usage);
return response;
},
init: (params) => {
return {
@@ -145,8 +156,13 @@ export const createChatCompletion: AuthenticatedTask<
Prettify<CreateChatCompletionRequest>,
Prettify<CreateChatCompetionResponseData>
> = {
run: async (params, client) => {
return client.createChatCompletion(params).then((res) => res.data);
onError: onTaskError,
run: async (params, client, task) => {
const response = await client.createChatCompletion(params);
task.outputProperties = createTaskUsageProperties(response.data.usage);
return response.data;
},
init: (params) => {
return {
@@ -170,7 +186,7 @@ export const backgroundCreateChatCompletion: AuthenticatedTask<
OpenAIIntegrationAuth
> = {
run: async (params, client, task, io, auth) => {
return io.backgroundFetch<CreateChatCompetionResponseData>(
const response = await io.backgroundFetch<CreateChatCompetionResponseData>(
"background",
"https://api.openai.com/v1/chat/completions",
{
@@ -203,6 +219,10 @@ export const backgroundCreateChatCompletion: AuthenticatedTask<
},
}
);
task.outputProperties = createTaskUsageProperties(response.usage);
return response;
},
init: (params) => {
return {
@@ -228,8 +248,13 @@ export const createEdit: AuthenticatedTask<
Prettify<CreateEditRequest>,
CreateEditResponseData
> = {
run: async (params, client) => {
return client.createEdit(params).then((res) => res.data);
onError: onTaskError,
run: async (params, client, task) => {
const response = await client.createEdit(params);
task.outputProperties = createTaskUsageProperties(response.data.usage);
return response.data;
},
init: (params) => {
let properties = [
@@ -269,8 +294,11 @@ export const createImage: AuthenticatedTask<
Prettify<CreateImageRequest>,
CreateImageResponseData
> = {
onError: onTaskError,
run: async (params, client, task) => {
return client.createImage(params).then((res) => res.data);
const response = await client.createImage(params);
return response.data;
},
init: (params) => {
let properties = [
@@ -319,8 +347,13 @@ export const createEmbedding: AuthenticatedTask<
Prettify<CreateEmbeddingRequest>,
CreateEmbeddingResponseData
> = {
run: async (params, client) => {
return client.createEmbedding(params).then((res) => res.data);
onError: onTaskError,
run: async (params, client, task) => {
const response = await client.createEmbedding(params);
task.outputProperties = createTaskUsageProperties(response.data.usage);
return response.data;
},
init: (params) => {
return {
@@ -359,6 +392,7 @@ export const createFile: AuthenticatedTask<
Prettify<CreateFileRequest>,
Prettify<CreateFileResponseData>
> = {
onError: onTaskError,
run: async (params, client) => {
let file: File;
@@ -401,6 +435,7 @@ export const listFiles: AuthenticatedTask<
void,
ListFilesResponseData
> = {
onError: onTaskError,
run: async (params, client) => {
return client.listFiles().then((res) => res.data);
},
@@ -427,6 +462,7 @@ export const createFineTuneFile: AuthenticatedTask<
Prettify<CreateFineTuneFileRequest>,
Prettify<CreateFileResponseData>
> = {
onError: onTaskError,
run: async (params, client) => {
const file = (await fileFromString(
params.examples.map((d) => JSON.stringify(d)).join("\n"),
@@ -459,6 +495,7 @@ export const createFineTune: AuthenticatedTask<
Prettify<CreateFineTuneRequest>,
CreateFineTuneResponseData
> = {
onError: onTaskError,
run: async (params, client) => {
return client.createFineTune(params).then((res) => res.data);
},
@@ -502,6 +539,7 @@ export const listFineTunes: AuthenticatedTask<
void,
ListFineTunesResponseData
> = {
onError: onTaskError,
run: async (params, client) => {
return client.listFineTunes().then((res) => res.data);
},
@@ -528,6 +566,7 @@ export const retrieveFineTune: AuthenticatedTask<
Prettify<SpecificFineTuneRequest>,
RetrieveFineTuneResponseData
> = {
onError: onTaskError,
run: async (params, client) => {
return client.retrieveFineTune(params.fineTuneId).then((res) => res.data);
},
@@ -555,6 +594,7 @@ export const cancelFineTune: AuthenticatedTask<
Prettify<SpecificFineTuneRequest>,
CancelFineTuneResponseData
> = {
onError: onTaskError,
run: async (params, client) => {
return client.cancelFineTune(params.fineTuneId).then((res) => res.data);
},
@@ -582,6 +622,7 @@ export const listFineTuneEvents: AuthenticatedTask<
Prettify<SpecificFineTuneRequest>,
ListFineTuneEventsResponseData
> = {
onError: onTaskError,
run: async (params, client) => {
return client
.listFineTuneEvents(params.fineTuneId, false)
@@ -615,6 +656,7 @@ export const deleteFineTune: AuthenticatedTask<
Prettify<DeleteFineTunedModelRequest>,
DeleteFineTuneResponseData
> = {
onError: onTaskError,
run: async (params, client) => {
return client.deleteModel(params.fineTunedModelId).then((res) => res.data);
},
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/plain
## 1.0.0-next.4
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
- Updated dependencies [2c0ea0c1]
- @trigger.dev/integration-kit@2.0.0-next.5
- @trigger.dev/sdk@2.0.0-next.15
## 1.0.0-next.3
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/plain",
"version": "1.0.0-next.3",
"version": "1.0.0-next.4",
"description": "The official Plain.com integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,11 +24,11 @@
"build:tsup": "tsup"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.0.0-next",
"@trigger.dev/sdk": "workspace:^2.0.0-next",
"@trigger.dev/integration-kit": "workspace:^2.0.0-next.5",
"@trigger.dev/sdk": "workspace:^2.0.0-next.15",
"@team-plain/typescript-sdk": "^2.7.0"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/resend
## 1.0.0-next.3
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
- Updated dependencies [2c0ea0c1]
- @trigger.dev/integration-kit@2.0.0-next.5
- @trigger.dev/sdk@2.0.0-next.15
## 1.0.0-next.2
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/resend",
"version": "1.0.0-next.2",
"version": "1.0.0-next.3",
"description": "The official Resend.com integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -24,11 +24,11 @@
"build:tsup": "tsup"
},
"dependencies": {
"@trigger.dev/integration-kit": "workspace:^2.0.0-next",
"@trigger.dev/sdk": "workspace:^2.0.0-next",
"@trigger.dev/integration-kit": "workspace:^2.0.0-next.5",
"@trigger.dev/sdk": "workspace:^2.0.0-next.15",
"resend": "^0.9.1"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
+8
View File
@@ -1,5 +1,13 @@
# @trigger.dev/slack
## 1.0.0-next.4
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
- Updated dependencies [2c0ea0c1]
- @trigger.dev/sdk@2.0.0-next.15
## 1.0.0-next.3
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/slack",
"version": "1.0.0-next.3",
"version": "1.0.0-next.4",
"description": "The official Slack integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,10 +25,10 @@
},
"dependencies": {
"@slack/web-api": "^6.8.1",
"@trigger.dev/sdk": "workspace:^2.0.0-next.12",
"@trigger.dev/sdk": "workspace:^2.0.0-next.15",
"zod": "3.21.4"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/typeform
## 1.0.0-next.7
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
- Updated dependencies [2c0ea0c1]
- @trigger.dev/integration-kit@2.0.0-next.5
- @trigger.dev/sdk@2.0.0-next.15
## 1.0.0-next.6
### Patch Changes
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/typeform",
"version": "1.0.0-next.6",
"version": "1.0.0-next.7",
"description": "The official Typeform integration for Trigger.dev",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -25,11 +25,11 @@
},
"dependencies": {
"@typeform/api-client": "^1.8.0",
"@trigger.dev/sdk": "workspace:^2.0.0-next.13",
"@trigger.dev/integration-kit": "workspace:^2.0.0-next.4",
"@trigger.dev/sdk": "workspace:^2.0.0-next.15",
"@trigger.dev/integration-kit": "workspace:^2.0.0-next.5",
"zod": "3.21.4"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
+24
View File
@@ -1,5 +1,29 @@
# create-trigger
## 0.2.1-next.19
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
## 0.2.1-next.18
### Patch Changes
- b8b84d8d: Improved the endpoint prompt
## 0.2.1-next.17
### Patch Changes
- 37635774: Improved spinner and made port clear in logs
## 0.2.1-next.16
### Patch Changes
- 568786e4: Fix when setting the url as an option
## 0.2.1-next.15
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/cli",
"version": "0.2.1-next.15",
"version": "0.2.1-next.19",
"description": "The Trigger.dev CLI",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -32,7 +32,7 @@
"type": "module",
"exports": "./dist/index.js",
"bin": {
"cli": "./dist/index.js"
"trigger-cli": "./dist/index.js"
},
"devDependencies": {
"@types/fs-extra": "^11.0.1",
@@ -74,6 +74,6 @@
"zod": "3.21.4"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
+1 -39
View File
@@ -164,7 +164,7 @@ export const promptEndpointSlug = async (path: string): Promise<string> => {
message: "Enter a unique ID for your endpoint",
validate: (input) => {
if (!input) {
return "Please enter a unique slug for your endpoint";
return "Please enter a unique ID for your endpoint";
}
return true;
@@ -174,44 +174,6 @@ export const promptEndpointSlug = async (path: string): Promise<string> => {
return endpointSlug;
};
export const promptEndpointUrl = async (
instanceUrl: string
): Promise<string> => {
const { endpointUrl } = await inquirer.prompt<{
endpointUrl: string;
}>({
type: "input",
name: "endpointUrl",
message: "What's the URL of your Next.js project?",
validate: (input) => {
if (!input) {
return "Please enter the URL of your Next.js project";
}
// If instanceUrl is a cloud instance, then the URL must be publicly accessible
const url = new URL(input);
const triggerUrl = new URL(instanceUrl);
if (triggerUrl.hostname !== "localhost" && url.hostname === "localhost") {
return `Your Trigger.dev instance is hosted at ${triggerUrl.hostname}, so your Next.js project must also be publicly accessible. See our docs for more info: https://trigger.dev/docs/documentation/guides/tunneling-localhost`;
}
// Make sure triggerUrl and url don't use the same port if they are both localhost
if (
triggerUrl.hostname === "localhost" &&
url.hostname === "localhost" &&
triggerUrl.port === url.port
) {
return `Your Trigger.dev instance and your Next.js project are both trying to use port ${triggerUrl.port}. Please use a different port for one of them`;
}
return true;
},
});
return endpointUrl;
};
export const obfuscateApiKey = (apiKey: string) => {
const [prefix, slug, secretPart] = apiKey.split("_") as [
string,
+8 -3
View File
@@ -55,16 +55,20 @@ export async function devCommand(path: string, anyOptions: any) {
const { apiUrl } = await getTriggerApiDetails(resolvedPath, options.envFile);
logger.success(`✔️ [trigger.dev] Found API Key in ${options.envFile} file`);
logger.info(
` [trigger.dev] Looking for Next.js site on port ${options.port}`
);
// Setup tunnel
const endpointUrl = await resolveEndpointUrl(apiUrl, options.port);
const connectingSpinner = ora(
`[trigger.dev] Connecting to Trigger.dev...`
).start();
const connectingSpinner = ora(`[trigger.dev] Connecting to Trigger.dev...`);
//refresh function
let attemptCount = 0;
const refresh = async () => {
connectingSpinner.start();
const refreshedEndpointId = await getEndpointIdFromPackageJson(
resolvedPath
);
@@ -95,6 +99,7 @@ export async function devCommand(path: string, anyOptions: any) {
if (attemptCount === 10 || !result.retryable) {
connectingSpinner.fail(`🚨 Failed to connect: ${result.error}`);
logger.info(`Will attempt again on the next file change…`);
attemptCount = 0;
return;
}
+5 -5
View File
@@ -187,12 +187,12 @@ const resolveOptionsWithPrompts = async (
try {
if (!options.triggerUrl) {
resolvedOptions.triggerUrl = await promptTriggerUrl();
}
if (resolvedOptions.triggerUrl === CLOUD_TRIGGER_URL) {
resolvedOptions.apiUrl = CLOUD_API_URL;
} else {
resolvedOptions.apiUrl = resolvedOptions.triggerUrl;
}
if (resolvedOptions.triggerUrl === CLOUD_TRIGGER_URL) {
resolvedOptions.apiUrl = CLOUD_API_URL;
} else {
resolvedOptions.apiUrl = resolvedOptions.triggerUrl;
}
if (!options.apiKey) {
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "Task" ADD COLUMN "outputProperties" JSONB;
+9 -8
View File
@@ -760,14 +760,15 @@ model Task {
delayUntil DateTime?
noop Boolean @default(false)
description String?
properties Json?
params Json?
output Json?
error String?
redact Json?
style Json?
operation String?
description String?
properties Json?
outputProperties Json?
params Json?
output Json?
error String?
redact Json?
style Json?
operation String?
startedAt DateTime?
completedAt DateTime?
+6
View File
@@ -1,5 +1,11 @@
# @trigger.dev/integration-kit
## 2.0.0-next.5
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
## 2.0.0-next.4
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/integration-kit",
"version": "2.0.0-next.4",
"version": "2.0.0-next.5",
"description": "Trigger.dev Integration Kit has helpers to make creating integrations easier",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -35,6 +35,6 @@
"uuid": "^9.0.0"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
}
+4 -1
View File
@@ -13,6 +13,7 @@ import {
} from "./schedules";
import { CachedTaskSchema, ServerTaskSchema, TaskSchema } from "./tasks";
import { EventSpecificationSchema, TriggerMetadataSchema } from "./triggers";
import { Prettify } from "../types";
export const UpdateTriggerSourceBodySchema = z.object({
registeredEvents: z.array(z.string()),
@@ -530,7 +531,9 @@ export const CompleteTaskBodyInputSchema = RunTaskBodyInputSchema.pick({
),
});
export type CompleteTaskBodyInput = z.input<typeof CompleteTaskBodyInputSchema>;
export type CompleteTaskBodyInput = Prettify<
z.input<typeof CompleteTaskBodyInputSchema>
>;
export type CompleteTaskBodyOutput = z.infer<
typeof CompleteTaskBodyInputSchema
>;
+1
View File
@@ -23,6 +23,7 @@ export const TaskSchema = z.object({
status: TaskStatusSchema,
description: z.string().optional().nullable(),
properties: z.array(DisplayPropertySchema).optional().nullable(),
outputProperties: z.array(DisplayPropertySchema).optional().nullable(),
params: DeserializedJsonSchema.optional().nullable(),
output: DeserializedJsonSchema.optional().nullable(),
error: z.string().optional().nullable(),
+9
View File
@@ -1,5 +1,14 @@
# @trigger.dev/nextjs
## 1.0.0-next.7
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
- e81317b7: Loosen the Next.js dependency version
- Updated dependencies [2c0ea0c1]
- @trigger.dev/sdk@2.0.0-next.15
## 1.0.0-next.6
### Patch Changes
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/nextjs",
"version": "1.0.0-next.6",
"version": "1.0.0-next.7",
"description": "Trigger.dev Next.js integration",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -32,13 +32,13 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^2.0.0-next.5",
"next": "^13.3.1"
"@trigger.dev/sdk": "workspace:^2.0.0-next.15",
"next": ">=12.0.0 <14.0.0"
},
"dependencies": {
"debug": "^4.3.4"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
}
+13
View File
@@ -1,5 +1,18 @@
# @trigger.dev/sdk
## 2.0.0-next.15
### Patch Changes
- 2c0ea0c1: Set Node version to 16.8 and above
## 2.0.0-next.14
### Patch Changes
- c34a02c0: Improved OpenAI task errors
- 61ed1fb2: Adding support for output properties on tasks
## 2.0.0-next.13
### Patch Changes
+16 -16
View File
@@ -1,6 +1,6 @@
{
"name": "@trigger.dev/sdk",
"version": "2.0.0-next.13",
"version": "2.0.0-next.15",
"description": "trigger.dev Node.JS SDK",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -17,20 +17,6 @@
},
"./package.json": "./package.json"
},
"devDependencies": {
"@trigger.dev/internal": "workspace:*",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/node": "18",
"@types/node-fetch": "2.6.x",
"@types/slug": "^5.0.3",
"@types/uuid": "^9.0.0",
"@types/ws": "^8.5.3",
"rimraf": "^3.0.2",
"tsup": "^6.5.0",
"tsx": "^3.12.1",
"typescript": "^4.8.4"
},
"scripts": {
"clean": "rimraf dist",
"build": "npm run clean && npm run build:tsup",
@@ -54,7 +40,21 @@
"zod": "3.21.4",
"zod-error": "1.5.0"
},
"devDependencies": {
"@trigger.dev/internal": "workspace:*",
"@trigger.dev/tsconfig": "workspace:*",
"@types/debug": "^4.1.7",
"@types/node": "18",
"@types/node-fetch": "2.6.x",
"@types/slug": "^5.0.3",
"@types/uuid": "^9.0.0",
"@types/ws": "^8.5.3",
"rimraf": "^3.0.2",
"tsup": "^6.5.0",
"tsx": "^3.12.1",
"typescript": "^4.8.4"
},
"engines": {
"node": ">=18"
"node": ">=16.8.0"
}
}
+2
View File
@@ -21,7 +21,9 @@ import {
TriggerSourceSchema,
UpdateTriggerSourceBody,
} from "@trigger.dev/internal";
import { z } from "zod";
import fetch, { type RequestInit } from "node-fetch";
export type ApiClientOptions = {
apiKey?: string;
+1 -1
View File
@@ -52,7 +52,7 @@ export type AuthenticatedTask<
onError?: (
error: unknown,
task: ServerTask
) => { retryAt: Date; error?: Error } | undefined | void;
) => { retryAt: Date; error?: Error } | Error | undefined | void;
};
export function authenticatedTask<TClient, TParams, TResult>(options: {
+20 -11
View File
@@ -474,7 +474,11 @@ export class IO {
error: unknown,
task: IOTask,
io: IO
) => { retryAt: Date; error?: Error; jitter?: number } | undefined | void
) =>
| { retryAt: Date; error?: Error; jitter?: number }
| Error
| undefined
| void
): Promise<TResult> {
const parentId = this._taskStorage.getStore()?.taskId;
@@ -558,6 +562,7 @@ export class IO {
await this._apiClient.completeTask(this._id, task.id, {
output: result ?? undefined,
properties: task.outputProperties ?? undefined,
});
return result;
@@ -570,17 +575,21 @@ export class IO {
const onErrorResult = onError(error, task, this);
if (onErrorResult) {
const parsedError = ErrorWithStackSchema.safeParse(
onErrorResult.error
);
if (onErrorResult instanceof Error) {
error = onErrorResult;
} else {
const parsedError = ErrorWithStackSchema.safeParse(
onErrorResult.error
);
throw new RetryWithTaskError(
parsedError.success
? parsedError.data
: { message: "Unknown error" },
task,
onErrorResult.retryAt
);
throw new RetryWithTaskError(
parsedError.success
? parsedError.data
: { message: "Unknown error" },
task,
onErrorResult.retryAt
);
}
}
}
+564 -13
View File
@@ -344,6 +344,25 @@ importers:
config-packages/tsconfig:
specifiers: {}
examples/nextjs-12:
specifiers:
'@trigger.dev/nextjs': workspace:*
'@trigger.dev/sdk': workspace:*
eslint: 8.44.0
eslint-config-next: 12.3.4
next: 12.3.4
react: ^18.2.0
react-dom: ^18.2.0
dependencies:
'@trigger.dev/nextjs': link:../../packages/nextjs
'@trigger.dev/sdk': link:../../packages/trigger-sdk
next: 12.3.4_biqbaboplfbrettd7655fr4n2y
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
devDependencies:
eslint: 8.44.0
eslint-config-next: 12.3.4_eslint@8.44.0
examples/nextjs-example:
specifiers:
'@trigger.dev/cli': workspace:*
@@ -402,8 +421,8 @@ importers:
'@octokit/types': ^9.2.3
'@octokit/webhooks': ^10.4.0
'@octokit/webhooks-types': ^6.10.0
'@trigger.dev/integration-kit': workspace:^2.0.0-next.4
'@trigger.dev/sdk': workspace:^2.0.0-next.12
'@trigger.dev/integration-kit': workspace:^2.0.0-next.5
'@trigger.dev/sdk': workspace:^2.0.0-next.15
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
octokit: ^2.0.14
@@ -428,8 +447,8 @@ importers:
integrations/openai:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.0.0-next.4
'@trigger.dev/sdk': workspace:^2.0.0-next.12
'@trigger.dev/integration-kit': workspace:^2.0.0-next.5
'@trigger.dev/sdk': workspace:^2.0.0-next.15
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
openai: ^3.3.0
@@ -450,8 +469,8 @@ importers:
integrations/plain:
specifiers:
'@team-plain/typescript-sdk': ^2.7.0
'@trigger.dev/integration-kit': workspace:^2.0.0-next
'@trigger.dev/sdk': workspace:^2.0.0-next
'@trigger.dev/integration-kit': workspace:^2.0.0-next.5
'@trigger.dev/sdk': workspace:^2.0.0-next.15
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
rimraf: ^3.0.2
@@ -468,8 +487,8 @@ importers:
integrations/resend:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.0.0-next
'@trigger.dev/sdk': workspace:^2.0.0-next
'@trigger.dev/integration-kit': workspace:^2.0.0-next.5
'@trigger.dev/sdk': workspace:^2.0.0-next.15
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
resend: ^0.9.1
@@ -488,7 +507,7 @@ importers:
integrations/slack:
specifiers:
'@slack/web-api': ^6.8.1
'@trigger.dev/sdk': workspace:^2.0.0-next.12
'@trigger.dev/sdk': workspace:^2.0.0-next.15
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
rimraf: ^3.0.2
@@ -506,8 +525,8 @@ importers:
integrations/typeform:
specifiers:
'@trigger.dev/integration-kit': workspace:^2.0.0-next.4
'@trigger.dev/sdk': workspace:^2.0.0-next.13
'@trigger.dev/integration-kit': workspace:^2.0.0-next.5
'@trigger.dev/sdk': workspace:^2.0.0-next.15
'@trigger.dev/tsconfig': workspace:*
'@typeform/api-client': ^1.8.0
'@types/node': '18'
@@ -762,6 +781,11 @@ importers:
packages:
/@aashutoshrathi/word-wrap/1.2.6:
resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
engines: {node: '>=0.10.0'}
dev: true
/@alloc/quick-lru/5.2.0:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
@@ -4493,6 +4517,16 @@ packages:
eslint-visitor-keys: 3.4.1
dev: true
/@eslint-community/eslint-utils/4.4.0_eslint@8.44.0:
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 8.44.0
eslint-visitor-keys: 3.4.1
dev: true
/@eslint-community/regexpp/4.5.1:
resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
@@ -4532,11 +4566,33 @@ packages:
- supports-color
dev: true
/@eslint/eslintrc/2.1.0:
resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.6.0
globals: 13.19.0
ignore: 5.2.4
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
dev: true
/@eslint/js/8.42.0:
resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@eslint/js/8.44.0:
resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@fal-works/esbuild-plugin-global-externals/2.1.2:
resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==}
dev: true
@@ -5051,15 +5107,52 @@ packages:
tar-fs: 2.1.1
dev: true
/@next/env/12.3.4:
resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==}
dev: false
/@next/env/13.3.1:
resolution: {integrity: sha512-EDtCoedIZC7JlUQ3uaQpSc4aVmyhbLHmQVALg7pFfQgOTjgSnn7mKtA0DiCMkYvvsx6aFb5octGMtWrOtGXW9A==}
/@next/eslint-plugin-next/12.3.4:
resolution: {integrity: sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==}
dependencies:
glob: 7.1.7
dev: true
/@next/eslint-plugin-next/13.4.6:
resolution: {integrity: sha512-bPigeu0RI7bgy1ucBA2Yqcfg539y0Lzo38P2hIkrRB1GNvFSbYg6RTu8n6tGqPVrH3TTlPTNKLXG01wc+5NuwQ==}
dependencies:
glob: 7.1.7
dev: true
/@next/swc-android-arm-eabi/12.3.4:
resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==}
engines: {node: '>= 10'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
/@next/swc-android-arm64/12.3.4:
resolution: {integrity: sha512-5jf0dTBjL+rabWjGj3eghpLUxCukRhBcEJgwLedewEA/LJk2HyqCvGIwj5rH+iwmq1llCWbOky2dO3pVljrapg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
/@next/swc-darwin-arm64/12.3.4:
resolution: {integrity: sha512-DqsSTd3FRjQUR6ao0E1e2OlOcrF5br+uegcEGPVonKYJpcr0MJrtYmPxd4v5T6UCJZ+XzydF7eQo5wdGvSZAyA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@next/swc-darwin-arm64/13.3.1:
resolution: {integrity: sha512-UXPtriEc/pBP8luSLSCZBcbzPeVv+SSjs9cH/KygTbhmACye8/OOXRZO13Z2Wq1G0gLmEAIHQAOuF+vafPd2lw==}
engines: {node: '>= 10'}
@@ -5068,6 +5161,15 @@ packages:
requiresBuild: true
optional: true
/@next/swc-darwin-x64/12.3.4:
resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@next/swc-darwin-x64/13.3.1:
resolution: {integrity: sha512-lT36yYxosCfLtplFzJWgo0hrPu6/do8+msgM7oQkPeohDNdhjtjFUgOOwdSnPublLR6Mo2Ym4P/wl5OANuD2bw==}
engines: {node: '>= 10'}
@@ -5076,6 +5178,33 @@ packages:
requiresBuild: true
optional: true
/@next/swc-freebsd-x64/12.3.4:
resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-arm-gnueabihf/12.3.4:
resolution: {integrity: sha512-3zqD3pO+z5CZyxtKDTnOJ2XgFFRUBciOox6EWkoZvJfc9zcidNAQxuwonUeNts6Xbm8Wtm5YGIRC0x+12YH7kw==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-arm64-gnu/12.3.4:
resolution: {integrity: sha512-kiX0vgJGMZVv+oo1QuObaYulXNvdH/IINmvdZnVzMO/jic/B8EEIGlZ8Bgvw8LCjH3zNVPO3mGrdMvnEEPEhKA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-arm64-gnu/13.3.1:
resolution: {integrity: sha512-wRb76nLWJhonH8s3kxC/1tFguEkeOPayIwe9mkaz1G/yeS3OrjeyKMJsb4+Kdg0zbTo53bNCOl59NNtDM7yyyw==}
engines: {node: '>= 10'}
@@ -5084,6 +5213,15 @@ packages:
requiresBuild: true
optional: true
/@next/swc-linux-arm64-musl/12.3.4:
resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-arm64-musl/13.3.1:
resolution: {integrity: sha512-qz3BzjJRZ16Iq/jrp+pjiYOc0jTjHlfmxQmZk9x/+5uhRP6/eWQSTAPVJ33BMo6oK5O5N4644OgTAbzXzorecg==}
engines: {node: '>= 10'}
@@ -5092,6 +5230,15 @@ packages:
requiresBuild: true
optional: true
/@next/swc-linux-x64-gnu/12.3.4:
resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-x64-gnu/13.3.1:
resolution: {integrity: sha512-6mgkLmwlyWlomQmpl21I3hxgqE5INoW4owTlcLpNsd1V4wP+J46BlI/5zV5KWWbzjfncIqzXoeGs5Eg+1GHODA==}
engines: {node: '>= 10'}
@@ -5100,6 +5247,15 @@ packages:
requiresBuild: true
optional: true
/@next/swc-linux-x64-musl/12.3.4:
resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@next/swc-linux-x64-musl/13.3.1:
resolution: {integrity: sha512-uqm5sielhQmKJM+qayIhgZv1KlS5pqTdQ99b+Z7hMWryXS96qE0DftTmMZowBcUL6x7s2vSXyH5wPtO1ON7LBg==}
engines: {node: '>= 10'}
@@ -5108,6 +5264,15 @@ packages:
requiresBuild: true
optional: true
/@next/swc-win32-arm64-msvc/12.3.4:
resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@next/swc-win32-arm64-msvc/13.3.1:
resolution: {integrity: sha512-WomIiTj/v3LevltlibNQKmvrOymNRYL+a0dp5R73IwPWN5FvXWwSELN/kiNALig/+T3luc4qHNTyvMCp9L6U5Q==}
engines: {node: '>= 10'}
@@ -5116,6 +5281,15 @@ packages:
requiresBuild: true
optional: true
/@next/swc-win32-ia32-msvc/12.3.4:
resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@next/swc-win32-ia32-msvc/13.3.1:
resolution: {integrity: sha512-M+PoH+0+q658wRUbs285RIaSTYnGBSTdweH/0CdzDgA6Q4rBM0sQs4DHmO3BPP0ltCO/vViIoyG7ks66XmCA5g==}
engines: {node: '>= 10'}
@@ -5124,6 +5298,15 @@ packages:
requiresBuild: true
optional: true
/@next/swc-win32-x64-msvc/12.3.4:
resolution: {integrity: sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@next/swc-win32-x64-msvc/13.3.1:
resolution: {integrity: sha512-Sl1F4Vp5Z1rNXWZYqJwMuWRRol4bqOB6+/d7KqkgQ4AcafKPN1PZmpkCoxv4UFHtFNIB7EotnuIhtXu3zScicQ==}
engines: {node: '>= 10'}
@@ -9232,6 +9415,12 @@ packages:
'@swc/core-win32-ia32-msvc': 1.3.26
'@swc/core-win32-x64-msvc': 1.3.26
/@swc/helpers/0.4.11:
resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==}
dependencies:
tslib: 2.5.0
dev: false
/@swc/helpers/0.4.14:
resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
dependencies:
@@ -10119,6 +10308,25 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser/5.59.6_eslint@8.44.0:
resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 5.59.6
'@typescript-eslint/types': 5.59.6
'@typescript-eslint/typescript-estree': 5.59.6
debug: 4.3.4
eslint: 8.44.0
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser/5.59.6_iukboom6ndih5an6iafl45j2fe:
resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -10172,6 +10380,26 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/typescript-estree/5.59.6:
resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 5.59.6
'@typescript-eslint/visitor-keys': 5.59.6
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.0
tsutils: 3.21.0
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/typescript-estree/5.59.6_typescript@4.9.4:
resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -10544,6 +10772,14 @@ packages:
acorn: 7.4.1
dev: true
/acorn-jsx/5.3.2_acorn@8.10.0:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
acorn: 8.10.0
dev: true
/acorn-jsx/5.3.2_acorn@8.8.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -10575,6 +10811,12 @@ packages:
hasBin: true
dev: true
/acorn/8.10.0:
resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
/acorn/8.8.1:
resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
engines: {node: '>=0.4.0'}
@@ -11045,7 +11287,7 @@ packages:
/axios/0.26.1:
resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==}
dependencies:
follow-redirects: 1.15.2_debug@4.3.2
follow-redirects: 1.15.2
transitivePeerDependencies:
- debug
dev: false
@@ -11650,7 +11892,6 @@ packages:
/caniuse-lite/1.0.30001504:
resolution: {integrity: sha512-5uo7eoOp2mKbWyfMXnGO9rJWOGU8duvzEiYITW+wivukL7yHH4gX9yuRaobu6El4jPxo6jKZfG+N6fB621GD/Q==}
dev: true
/cartesian/1.0.1:
resolution: {integrity: sha512-tR3qKRYpRJ6FXEGuoBwpuCYcwydrk1N2rduy7eWg1Msepi3i5fCxheryw4VBlCqjCbk3Vhjh3eg+IGHtl5H74A==}
@@ -13378,6 +13619,30 @@ packages:
source-map: 0.6.1
dev: true
/eslint-config-next/12.3.4_eslint@8.44.0:
resolution: {integrity: sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==}
peerDependencies:
eslint: ^7.23.0 || ^8.0.0
typescript: '>=3.3.1'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@next/eslint-plugin-next': 12.3.4
'@rushstack/eslint-patch': 1.2.0
'@typescript-eslint/parser': 5.59.6_eslint@8.44.0
eslint: 8.44.0
eslint-import-resolver-node: 0.3.7
eslint-import-resolver-typescript: 2.7.1_5aj2mp7az734ikavo3m5caonza
eslint-plugin-import: 2.27.5_titmrsdujnhsc3m2skivuhiz64
eslint-plugin-jsx-a11y: 6.7.1_eslint@8.44.0
eslint-plugin-react: 7.32.2_eslint@8.44.0
eslint-plugin-react-hooks: 4.6.0_eslint@8.44.0
transitivePeerDependencies:
- eslint-import-resolver-webpack
- supports-color
dev: true
/eslint-config-next/13.4.6_binxsscxvozjxebftqdoazsxm4:
resolution: {integrity: sha512-nlv4FYish1RYYHILbQwM5/rD37cOvEqtMfDjtQCYbXdE2O3MggqHu2q6IDeLE2Z6u8ZJyNPgWOA6OimWcxj3qw==}
peerDependencies:
@@ -13431,6 +13696,24 @@ packages:
- supports-color
dev: true
/eslint-import-resolver-typescript/2.7.1_5aj2mp7az734ikavo3m5caonza:
resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==}
engines: {node: '>=4'}
peerDependencies:
eslint: '*'
eslint-plugin-import: '*'
dependencies:
debug: 4.3.4
eslint: 8.44.0
eslint-plugin-import: 2.27.5_titmrsdujnhsc3m2skivuhiz64
glob: 7.2.3
is-glob: 4.0.3
resolve: 1.22.2
tsconfig-paths: 3.14.1
transitivePeerDependencies:
- supports-color
dev: true
/eslint-import-resolver-typescript/3.5.5_bsgoee2ktd7nzirwexa3gasa7m:
resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -13479,6 +13762,36 @@ packages:
- supports-color
dev: true
/eslint-module-utils/2.7.4_a6bibqgukfazq44vzod5qi7kby:
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
eslint: '*'
eslint-import-resolver-node: '*'
eslint-import-resolver-typescript: '*'
eslint-import-resolver-webpack: '*'
peerDependenciesMeta:
'@typescript-eslint/parser':
optional: true
eslint:
optional: true
eslint-import-resolver-node:
optional: true
eslint-import-resolver-typescript:
optional: true
eslint-import-resolver-webpack:
optional: true
dependencies:
'@typescript-eslint/parser': 5.59.6_eslint@8.44.0
debug: 3.2.7
eslint: 8.44.0
eslint-import-resolver-node: 0.3.7
eslint-import-resolver-typescript: 2.7.1_5aj2mp7az734ikavo3m5caonza
transitivePeerDependencies:
- supports-color
dev: true
/eslint-module-utils/2.7.4_hhwxwo5vg2mzr5fq3eei7kqaye:
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
engines: {node: '>=4'}
@@ -13616,6 +13929,39 @@ packages:
- supports-color
dev: true
/eslint-plugin-import/2.27.5_titmrsdujnhsc3m2skivuhiz64:
resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
peerDependenciesMeta:
'@typescript-eslint/parser':
optional: true
dependencies:
'@typescript-eslint/parser': 5.59.6_eslint@8.44.0
array-includes: 3.1.6
array.prototype.flat: 1.3.1
array.prototype.flatmap: 1.3.1
debug: 3.2.7
doctrine: 2.1.0
eslint: 8.44.0
eslint-import-resolver-node: 0.3.7
eslint-module-utils: 2.7.4_a6bibqgukfazq44vzod5qi7kby
has: 1.0.3
is-core-module: 2.11.0
is-glob: 4.0.3
minimatch: 3.1.2
object.values: 1.1.6
resolve: 1.22.2
semver: 6.3.0
tsconfig-paths: 3.14.1
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
dev: true
/eslint-plugin-jest-dom/4.0.3_eslint@8.31.0:
resolution: {integrity: sha512-9j+n8uj0+V0tmsoS7bYC7fLhQmIvjRqRYEcbDSi+TKPsTThLLXCyj5swMSSf/hTleeMktACnn+HFqXBr5gbcbA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1'}
@@ -13699,6 +14045,31 @@ packages:
semver: 6.3.0
dev: true
/eslint-plugin-jsx-a11y/6.7.1_eslint@8.44.0:
resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
engines: {node: '>=4.0'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
'@babel/runtime': 7.22.5
aria-query: 5.1.3
array-includes: 3.1.6
array.prototype.flatmap: 1.3.1
ast-types-flow: 0.0.7
axe-core: 4.6.2
axobject-query: 3.1.1
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
eslint: 8.44.0
has: 1.0.3
jsx-ast-utils: 3.3.3
language-tags: 1.0.5
minimatch: 3.1.2
object.entries: 1.1.6
object.fromentries: 2.0.6
semver: 6.3.0
dev: true
/eslint-plugin-node/11.1.0_eslint@8.31.0:
resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==}
engines: {node: '>=8.10.0'}
@@ -13732,6 +14103,15 @@ packages:
eslint: 8.42.0
dev: true
/eslint-plugin-react-hooks/4.6.0_eslint@8.44.0:
resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
engines: {node: '>=10'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
dependencies:
eslint: 8.44.0
dev: true
/eslint-plugin-react/7.31.8_eslint@8.31.0:
resolution: {integrity: sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==}
engines: {node: '>=4'}
@@ -13803,6 +14183,30 @@ packages:
string.prototype.matchall: 4.0.8
dev: true
/eslint-plugin-react/7.32.2_eslint@8.44.0:
resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
engines: {node: '>=4'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
array-includes: 3.1.6
array.prototype.flatmap: 1.3.1
array.prototype.tosorted: 1.1.1
doctrine: 2.1.0
eslint: 8.44.0
estraverse: 5.3.0
jsx-ast-utils: 3.3.3
minimatch: 3.1.2
object.entries: 1.1.6
object.fromentries: 2.0.6
object.hasown: 1.1.2
object.values: 1.1.6
prop-types: 15.8.1
resolve: 2.0.0-next.4
semver: 6.3.0
string.prototype.matchall: 4.0.8
dev: true
/eslint-plugin-testing-library/5.11.0_iukboom6ndih5an6iafl45j2fe:
resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
@@ -13982,6 +14386,54 @@ packages:
- supports-color
dev: true
/eslint/8.44.0:
resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0_eslint@8.44.0
'@eslint-community/regexpp': 4.5.1
'@eslint/eslintrc': 2.1.0
'@eslint/js': 8.44.0
'@humanwhocodes/config-array': 0.11.10
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.0
eslint-visitor-keys: 3.4.1
espree: 9.6.0
esquery: 1.5.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
find-up: 5.0.0
glob-parent: 6.0.2
globals: 13.19.0
graphemer: 1.4.0
ignore: 5.2.4
import-fresh: 3.3.0
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.3
strip-ansi: 6.0.1
strip-json-comments: 3.1.1
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
dev: true
/espree/9.4.1:
resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -14000,6 +14452,15 @@ packages:
eslint-visitor-keys: 3.4.1
dev: true
/espree/9.6.0:
resolution: {integrity: sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
acorn: 8.10.0
acorn-jsx: 5.3.2_acorn@8.10.0
eslint-visitor-keys: 3.4.1
dev: true
/esprima/4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
@@ -17743,6 +18204,51 @@ packages:
engines: {node: '>= 0.4.0'}
dev: true
/next/12.3.4_biqbaboplfbrettd7655fr4n2y:
resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==}
engines: {node: '>=12.22.0'}
hasBin: true
peerDependencies:
fibers: '>= 3.1.0'
node-sass: ^6.0.0 || ^7.0.0
react: ^17.0.2 || ^18.0.0-0
react-dom: ^17.0.2 || ^18.0.0-0
sass: ^1.3.0
peerDependenciesMeta:
fibers:
optional: true
node-sass:
optional: true
sass:
optional: true
dependencies:
'@next/env': 12.3.4
'@swc/helpers': 0.4.11
caniuse-lite: 1.0.30001504
postcss: 8.4.14
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
styled-jsx: 5.0.7_react@18.2.0
use-sync-external-store: 1.2.0_react@18.2.0
optionalDependencies:
'@next/swc-android-arm-eabi': 12.3.4
'@next/swc-android-arm64': 12.3.4
'@next/swc-darwin-arm64': 12.3.4
'@next/swc-darwin-x64': 12.3.4
'@next/swc-freebsd-x64': 12.3.4
'@next/swc-linux-arm-gnueabihf': 12.3.4
'@next/swc-linux-arm64-gnu': 12.3.4
'@next/swc-linux-arm64-musl': 12.3.4
'@next/swc-linux-x64-gnu': 12.3.4
'@next/swc-linux-x64-musl': 12.3.4
'@next/swc-win32-arm64-msvc': 12.3.4
'@next/swc-win32-ia32-msvc': 12.3.4
'@next/swc-win32-x64-msvc': 12.3.4
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
dev: false
/next/13.3.1:
resolution: {integrity: sha512-eByWRxPzKHs2oQz1yE41LX35umhz86ZSZ+mYyXBqn2IBi2hyUqxBA88avywdr4uyH+hCJczegGsDGWbzQA5Rqw==}
engines: {node: '>=14.18.0'}
@@ -18231,6 +18737,18 @@ packages:
word-wrap: 1.2.3
dev: true
/optionator/0.9.3:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
engines: {node: '>= 0.8.0'}
dependencies:
'@aashutoshrathi/word-wrap': 1.2.6
deep-is: 0.1.4
fast-levenshtein: 2.0.6
levn: 0.4.1
prelude-ls: 1.2.1
type-check: 0.4.0
dev: true
/ora/5.4.1:
resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
engines: {node: '>=10'}
@@ -21032,6 +21550,22 @@ packages:
inline-style-parser: 0.1.1
dev: true
/styled-jsx/5.0.7_react@18.2.0:
resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==}
engines: {node: '>= 12.0.0'}
peerDependencies:
'@babel/core': '*'
babel-plugin-macros: '*'
react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
peerDependenciesMeta:
'@babel/core':
optional: true
babel-plugin-macros:
optional: true
dependencies:
react: 18.2.0
dev: false
/styled-jsx/5.1.1:
resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
engines: {node: '>= 12.0.0'}
@@ -21743,6 +22277,15 @@ packages:
- ts-node
dev: true
/tsutils/3.21.0:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
dev: true
/tsutils/3.21.0_typescript@4.9.4:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
@@ -22267,6 +22810,14 @@ packages:
tslib: 2.5.0
dev: false
/use-sync-external-store/1.2.0_react@18.2.0:
resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
dependencies:
react: 18.2.0
dev: false
/use/3.1.1:
resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
engines: {node: '>=0.10.0'}