Adding the typeform integration with webhook support
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
"@trigger.dev/integration-kit": patch
|
||||||
|
"@trigger.dev/sdk": patch
|
||||||
|
"@trigger.dev/typeform": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Creating the typeform integration package
|
||||||
@@ -180,6 +180,10 @@ export const apisList = [
|
|||||||
identifier: "spotify",
|
identifier: "spotify",
|
||||||
name: "Spotify",
|
name: "Spotify",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
identifier: "stabilityai",
|
||||||
|
name: "Stability AI",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
identifier: "stripe",
|
identifier: "stripe",
|
||||||
name: "Stripe",
|
name: "Stripe",
|
||||||
@@ -204,6 +208,10 @@ export const apisList = [
|
|||||||
identifier: "twitter",
|
identifier: "twitter",
|
||||||
name: "Twitter",
|
name: "Twitter",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
identifier: "typeform",
|
||||||
|
name: "Typeform",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
identifier: "whatsapp",
|
identifier: "whatsapp",
|
||||||
name: "WhatsApp",
|
name: "WhatsApp",
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
"@remix-run/server-runtime": "1.18.1",
|
"@remix-run/server-runtime": "1.18.1",
|
||||||
"@tanstack/react-table": "^8.0.0-alpha.87",
|
"@tanstack/react-table": "^8.0.0-alpha.87",
|
||||||
"@team-plain/typescript-sdk": "^2.2.0",
|
"@team-plain/typescript-sdk": "^2.2.0",
|
||||||
"@trigger.dev/companyicons": "^1.5.10",
|
"@trigger.dev/companyicons": "^1.5.14",
|
||||||
"@trigger.dev/database": "workspace:*",
|
"@trigger.dev/database": "workspace:*",
|
||||||
"@trigger.dev/internal": "workspace:*",
|
"@trigger.dev/internal": "workspace:*",
|
||||||
"@typeform/embed-react": "^2.14.1",
|
"@typeform/embed-react": "^2.14.1",
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
"@trigger.dev/sdk": "workspace:*",
|
"@trigger.dev/sdk": "workspace:*",
|
||||||
"@trigger.dev/slack": "workspace:*",
|
"@trigger.dev/slack": "workspace:*",
|
||||||
"@trigger.dev/resend": "workspace:*",
|
"@trigger.dev/resend": "workspace:*",
|
||||||
|
"@trigger.dev/typeform": "workspace:*",
|
||||||
"@types/node": "18.15.13",
|
"@types/node": "18.15.13",
|
||||||
"@types/react": "^18.0.21",
|
"@types/react": "^18.0.21",
|
||||||
"@types/react-dom": "^18.0.6",
|
"@types/react-dom": "^18.0.6",
|
||||||
@@ -36,4 +37,4 @@
|
|||||||
"trigger.dev": {
|
"trigger.dev": {
|
||||||
"endpointId": "nextjs-example"
|
"endpointId": "nextjs-example"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
import { client } from "@/trigger";
|
||||||
|
import { Typeform, events } from "@trigger.dev/typeform";
|
||||||
|
import { Job, eventTrigger } from "@trigger.dev/sdk";
|
||||||
|
import { DynamicTrigger } from "@trigger.dev/sdk";
|
||||||
|
|
||||||
|
export const typeform = new Typeform({
|
||||||
|
id: "typeform-1",
|
||||||
|
token: process.env.TYPEFORM_API_KEY!,
|
||||||
|
});
|
||||||
|
|
||||||
|
new Job(client, {
|
||||||
|
id: "typeform-playground",
|
||||||
|
name: "Typeform Playground",
|
||||||
|
version: "0.1.1",
|
||||||
|
integrations: {
|
||||||
|
typeform,
|
||||||
|
},
|
||||||
|
trigger: eventTrigger({
|
||||||
|
name: "typeform.playground",
|
||||||
|
}),
|
||||||
|
run: async (payload, io, ctx) => {
|
||||||
|
await io.typeform.listForms("list-forms");
|
||||||
|
|
||||||
|
if (payload.formId) {
|
||||||
|
const form = await io.typeform.getForm("get-form", {
|
||||||
|
uid: payload.formId,
|
||||||
|
});
|
||||||
|
|
||||||
|
const listResponses = await io.typeform.listResponses("list-responses", {
|
||||||
|
uid: payload.formId,
|
||||||
|
pageSize: 50,
|
||||||
|
});
|
||||||
|
|
||||||
|
const allResponses = await io.typeform.getAllResponses(
|
||||||
|
"get-all-responses",
|
||||||
|
{
|
||||||
|
uid: payload.formId,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
new Job(client, {
|
||||||
|
id: "typeform-webhook-2",
|
||||||
|
name: "Typeform Webhook 2",
|
||||||
|
version: "0.1.1",
|
||||||
|
trigger: typeform.onFormResponse({
|
||||||
|
uid: "QQnotGJM",
|
||||||
|
tag: "tag3",
|
||||||
|
}),
|
||||||
|
run: async (payload, io, ctx) => {},
|
||||||
|
});
|
||||||
|
|
||||||
|
const dynamicTrigger = new DynamicTrigger(client, {
|
||||||
|
id: "typeform-dynamic-trigger",
|
||||||
|
source: typeform.source,
|
||||||
|
event: events.onFormResponse,
|
||||||
|
});
|
||||||
@@ -5,6 +5,7 @@ import "@/jobs/openai";
|
|||||||
import "@/jobs/resend";
|
import "@/jobs/resend";
|
||||||
import "@/jobs/general";
|
import "@/jobs/general";
|
||||||
import "@/jobs/slack";
|
import "@/jobs/slack";
|
||||||
|
import "@/jobs/typeform";
|
||||||
import "@/jobs/logging";
|
import "@/jobs/logging";
|
||||||
import "@/jobs/schedules";
|
import "@/jobs/schedules";
|
||||||
import "@/jobs/events";
|
import "@/jobs/events";
|
||||||
|
|||||||
@@ -35,7 +35,9 @@
|
|||||||
"@trigger.dev/openai": ["../../integrations/openai/src/index"],
|
"@trigger.dev/openai": ["../../integrations/openai/src/index"],
|
||||||
"@trigger.dev/openai/*": ["../../integrations/openai/src/*"],
|
"@trigger.dev/openai/*": ["../../integrations/openai/src/*"],
|
||||||
"@trigger.dev/resend": ["../../integrations/resend/src/index"],
|
"@trigger.dev/resend": ["../../integrations/resend/src/index"],
|
||||||
"@trigger.dev/resend/*": ["../../integrations/resend/src/*"]
|
"@trigger.dev/resend/*": ["../../integrations/resend/src/*"],
|
||||||
|
"@trigger.dev/typeform": ["../../integrations/typeform/src/index"],
|
||||||
|
"@trigger.dev/typeform/*": ["../../integrations/typeform/src/*"]
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "@trigger.dev/typeform",
|
||||||
|
"version": "1.0.0-next.2",
|
||||||
|
"description": "The official Typeform integration for Trigger.dev",
|
||||||
|
"main": "./dist/index.js",
|
||||||
|
"types": "./dist/index.d.ts",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist/index.js",
|
||||||
|
"dist/index.d.ts",
|
||||||
|
"dist/index.js.map"
|
||||||
|
],
|
||||||
|
"devDependencies": {
|
||||||
|
"@trigger.dev/tsconfig": "workspace:*",
|
||||||
|
"@types/node": "18",
|
||||||
|
"rimraf": "^3.0.2",
|
||||||
|
"tsup": "^6.5.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"clean": "rimraf dist",
|
||||||
|
"build": "npm run clean && npm run build:tsup",
|
||||||
|
"build:tsup": "tsup"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@typeform/api-client": "^1.8.0",
|
||||||
|
"@trigger.dev/sdk": "workspace:^2.0.0-next.8",
|
||||||
|
"@trigger.dev/integration-kit": "workspace:^2.0.0-next.2",
|
||||||
|
"zod": "3.20.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export const SOURCE = "typeform.com";
|
||||||
@@ -0,0 +1,286 @@
|
|||||||
|
import { createClient } from "@typeform/api-client";
|
||||||
|
|
||||||
|
import { tasks } from "./tasks";
|
||||||
|
import {
|
||||||
|
FormResponseEvent,
|
||||||
|
GetWebhookResponse,
|
||||||
|
TypeformIntegrationOptions,
|
||||||
|
TypeformSDK,
|
||||||
|
} from "./types";
|
||||||
|
import {
|
||||||
|
TriggerIntegration,
|
||||||
|
IntegrationClient,
|
||||||
|
ExternalSource,
|
||||||
|
HandlerEvent,
|
||||||
|
Logger,
|
||||||
|
ExternalSourceTrigger,
|
||||||
|
EventSpecification,
|
||||||
|
} from "@trigger.dev/sdk";
|
||||||
|
import { createHmac } from "node:crypto";
|
||||||
|
import { z } from "zod";
|
||||||
|
import { formResponseExample } from "./payload-examples";
|
||||||
|
import { safeParseBody } from "@trigger.dev/integration-kit/webhooks";
|
||||||
|
import { SOURCE } from "./consts";
|
||||||
|
|
||||||
|
export * from "./types";
|
||||||
|
|
||||||
|
type TypeformIntegration = TriggerIntegration<TypeformIntegrationClient>;
|
||||||
|
type TypeformIntegrationClient = IntegrationClient<TypeformSDK, typeof tasks>;
|
||||||
|
|
||||||
|
type TypeformSource = ReturnType<typeof createWebhookEventSource>;
|
||||||
|
type TypeformTrigger = ReturnType<typeof createWebhookEventTrigger>;
|
||||||
|
|
||||||
|
export class Typeform implements TypeformIntegration {
|
||||||
|
client: TypeformIntegrationClient;
|
||||||
|
|
||||||
|
constructor(private options: TypeformIntegrationOptions) {
|
||||||
|
this.client = {
|
||||||
|
tasks,
|
||||||
|
usesLocalAuth: true,
|
||||||
|
client: createClient({ token: options.token }),
|
||||||
|
auth: {
|
||||||
|
token: options.token,
|
||||||
|
apiBaseUrl: options.apiBaseUrl,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
get id() {
|
||||||
|
return this.options.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
get metadata() {
|
||||||
|
return { id: "typeform", name: "Typeform" };
|
||||||
|
}
|
||||||
|
|
||||||
|
get source(): TypeformSource {
|
||||||
|
return createWebhookEventSource(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
get trigger(): TypeformTrigger {
|
||||||
|
return createWebhookEventTrigger(this.source);
|
||||||
|
}
|
||||||
|
|
||||||
|
onFormResponse(params: { uid: string; tag: string }) {
|
||||||
|
return this.trigger({
|
||||||
|
event: events.onFormResponse,
|
||||||
|
uid: params.uid,
|
||||||
|
tag: params.tag,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const onFormResponse: EventSpecification<FormResponseEvent> = {
|
||||||
|
name: "form_response",
|
||||||
|
title: "On issue",
|
||||||
|
source: SOURCE,
|
||||||
|
icon: "typeform",
|
||||||
|
examples: [formResponseExample],
|
||||||
|
parsePayload: (payload) => payload as FormResponseEvent,
|
||||||
|
runProperties: (payload) => [
|
||||||
|
{ label: "Form ID", text: payload.form_response.form_id },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export const events = {
|
||||||
|
onFormResponse,
|
||||||
|
};
|
||||||
|
|
||||||
|
type TypeformEvents = (typeof events)[keyof typeof events];
|
||||||
|
|
||||||
|
type CreateTypeformTriggerReturnType = <
|
||||||
|
TEventSpecification extends TypeformEvents
|
||||||
|
>(args: {
|
||||||
|
event: TEventSpecification;
|
||||||
|
uid: string;
|
||||||
|
tag: string;
|
||||||
|
}) => ExternalSourceTrigger<
|
||||||
|
TEventSpecification,
|
||||||
|
ReturnType<typeof createWebhookEventSource>
|
||||||
|
>;
|
||||||
|
|
||||||
|
function createWebhookEventTrigger(
|
||||||
|
source: ReturnType<typeof createWebhookEventSource>
|
||||||
|
): CreateTypeformTriggerReturnType {
|
||||||
|
return <TEventSpecification extends TypeformEvents>({
|
||||||
|
event,
|
||||||
|
uid,
|
||||||
|
tag,
|
||||||
|
}: {
|
||||||
|
event: TEventSpecification;
|
||||||
|
uid: string;
|
||||||
|
tag: string;
|
||||||
|
}) => {
|
||||||
|
return new ExternalSourceTrigger({
|
||||||
|
event,
|
||||||
|
params: { uid, tag },
|
||||||
|
source,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const WebhookSchema = z.object({
|
||||||
|
uid: z.string(),
|
||||||
|
tag: z.string(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export function createWebhookEventSource(
|
||||||
|
integration: TypeformIntegration
|
||||||
|
): ExternalSource<TypeformIntegration, { uid: string; tag: string }, "HTTP"> {
|
||||||
|
return new ExternalSource("HTTP", {
|
||||||
|
id: "typeform.forms",
|
||||||
|
schema: WebhookSchema,
|
||||||
|
version: "0.1.1",
|
||||||
|
integration,
|
||||||
|
filter: (params) => {
|
||||||
|
return {
|
||||||
|
event_type: ["form_response"],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
key: (params) => `${params.uid}/${params.tag}`,
|
||||||
|
properties: (params) => [
|
||||||
|
{
|
||||||
|
label: "Form ID",
|
||||||
|
text: params.uid,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Tag",
|
||||||
|
text: params.tag,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
handler: webhookHandler,
|
||||||
|
register: async (event, io, ctx) => {
|
||||||
|
const { params, source: httpSource } = event;
|
||||||
|
|
||||||
|
if (
|
||||||
|
httpSource.active &&
|
||||||
|
isWebhookData(httpSource.data) &&
|
||||||
|
!httpSource.data.enabled
|
||||||
|
) {
|
||||||
|
// Update the webhook to re-enable it
|
||||||
|
const newWebhookData = await io.integration.updateWebhook(
|
||||||
|
"update-webhook",
|
||||||
|
{
|
||||||
|
uid: params.uid,
|
||||||
|
tag: params.tag,
|
||||||
|
url: httpSource.url,
|
||||||
|
enabled: true,
|
||||||
|
secret: httpSource.secret,
|
||||||
|
verifySSL: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return {
|
||||||
|
data: newWebhookData,
|
||||||
|
registeredEvents: ["form_response"],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const existingWebhook = await io.integration.getWebhook(
|
||||||
|
"get-webhook",
|
||||||
|
params
|
||||||
|
);
|
||||||
|
|
||||||
|
if (existingWebhook.enabled) {
|
||||||
|
return {
|
||||||
|
data: existingWebhook,
|
||||||
|
registeredEvents: ["form_response"],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const newWebhookData = await io.integration.updateWebhook(
|
||||||
|
"update-webhook",
|
||||||
|
{
|
||||||
|
uid: params.uid,
|
||||||
|
tag: params.tag,
|
||||||
|
url: httpSource.url,
|
||||||
|
enabled: true,
|
||||||
|
secret: httpSource.secret,
|
||||||
|
verifySSL: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return {
|
||||||
|
data: newWebhookData,
|
||||||
|
registeredEvents: ["all"],
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
const newWebhookData = await io.integration.createWebhook(
|
||||||
|
"create-webhook",
|
||||||
|
{
|
||||||
|
uid: params.uid,
|
||||||
|
tag: params.tag,
|
||||||
|
url: httpSource.url,
|
||||||
|
enabled: true,
|
||||||
|
secret: httpSource.secret,
|
||||||
|
verifySSL: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return {
|
||||||
|
data: newWebhookData,
|
||||||
|
registeredEvents: ["all"],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function webhookHandler(event: HandlerEvent<"HTTP">, logger: Logger) {
|
||||||
|
logger.debug(
|
||||||
|
"[inside typeform integration] Handling typeform webhook handler"
|
||||||
|
);
|
||||||
|
|
||||||
|
const { rawEvent: request, source } = event;
|
||||||
|
|
||||||
|
if (!request.body) {
|
||||||
|
logger.debug("[inside typeform integration] No body found");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const rawBody = await request.text();
|
||||||
|
|
||||||
|
const signature = request.headers.get("typeform-signature");
|
||||||
|
|
||||||
|
if (!signature) {
|
||||||
|
logger.debug("[inside typeform integration] No signature found");
|
||||||
|
|
||||||
|
return { events: [] };
|
||||||
|
}
|
||||||
|
|
||||||
|
const hash = createHmac("sha256", source.secret)
|
||||||
|
.update(rawBody)
|
||||||
|
.digest("base64");
|
||||||
|
|
||||||
|
const actualSig = `sha256=${hash}`;
|
||||||
|
|
||||||
|
if (signature !== actualSig) {
|
||||||
|
logger.debug(
|
||||||
|
"[inside typeform integration] Signature does not match, ignoring"
|
||||||
|
);
|
||||||
|
|
||||||
|
return { events: [] };
|
||||||
|
}
|
||||||
|
|
||||||
|
const payload = safeParseBody(rawBody);
|
||||||
|
|
||||||
|
return {
|
||||||
|
events: [
|
||||||
|
{
|
||||||
|
id: payload.event_id,
|
||||||
|
name: payload.event_type,
|
||||||
|
source: SOURCE,
|
||||||
|
payload,
|
||||||
|
context: {},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function isWebhookData(data: any): data is GetWebhookResponse {
|
||||||
|
return (
|
||||||
|
typeof data === "object" && data !== null && typeof data.id === "string"
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,280 @@
|
|||||||
|
import { EventSpecificationExample } from "@trigger.dev/sdk";
|
||||||
|
|
||||||
|
export const formResponseExample: EventSpecificationExample = {
|
||||||
|
id: "form_response",
|
||||||
|
name: "Form response",
|
||||||
|
payload: {
|
||||||
|
event_id: "LtWXD3crgy",
|
||||||
|
event_type: "form_response",
|
||||||
|
form_response: {
|
||||||
|
form_id: "lT4Z3j",
|
||||||
|
token: "a3a12ec67a1365927098a606107fac15",
|
||||||
|
submitted_at: "2018-01-18T18:17:02Z",
|
||||||
|
landed_at: "2018-01-18T18:07:02Z",
|
||||||
|
calculated: {
|
||||||
|
score: 9,
|
||||||
|
},
|
||||||
|
variables: [
|
||||||
|
{
|
||||||
|
key: "score",
|
||||||
|
type: "number",
|
||||||
|
number: 4,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "name",
|
||||||
|
type: "text",
|
||||||
|
text: "typeform",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
hidden: {
|
||||||
|
user_id: "abc123456",
|
||||||
|
},
|
||||||
|
definition: {
|
||||||
|
id: "lT4Z3j",
|
||||||
|
title: "Webhooks example",
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
id: "DlXFaesGBpoF",
|
||||||
|
title:
|
||||||
|
"Thanks, {{answer_60906475}}! What's it like where you live? Tell us in a few sentences.",
|
||||||
|
type: "long_text",
|
||||||
|
ref: "readable_ref_long_text",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "SMEUb7VJz92Q",
|
||||||
|
title:
|
||||||
|
"If you're OK with our city management following up if they have further questions, please give us your email address.",
|
||||||
|
type: "email",
|
||||||
|
ref: "readable_ref_email",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "JwWggjAKtOkA",
|
||||||
|
title: "What is your first name?",
|
||||||
|
type: "short_text",
|
||||||
|
ref: "readable_ref_short_text",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "KoJxDM3c6x8h",
|
||||||
|
title: "When did you move to the place where you live?",
|
||||||
|
type: "date",
|
||||||
|
ref: "readable_ref_date",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "PNe8ZKBK8C2Q",
|
||||||
|
title:
|
||||||
|
"Which pictures do you like? You can choose as many as you like.",
|
||||||
|
type: "picture_choice",
|
||||||
|
ref: "readable_ref_picture_choice",
|
||||||
|
allow_multiple_selections: true,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "Q7M2XAwY04dW",
|
||||||
|
title:
|
||||||
|
"On a scale of 1 to 5, what rating would you give the weather in Sydney? 1 is poor weather, 5 is excellent weather",
|
||||||
|
type: "number",
|
||||||
|
ref: "readable_ref_number1",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "gFFf3xAkJKsr",
|
||||||
|
title:
|
||||||
|
"By submitting this form, you understand and accept that we will share your answers with city management. Your answers will be anonymous will not be shared.",
|
||||||
|
type: "legal",
|
||||||
|
ref: "readable_ref_legal",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "k6TP9oLGgHjl",
|
||||||
|
title: "Which of these cities is your favorite?",
|
||||||
|
type: "multiple_choice",
|
||||||
|
ref: "readable_ref_multiple_choice",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "RUqkXSeXBXSd",
|
||||||
|
title: "Do you have a favorite city we haven't listed?",
|
||||||
|
type: "yes_no",
|
||||||
|
ref: "readable_ref_yes_no",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "NRsxU591jIW9",
|
||||||
|
title:
|
||||||
|
"How important is the weather to your opinion about a city? 1 is not important, 5 is very important.",
|
||||||
|
type: "opinion_scale",
|
||||||
|
ref: "readable_ref_opinion_scale",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "WOTdC00F8A3h",
|
||||||
|
title:
|
||||||
|
"How would you rate the weather where you currently live? 1 is poor weather, 5 is excellent weather.",
|
||||||
|
type: "rating",
|
||||||
|
ref: "readable_ref_rating",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "pn48RmPazVdM",
|
||||||
|
title:
|
||||||
|
"On a scale of 1 to 5, what rating would you give the general quality of life in Sydney? 1 is poor, 5 is excellent",
|
||||||
|
type: "number",
|
||||||
|
ref: "readable_ref_number2",
|
||||||
|
allow_multiple_selections: false,
|
||||||
|
allow_other_choice: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "M5tXK5kG7IeA",
|
||||||
|
title: "Book a time with me",
|
||||||
|
type: "calendly",
|
||||||
|
ref: "readable_ref_calendly",
|
||||||
|
properties: {},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
endings: [
|
||||||
|
{
|
||||||
|
id: "dN5FLyFpCMFo",
|
||||||
|
ref: "01GRC8GR2017M6WW347T86VV39",
|
||||||
|
title: "Bye!",
|
||||||
|
type: "thankyou_screen",
|
||||||
|
properties: {
|
||||||
|
button_text: "Create a typeform",
|
||||||
|
show_button: true,
|
||||||
|
share_icons: true,
|
||||||
|
button_mode: "default_redirect",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
answers: [
|
||||||
|
{
|
||||||
|
type: "text",
|
||||||
|
text: "It's cold right now! I live in an older medium-sized city with a university. Geographically, the area is hilly.",
|
||||||
|
field: {
|
||||||
|
id: "DlXFaesGBpoF",
|
||||||
|
type: "long_text",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "email",
|
||||||
|
email: "laura@example.com",
|
||||||
|
field: {
|
||||||
|
id: "SMEUb7VJz92Q",
|
||||||
|
type: "email",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "text",
|
||||||
|
text: "Laura",
|
||||||
|
field: {
|
||||||
|
id: "JwWggjAKtOkA",
|
||||||
|
type: "short_text",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "date",
|
||||||
|
date: "2005-10-15",
|
||||||
|
field: {
|
||||||
|
id: "KoJxDM3c6x8h",
|
||||||
|
type: "date",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "choices",
|
||||||
|
choices: {
|
||||||
|
labels: ["London", "Sydney"],
|
||||||
|
},
|
||||||
|
field: {
|
||||||
|
id: "PNe8ZKBK8C2Q",
|
||||||
|
type: "picture_choice",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "number",
|
||||||
|
number: 5,
|
||||||
|
field: {
|
||||||
|
id: "Q7M2XAwY04dW",
|
||||||
|
type: "number",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "boolean",
|
||||||
|
boolean: true,
|
||||||
|
field: {
|
||||||
|
id: "gFFf3xAkJKsr",
|
||||||
|
type: "legal",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "choice",
|
||||||
|
choice: {
|
||||||
|
label: "London",
|
||||||
|
},
|
||||||
|
field: {
|
||||||
|
id: "k6TP9oLGgHjl",
|
||||||
|
type: "multiple_choice",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "boolean",
|
||||||
|
boolean: false,
|
||||||
|
field: {
|
||||||
|
id: "RUqkXSeXBXSd",
|
||||||
|
type: "yes_no",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "number",
|
||||||
|
number: 2,
|
||||||
|
field: {
|
||||||
|
id: "NRsxU591jIW9",
|
||||||
|
type: "opinion_scale",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "number",
|
||||||
|
number: 3,
|
||||||
|
field: {
|
||||||
|
id: "WOTdC00F8A3h",
|
||||||
|
type: "rating",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "number",
|
||||||
|
number: 4,
|
||||||
|
field: {
|
||||||
|
id: "pn48RmPazVdM",
|
||||||
|
type: "number",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "url",
|
||||||
|
url: "https://calendly.com/scheduled_events/EVENT_TYPE/invitees/INVITEE",
|
||||||
|
field: {
|
||||||
|
id: "M5tXK5kG7IeA",
|
||||||
|
type: "calendly",
|
||||||
|
ref: "readable_ref_calendly",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ending: {
|
||||||
|
id: "dN5FLyFpCMFo",
|
||||||
|
ref: "01GRC8GR2017M6WW347T86VV39",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -0,0 +1,291 @@
|
|||||||
|
import type { AuthenticatedTask } from "@trigger.dev/sdk";
|
||||||
|
import { Typeform } from "@typeform/api-client";
|
||||||
|
import type {
|
||||||
|
CreateWebhookParams,
|
||||||
|
DeleteWebhookParams,
|
||||||
|
DeleteWebhookResponse,
|
||||||
|
GetAllResponsesParams,
|
||||||
|
GetAllResponsesResponse,
|
||||||
|
GetFormParams,
|
||||||
|
GetFormResponse,
|
||||||
|
GetWebhookParams,
|
||||||
|
GetWebhookResponse,
|
||||||
|
ListFormsParams,
|
||||||
|
ListResponsesParams,
|
||||||
|
ListResponsesResponse,
|
||||||
|
ListWebhooksParams,
|
||||||
|
ListWebhooksResponse,
|
||||||
|
TypeformSDK,
|
||||||
|
UpdateWebhookParams,
|
||||||
|
} from "./types";
|
||||||
|
|
||||||
|
const listForms: AuthenticatedTask<
|
||||||
|
TypeformSDK,
|
||||||
|
ListFormsParams,
|
||||||
|
Typeform.API.Forms.List
|
||||||
|
> = {
|
||||||
|
run: async (params, client) => {
|
||||||
|
return client.forms.list(params ?? {});
|
||||||
|
},
|
||||||
|
init: (params) => {
|
||||||
|
return {
|
||||||
|
name: "List Forms",
|
||||||
|
params,
|
||||||
|
icon: "typeform",
|
||||||
|
properties: [
|
||||||
|
...(params?.workspaceId
|
||||||
|
? [{ label: "Workspace ID", text: params.workspaceId }]
|
||||||
|
: []),
|
||||||
|
...(params?.search ? [{ label: "Search", text: params.search }] : []),
|
||||||
|
...(params?.page ? [{ label: "Page", text: String(params.page) }] : []),
|
||||||
|
...(params?.pageSize
|
||||||
|
? [{ label: "Page Size", text: String(params.pageSize) }]
|
||||||
|
: []),
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const getForm: AuthenticatedTask<TypeformSDK, GetFormParams, GetFormResponse> =
|
||||||
|
{
|
||||||
|
run: async (params, client) => {
|
||||||
|
return client.forms.get(params);
|
||||||
|
},
|
||||||
|
init: (params) => {
|
||||||
|
return {
|
||||||
|
name: "Get Form",
|
||||||
|
params,
|
||||||
|
icon: "typeform",
|
||||||
|
properties: [
|
||||||
|
{
|
||||||
|
label: "Form ID",
|
||||||
|
text: params.uid,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const listResponses: AuthenticatedTask<
|
||||||
|
TypeformSDK,
|
||||||
|
ListResponsesParams,
|
||||||
|
ListResponsesResponse
|
||||||
|
> = {
|
||||||
|
run: async (params, client) => {
|
||||||
|
return client.responses.list(params);
|
||||||
|
},
|
||||||
|
init: (params) => {
|
||||||
|
return {
|
||||||
|
name: "List Responses",
|
||||||
|
params,
|
||||||
|
icon: "typeform",
|
||||||
|
properties: [
|
||||||
|
{
|
||||||
|
label: "Form ID",
|
||||||
|
text: params.uid,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const getAllResponses: AuthenticatedTask<
|
||||||
|
TypeformSDK,
|
||||||
|
GetAllResponsesParams,
|
||||||
|
GetAllResponsesResponse
|
||||||
|
> = {
|
||||||
|
run: async (params, client, task, io, auth) => {
|
||||||
|
// We're going to create a subtask for each page of responses
|
||||||
|
|
||||||
|
const pageSize = 50;
|
||||||
|
|
||||||
|
async function listResponsesForPage(page: number) {
|
||||||
|
// @ts-ignore
|
||||||
|
// This is needed because of the index signature on the response type
|
||||||
|
return await io.runTask<ListResponsesResponse>(
|
||||||
|
`page-${page}`,
|
||||||
|
listResponses.init(params),
|
||||||
|
async (t, io) => {
|
||||||
|
const subResponse = await listResponses.run(
|
||||||
|
params,
|
||||||
|
client,
|
||||||
|
t,
|
||||||
|
io,
|
||||||
|
auth
|
||||||
|
);
|
||||||
|
|
||||||
|
return subResponse;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const firstPage = await listResponsesForPage(1);
|
||||||
|
|
||||||
|
const totalPages = Math.ceil(firstPage.total_items / pageSize);
|
||||||
|
|
||||||
|
const allResponses = firstPage.items;
|
||||||
|
|
||||||
|
for (let i = 2; i <= totalPages; i++) {
|
||||||
|
const page = await listResponsesForPage(i);
|
||||||
|
allResponses.push(...page.items);
|
||||||
|
}
|
||||||
|
|
||||||
|
return allResponses;
|
||||||
|
},
|
||||||
|
init: (params) => {
|
||||||
|
return {
|
||||||
|
name: "Get All Responses",
|
||||||
|
params,
|
||||||
|
icon: "typeform",
|
||||||
|
properties: [
|
||||||
|
{
|
||||||
|
label: "Form ID",
|
||||||
|
text: params.uid,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const createWebhook: AuthenticatedTask<
|
||||||
|
TypeformSDK,
|
||||||
|
CreateWebhookParams,
|
||||||
|
GetWebhookResponse
|
||||||
|
> = {
|
||||||
|
run: async (params, client) => {
|
||||||
|
return client.webhooks.create(params);
|
||||||
|
},
|
||||||
|
init: (params) => {
|
||||||
|
return {
|
||||||
|
name: "Create Webhook",
|
||||||
|
params,
|
||||||
|
icon: "typeform",
|
||||||
|
properties: [
|
||||||
|
{
|
||||||
|
label: "Form ID",
|
||||||
|
text: params.uid,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Tag",
|
||||||
|
text: params.tag,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const listWebhooks: AuthenticatedTask<
|
||||||
|
TypeformSDK,
|
||||||
|
ListWebhooksParams,
|
||||||
|
ListWebhooksResponse
|
||||||
|
> = {
|
||||||
|
run: async (params, client) => {
|
||||||
|
return client.webhooks.list(params);
|
||||||
|
},
|
||||||
|
init: (params) => {
|
||||||
|
return {
|
||||||
|
name: "List Webhooks",
|
||||||
|
params,
|
||||||
|
icon: "typeform",
|
||||||
|
properties: [
|
||||||
|
{
|
||||||
|
label: "Form ID",
|
||||||
|
text: params.uid,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateWebhook: AuthenticatedTask<
|
||||||
|
TypeformSDK,
|
||||||
|
UpdateWebhookParams,
|
||||||
|
GetWebhookResponse
|
||||||
|
> = {
|
||||||
|
run: async (params, client) => {
|
||||||
|
return client.webhooks.update(params);
|
||||||
|
},
|
||||||
|
init: (params) => {
|
||||||
|
return {
|
||||||
|
name: "Update Webhook",
|
||||||
|
params,
|
||||||
|
icon: "typeform",
|
||||||
|
properties: [
|
||||||
|
{
|
||||||
|
label: "Form ID",
|
||||||
|
text: params.uid,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Tag",
|
||||||
|
text: params.tag,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const getWebhook: AuthenticatedTask<
|
||||||
|
TypeformSDK,
|
||||||
|
GetWebhookParams,
|
||||||
|
GetWebhookResponse
|
||||||
|
> = {
|
||||||
|
run: async (params, client) => {
|
||||||
|
return client.webhooks.get(params);
|
||||||
|
},
|
||||||
|
init: (params) => {
|
||||||
|
return {
|
||||||
|
name: "Get Webhook",
|
||||||
|
params,
|
||||||
|
icon: "typeform",
|
||||||
|
properties: [
|
||||||
|
{
|
||||||
|
label: "Form ID",
|
||||||
|
text: params.uid,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Tag",
|
||||||
|
text: params.tag,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteWebhook: AuthenticatedTask<
|
||||||
|
TypeformSDK,
|
||||||
|
DeleteWebhookParams,
|
||||||
|
DeleteWebhookResponse
|
||||||
|
> = {
|
||||||
|
run: async (params, client) => {
|
||||||
|
return client.webhooks.delete(params);
|
||||||
|
},
|
||||||
|
init: (params) => {
|
||||||
|
return {
|
||||||
|
name: "Delete Webhook",
|
||||||
|
params,
|
||||||
|
icon: "typeform",
|
||||||
|
properties: [
|
||||||
|
{
|
||||||
|
label: "Form ID",
|
||||||
|
text: params.uid,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Tag",
|
||||||
|
text: params.tag,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const tasks = {
|
||||||
|
listForms,
|
||||||
|
getForm,
|
||||||
|
listResponses,
|
||||||
|
getAllResponses,
|
||||||
|
createWebhook,
|
||||||
|
updateWebhook,
|
||||||
|
getWebhook,
|
||||||
|
deleteWebhook,
|
||||||
|
listWebhooks,
|
||||||
|
};
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
import { Prettify } from "@trigger.dev/integration-kit";
|
||||||
|
import { Typeform, createClient } from "@typeform/api-client";
|
||||||
|
|
||||||
|
export type TypeformIntegrationOptions = {
|
||||||
|
id: string;
|
||||||
|
token: string;
|
||||||
|
apiBaseUrl?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type TypeformSDK = ReturnType<typeof createClient>;
|
||||||
|
|
||||||
|
export type ListFormsParams = {
|
||||||
|
page?: number;
|
||||||
|
pageSize?: number;
|
||||||
|
search?: string;
|
||||||
|
workspaceId?: string;
|
||||||
|
} | void;
|
||||||
|
|
||||||
|
export type ListFormsResponse = Prettify<Typeform.API.Forms.List>;
|
||||||
|
|
||||||
|
export type ListResponsesParams = {
|
||||||
|
uid: string;
|
||||||
|
pageSize?: number;
|
||||||
|
since?: string;
|
||||||
|
until?: string;
|
||||||
|
after?: string;
|
||||||
|
before?: string;
|
||||||
|
ids?: string | string[];
|
||||||
|
completed?: boolean;
|
||||||
|
sort?: string;
|
||||||
|
query?: string;
|
||||||
|
fields?: string | string[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ListResponsesResponse = Prettify<Typeform.API.Responses.List>;
|
||||||
|
|
||||||
|
export type GetFormParams = {
|
||||||
|
uid: string;
|
||||||
|
};
|
||||||
|
export type GetFormResponse = Prettify<Typeform.Form>;
|
||||||
|
|
||||||
|
export type GetAllResponsesParams = Prettify<
|
||||||
|
Omit<ListResponsesParams, "pageSize">
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type GetAllResponsesResponse = Prettify<
|
||||||
|
Typeform.API.Responses.List["items"]
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type GetWebhookResponse = Prettify<Typeform.Webhook>;
|
||||||
|
|
||||||
|
export type ListWebhooksParams = {
|
||||||
|
uid: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ListWebhooksResponse = Prettify<Typeform.API.Webhooks.List>;
|
||||||
|
|
||||||
|
export type CreateWebhookParams = {
|
||||||
|
uid: string;
|
||||||
|
tag: string;
|
||||||
|
url: string;
|
||||||
|
enabled?: boolean;
|
||||||
|
secret?: string;
|
||||||
|
verifySSL?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type UpdateWebhookParams = {
|
||||||
|
uid: string;
|
||||||
|
tag: string;
|
||||||
|
url: string;
|
||||||
|
enabled?: boolean;
|
||||||
|
secret?: string;
|
||||||
|
verifySSL?: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type GetWebhookParams = {
|
||||||
|
uid: string;
|
||||||
|
tag: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DeleteWebhookParams = {
|
||||||
|
uid: string;
|
||||||
|
tag: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DeleteWebhookResponse = null;
|
||||||
|
|
||||||
|
export type FormResponseEvent = {
|
||||||
|
event_id: string;
|
||||||
|
event_type: "form_response";
|
||||||
|
form_response: {
|
||||||
|
form_id: string;
|
||||||
|
token: string;
|
||||||
|
landed_at: string;
|
||||||
|
submitted_at: string;
|
||||||
|
calculated: {
|
||||||
|
score: number;
|
||||||
|
};
|
||||||
|
variables: Array<
|
||||||
|
| {
|
||||||
|
key: string;
|
||||||
|
type: "number";
|
||||||
|
number: number;
|
||||||
|
}
|
||||||
|
| {
|
||||||
|
key: string;
|
||||||
|
type: "text";
|
||||||
|
text: string;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
hidden: Record<string, string>;
|
||||||
|
definition: {
|
||||||
|
id: string;
|
||||||
|
title: string;
|
||||||
|
fields: Array<{
|
||||||
|
id: string;
|
||||||
|
ref: string;
|
||||||
|
type: string;
|
||||||
|
title: string;
|
||||||
|
allow_multiple_selections?: boolean;
|
||||||
|
allow_other_choice?: boolean;
|
||||||
|
properties?: Record<string, string | boolean | number>;
|
||||||
|
choices?: Array<{
|
||||||
|
id: string;
|
||||||
|
label: string;
|
||||||
|
}>;
|
||||||
|
}>;
|
||||||
|
ending: {
|
||||||
|
id: string;
|
||||||
|
title: string;
|
||||||
|
ref: string;
|
||||||
|
type: string;
|
||||||
|
properties?: Record<string, string | boolean | number>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
answers: Array<FormResponseAnswer>;
|
||||||
|
ending: {
|
||||||
|
id: string;
|
||||||
|
ref: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
type FormResponseAnswerBase = {
|
||||||
|
field: {
|
||||||
|
id: string;
|
||||||
|
type: string;
|
||||||
|
ref: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
type FormResponseAnswerEmail = Prettify<
|
||||||
|
FormResponseAnswerBase & {
|
||||||
|
type: "email";
|
||||||
|
email: string;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
type FormResponseAnswerText = Prettify<
|
||||||
|
FormResponseAnswerBase & {
|
||||||
|
type: "text";
|
||||||
|
text: string;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
type FormResponseAnswerNumber = Prettify<
|
||||||
|
FormResponseAnswerBase & {
|
||||||
|
type: "number";
|
||||||
|
number: number;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
type FormResponseAnswerBoolean = Prettify<
|
||||||
|
FormResponseAnswerBase & {
|
||||||
|
type: "boolean";
|
||||||
|
boolean: boolean;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
type FormResponseAnswerDate = Prettify<
|
||||||
|
FormResponseAnswerBase & {
|
||||||
|
type: "date";
|
||||||
|
date: string;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
type FormResponseAnswerChoice = Prettify<
|
||||||
|
FormResponseAnswerBase & {
|
||||||
|
type: "choice";
|
||||||
|
choice: {
|
||||||
|
label: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
type FormResponseAnswer = Prettify<
|
||||||
|
| FormResponseAnswerEmail
|
||||||
|
| FormResponseAnswerText
|
||||||
|
| FormResponseAnswerNumber
|
||||||
|
| FormResponseAnswerBoolean
|
||||||
|
| FormResponseAnswerDate
|
||||||
|
| FormResponseAnswerChoice
|
||||||
|
>;
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"extends": "@trigger.dev/tsconfig/node18.json",
|
||||||
|
"include": ["./src/**/*.ts", "tsup.config.ts"],
|
||||||
|
"compilerOptions": {
|
||||||
|
"lib": ["DOM", "DOM.Iterable", "ES2019"],
|
||||||
|
"paths": {
|
||||||
|
"@trigger.dev/sdk/*": ["../../packages/trigger-sdk/src/*"],
|
||||||
|
"@trigger.dev/sdk": ["../../packages/trigger-sdk/src/index"],
|
||||||
|
"@trigger.dev/integration-kit/*": [
|
||||||
|
"../../packages/integration-kit/src/*"
|
||||||
|
],
|
||||||
|
"@trigger.dev/integration-kit": [
|
||||||
|
"../../packages/integration-kit/src/index"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"declaration": false,
|
||||||
|
"declarationMap": false,
|
||||||
|
"baseUrl": "."
|
||||||
|
},
|
||||||
|
"exclude": ["node_modules"]
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import { defineConfig } from "tsup";
|
||||||
|
|
||||||
|
export default defineConfig([
|
||||||
|
{
|
||||||
|
name: "main",
|
||||||
|
entry: ["./src/index.ts"],
|
||||||
|
outDir: "./dist",
|
||||||
|
platform: "node",
|
||||||
|
format: ["cjs"],
|
||||||
|
legacyOutput: true,
|
||||||
|
sourcemap: true,
|
||||||
|
clean: true,
|
||||||
|
bundle: true,
|
||||||
|
splitting: false,
|
||||||
|
dts: true,
|
||||||
|
treeshake: {
|
||||||
|
preset: "smallest",
|
||||||
|
},
|
||||||
|
esbuildPlugins: [],
|
||||||
|
external: ["http", "https", "util", "events", "tty", "os", "timers"],
|
||||||
|
},
|
||||||
|
]);
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
export * from "./json";
|
export * from "./json";
|
||||||
|
export * from "./webhooks";
|
||||||
export * from "./omit";
|
export * from "./omit";
|
||||||
export * from "./properties";
|
export * from "./properties";
|
||||||
export * from "./file";
|
export * from "./file";
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
// Parses the body of a request
|
||||||
|
|
||||||
|
import { safeJsonParse } from "./json";
|
||||||
|
|
||||||
|
// If it's a Buffer, it will be parsed as JSON
|
||||||
|
export function safeParseBody(body: any) {
|
||||||
|
if (Buffer.isBuffer(body)) {
|
||||||
|
return safeJsonParse(body.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof body === "string") {
|
||||||
|
return safeJsonParse(body);
|
||||||
|
}
|
||||||
|
|
||||||
|
return body;
|
||||||
|
}
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
"ulid": "^2.3.0",
|
"ulid": "^2.3.0",
|
||||||
"uuid": "^9.0.0",
|
"uuid": "^9.0.0",
|
||||||
"ws": "^8.11.0",
|
"ws": "^8.11.0",
|
||||||
"zod": "^3.20.2",
|
"zod": "3.20.2",
|
||||||
"zod-error": "^1.1.0",
|
"zod-error": "^1.1.0",
|
||||||
"zod-to-json-schema": "^3.20.2"
|
"zod-to-json-schema": "^3.20.2"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ type ExternalSourceOptions<
|
|||||||
schema: z.Schema<TParams>;
|
schema: z.Schema<TParams>;
|
||||||
integration: TIntegration;
|
integration: TIntegration;
|
||||||
register: RegisterFunction<TIntegration, TParams, TChannel>;
|
register: RegisterFunction<TIntegration, TParams, TChannel>;
|
||||||
filter: FilterFunction<TParams>;
|
filter?: FilterFunction<TParams>;
|
||||||
handler: HandlerFunction<TChannel, TParams>;
|
handler: HandlerFunction<TChannel, TParams>;
|
||||||
key: KeyFunction<TParams>;
|
key: KeyFunction<TParams>;
|
||||||
properties?: (params: TParams) => DisplayProperty[];
|
properties?: (params: TParams) => DisplayProperty[];
|
||||||
@@ -146,7 +146,7 @@ export class ExternalSource<
|
|||||||
}
|
}
|
||||||
|
|
||||||
filter(params: TParams): EventFilter {
|
filter(params: TParams): EventFilter {
|
||||||
return this.options.filter(params);
|
return this.options.filter?.(params) ?? {};
|
||||||
}
|
}
|
||||||
|
|
||||||
properties(params: TParams): DisplayProperty[] {
|
properties(params: TParams): DisplayProperty[] {
|
||||||
|
|||||||
Generated
+97
-47
@@ -105,7 +105,7 @@ importers:
|
|||||||
'@testing-library/react': ^13.4.0
|
'@testing-library/react': ^13.4.0
|
||||||
'@testing-library/user-event': ^14.4.3
|
'@testing-library/user-event': ^14.4.3
|
||||||
'@total-typescript/ts-reset': ^0.4.2
|
'@total-typescript/ts-reset': ^0.4.2
|
||||||
'@trigger.dev/companyicons': ^1.5.10
|
'@trigger.dev/companyicons': ^1.5.14
|
||||||
'@trigger.dev/database': workspace:*
|
'@trigger.dev/database': workspace:*
|
||||||
'@trigger.dev/internal': workspace:*
|
'@trigger.dev/internal': workspace:*
|
||||||
'@trigger.dev/tailwind-config': workspace:*
|
'@trigger.dev/tailwind-config': workspace:*
|
||||||
@@ -274,7 +274,7 @@ importers:
|
|||||||
'@remix-run/server-runtime': 1.18.1
|
'@remix-run/server-runtime': 1.18.1
|
||||||
'@tanstack/react-table': 8.7.6_biqbaboplfbrettd7655fr4n2y
|
'@tanstack/react-table': 8.7.6_biqbaboplfbrettd7655fr4n2y
|
||||||
'@team-plain/typescript-sdk': 2.2.0
|
'@team-plain/typescript-sdk': 2.2.0
|
||||||
'@trigger.dev/companyicons': 1.5.10_biqbaboplfbrettd7655fr4n2y
|
'@trigger.dev/companyicons': 1.5.14_biqbaboplfbrettd7655fr4n2y
|
||||||
'@trigger.dev/database': link:../../packages/database
|
'@trigger.dev/database': link:../../packages/database
|
||||||
'@trigger.dev/internal': link:../../packages/internal
|
'@trigger.dev/internal': link:../../packages/internal
|
||||||
'@typeform/embed-react': 2.14.1_react@18.2.0
|
'@typeform/embed-react': 2.14.1_react@18.2.0
|
||||||
@@ -500,6 +500,7 @@ importers:
|
|||||||
'@trigger.dev/resend': workspace:*
|
'@trigger.dev/resend': workspace:*
|
||||||
'@trigger.dev/sdk': workspace:*
|
'@trigger.dev/sdk': workspace:*
|
||||||
'@trigger.dev/slack': workspace:*
|
'@trigger.dev/slack': workspace:*
|
||||||
|
'@trigger.dev/typeform': workspace:*
|
||||||
'@types/node': 18.15.13
|
'@types/node': 18.15.13
|
||||||
'@types/node-fetch': 2.6.x
|
'@types/node-fetch': 2.6.x
|
||||||
'@types/react': ^18.0.21
|
'@types/react': ^18.0.21
|
||||||
@@ -521,6 +522,7 @@ importers:
|
|||||||
'@trigger.dev/resend': link:../../integrations/resend
|
'@trigger.dev/resend': link:../../integrations/resend
|
||||||
'@trigger.dev/sdk': link:../../packages/trigger-sdk
|
'@trigger.dev/sdk': link:../../packages/trigger-sdk
|
||||||
'@trigger.dev/slack': link:../../integrations/slack
|
'@trigger.dev/slack': link:../../integrations/slack
|
||||||
|
'@trigger.dev/typeform': link:../../integrations/typeform
|
||||||
'@types/node': 18.15.13
|
'@types/node': 18.15.13
|
||||||
'@types/react': 18.0.26
|
'@types/react': 18.0.26
|
||||||
'@types/react-dom': 18.0.10
|
'@types/react-dom': 18.0.10
|
||||||
@@ -659,6 +661,27 @@ importers:
|
|||||||
rimraf: 3.0.2
|
rimraf: 3.0.2
|
||||||
tsup: 6.6.3
|
tsup: 6.6.3
|
||||||
|
|
||||||
|
integrations/typeform:
|
||||||
|
specifiers:
|
||||||
|
'@trigger.dev/integration-kit': workspace:^2.0.0-next.2
|
||||||
|
'@trigger.dev/sdk': workspace:^2.0.0-next.8
|
||||||
|
'@trigger.dev/tsconfig': workspace:*
|
||||||
|
'@typeform/api-client': ^1.8.0
|
||||||
|
'@types/node': '18'
|
||||||
|
rimraf: ^3.0.2
|
||||||
|
tsup: ^6.5.0
|
||||||
|
zod: 3.20.2
|
||||||
|
dependencies:
|
||||||
|
'@trigger.dev/integration-kit': link:../../packages/integration-kit
|
||||||
|
'@trigger.dev/sdk': link:../../packages/trigger-sdk
|
||||||
|
'@typeform/api-client': 1.8.0
|
||||||
|
zod: 3.20.2
|
||||||
|
devDependencies:
|
||||||
|
'@trigger.dev/tsconfig': link:../../config-packages/tsconfig
|
||||||
|
'@types/node': 18.15.13
|
||||||
|
rimraf: 3.0.2
|
||||||
|
tsup: 6.6.3
|
||||||
|
|
||||||
packages/cli:
|
packages/cli:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@types/degit': ^2.8.3
|
'@types/degit': ^2.8.3
|
||||||
@@ -861,7 +884,7 @@ importers:
|
|||||||
ulid: ^2.3.0
|
ulid: ^2.3.0
|
||||||
uuid: ^9.0.0
|
uuid: ^9.0.0
|
||||||
ws: ^8.11.0
|
ws: ^8.11.0
|
||||||
zod: ^3.20.2
|
zod: 3.20.2
|
||||||
zod-error: ^1.1.0
|
zod-error: ^1.1.0
|
||||||
zod-to-json-schema: ^3.20.2
|
zod-to-json-schema: ^3.20.2
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -6915,7 +6938,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/istanbul-lib-coverage': 2.0.4
|
'@types/istanbul-lib-coverage': 2.0.4
|
||||||
'@types/istanbul-reports': 3.0.1
|
'@types/istanbul-reports': 3.0.1
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
'@types/yargs': 16.0.5
|
'@types/yargs': 16.0.5
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
dev: true
|
dev: true
|
||||||
@@ -6927,7 +6950,7 @@ packages:
|
|||||||
'@jest/schemas': 29.4.3
|
'@jest/schemas': 29.4.3
|
||||||
'@types/istanbul-lib-coverage': 2.0.4
|
'@types/istanbul-lib-coverage': 2.0.4
|
||||||
'@types/istanbul-reports': 3.0.1
|
'@types/istanbul-reports': 3.0.1
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
'@types/yargs': 17.0.19
|
'@types/yargs': 17.0.19
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
dev: true
|
dev: true
|
||||||
@@ -9159,7 +9182,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==}
|
resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==}
|
||||||
engines: {node: '>= 12.13.0', npm: '>= 6.12.0'}
|
engines: {node: '>= 12.13.0', npm: '>= 6.12.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@slack/types/2.8.0:
|
/@slack/types/2.8.0:
|
||||||
@@ -10806,8 +10829,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-vqd7ZUDSrXFVT1n8b2kc3LnklncDQFPvR58yUS1kEP23/nHPAO9l1lMjUfnPrXYYk4Hj54rrLKMW5ipwk7k09A==}
|
resolution: {integrity: sha512-vqd7ZUDSrXFVT1n8b2kc3LnklncDQFPvR58yUS1kEP23/nHPAO9l1lMjUfnPrXYYk4Hj54rrLKMW5ipwk7k09A==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@trigger.dev/companyicons/1.5.10_biqbaboplfbrettd7655fr4n2y:
|
/@trigger.dev/companyicons/1.5.14_biqbaboplfbrettd7655fr4n2y:
|
||||||
resolution: {integrity: sha512-0oSuaZcv6ByV3RvJe67ngh7mLianapOJvDm4o79hpabZ9m0DUWkdycgj2IZEG/dKvGQ1etBfXd6v639nmhRPrw==}
|
resolution: {integrity: sha512-+qiv5+YxZDdtUvzJdOlACz7BVmV1Zdo0wdvWrzHJX6/LoiGvyEXbcM3ozIMxD71NaCxv5axeDY/Iq92iPSj6Ew==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^18.2.0
|
react: ^18.2.0
|
||||||
react-dom: 18.2.0
|
react-dom: 18.2.0
|
||||||
@@ -10869,6 +10892,15 @@ packages:
|
|||||||
/@tsconfig/node16/1.0.3:
|
/@tsconfig/node16/1.0.3:
|
||||||
resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==}
|
resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==}
|
||||||
|
|
||||||
|
/@typeform/api-client/1.8.0:
|
||||||
|
resolution: {integrity: sha512-eRaq7Enyi3Y05gZsCnMTFfRyEZiLjR1/WkB51d82sop28BSR4K3yLQmj41YMj82bWyJU4ECHixf/LBbtVsRfyw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dependencies:
|
||||||
|
axios: 0.21.4
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- debug
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@typeform/embed-react/2.14.1_react@18.2.0:
|
/@typeform/embed-react/2.14.1_react@18.2.0:
|
||||||
resolution: {integrity: sha512-+lPZyk3ghPYNyUPabBhMuG6pCP9Bx3qkNAXfKnWq3VMG2A7WXbfVOq2MouaCBRv539kryR6DVnvSvpBewHaoug==}
|
resolution: {integrity: sha512-+lPZyk3ghPYNyUPabBhMuG6pCP9Bx3qkNAXfKnWq3VMG2A7WXbfVOq2MouaCBRv539kryR6DVnvSvpBewHaoug==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -10931,7 +10963,7 @@ packages:
|
|||||||
/@types/basic-auth/1.1.3:
|
/@types/basic-auth/1.1.3:
|
||||||
resolution: {integrity: sha512-W3rv6J0IGlxqgE2eQ2pTb0gBjaGtejQpJ6uaCjz3UQ65+TFTPC5/lAE+POfx1YLdjtxvejJzsIAfd3MxWiVmfg==}
|
resolution: {integrity: sha512-W3rv6J0IGlxqgE2eQ2pTb0gBjaGtejQpJ6uaCjz3UQ65+TFTPC5/lAE+POfx1YLdjtxvejJzsIAfd3MxWiVmfg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@types/bcryptjs/2.4.2:
|
/@types/bcryptjs/2.4.2:
|
||||||
@@ -10942,7 +10974,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
|
resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/connect': 3.4.35
|
'@types/connect': 3.4.35
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
|
|
||||||
/@types/btoa-lite/1.0.0:
|
/@types/btoa-lite/1.0.0:
|
||||||
resolution: {integrity: sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==}
|
resolution: {integrity: sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==}
|
||||||
@@ -10953,7 +10985,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/http-cache-semantics': 4.0.1
|
'@types/http-cache-semantics': 4.0.1
|
||||||
'@types/keyv': 3.1.4
|
'@types/keyv': 3.1.4
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
'@types/responselike': 1.0.0
|
'@types/responselike': 1.0.0
|
||||||
|
|
||||||
/@types/chai-subset/1.3.3:
|
/@types/chai-subset/1.3.3:
|
||||||
@@ -10975,13 +11007,13 @@ packages:
|
|||||||
/@types/concat-stream/1.6.1:
|
/@types/concat-stream/1.6.1:
|
||||||
resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==}
|
resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/connect/3.4.35:
|
/@types/connect/3.4.35:
|
||||||
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
|
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
|
|
||||||
/@types/cookie/0.4.1:
|
/@types/cookie/0.4.1:
|
||||||
resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==}
|
resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==}
|
||||||
@@ -10992,7 +11024,7 @@ packages:
|
|||||||
'@types/connect': 3.4.35
|
'@types/connect': 3.4.35
|
||||||
'@types/express': 4.17.15
|
'@types/express': 4.17.15
|
||||||
'@types/keygrip': 1.0.2
|
'@types/keygrip': 1.0.2
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@types/debug/4.1.7:
|
/@types/debug/4.1.7:
|
||||||
@@ -11057,7 +11089,7 @@ packages:
|
|||||||
/@types/express-serve-static-core/4.17.32:
|
/@types/express-serve-static-core/4.17.32:
|
||||||
resolution: {integrity: sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==}
|
resolution: {integrity: sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
'@types/qs': 6.9.7
|
'@types/qs': 6.9.7
|
||||||
'@types/range-parser': 1.2.4
|
'@types/range-parser': 1.2.4
|
||||||
|
|
||||||
@@ -11085,33 +11117,33 @@ packages:
|
|||||||
/@types/form-data/0.0.33:
|
/@types/form-data/0.0.33:
|
||||||
resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==}
|
resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/fs-extra/11.0.1:
|
/@types/fs-extra/11.0.1:
|
||||||
resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==}
|
resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/jsonfile': 6.1.1
|
'@types/jsonfile': 6.1.1
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/glob/7.2.0:
|
/@types/glob/7.2.0:
|
||||||
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
|
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/minimatch': 5.1.2
|
'@types/minimatch': 5.1.2
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
|
|
||||||
/@types/glob/8.1.0:
|
/@types/glob/8.1.0:
|
||||||
resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==}
|
resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/minimatch': 5.1.2
|
'@types/minimatch': 5.1.2
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/graceful-fs/4.1.6:
|
/@types/graceful-fs/4.1.6:
|
||||||
resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
|
resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/gradient-string/1.1.2:
|
/@types/gradient-string/1.1.2:
|
||||||
@@ -11153,7 +11185,7 @@ packages:
|
|||||||
/@types/is-stream/1.1.0:
|
/@types/is-stream/1.1.0:
|
||||||
resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==}
|
resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@types/istanbul-lib-coverage/2.0.4:
|
/@types/istanbul-lib-coverage/2.0.4:
|
||||||
@@ -11202,7 +11234,7 @@ packages:
|
|||||||
/@types/jsonfile/6.1.1:
|
/@types/jsonfile/6.1.1:
|
||||||
resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==}
|
resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/jsonwebtoken/9.0.1:
|
/@types/jsonwebtoken/9.0.1:
|
||||||
@@ -11217,7 +11249,7 @@ packages:
|
|||||||
/@types/keyv/3.1.4:
|
/@types/keyv/3.1.4:
|
||||||
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
|
|
||||||
/@types/lodash/4.14.191:
|
/@types/lodash/4.14.191:
|
||||||
resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==}
|
resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==}
|
||||||
@@ -11311,7 +11343,6 @@ packages:
|
|||||||
|
|
||||||
/@types/node/20.3.3:
|
/@types/node/20.3.3:
|
||||||
resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==}
|
resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==}
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@types/node/8.10.66:
|
/@types/node/8.10.66:
|
||||||
resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==}
|
resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==}
|
||||||
@@ -11330,7 +11361,7 @@ packages:
|
|||||||
/@types/pg/8.6.6:
|
/@types/pg/8.6.6:
|
||||||
resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==}
|
resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
pg-protocol: 1.6.0
|
pg-protocol: 1.6.0
|
||||||
pg-types: 2.2.0
|
pg-types: 2.2.0
|
||||||
dev: false
|
dev: false
|
||||||
@@ -11374,7 +11405,7 @@ packages:
|
|||||||
/@types/responselike/1.0.0:
|
/@types/responselike/1.0.0:
|
||||||
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
|
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
|
|
||||||
/@types/retry/0.12.0:
|
/@types/retry/0.12.0:
|
||||||
resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
|
resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
|
||||||
@@ -11394,12 +11425,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==}
|
resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mime': 3.0.1
|
'@types/mime': 3.0.1
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
|
|
||||||
/@types/set-cookie-parser/2.4.2:
|
/@types/set-cookie-parser/2.4.2:
|
||||||
resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==}
|
resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/simple-oauth2/5.0.4:
|
/@types/simple-oauth2/5.0.4:
|
||||||
@@ -11446,7 +11477,7 @@ packages:
|
|||||||
/@types/through/0.0.30:
|
/@types/through/0.0.30:
|
||||||
resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==}
|
resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/tinycolor2/1.4.3:
|
/@types/tinycolor2/1.4.3:
|
||||||
@@ -11471,7 +11502,7 @@ packages:
|
|||||||
/@types/ws/8.5.4:
|
/@types/ws/8.5.4:
|
||||||
resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==}
|
resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/yargs-parser/21.0.0:
|
/@types/yargs-parser/21.0.0:
|
||||||
@@ -11494,7 +11525,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
|
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.2
|
'@types/node': 20.3.3
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@typescript-eslint/eslint-plugin/5.59.6_bhjpu5ld5qmewts22wsycix4mi:
|
/@typescript-eslint/eslint-plugin/5.59.6_bhjpu5ld5qmewts22wsycix4mi:
|
||||||
@@ -12560,6 +12591,14 @@ packages:
|
|||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/axios/0.21.4:
|
||||||
|
resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
|
||||||
|
dependencies:
|
||||||
|
follow-redirects: 1.15.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- debug
|
||||||
|
dev: false
|
||||||
|
|
||||||
/axios/0.21.4_debug@4.3.2:
|
/axios/0.21.4_debug@4.3.2:
|
||||||
resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
|
resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -12571,7 +12610,7 @@ packages:
|
|||||||
/axios/0.25.0_debug@4.3.4:
|
/axios/0.25.0_debug@4.3.4:
|
||||||
resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==}
|
resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.2_debug@4.3.2
|
follow-redirects: 1.15.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- debug
|
- debug
|
||||||
dev: true
|
dev: true
|
||||||
@@ -12579,7 +12618,7 @@ packages:
|
|||||||
/axios/0.26.1:
|
/axios/0.26.1:
|
||||||
resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==}
|
resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.2_debug@4.3.2
|
follow-redirects: 1.15.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- debug
|
- debug
|
||||||
dev: false
|
dev: false
|
||||||
@@ -12587,7 +12626,7 @@ packages:
|
|||||||
/axios/0.27.2:
|
/axios/0.27.2:
|
||||||
resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
|
resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.2_debug@4.3.2
|
follow-redirects: 1.15.2
|
||||||
form-data: 4.0.0
|
form-data: 4.0.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- debug
|
- debug
|
||||||
@@ -12596,7 +12635,7 @@ packages:
|
|||||||
/axios/1.4.0:
|
/axios/1.4.0:
|
||||||
resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==}
|
resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.2_debug@4.3.2
|
follow-redirects: 1.15.2
|
||||||
form-data: 4.0.0
|
form-data: 4.0.0
|
||||||
proxy-from-env: 1.1.0
|
proxy-from-env: 1.1.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -14162,6 +14201,7 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
ms: 2.1.2
|
ms: 2.1.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/debug/4.3.4:
|
/debug/4.3.4:
|
||||||
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
||||||
@@ -16434,6 +16474,15 @@ packages:
|
|||||||
engines: {node: '>=0.4.0'}
|
engines: {node: '>=0.4.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/follow-redirects/1.15.2:
|
||||||
|
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
|
||||||
|
engines: {node: '>=4.0'}
|
||||||
|
peerDependencies:
|
||||||
|
debug: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
debug:
|
||||||
|
optional: true
|
||||||
|
|
||||||
/follow-redirects/1.15.2_debug@4.3.2:
|
/follow-redirects/1.15.2_debug@4.3.2:
|
||||||
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
|
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
|
||||||
engines: {node: '>=4.0'}
|
engines: {node: '>=4.0'}
|
||||||
@@ -16444,6 +16493,7 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.3.2
|
debug: 4.3.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/for-each/0.3.3:
|
/for-each/0.3.3:
|
||||||
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
|
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
|
||||||
@@ -18204,7 +18254,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@jest/types': 29.5.0
|
'@jest/types': 29.5.0
|
||||||
'@types/graceful-fs': 4.1.6
|
'@types/graceful-fs': 4.1.6
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
anymatch: 3.1.3
|
anymatch: 3.1.3
|
||||||
fb-watchman: 2.0.2
|
fb-watchman: 2.0.2
|
||||||
graceful-fs: 4.2.10
|
graceful-fs: 4.2.10
|
||||||
@@ -18247,7 +18297,7 @@ packages:
|
|||||||
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
|
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/types': 27.5.1
|
'@jest/types': 27.5.1
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/jest-regex-util/29.4.3:
|
/jest-regex-util/29.4.3:
|
||||||
@@ -18272,7 +18322,7 @@ packages:
|
|||||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jest/types': 29.5.0
|
'@jest/types': 29.5.0
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
ci-info: 3.7.1
|
ci-info: 3.7.1
|
||||||
graceful-fs: 4.2.10
|
graceful-fs: 4.2.10
|
||||||
@@ -18283,7 +18333,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
|
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
|
||||||
engines: {node: '>= 10.13.0'}
|
engines: {node: '>= 10.13.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
merge-stream: 2.0.0
|
merge-stream: 2.0.0
|
||||||
supports-color: 8.1.1
|
supports-color: 8.1.1
|
||||||
dev: true
|
dev: true
|
||||||
@@ -18292,7 +18342,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==}
|
resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==}
|
||||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
jest-util: 29.5.0
|
jest-util: 29.5.0
|
||||||
merge-stream: 2.0.0
|
merge-stream: 2.0.0
|
||||||
supports-color: 8.1.1
|
supports-color: 8.1.1
|
||||||
@@ -25157,7 +25207,7 @@ packages:
|
|||||||
- terser
|
- terser
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vite-node/0.28.5_@types+node@20.3.1:
|
/vite-node/0.28.5_@types+node@20.3.3:
|
||||||
resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==}
|
resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==}
|
||||||
engines: {node: '>=v14.16.0'}
|
engines: {node: '>=v14.16.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -25169,7 +25219,7 @@ packages:
|
|||||||
picocolors: 1.0.0
|
picocolors: 1.0.0
|
||||||
source-map: 0.6.1
|
source-map: 0.6.1
|
||||||
source-map-support: 0.5.21
|
source-map-support: 0.5.21
|
||||||
vite: 4.1.4_@types+node@20.3.1
|
vite: 4.1.4_@types+node@20.3.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/node'
|
- '@types/node'
|
||||||
- less
|
- less
|
||||||
@@ -25340,7 +25390,7 @@ packages:
|
|||||||
fsevents: 2.3.2
|
fsevents: 2.3.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vite/4.1.4_@types+node@20.3.1:
|
/vite/4.1.4_@types+node@20.3.3:
|
||||||
resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==}
|
resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -25365,7 +25415,7 @@ packages:
|
|||||||
terser:
|
terser:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
esbuild: 0.16.17
|
esbuild: 0.16.17
|
||||||
postcss: 8.4.24
|
postcss: 8.4.24
|
||||||
resolve: 1.22.1
|
resolve: 1.22.1
|
||||||
@@ -25441,7 +25491,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/chai': 4.3.4
|
'@types/chai': 4.3.4
|
||||||
'@types/chai-subset': 1.3.3
|
'@types/chai-subset': 1.3.3
|
||||||
'@types/node': 20.3.1
|
'@types/node': 20.3.3
|
||||||
'@vitest/expect': 0.28.5
|
'@vitest/expect': 0.28.5
|
||||||
'@vitest/runner': 0.28.5
|
'@vitest/runner': 0.28.5
|
||||||
'@vitest/spy': 0.28.5
|
'@vitest/spy': 0.28.5
|
||||||
@@ -25460,8 +25510,8 @@ packages:
|
|||||||
tinybench: 2.3.1
|
tinybench: 2.3.1
|
||||||
tinypool: 0.3.1
|
tinypool: 0.3.1
|
||||||
tinyspy: 1.0.2
|
tinyspy: 1.0.2
|
||||||
vite: 4.1.4_@types+node@20.3.1
|
vite: 4.1.4_@types+node@20.3.3
|
||||||
vite-node: 0.28.5_@types+node@20.3.1
|
vite-node: 0.28.5_@types+node@20.3.3
|
||||||
why-is-node-running: 2.2.2
|
why-is-node-running: 2.2.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- less
|
- less
|
||||||
|
|||||||
Reference in New Issue
Block a user