From 39853e5ce0c77b7014b9dbeeb3454f2f571e13b0 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Wed, 25 Jan 2023 21:55:04 +0000 Subject: [PATCH] Add uptime workflow that runs every minute --- apps/webapp/app/entry.server.tsx | 2 + apps/webapp/app/triggers/init.server.ts | 17 +++++ apps/webapp/app/triggers/monitoring.server.ts | 26 +++++++ apps/webapp/package.json | 5 +- apps/webapp/remix.config.js | 7 ++ apps/webapp/tsconfig.json | 10 +-- flightcontrol.json | 3 + pnpm-lock.yaml | 74 ++++++++++++++++--- 8 files changed, 127 insertions(+), 17 deletions(-) create mode 100644 apps/webapp/app/triggers/init.server.ts create mode 100644 apps/webapp/app/triggers/monitoring.server.ts diff --git a/apps/webapp/app/entry.server.tsx b/apps/webapp/app/entry.server.tsx index 5a5ec14ba..f06ef773c 100644 --- a/apps/webapp/app/entry.server.tsx +++ b/apps/webapp/app/entry.server.tsx @@ -3,6 +3,7 @@ import { RemixServer } from "@remix-run/react"; import { renderToString } from "react-dom/server"; import * as Sentry from "~/services/sentry.server"; import * as MessageBroker from "~/services/messageBroker.server"; +import * as Triggers from "~/triggers/init.server"; export default function handleRequest( request: Request, @@ -26,3 +27,4 @@ export default function handleRequest( Sentry.init(); MessageBroker.init(); +Triggers.init(); diff --git a/apps/webapp/app/triggers/init.server.ts b/apps/webapp/app/triggers/init.server.ts new file mode 100644 index 000000000..f6ebb3d36 --- /dev/null +++ b/apps/webapp/app/triggers/init.server.ts @@ -0,0 +1,17 @@ +import { uptimeCheck } from "./monitoring.server"; + +declare global { + var __triggers_initialized: boolean; +} + +export function init() { + if (global.__triggers_initialized) { + return; + } + + global.__triggers_initialized = true; + + uptimeCheck.listen(); + + console.log(`🛎 Triggers initialized`); +} diff --git a/apps/webapp/app/triggers/monitoring.server.ts b/apps/webapp/app/triggers/monitoring.server.ts new file mode 100644 index 000000000..01ff77c68 --- /dev/null +++ b/apps/webapp/app/triggers/monitoring.server.ts @@ -0,0 +1,26 @@ +import { Trigger, scheduleEvent } from "@trigger.dev/sdk"; +import { slack } from "@trigger.dev/integrations"; +import { prisma } from "~/db.server"; + +export const uptimeCheck = new Trigger({ + id: "uptime-check", + name: "Uptime Check", + on: scheduleEvent({ rateOf: { minutes: 1 } }), + triggerTTL: 300, + run: async (event, context) => { + // Grab counts of workflows, runs, and steps + const userCount = await prisma.user.count(); + const workflowCount = await prisma.workflow.count(); + const runCount = await prisma.workflowRun.count(); + const stepCount = await prisma.workflowRunStep.count(); + + if (context.environment === "development") { + return; + } + + await slack.postMessage("Uptime Notification", { + channelName: "monitoring", + text: `[${context.environment}] Uptime Check: ${userCount} users, ${workflowCount} workflows, ${runCount} runs, ${stepCount} steps.`, + }); + }, +}); diff --git a/apps/webapp/package.json b/apps/webapp/package.json index ae5ea8fa4..8e3222ee2 100644 --- a/apps/webapp/package.json +++ b/apps/webapp/package.json @@ -64,6 +64,9 @@ "@tanstack/react-table": "^8.0.0-alpha.87", "@trigger.dev/common-schemas": "workspace:*", "@trigger.dev/providers": "workspace:*", + "@trigger.dev/sdk": "workspace:*", + "@trigger.dev/integrations": "workspace:*", + "internal-bridge": "workspace:*", "@uiw/react-codemirror": "^4.13.2", "bcryptjs": "^2.4.3", "classnames": "^2.3.1", @@ -183,4 +186,4 @@ "engines": { "node": ">=16.0.0" } -} +} \ No newline at end of file diff --git a/apps/webapp/remix.config.js b/apps/webapp/remix.config.js index d6d8684e1..9861e5811 100644 --- a/apps/webapp/remix.config.js +++ b/apps/webapp/remix.config.js @@ -12,19 +12,26 @@ module.exports = { "axios", "internal-platform", "internal-integrations", + "internal-bridge", "@trigger.dev/providers", "@trigger.dev/common-schemas", + "@trigger.dev/sdk", + "@trigger.dev/integrations", "emails", "internal-pulsar", ], watchPaths: async () => { return [ "../../packages/internal-platform/src/**/*", + "../../packages/internal-bridge/src/**/*", "../../packages/common-schemas/src/**/*", "../../packages/internal-integrations/src/**/*", "../../packages/internal-providers/src/**/*", "../../packages/emails/src/**/*", "../../packages/internal-pulsar/src/**/*", + "../../packages/internal-platform/src/**/*", + "../../packages/trigger-sdk/src/**/*", + "../../packages/trigger-integrations/src/**/*", ]; }, }; diff --git a/apps/webapp/tsconfig.json b/apps/webapp/tsconfig.json index 7adff1bff..eca320874 100644 --- a/apps/webapp/tsconfig.json +++ b/apps/webapp/tsconfig.json @@ -24,6 +24,8 @@ "../../packages/internal-integrations/src/index" ], "internal-integrations/*": ["../../packages/internal-integrations/src/*"], + "internal-bridge": ["../../packages/internal-bridge/src/index"], + "internal-bridge/*": ["../../packages/internal-bridge/src/*"], "@trigger.dev/sdk": ["../../packages/trigger-sdk/src/index"], "@trigger.dev/sdk/*": ["../../packages/trigger-sdk/src/*"], "@trigger.dev/integrations": [ @@ -32,12 +34,8 @@ "@trigger.dev/integrations/*": [ "../../packages/trigger-integrations/src/*" ], - "@trigger.dev/providers": [ - "../../packages/trigger-providers/src/index" - ], - "@trigger.dev/providers/*": [ - "../../packages/trigger-providers/src/*" - ], + "@trigger.dev/providers": ["../../packages/trigger-providers/src/index"], + "@trigger.dev/providers/*": ["../../packages/trigger-providers/src/*"], "@trigger.dev/common-schemas": [ "../../packages/common-schemas/src/index" ], diff --git a/flightcontrol.json b/flightcontrol.json index 2e3102f41..20d1743c0 100644 --- a/flightcontrol.json +++ b/flightcontrol.json @@ -66,6 +66,9 @@ "p-db" ], "envVariables": { + "TRIGGER_API_KEY": { + "fromParameterStore": "/Prod/webapp/TRIGGER_API_KEY" + }, "FROM_EMAIL": "hello@email.trigger.dev", "REPLY_TO_EMAIL": "hello@trigger.dev", "RESEND_API_KEY": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e905d1ac..f458a05ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,7 +75,9 @@ importers: '@testing-library/react': ^13.4.0 '@testing-library/user-event': ^14.4.3 '@trigger.dev/common-schemas': workspace:* + '@trigger.dev/integrations': workspace:* '@trigger.dev/providers': workspace:* + '@trigger.dev/sdk': workspace:* '@trigger.dev/tailwind-config': '*' '@types/bcryptjs': ^2.4.2 '@types/compression': ^1.7.2 @@ -205,7 +207,9 @@ importers: '@tailwindcss/forms': 0.5.3_tailwindcss@3.1.8 '@tanstack/react-table': 8.7.6_biqbaboplfbrettd7655fr4n2y '@trigger.dev/common-schemas': link:../../packages/common-schemas + '@trigger.dev/integrations': link:../../packages/trigger-integrations '@trigger.dev/providers': link:../../packages/trigger-providers + '@trigger.dev/sdk': link:../../packages/trigger-sdk '@uiw/react-codemirror': 4.19.5_k4ec5g7vuuzzonc3d6xbjnmmle bcryptjs: 2.4.3 classnames: 2.3.2 @@ -774,7 +778,7 @@ importers: tsup: ^6.5.0 zod: ^3.20.2 dependencies: - '@react-email/render': 0.0.3_react@18.2.0 + '@react-email/render': 0.0.3 '@trigger.dev/providers': link:../trigger-providers '@trigger.dev/sdk': link:../trigger-sdk zod: 3.20.2 @@ -3585,6 +3589,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 + dev: true /@cush/relative/1.0.0: resolution: {integrity: sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==} @@ -4172,6 +4177,7 @@ packages: /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} @@ -4180,6 +4186,7 @@ packages: /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true /@jridgewell/trace-mapping/0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} @@ -4193,6 +4200,7 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + dev: true /@jsdevtools/ono/7.1.3: resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} @@ -4706,6 +4714,16 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false + /@react-email/render/0.0.3: + resolution: {integrity: sha512-+4eOrLGdTCJjoJU3PunekErjo3PFnhSDFjVINBHrfJT+1wlVdhWfDo7hFdzXJx/JOOYqmnZTilU/umGLdRumKQ==} + engines: {node: '>=18.0.0'} + dependencies: + pretty: 2.0.0 + react-dom: 18.2.0 + transitivePeerDependencies: + - react + dev: false + /@react-email/render/0.0.3_react@18.2.0: resolution: {integrity: sha512-+4eOrLGdTCJjoJU3PunekErjo3PFnhSDFjVINBHrfJT+1wlVdhWfDo7hFdzXJx/JOOYqmnZTilU/umGLdRumKQ==} engines: {node: '>=18.0.0'} @@ -5188,6 +5206,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@swc/core-darwin-x64/1.3.26: @@ -5196,6 +5215,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm-gnueabihf/1.3.26: @@ -5204,6 +5224,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm64-gnu/1.3.26: @@ -5212,6 +5233,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm64-musl/1.3.26: @@ -5220,6 +5242,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-x64-gnu/1.3.26: @@ -5228,6 +5251,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-x64-musl/1.3.26: @@ -5236,6 +5260,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-win32-arm64-msvc/1.3.26: @@ -5244,6 +5269,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core-win32-ia32-msvc/1.3.26: @@ -5252,6 +5278,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core-win32-x64-msvc/1.3.26: @@ -5260,6 +5287,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core/1.3.26: @@ -5277,6 +5305,7 @@ packages: '@swc/core-win32-arm64-msvc': 1.3.26 '@swc/core-win32-ia32-msvc': 1.3.26 '@swc/core-win32-x64-msvc': 1.3.26 + dev: true /@swc/helpers/0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} @@ -5304,7 +5333,7 @@ packages: tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.1.8_aesdjsunmf4wiehhujt67my7tu + tailwindcss: 3.1.8_postcss@8.4.21 /@tailwindcss/typography/0.5.9_tailwindcss@3.1.8: resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==} @@ -5315,7 +5344,7 @@ packages: lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.1.8_aesdjsunmf4wiehhujt67my7tu + tailwindcss: 3.1.8_postcss@8.4.21 dev: true /@tanstack/react-table/8.7.6_biqbaboplfbrettd7655fr4n2y: @@ -5405,15 +5434,19 @@ packages: /@tsconfig/node10/1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true /@tsconfig/node12/1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true /@tsconfig/node14/1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true /@tsconfig/node16/1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true /@types/acorn/4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -6076,6 +6109,7 @@ packages: /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} + dev: true /acorn/7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} @@ -6086,6 +6120,7 @@ packages: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true + dev: true /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} @@ -6251,6 +6286,7 @@ packages: /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true /arg/5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -7525,6 +7561,7 @@ packages: /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true /crelt/1.0.5: resolution: {integrity: sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==} @@ -8020,6 +8057,7 @@ packages: /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + dev: true /diff/5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} @@ -8598,7 +8636,7 @@ packages: eslint: 8.31.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 2.7.1_hnftvkj7qg3s6bbigj4pr6djxy - eslint-plugin-import: 2.27.4_eslint@8.31.0 + eslint-plugin-import: 2.27.4_2es4x7ly2gmvaoztzzbbx3tgsy eslint-plugin-jsx-a11y: 6.7.1_eslint@8.31.0 eslint-plugin-react: 7.31.8_eslint@8.31.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.31.0 @@ -8654,7 +8692,7 @@ packages: dependencies: debug: 4.3.4 eslint: 8.31.0 - eslint-plugin-import: 2.27.4_eslint@8.31.0 + eslint-plugin-import: 2.27.4_2es4x7ly2gmvaoztzzbbx3tgsy glob: 7.2.3 is-glob: 4.0.3 resolve: 1.22.1 @@ -8683,7 +8721,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_py7h5widiydke2tta7oabbx7ru: + /eslint-module-utils/2.7.4_co4ldsxivxjwelu6vt6qmibemq: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -8704,9 +8742,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: + '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe debug: 3.2.7 eslint: 8.31.0 eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 2.7.1_hnftvkj7qg3s6bbigj4pr6djxy transitivePeerDependencies: - supports-color dev: true @@ -8794,7 +8834,7 @@ packages: - supports-color dev: true - /eslint-plugin-import/2.27.4_eslint@8.31.0: + /eslint-plugin-import/2.27.4_2es4x7ly2gmvaoztzzbbx3tgsy: resolution: {integrity: sha512-Z1jVt1EGKia1X9CnBCkpAOhWy8FgQ7OmJ/IblEkT82yrFU/xJaxwujaTzLWqigewwynRQ9mmHfX9MtAfhxm0sA==} engines: {node: '>=4'} peerDependencies: @@ -8804,6 +8844,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: + '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -8811,7 +8852,7 @@ packages: doctrine: 2.1.0 eslint: 8.31.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_py7h5widiydke2tta7oabbx7ru + eslint-module-utils: 2.7.4_co4ldsxivxjwelu6vt6qmibemq has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -11696,6 +11737,7 @@ packages: /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true /make-iterator/0.1.1: resolution: {integrity: sha512-s8tbTxYqrfcXYHAPxUecPxgBnWod7yFShdSOWiV17WRM87bBH2mzr24A4tpUDv9SqebaV6JsPApwKXnisMmMBA==} @@ -13503,6 +13545,7 @@ packages: postcss: 8.4.21 ts-node: 10.9.1_fodzh64fuekdilycyvke2qmf2e yaml: 1.10.2 + dev: true /postcss-load-config/3.1.4_postcss@8.4.21: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} @@ -13519,7 +13562,6 @@ packages: lilconfig: 2.0.6 postcss: 8.4.21 yaml: 1.10.2 - dev: true /postcss-nested/5.0.6_postcss@8.4.21: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} @@ -13911,6 +13953,15 @@ packages: shallow-equal: 1.2.1 dev: false + /react-dom/18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + scheduler: 0.23.0 + dev: false + /react-dom/18.2.0_react@18.2.0: resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -15427,6 +15478,7 @@ packages: resolve: 1.22.1 transitivePeerDependencies: - ts-node + dev: true /tailwindcss/3.1.8_postcss@8.4.21: resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} @@ -15459,7 +15511,6 @@ packages: resolve: 1.22.1 transitivePeerDependencies: - ts-node - dev: true /tapable/2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -15739,6 +15790,7 @@ packages: typescript: 4.9.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: true /ts-toolbelt/9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} @@ -16336,6 +16388,7 @@ packages: /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true /v8-to-istanbul/9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} @@ -16859,6 +16912,7 @@ packages: /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} + dev: true /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}