From de15b3acb5f27c7676916e0aaa6698598540722c Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Wed, 26 Mar 2025 09:48:31 -0500 Subject: [PATCH 001/113] fmt --- backend/src/services/db/index.ts | 4 +++- backend/src/services/db/queries.ts | 2 +- curate.config.json | 18 +++--------------- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/backend/src/services/db/index.ts b/backend/src/services/db/index.ts index 57864f78..c0b794fc 100644 --- a/backend/src/services/db/index.ts +++ b/backend/src/services/db/index.ts @@ -466,7 +466,9 @@ export class DatabaseService { ); } - async getLeaderboard(timeRange: string = "all"): Promise { + async getLeaderboard( + timeRange: string = "all", + ): Promise { return withErrorHandling( async () => { return await this.executeWithRetry(async (db) => { diff --git a/backend/src/services/db/queries.ts b/backend/src/services/db/queries.ts index de221bf8..1109a3c6 100644 --- a/backend/src/services/db/queries.ts +++ b/backend/src/services/db/queries.ts @@ -784,7 +784,7 @@ export async function getLeaderboard( curatorUsername: String(row.curatorUsername), submissionCount: Number(row.submissionCount), approvalCount: Number(row.approvalCount), - rejectionCount: Number(row.rejectionCount) + rejectionCount: Number(row.rejectionCount), })); // Get total submissions per feed diff --git a/curate.config.json b/curate.config.json index 0a808b68..4a810371 100644 --- a/curate.config.json +++ b/curate.config.json @@ -674,11 +674,7 @@ "description": "Chain agnostic Decentralized Finance news, product updates, traction, thought leadership, innovation", "moderation": { "approvers": { - "twitter": [ - "potlock_", - "plugrel", - "potlock_intern" - ] + "twitter": ["potlock_", "plugrel", "potlock_intern"] } }, "outputs": { @@ -693,10 +689,7 @@ "description": "Tech mergers and acquisitions", "moderation": { "approvers": { - "twitter": [ - "plugrel", - "potlock_intern" - ] + "twitter": ["plugrel", "potlock_intern"] } }, "outputs": { @@ -711,12 +704,7 @@ "description": "Decentralized social, Social FI product updates, news, traction, thought leadership.", "moderation": { "approvers": { - "twitter": [ - "elliot_braem", - "potlock_", - "plugrel", - "potlock_intern" - ] + "twitter": ["elliot_braem", "potlock_", "plugrel", "potlock_intern"] } }, "outputs": { From 93d75ef87d9d6a0d52724cb29210d92b9710f579 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Thu, 27 Mar 2025 11:33:57 -0700 Subject: [PATCH 002/113] added stablewatch, made piotr and stablewatch --- curate.config.json | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/curate.config.json b/curate.config.json index 4a810371..02d491db 100644 --- a/curate.config.json +++ b/curate.config.json @@ -2113,10 +2113,7 @@ "moderation": { "approvers": { "twitter": [ - "plugrel", - "0xAmerican", - "potlock_intern", - "Degenerate_DeFi", + "stablewatchHQ", "Piotr_Saczuk" ] } @@ -2178,6 +2175,20 @@ "channelId": "@stablecoinspress" } }, + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": " *[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@stablewatch" + } + }, { "transform": [ { @@ -2193,7 +2204,7 @@ "name": "{{username}}", "link": "https://x.com/{{author}}" }, - "categories": ["near", "{{tags}}"], + "categories": ["{{tags}}"], "source": { "url": "{{source}}", "title": "twitter" From c2fe01b6a390dc9e0cfc9bac08bb2a933e2c5529 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Wed, 2 Apr 2025 05:12:40 -0700 Subject: [PATCH 003/113] added uae to rak dao news --- curate.config.json | 54 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/curate.config.json b/curate.config.json index 02d491db..2b2c0a1c 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1173,12 +1173,12 @@ } }, { - "id": "anus", - "name": "The Anus Observer", - "description": "Keeping an eye on everything ANUS has to offer.", + "id": "uae", + "name": "RAK DAO News", + "description": "United Arab Emirates crypto ecosystem by RAK DAO.", "moderation": { "approvers": { - "twitter": ["nikmcfly69", "eugeneshilow", "elliot_braem", "plugrel"] + "twitter": ["MRelkhamisy" "potlock_intern", "plugrel"] } }, "outputs": { @@ -1197,6 +1197,51 @@ } } }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "šŸ‡¦šŸ‡Ŗ: *[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@rakdao_news" + } + } + ] + } + } + }, { "plugin": "@curatedotfun/ai-transform", "config": { @@ -1512,6 +1557,7 @@ } } }, + { "id": "usa", "name": "American Crypto", From 636025359366a0e458877cacdca88e6f179e2aa1 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 4 Apr 2025 12:11:28 -0500 Subject: [PATCH 004/113] fmt --- curate.config.json | 61 ++++++---------------------------------------- 1 file changed, 7 insertions(+), 54 deletions(-) diff --git a/curate.config.json b/curate.config.json index 2b2c0a1c..0fd9a90a 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1178,7 +1178,7 @@ "description": "United Arab Emirates crypto ecosystem by RAK DAO.", "moderation": { "approvers": { - "twitter": ["MRelkhamisy" "potlock_intern", "plugrel"] + "twitter": ["MRelkhamisy", "potlock_intern", "plugrel"] } }, "outputs": { @@ -1197,7 +1197,7 @@ } } }, - { + { "plugin": "@curatedotfun/ai-transform", "config": { "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", @@ -1241,51 +1241,6 @@ ] } } - }, - { - "plugin": "@curatedotfun/ai-transform", - "config": { - "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", - "apiKey": "{OPENROUTER_API_KEY}", - "schema": { - "title": { - "type": "string", - "description": "Title derived from summary of content" - }, - "summary": { - "type": "string", - "description": "Summary of content influenced by curator notes" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Relevant tags for the content" - } - } - } - } - ], - "distribute": [ - { - "transform": [ - { - "plugin": "@curatedotfun/simple-transform", - "config": { - "template": "šŸ‘: *[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" - } - } - ], - "plugin": "@curatedotfun/telegram", - "config": { - "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "@goanus" - } - } - ] - } - } }, { "id": "morph", @@ -1557,7 +1512,7 @@ } } }, - + { "id": "usa", "name": "American Crypto", @@ -2158,10 +2113,7 @@ "description": "News about the Stablecoins Ecoystem", "moderation": { "approvers": { - "twitter": [ - "stablewatchHQ", - "Piotr_Saczuk" - ] + "twitter": ["stablewatchHQ", "Piotr_Saczuk"] } }, "outputs": { @@ -2221,7 +2173,8 @@ "channelId": "@stablecoinspress" } }, - "transform": [ + { + "transform": [ { "plugin": "@curatedotfun/simple-transform", "config": { @@ -2232,7 +2185,7 @@ "plugin": "@curatedotfun/telegram", "config": { "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "@stablewatch" + "channelId": "@stablecoinspress" } }, { From e03b3f0099f980805c4e82f98b81114e06e93aa2 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 4 Apr 2025 12:16:02 -0500 Subject: [PATCH 005/113] better db logging --- backend/pnpm-lock.yaml | 9772 ----------------- backend/src/index.ts | 47 +- backend/src/services/config/config.service.ts | 7 +- backend/src/services/db/index.ts | 36 +- 4 files changed, 79 insertions(+), 9783 deletions(-) delete mode 100644 backend/pnpm-lock.yaml diff --git a/backend/pnpm-lock.yaml b/backend/pnpm-lock.yaml deleted file mode 100644 index 29e6f20b..00000000 --- a/backend/pnpm-lock.yaml +++ /dev/null @@ -1,9772 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@hono/node-server': - specifier: ^1.8.2 - version: 1.14.0(hono@4.7.5) - '@hono/zod-openapi': - specifier: ^0.9.5 - version: 0.9.10(hono@4.7.5)(zod@3.24.2) - '@hono/zod-validator': - specifier: ^0.1.11 - version: 0.1.11(hono@4.7.5)(zod@3.24.2) -<<<<<<< HEAD - '@notionhq/client': - specifier: ^2.2.15 - version: 2.3.0(encoding@0.1.13) - '@types/async-retry': - specifier: ^1.4.9 - version: 1.4.9 - '@types/lodash': - specifier: ^4.17.16 - version: 4.17.16 - '@types/pg': - specifier: ^8.11.11 - version: 8.11.11 - agent-twitter-client: - specifier: ^0.0.16 - version: 0.0.16 - async-retry: - specifier: ^1.3.3 - version: 1.3.3 -======= - '@module-federation/runtime': - specifier: ^0.11.1 - version: 0.11.1 - '@notionhq/client': - specifier: ^2.2.15 - version: 2.3.0(encoding@0.1.13) - '@types/lodash': - specifier: ^4.17.16 - version: 4.17.16 - agent-twitter-client: - specifier: ^0.0.16 - version: 0.0.16 - better-sqlite3: - specifier: 11.8.1 - version: 11.8.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - dotenv: - specifier: ^16.4.7 - version: 16.4.7 - drizzle-kit: - specifier: ^0.30.1 - version: 0.30.5 - drizzle-orm: -<<<<<<< HEAD - specifier: ^0.40.1 - version: 0.40.1(@types/pg@8.11.11)(gel@2.0.1)(pg@8.14.1) -======= - specifier: ^0.38.3 - version: 0.38.4(@types/better-sqlite3@7.6.12)(better-sqlite3@11.8.1)(react@18.3.1) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - hono: - specifier: ^4.0.5 - version: 4.7.5 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - ora: - specifier: ^8.1.1 - version: 8.2.0 -<<<<<<< HEAD - pg: - specifier: ^8.14.1 - version: 8.14.1 - pino: - specifier: ^9.6.0 - version: 9.6.0 - pino-pretty: - specifier: ^13.0.0 - version: 13.0.0 - string-width: - specifier: ^7.2.0 - version: 7.2.0 -======= - winston: - specifier: ^3.17.0 - version: 3.17.0 - winston-console-format: - specifier: ^1.0.8 - version: 1.0.8 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - devDependencies: - '@curatedotfun/types': - specifier: ^0.0.5 - version: 0.0.5 - '@module-federation/node': -<<<<<<< HEAD - specifier: ^2.6.30 - version: 2.6.31(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.19.12)) - '@module-federation/runtime': - specifier: ^0.11.1 - version: 0.11.2 - '@rspack/binding': - specifier: 1.2.8 - version: 1.2.8 - '@rspack/cli': - specifier: 1.2.8 - version: 1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) - '@rspack/core': - specifier: 1.2.8 - version: 1.2.8(@swc/helpers@0.5.13) - axios: - specifier: ^1.6.8 - version: 1.8.4 - concurrently: - specifier: ^9.1.2 - version: 9.1.2 - drizzle-seed: - specifier: ^0.3.1 - version: 0.3.1(drizzle-orm@0.40.1(@types/pg@8.11.11)(gel@2.0.1)(pg@8.14.1)) - nock: - specifier: ^13.5.4 - version: 13.5.6 -======= - specifier: ^2.6.22 - version: 2.6.30(@rspack/core@1.2.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.19.12)) - '@rspack/binding': - specifier: 1.2.6 - version: 1.2.6 - '@rspack/cli': - specifier: 1.2.6 - version: 1.2.6(@rspack/core@1.2.6)(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) - '@rspack/core': - specifier: 1.2.6 - version: 1.2.6 - '@types/better-sqlite3': - specifier: ^7.6.9 - version: 7.6.12 - '@types/node': - specifier: ^20.17.19 - version: 20.17.25 - '@types/ora': - specifier: ^3.2.0 - version: 3.2.0 - concurrently: - specifier: ^9.1.2 - version: 9.1.2 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - jest-mock-extended: - specifier: ^4.0.0-beta1 - version: 4.0.0-beta1(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)))(typescript@5.8.2) - nodemon: - specifier: ^3.1.9 - version: 3.1.9 - ts-jest: - specifier: ^29.2.5 - version: 29.2.6(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)))(typescript@5.8.2) - ts-node: - specifier: ^10.9.1 - version: 10.9.2(@types/node@20.17.25)(typescript@5.8.2) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - typescript: - specifier: ^5.3.3 - version: 5.8.2 - wait-on: - specifier: ^8.0.2 - version: 8.0.3 - zod: - specifier: ^3.22.4 - version: 3.24.2 - -packages: - -<<<<<<< HEAD -======= - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@asteasolutions/zod-to-openapi@5.5.0': - resolution: {integrity: sha512-d5HwrvM6dOKr3XdeF+DmashGvfEc+1oiEfbscugsiwSTrFtuMa7ETpW9sTNnVgn+hJaz+PRxPQUYD7q9/5dUig==} - peerDependencies: - zod: ^3.20.2 - -<<<<<<< HEAD - '@curatedotfun/types@0.0.5': - resolution: {integrity: sha512-thb89PXZHEA2BkVvRbA6b2imiglNDVzPOrdUZswF7q/tsnxGoOCwg7B1u6Y3YrajF7IdWto+TzfNnXUSadjWrA==} - -======= - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.26.10': - resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.26.5': - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.26.10': - resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.26.10': - resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/template@7.26.9': - resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.26.10': - resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.26.10': - resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - - '@colors/colors@1.6.0': - resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} - engines: {node: '>=0.1.90'} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@curatedotfun/types@0.0.5': - resolution: {integrity: sha512-thb89PXZHEA2BkVvRbA6b2imiglNDVzPOrdUZswF7q/tsnxGoOCwg7B1u6Y3YrajF7IdWto+TzfNnXUSadjWrA==} - - '@dabh/diagnostics@2.0.3': - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - - '@drizzle-team/brocli@0.10.2': - resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} - - '@esbuild-kit/core-utils@3.3.2': - resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} - deprecated: 'Merged into tsx: https://tsx.is' - - '@esbuild-kit/esm-loader@2.6.5': - resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} - deprecated: 'Merged into tsx: https://tsx.is' - - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - -<<<<<<< HEAD - '@esbuild/android-arm64@0.17.19': - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - -<<<<<<< HEAD - '@esbuild/android-arm@0.17.19': - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - -<<<<<<< HEAD - '@esbuild/android-x64@0.17.19': - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - -<<<<<<< HEAD - '@esbuild/darwin-arm64@0.17.19': - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - -<<<<<<< HEAD - '@esbuild/darwin-x64@0.17.19': - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - -<<<<<<< HEAD - '@esbuild/freebsd-arm64@0.17.19': - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - -<<<<<<< HEAD - '@esbuild/freebsd-x64@0.17.19': - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - -<<<<<<< HEAD - '@esbuild/linux-arm64@0.17.19': - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - -<<<<<<< HEAD - '@esbuild/linux-arm@0.17.19': - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - -<<<<<<< HEAD - '@esbuild/linux-ia32@0.17.19': - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - -<<<<<<< HEAD - '@esbuild/linux-loong64@0.17.19': - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - -<<<<<<< HEAD - '@esbuild/linux-mips64el@0.17.19': - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - -<<<<<<< HEAD - '@esbuild/linux-ppc64@0.17.19': - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - -<<<<<<< HEAD - '@esbuild/linux-riscv64@0.17.19': - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - -<<<<<<< HEAD - '@esbuild/linux-s390x@0.17.19': - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - -<<<<<<< HEAD - '@esbuild/linux-x64@0.17.19': - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - -<<<<<<< HEAD - '@esbuild/netbsd-x64@0.17.19': - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - -<<<<<<< HEAD - '@esbuild/openbsd-x64@0.17.19': - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - -<<<<<<< HEAD - '@esbuild/sunos-x64@0.17.19': - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - -<<<<<<< HEAD - '@esbuild/win32-arm64@0.17.19': - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - -<<<<<<< HEAD - '@esbuild/win32-ia32@0.17.19': - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - -<<<<<<< HEAD - '@esbuild/win32-x64@0.17.19': - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - - '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - - '@hono/node-server@1.14.0': - resolution: {integrity: sha512-YUCxJwgHRKSqjrdTk9e4VMGKN27MK5r4+MGPyZTgKH+IYbK+KtYbHeOcPGJ91KGGD6RIQiz2dAHxvjauNhOS8g==} - engines: {node: '>=18.14.1'} - peerDependencies: - hono: ^4 - - '@hono/zod-openapi@0.9.10': - resolution: {integrity: sha512-v/b/z0qPxDo952gjRyhJ0n9ifbPoIluR2KmXDL20np0hj99+XvakoIHK5/T/3+hUmXlTj1Kn3TiGsSV6hwZesg==} - engines: {node: '>=16.0.0'} - peerDependencies: - hono: '>=3.11.3' - zod: 3.* - - '@hono/zod-validator@0.1.11': - resolution: {integrity: sha512-PQXeHUP0+36qpRt8yfeD7N2jbK3ETlGvSN6dMof/HwUC/APRokQRjpXZm4rrlG71Ft0aWE01+Bm4XejqPie5Uw==} - peerDependencies: - hono: '>=3.9.0' - zod: ^3.19.1 - - '@hono/zod-validator@0.2.1': - resolution: {integrity: sha512-HFoxln7Q6JsE64qz2WBS28SD33UB2alp3aRKmcWnNLDzEL1BLsWfbdX6e1HIiUprHYTIXf5y7ax8eYidKUwyaA==} - peerDependencies: - hono: '>=3.9.0' - zod: ^3.19.1 - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - -<<<<<<< HEAD -======= - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - -<<<<<<< HEAD -======= - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@jsonjoy.com/base64@1.1.2': - resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pack@1.2.0': - resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/util@1.5.0': - resolution: {integrity: sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - -<<<<<<< HEAD - '@modern-js/node-bundle-require@2.65.1': - resolution: {integrity: sha512-XpEkciVEfDbkkLUI662ZFlI9tXsUQtLXk4NRJDBGosNnk9uL2XszmC8sKsdCSLK8AYuPW2w6MTVWuJsOR0EU8A==} - - '@modern-js/utils@2.65.1': - resolution: {integrity: sha512-HrChf19F+6nALo5XPra8ycjhXGQfGi23+S7Y2FLfTKe8vaNnky8duT/XvRWpbS4pp3SQj8ryO8m/qWSsJ1Rogw==} - - '@module-federation/bridge-react-webpack-plugin@0.11.2': - resolution: {integrity: sha512-XDJC01XsByG9IwtpWgoTrZdGecN7fmfOEbs/MFLvPAkn9RhPoMJ6X76MSlpsOkwFxK1T7YLkgpVXwdiZKVVXUg==} - - '@module-federation/cli@0.11.2': - resolution: {integrity: sha512-dIM58VawvWM+UdftVQ/tW8A07LrYRE1260DKJ6feRGbu9NoMV/M35WaNO5HKGHsk1kptXzbZoykkateo7TabrA==} - engines: {node: '>=16.0.0'} - hasBin: true - - '@module-federation/data-prefetch@0.11.2': - resolution: {integrity: sha512-3HiKo/F51MMjy3Os9sELzxfaSiOcpDXT2zTAvedm4h1XT+nGXq04cKcOQ6rhjl91npKP2wOo/2sE3pWYzrnPhw==} -======= - '@module-federation/bridge-react-webpack-plugin@0.11.1': - resolution: {integrity: sha512-SUoJE7dEQZVUwBGN+mcMxLyQcQT0RAOZfcjp6Jq3uS6dTtEmJiR4KKGAaNYBlaszBh/HxmiM1U+zE3G126O7tQ==} - - '@module-federation/data-prefetch@0.11.1': - resolution: {integrity: sha512-94CiNMHqFdaP93RzzEkMyAQcjXMdlSrsMd9R0htzW23keSnerWnmTcRfkvuzKSAR5cqYszGlrYH9CLyMl1T56A==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - -<<<<<<< HEAD - '@module-federation/dts-plugin@0.11.2': - resolution: {integrity: sha512-djZZDq8pTpjfDfXoU2knVOAmjoDWvJHcVScbCNI8zjOtwTvvH26EeOfQligiQxdhsCuGf+MQpeP4o6wqWeJW6w==} -======= - '@module-federation/dts-plugin@0.11.1': - resolution: {integrity: sha512-1fsnNb1dIYFoZ9Gk0gVXb/7+YDm0yWSBsVQvGLBOxMSaf1aF12mVi7MF9+l/ax4BgtgFvqVwekKssAbOXrjsig==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - vue-tsc: - optional: true - -<<<<<<< HEAD - '@module-federation/enhanced@0.11.2': - resolution: {integrity: sha512-OlISmj/d0egdGkUOgnVxvyCmoo+eMNBMpiCS3pQj4cnVN4NMs67qxioOD4Q5p04Tzc2jSot2LzRcBM44aTNN2A==} - hasBin: true -======= - '@module-federation/enhanced@0.11.1': - resolution: {integrity: sha512-B+2kWuzkwEZvpLxwiah2gxHov9Xw2fmXZKvMqBwDSGCOobTtdipAjAeG0AXm7mdEO1Xw/SkZgEDLYQxW27exjA==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - webpack: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - webpack: - optional: true - -<<<<<<< HEAD - '@module-federation/error-codes@0.11.2': - resolution: {integrity: sha512-ik1Qnn0I+WyEdprTck9WGlH41vGsVdUg8cfO+ZM02qOb2cZm5Vu3SlxGAobj6g7uAj0g8yINnd7h7Dci40BxQA==} -======= - '@module-federation/error-codes@0.11.1': - resolution: {integrity: sha512-N1cs1qwrO8cU/OzfnBbr+3FaVbrJk6QEAsQ8H+YxGRrh/kHsR2BKpZCX79jTG27oDbz45FLjQ98YucMMXC24EA==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@module-federation/error-codes@0.8.4': - resolution: {integrity: sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==} - -<<<<<<< HEAD - '@module-federation/inject-external-runtime-core-plugin@0.11.2': - resolution: {integrity: sha512-3rUWjos0mb2apXpgebWzGmqXx+8Ky2re4b4QxM8pwsE/9HFn18E/HGURJ/5Ur3Xhw81NjIAVVKxKg3bYSqjVuQ==} - peerDependencies: - '@module-federation/runtime-tools': 0.11.2 - - '@module-federation/managers@0.11.2': - resolution: {integrity: sha512-nFi0dRgNWpLy0KB85tWhuqbQztTSsUixcbheu/ZSCjVVWShFN6Va2lZg0XyUlXFX/fy4vKrwMBBE5LXxXNubRw==} - - '@module-federation/manifest@0.11.2': - resolution: {integrity: sha512-5yDbq0MmlmCihRJDhFsuJEIGVjZkylybeHn7hwH0LHTtWAClc7APeXDKh7jPHVgOVmgcQBqaIqyHPeuantVydw==} - - '@module-federation/node@2.6.31': - resolution: {integrity: sha512-La+sF0AVW6mAj70WhtNHohMyqevadi9g6X1q42r0N2YaZMx5h/mqRIw/m04/SJOT4D1bSqD7+/VoSBFy9YhnDQ==} - peerDependencies: - next: '*' - react: ^16||^17||^18||^19 - react-dom: ^16||^17||^18||^19 -======= - '@module-federation/inject-external-runtime-core-plugin@0.11.1': - resolution: {integrity: sha512-giayNxsx7XK86aIzydjtnn8UD8qYyBcVwmsFEEXXA02Jod36CGRFcd0eQ6TzgVEF7kE3iZkpHEKJBGontl32Qg==} - peerDependencies: - '@module-federation/runtime-tools': 0.11.1 - - '@module-federation/managers@0.11.1': - resolution: {integrity: sha512-qEgJE4qFfIaPVpGncsCvn5eqC6VJ8wT2jwPF2+27cpU5IqZwvfIBZlIjUkGEDPjUtbS10JdGKBfLFrcI+p9i5A==} - - '@module-federation/manifest@0.11.1': - resolution: {integrity: sha512-y4zoS4QJMn6OVtY3Wkq3khtjVCU3J8Pnb1CbjM5xoJ7jy/qZhTnDJd194czoQgzx4MnP+BR5jshEQha9GCFPzg==} - - '@module-federation/node@2.6.30': - resolution: {integrity: sha512-TciyaA7yHg92XFld/pNw+GW3HRb49Ji6WxMYtZpjVqM8AXOvxKWMw3Mt5hnDTfwyGKGz/IWfrZM2pOQdGznrWw==} - peerDependencies: - next: '*' - react: ^16||^17||^18 - react-dom: ^16||^17||^18 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - webpack: ^5.40.0 - peerDependenciesMeta: - next: - optional: true - react: - optional: true - react-dom: - optional: true - -<<<<<<< HEAD - '@module-federation/rspack@0.11.2': - resolution: {integrity: sha512-oEQXufLbAM7MXDVkE5qE+K3ItrWxlSOHL9db8voo20LvaOe3vwr4rILTj3Ou2Rev4QpLY4eMO7HIwPJBTb6ncQ==} -======= - '@module-federation/rspack@0.11.1': - resolution: {integrity: sha512-hhikMBb7qSWCKtoCPO1QLoJwu4BsZPAKs9nychLXakMPQEGByrnh/upVb1C2wep2C4Ax9sjuFT7zD/3CdHOmGg==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - peerDependencies: - '@rspack/core': '>=0.7' - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - -<<<<<<< HEAD - '@module-federation/runtime-core@0.11.2': - resolution: {integrity: sha512-dia5kKybi6MFU0s5PgglJwN27k7n9Sf69Cy5xZ4BWaP0qlaXTsxHKO0PECHNt2Pt8jDdyU29sQ4DwAQfxpnXJQ==} - - '@module-federation/runtime-tools@0.11.2': - resolution: {integrity: sha512-4MJTGAxVq6vxQRkTtTlH7Mm9AVqgn0X9kdu+7RsL7T/qU+jeYsbrntN2CWG3GVVA8r5JddXyTI1iJ0VXQZLV1w==} -======= - '@module-federation/runtime-core@0.11.1': - resolution: {integrity: sha512-6KxLfkCl05Ey69Xg/dsjf7fPit9qGXZ0lpwaG2agiCqC3JCDxYjT7tgGvnWhTXCcztb/ThpT+bHrRD4Kw8SMhA==} - - '@module-federation/runtime-tools@0.11.1': - resolution: {integrity: sha512-8UqMbHJSdkEvKlnlXpR/OjMA77bUbhtmv0I4UO+PA1zBga4y3/St6NOjD66NTINKeWEgsCt1aepXHspduXp33w==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@module-federation/runtime-tools@0.8.4': - resolution: {integrity: sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==} - -<<<<<<< HEAD - '@module-federation/runtime@0.11.2': - resolution: {integrity: sha512-Ya9u/L6z2LvhgpqxuKCB7LcigIIRf1BbaxAZIH7mzbq/A7rZtTP7v+73E433jvgiAlbAfPSZkeoYGele6hfRwA==} -======= - '@module-federation/runtime@0.11.1': - resolution: {integrity: sha512-yxxa/TRXaNggb34N+oL82J7r9+GZ3gYTCDyGibYqtsC5j7+9oB4tmc0UyhjrGMhg+fF8TAWFZjNKo7ZnyN9LcQ==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@module-federation/runtime@0.8.4': - resolution: {integrity: sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==} - -<<<<<<< HEAD - '@module-federation/sdk@0.11.2': - resolution: {integrity: sha512-SBFe5xOamluT900J4AGBx+2/kCH/JbfqXoUwPSAC6PRzb8Y7LB0posnOGzmqYsLZXT37vp3d6AmJDsVoajDqxw==} -======= - '@module-federation/sdk@0.11.1': - resolution: {integrity: sha512-QS6zevdQYLCGF6NFf0LysMGARh+dZxMeoRKKDUW5PYi3XOk+tjJ7QsDKybfcBZBNgBJfIuwxh4Oei6WOFJEfRg==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@module-federation/sdk@0.8.4': - resolution: {integrity: sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==} - -<<<<<<< HEAD - '@module-federation/third-party-dts-extractor@0.11.2': - resolution: {integrity: sha512-rZuFRH43s68O2KED054Pgd9mV18NWME7Q9ZPuAzN1NGNH/J7Nevyt5MJXrHIaopF/2QpcrYNVjIgdqpRp9FJBg==} - - '@module-federation/utilities@3.1.49': - resolution: {integrity: sha512-1fhrrQaXe3F1Z7mkgiwtQf3HmFeTRP6lUdGBu1BvKOK66IMIXlncDUoPKijKoU6xvoQsn9SEooQmGzO2MiTVQA==} -======= - '@module-federation/third-party-dts-extractor@0.11.1': - resolution: {integrity: sha512-oyyelSLGFObM699p192Cuk/LxEDdzSOywDUXrzPa/qSKNFii5WartjQRc4QPMLnsQaGD7fQVTTiBkvVBcWUdyQ==} - - '@module-federation/utilities@3.1.48': - resolution: {integrity: sha512-eY1JrnVKNX/gECe121kzgHUu/P9jSrkxFzbm7Hs+eaMo+hhwCyqbwJTOi5kZzk9xDnnP6555nESk8+3ovKlOFw==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - peerDependencies: - next: '*' - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - webpack: ^5.40.0 - peerDependenciesMeta: - next: - optional: true - react: - optional: true - react-dom: - optional: true - -<<<<<<< HEAD - '@module-federation/webpack-bundler-runtime@0.11.2': - resolution: {integrity: sha512-WdwIE6QF+MKs/PdVu0cKPETF743JB9PZ62/qf7Uo3gU4fjsUMc37RnbJZ/qB60EaHHfjwp1v6NnhZw1r4eVsnw==} -======= - '@module-federation/webpack-bundler-runtime@0.11.1': - resolution: {integrity: sha512-XlVegGyCBBLId8Jr6USjPOFYViQ0CCtoYjHpC8y1FOGtuXLGrvnEdFcl4XHlFlp3MY3Rxhr8QigrdZhYe5bRWg==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@module-federation/webpack-bundler-runtime@0.8.4': - resolution: {integrity: sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==} - - '@noble/hashes@1.6.1': - resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} - engines: {node: ^14.21.3 || >=16} - - '@notionhq/client@2.3.0': - resolution: {integrity: sha512-l7WqTCpQqC+HibkB9chghONQTYcxNQT0/rOJemBfmuKQRTu2vuV8B3yA395iKaUdDo7HI+0KvQaz9687Xskzkw==} - engines: {node: '>=12'} - - '@petamoriken/float16@3.9.2': - resolution: {integrity: sha512-VgffxawQde93xKxT3qap3OH+meZf7VaSB5Sqd4Rqc+FP5alWbpOyan/7tRbOAvynjpG3GpdtAuGU/NdhQpmrog==} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@polka/url@1.0.0-next.28': - resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} - -<<<<<<< HEAD - '@rspack/binding-darwin-arm64@1.2.8': - resolution: {integrity: sha512-bDlrlroY3iMlzna/3i1gD6eRmhJW2zRyC3Ov6aR1micshVQ9RteigYZWkjZuQfyC5Z8dCcLUQJVojz+pqp0JXg==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@1.2.8': - resolution: {integrity: sha512-0/qOVbMuzZ+WbtDa4TbH46R4vph/W6MHcXbrXDO+vpdTMFDVJ64DnZXT7aqvGcY+7vTCIGm0GT+6ooR4KaIX8A==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@1.2.8': - resolution: {integrity: sha512-En/SMl45s19iUVb1/ZDFQvFDxIjnlfk7yqV3drMWWAL5HSgksNejaTIFTO52aoohIBbmwuk5wSGcbU0G0IFiPg==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-musl@1.2.8': - resolution: {integrity: sha512-N1oZsXfJ9VLLcK7p1PS65cxLYQCZ7iqHW2OP6Ew2+hlz/d1hzngxgzrtZMCXFOHXDvTzVu5ff6jGS2v7+zv2tA==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-x64-gnu@1.2.8': - resolution: {integrity: sha512-BdPaepoLKuaVwip4QK/nGqNi1xpbCWSxiycPbKRrGqKgt/QGihxxFgiqr4EpWQVIJNIMy4nCsg4arO0+H1KWGQ==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-musl@1.2.8': - resolution: {integrity: sha512-GFv0Bod268OcXIcjeLoPlK0oz8rClEIxIRFkz+ejhbvfCwRJ+Fd+EKaaKQTBfZQujPqc0h2GctIF25nN5pFTmA==} - cpu: [x64] - os: [linux] - - '@rspack/binding-win32-arm64-msvc@1.2.8': - resolution: {integrity: sha512-aEU+uJdbvJJGrzzAsjbjrPeNbG/bcG8JoXK2kSsUB+/sWHTIkHX0AQ3oX3aV/lcLKgZWrUxLAfLoCXEnIHMEyQ==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@1.2.8': - resolution: {integrity: sha512-GHYzNOSoiLyG9elLTmMqADJMQzjll+co4irp5AgZ+KHG9EVq0qEHxDqDIJxZnUA15U8JDvCgo6YAo3T0BFEL0Q==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@1.2.8': - resolution: {integrity: sha512-EigKLhKLH1kfv1e/ZgXuSKlIjkbyneJtiLbNDz7EeEVFGV1XMM6bsCea1sb2WOxsPYiOX4Q5JmR1j1KGrZS/LA==} - cpu: [x64] - os: [win32] - - '@rspack/binding@1.2.8': - resolution: {integrity: sha512-T3FMB3N9P1AbSAryfkSRJkPtmeSYs/Gj9zUZoPz1ckPEIcWZmpUOQbJylldjbw5waxtCL1haHNbi0pcSvxiaJw==} - - '@rspack/cli@1.2.8': - resolution: {integrity: sha512-xPNLJCnQt8B1j7i4T67MmVzYxJfx0c+gEhHozfVfpg/2PwuR9PBMnwo+53wJkUJk+ctJ+eMLQomDZymq4j26nA==} -======= - '@rspack/binding-darwin-arm64@1.2.6': - resolution: {integrity: sha512-31URF3tAgVR8Pt6Oc8MANV/gYNR6DlUhtIMmWM2EwdcWTyIEnN7gSDdjtB6cYvETHwdM7NDSCOgyIirG1+tNZw==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@1.2.6': - resolution: {integrity: sha512-0XJMOGEqERP9N8zgJxfdWzuZG9buEp6RL4PSVaXPvcKw75Ig3YW50A8sMqd4SNXAqJp2gC706d6l8OnMXpRo3w==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@1.2.6': - resolution: {integrity: sha512-Ld26wvy9NSTqhUb/ll5ZpIW08ZzUkTl5daW3xHJgcaoRDrnJkRV1pMx8cdV8S+xsavJIPf4c+BuKpU6Ml2kx9A==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-musl@1.2.6': - resolution: {integrity: sha512-TrklgPKngiuzRovr7MdXDKXPfjJlT3g5LmCX/Y4pPfNrrOLjzL/fpEBRXBJEhrSuNWqpkZSNLs+Av02IY7manQ==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-x64-gnu@1.2.6': - resolution: {integrity: sha512-aZ6mrZyuUg8hlBf7qEfXRAVPh2tM8E7kYZhI5eBOUoi6XhO5fTVcf/S2VUimFWLUmJdmSujG+nrYGQu1n74Xag==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-musl@1.2.6': - resolution: {integrity: sha512-Trg+s1b6sD4XNMOvwWwI+cebwGOBEXsND9Ofjc6L1RPtCeZQ5Rrycfh/HVymI50Y48g8YMibLZw8G2gAfK8SZw==} - cpu: [x64] - os: [linux] - - '@rspack/binding-win32-arm64-msvc@1.2.6': - resolution: {integrity: sha512-lEWMW8H5ERYX376NA2qGritCHmcMNW+Ob6WVWuEZNh0oWeBD/mWqWFxbCx5J3KtlVy4miwk65V8YDd92alUEyw==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@1.2.6': - resolution: {integrity: sha512-ML3f7vDyv2c7d+ync6l3aRY4cIAKUPT5n+yz7sRcwIBrB4n1n4rH6wf5a56h4wHjiWpnV0gXBXI9SrYD5a4vRQ==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@1.2.6': - resolution: {integrity: sha512-0W0iComo7cdOg5fOuaZ2l1Mz7DG1A4SPDes557n9CH2Tf5rub3m2rBoMQ1B/XIkcUeGf+oB6bbBBroHPH0vQBA==} - cpu: [x64] - os: [win32] - - '@rspack/binding@1.2.6': - resolution: {integrity: sha512-Szu9w+RktSunBNfIHDORY/YRLFplhnUF9QgpUles8XYzKo6NA96WQNJoFbrBDkEQPbNUtVpEk4Ua1c9ZWtVTJQ==} - - '@rspack/cli@1.2.6': - resolution: {integrity: sha512-pUaLRMAW1x4kHk5rDbQg+zzOpvHpfUFPp5KsuccclrKpHjKCLcK2KTNohpDHd+rVH5qCrxvV+bU7s0XHN4saOA==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - hasBin: true - peerDependencies: - '@rspack/core': ^1.0.0-alpha || ^1.x - '@rspack/tracing': ^1.x - peerDependenciesMeta: - '@rspack/tracing': - optional: true - -<<<<<<< HEAD - '@rspack/core@1.2.8': - resolution: {integrity: sha512-ppj3uQQtkhgrYDLrUqb33YbpNEZCpAudpfVuOHGsvUrAnu1PijbfJJymoA5ZvUhM+HNMvPI5D1ie97TXyb0UVg==} -======= - '@rspack/core@1.2.6': - resolution: {integrity: sha512-CYiz6kXWdZX0tKu819Bromg84W9+GrgSY7OTMtr39IKRcCHjdVVjPYFthga2bNppfT+Ifeti5Ed06Xxlptr9CQ==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - engines: {node: '>=16.0.0'} - peerDependencies: - '@rspack/tracing': ^1.x - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@rspack/tracing': - optional: true - '@swc/helpers': - optional: true - - '@rspack/dev-server@1.0.10': - resolution: {integrity: sha512-iDsEtP0jNHRm4LJxL00QFTlOuqkdxIFxnd69h0KrFadmtxAWiDLIe4vYdZXWF74w4MezsJFx6dB2nUM/Ok8utA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': '*' - - '@rspack/lite-tapable@1.0.1': - resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} - engines: {node: '>=16.0.0'} - - '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - - '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - -<<<<<<< HEAD - '@sinclair/typebox@0.32.35': - resolution: {integrity: sha512-Ul3YyOTU++to8cgNkttakC0dWvpERr6RYoHO2W47DLbFvrwBDJUY31B1sImH6JZSYc4Kt4PyHtoPNu+vL2r2dA==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@types/async-retry@1.4.9': - resolution: {integrity: sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==} -======= - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sinclair/typebox@0.32.35': - resolution: {integrity: sha512-Ul3YyOTU++to8cgNkttakC0dWvpERr6RYoHO2W47DLbFvrwBDJUY31B1sImH6JZSYc4Kt4PyHtoPNu+vL2r2dA==} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/better-sqlite3@7.6.12': - resolution: {integrity: sha512-fnQmj8lELIj7BSrZQAdBMHEHX8OZLYIHXqAKT1O7tDfLxaINzf00PMjw22r3N/xXh0w/sGHlO6SVaCQ2mj78lg==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/bonjour@3.5.13': - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - - '@types/connect-history-api-fallback@1.5.4': - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - -<<<<<<< HEAD - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} -======= - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - - '@types/express-serve-static-core@5.0.6': - resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - -<<<<<<< HEAD -======= - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - - '@types/http-proxy@1.17.16': - resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} - -<<<<<<< HEAD -======= - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/lodash@4.17.16': - resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/node-fetch@2.6.12': - resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} - - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - -<<<<<<< HEAD - '@types/node@22.13.13': - resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==} - - '@types/pg@8.11.11': - resolution: {integrity: sha512-kGT1qKM8wJQ5qlawUrEkXgvMSXoV213KfMGXcwfDwUIfUHXqXYXOfS1nE1LINRJVVVx5wCm70XnFlMHaIcQAfw==} -======= - '@types/node@20.17.25': - resolution: {integrity: sha512-bT+r2haIlplJUYtlZrEanFHdPIZTeiMeh/fSOEbOOfWf9uTn+lg8g0KU6Q3iMgjd9FLuuMAgfCNSkjUbxL6E3Q==} - - '@types/ora@3.2.0': - resolution: {integrity: sha512-jll99xUKpiFbIFZSQcxm4numfsLaOWBzWNaRk3PvTSE7BPqTzzOCFmS0mQ7m8qkTfmYhuYbehTGsxkvRLPC++w==} - deprecated: This is a stub types definition. ora provides its own type definitions, so you do not need this installed. ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@types/qs@6.9.18': - resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/retry@0.12.0': - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - - '@types/retry@0.12.2': - resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - -<<<<<<< HEAD - '@types/retry@0.12.5': - resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - - '@types/serve-index@1.9.4': - resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - - '@types/sockjs@0.3.36': - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - -<<<<<<< HEAD - '@types/ws@8.18.0': - resolution: {integrity: sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==} - -======= - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - '@types/triple-beam@1.3.5': - resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - - '@types/ws@8.18.0': - resolution: {integrity: sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==} - - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - - adm-zip@0.5.16: - resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} - engines: {node: '>=12.0'} - - agent-twitter-client@0.0.16: - resolution: {integrity: sha512-Clgb/N2LXoGMlId6GDUaaR05eJ0PqSifM6wikl/FiQ2+3+6I2ZhZB7KRulc8R4xvYFe6h0wNWe6FZiF48r124w==} - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - -<<<<<<< HEAD -======= - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - -<<<<<<< HEAD -======= - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - -<<<<<<< HEAD - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} -======= - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - -<<<<<<< HEAD - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - axios@1.8.4: - resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - -======= - axios@1.8.4: - resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} - - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - - better-sqlite3@11.8.1: - resolution: {integrity: sha512-9BxNaBkblMjhJW8sMRZxnxVTRgbRmssZW0Oxc1MPBTfiR+WW21e2Mk4qu8CzrcZb1LwPCnFsfDEzq+SNcBU8eg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - -<<<<<<< HEAD -======= - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - bonjour-service@1.3.0: - resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} - -<<<<<<< HEAD -======= - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - -<<<<<<< HEAD -======= - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - btoa@1.2.1: - resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} - engines: {node: '>= 0.4.0'} - hasBin: true - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - -<<<<<<< HEAD -======= - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - cache-content-type@1.0.1: - resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} - engines: {node: '>= 6.0.0'} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - -<<<<<<< HEAD -======= - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - caniuse-lite@1.0.30001707: - resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - -<<<<<<< HEAD -======= - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - -<<<<<<< HEAD -======= - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - -<<<<<<< HEAD -======= - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - -<<<<<<< HEAD -======= - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - -<<<<<<< HEAD - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - -======= - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - colors@1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - - colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - -<<<<<<< HEAD - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.8.0: - resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} - engines: {node: '>= 0.8.0'} - -<<<<<<< HEAD -======= - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - concurrently@9.1.2: - resolution: {integrity: sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==} - engines: {node: '>=18'} - hasBin: true - - connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - -<<<<<<< HEAD -======= - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - - cookies@0.9.1: - resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} - engines: {node: '>= 0.8'} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - -<<<<<<< HEAD -======= - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - cron-parser@4.9.0: - resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} - engines: {node: '>=12.0.0'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - - date-format@4.0.14: - resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} - engines: {node: '>=4.0'} - -<<<<<<< HEAD - dateformat@4.6.3: - resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - -<<<<<<< HEAD - deep-equal@1.0.1: - resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} - -======= - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deep-equal@1.0.1: - resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} - engines: {node: '>=18'} - - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} - engines: {node: '>=18'} - - default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - -<<<<<<< HEAD - detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - -======= - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - - detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - - dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} - engines: {node: '>=12'} - - drizzle-kit@0.30.5: - resolution: {integrity: sha512-l6dMSE100u7sDaTbLczibrQZjA35jLsHNqIV+jmhNVO3O8jzM6kywMOmV9uOz9ZVSCMPQhAZEFjL/qDPVrqpUA==} - hasBin: true - -<<<<<<< HEAD - drizzle-orm@0.40.1: - resolution: {integrity: sha512-aPNhtiJiPfm3qxz1czrnIDkfvkSdKGXYeZkpG55NPTVI186LmK2fBLMi4dsHpPHlJrZeQ92D322YFPHADBALew==} -======= - drizzle-orm@0.38.4: - resolution: {integrity: sha512-s7/5BpLKO+WJRHspvpqTydxFob8i1vo2rEx4pY6TGY7QSMuUfWUuzaY0DIpXCkgHOo37BaFC+SJQb99dDUXT3Q==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - peerDependencies: - '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=4' - '@electric-sql/pglite': '>=0.2.0' - '@libsql/client': '>=0.10.0' - '@libsql/client-wasm': '>=0.10.0' - '@neondatabase/serverless': '>=0.10.0' - '@op-engineering/op-sqlite': '>=2' - '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1' - '@prisma/client': '*' - '@tidbcloud/serverless': '*' - '@types/better-sqlite3': '*' - '@types/pg': '*' -<<<<<<< HEAD -======= - '@types/react': '>=18' ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/sql.js': '*' - '@vercel/postgres': '>=0.8.0' - '@xata.io/client': '*' - better-sqlite3: '>=7' - bun-types: '*' - expo-sqlite: '>=14.0.0' -<<<<<<< HEAD - gel: '>=2' -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - knex: '*' - kysely: '*' - mysql2: '>=2' - pg: '>=8' - postgres: '>=3' - prisma: '*' -<<<<<<< HEAD -======= - react: '>=18' ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - sql.js: '>=1' - sqlite3: '>=5' - peerDependenciesMeta: - '@aws-sdk/client-rds-data': - optional: true - '@cloudflare/workers-types': - optional: true - '@electric-sql/pglite': - optional: true - '@libsql/client': - optional: true - '@libsql/client-wasm': - optional: true - '@neondatabase/serverless': - optional: true - '@op-engineering/op-sqlite': - optional: true - '@opentelemetry/api': - optional: true - '@planetscale/database': - optional: true - '@prisma/client': - optional: true - '@tidbcloud/serverless': - optional: true - '@types/better-sqlite3': - optional: true - '@types/pg': - optional: true -<<<<<<< HEAD -======= - '@types/react': - optional: true ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/sql.js': - optional: true - '@vercel/postgres': - optional: true - '@xata.io/client': - optional: true - better-sqlite3: - optional: true - bun-types: - optional: true - expo-sqlite: - optional: true -<<<<<<< HEAD - gel: - optional: true -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - knex: - optional: true - kysely: - optional: true - mysql2: - optional: true - pg: - optional: true - postgres: - optional: true - prisma: - optional: true -<<<<<<< HEAD -======= - react: - optional: true ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - sql.js: - optional: true - sqlite3: - optional: true - -<<<<<<< HEAD - drizzle-seed@0.3.1: - resolution: {integrity: sha512-F/0lgvfOAsqlYoHM/QAGut4xXIOXoE5VoAdv2FIl7DpGYVXlAzKuJO+IphkKUFK3Dz+rFlOsQLnMNrvoQ0cx7g==} - peerDependencies: - drizzle-orm: '>=0.36.4' - peerDependenciesMeta: - drizzle-orm: - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - -<<<<<<< HEAD - electron-to-chromium@1.5.123: - resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==} - -======= - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.5.123: - resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==} - - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - -<<<<<<< HEAD -======= - enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} - engines: {node: '>=10.13.0'} - - env-paths@3.0.0: - resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - -<<<<<<< HEAD -======= - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - esbuild-register@3.6.0: - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} - peerDependencies: - esbuild: '>=0.12 <1' - -<<<<<<< HEAD - esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - -<<<<<<< HEAD -======= - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - -<<<<<<< HEAD -======= - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - exit-hook@4.0.0: - resolution: {integrity: sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==} - engines: {node: '>=18'} - -<<<<<<< HEAD -======= - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - -<<<<<<< HEAD -======= - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} - -<<<<<<< HEAD - fast-copy@3.0.2: - resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} -======= - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - - faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - -<<<<<<< HEAD -======= - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - -<<<<<<< HEAD -======= - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - find-file-up@2.0.1: - resolution: {integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==} - engines: {node: '>=8'} - - find-pkg@2.0.0: - resolution: {integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==} - engines: {node: '>=8'} - -<<<<<<< HEAD - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - -======= - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - - fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - -<<<<<<< HEAD -======= - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - -<<<<<<< HEAD -======= - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - gel@2.0.1: - resolution: {integrity: sha512-gfem3IGvqKqXwEq7XseBogyaRwGsQGuE7Cw/yQsjLGdgiyqX92G1xENPCE0ltunPGcsJIa6XBOTx/PK169mOqw==} - engines: {node: '>= 18.0.0'} - hasBin: true - -<<<<<<< HEAD -======= - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} - engines: {node: '>=18'} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - -<<<<<<< HEAD -======= - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} - -<<<<<<< HEAD -======= - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - -<<<<<<< HEAD -======= - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - - global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - -<<<<<<< HEAD -======= - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - - handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - -<<<<<<< HEAD -======= - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - headers-polyfill@3.3.0: - resolution: {integrity: sha512-5e57etwBpNcDc0b6KCVWEh/Ro063OxPvzVimUdM0/tsYM/T7Hfy3kknIGj78SFTOhNd8AZY41U8mOHoO4LzmIQ==} - -<<<<<<< HEAD - help-me@5.0.0: - resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - - hono@4.7.5: - resolution: {integrity: sha512-fDOK5W2C1vZACsgLONigdZTRZxuBqFtcKh7bUQ5cVSbwI2RWjloJDcgFOVzbQrlI6pCmhlTsVYZ7zpLj4m4qMQ==} - engines: {node: '>=16.9.0'} - - hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - - html-entities@2.5.3: - resolution: {integrity: sha512-D3AfvN7SjhTgBSA8L1BN4FpPzuEd06uy4lHwSoRWr0lndi9BKaNzPLKGOWZ2ocSGguozr08TTb2jhCLHaemruw==} - -<<<<<<< HEAD -======= - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - http-assert@1.5.0: - resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} - engines: {node: '>= 0.8'} - - http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - - http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - - http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-parser-js@0.5.9: - resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} - - http-proxy-middleware@2.0.7: - resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - hyperdyperid@1.2.0: - resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} - engines: {node: '>=10.18'} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - -<<<<<<< HEAD -======= - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore-by-default@1.0.1: - resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} - - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - interpret@3.1.1: - resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} - engines: {node: '>=10.13.0'} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - -<<<<<<< HEAD -======= - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - -<<<<<<< HEAD -======= - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - - is-network-error@1.1.0: - resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} - engines: {node: '>=16'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - - isomorphic-rslog@0.0.6: - resolution: {integrity: sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==} - engines: {node: '>=14.17.6'} - - isomorphic-ws@5.0.0: - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - -<<<<<<< HEAD - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - -======= - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock-extended@4.0.0-beta1: - resolution: {integrity: sha512-MYcI0wQu3ceNhqKoqAJOdEfsVMamAFqDTjoLN5Y45PAG3iIm4WGnhOu0wpMjlWCexVPO71PMoNir9QrGXrnIlw==} - peerDependencies: - '@jest/globals': ^28.0.0 || ^29.0.0 - jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 - typescript: ^3.0.0 || ^4.0.0 || ^5.0.0 - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - -<<<<<<< HEAD - joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - -======= - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify@1.2.1: - resolution: {integrity: sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==} - engines: {node: '>= 0.4'} - -<<<<<<< HEAD - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} -======= - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonify@0.0.1: - resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} - - keygrip@1.1.0: - resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} - engines: {node: '>= 0.6'} - -<<<<<<< HEAD -======= - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - koa-compose@4.1.0: - resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - - koa-convert@2.0.0: - resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} - engines: {node: '>= 10'} - - koa@2.15.4: - resolution: {integrity: sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ==} - engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} - -<<<<<<< HEAD - launch-editor@2.10.0: - resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} - -======= - kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - - launch-editor@2.10.0: - resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - -<<<<<<< HEAD - lodash.clonedeepwith@4.5.0: - resolution: {integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==} - -======= - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - lodash.clonedeepwith@4.5.0: - resolution: {integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - - log4js@6.9.1: - resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} - engines: {node: '>=8.0'} - -<<<<<<< HEAD -======= - logform@2.7.0: - resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} - engines: {node: '>= 12.0.0'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - long-timeout@0.1.1: - resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - -<<<<<<< HEAD - luxon@3.6.0: - resolution: {integrity: sha512-WE7p0p7W1xji9qxkLYsvcIxZyfP48GuFrWIBQZIsbjCyf65dG1rv4n83HcOyEyhvzxJCrUoObCRNFgRNIQ5KNA==} - engines: {node: '>=12'} - -======= - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - luxon@3.5.0: - resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} - engines: {node: '>=12'} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - memfs@4.17.0: - resolution: {integrity: sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==} - engines: {node: '>= 4.0.0'} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - -<<<<<<< HEAD - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - -======= - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - -<<<<<<< HEAD -======= - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - multicast-dns@7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true - -<<<<<<< HEAD -======= - napi-build-utils@2.0.0: - resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - -<<<<<<< HEAD - nock@13.5.6: - resolution: {integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==} - engines: {node: '>= 10.13'} -======= - node-abi@3.74.0: - resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} - engines: {node: '>=10'} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - -<<<<<<< HEAD -======= - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - node-schedule@2.1.1: - resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} - engines: {node: '>=6'} - -<<<<<<< HEAD -======= - nodemon@3.1.9: - resolution: {integrity: sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==} - engines: {node: '>=10'} - hasBin: true - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - -<<<<<<< HEAD - on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - -<<<<<<< HEAD -======= - one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - - only@0.0.2: - resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} - - open@10.1.0: - resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} - engines: {node: '>=18'} - - openapi3-ts@4.4.0: - resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==} - - opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - - ora@8.2.0: - resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} - engines: {node: '>=18'} - - otpauth@9.3.6: - resolution: {integrity: sha512-eIcCvuEvcAAPHxUKC9Q4uCe0Fh/yRc5jv9z+f/kvyIF2LPrhgAOuLB7J9CssGYhND/BL8M9hlHBTFmffpoQlMQ==} - -<<<<<<< HEAD -======= - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} - - p-retry@6.2.1: - resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} - engines: {node: '>=16.17'} - -<<<<<<< HEAD - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - -======= - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - -<<<<<<< HEAD -======= - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - -<<<<<<< HEAD - pg-cloudflare@1.1.1: - resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - - pg-connection-string@2.7.0: - resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} - - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-numeric@1.0.2: - resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} - engines: {node: '>=4'} - - pg-pool@3.8.0: - resolution: {integrity: sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==} - peerDependencies: - pg: '>=8.0' - - pg-protocol@1.8.0: - resolution: {integrity: sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - - pg-types@4.0.2: - resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} - engines: {node: '>=10'} - - pg@8.14.1: - resolution: {integrity: sha512-0TdbqfjwIun9Fm/r89oB7RFQ0bLgduAhiIqIXOsyKoiC/L54DbuAAzIEN/9Op0f1Po9X7iCPXGoa/Ah+2aI8Xw==} - engines: {node: '>= 8.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true - - pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - -<<<<<<< HEAD - pino-abstract-transport@2.0.0: - resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - - pino-pretty@13.0.0: - resolution: {integrity: sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==} - hasBin: true - - pino-std-serializers@7.0.0: - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - - pino@9.6.0: - resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==} - hasBin: true - - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-array@3.0.4: - resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==} - engines: {node: '>=12'} - - postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - engines: {node: '>=0.10.0'} - - postgres-bytea@3.0.0: - resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} - engines: {node: '>= 6'} - - postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - - postgres-date@2.1.0: - resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} - engines: {node: '>=12'} - - postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - - postgres-interval@3.0.0: - resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} - engines: {node: '>=12'} - - postgres-range@1.1.4: - resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} -======= - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - prebuild-install@7.1.3: - resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} - engines: {node: '>=10'} - hasBin: true - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - -<<<<<<< HEAD - process-warning@4.0.1: - resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} - - propagate@2.0.1: - resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} - engines: {node: '>= 8'} -======= - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - -<<<<<<< HEAD -======= - pstree.remy@1.1.8: - resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - -<<<<<<< HEAD - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - rambda@9.4.2: - resolution: {integrity: sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - -<<<<<<< HEAD -======= - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - -<<<<<<< HEAD -======= - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - -<<<<<<< HEAD - real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - rechoir@0.8.0: - resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} - engines: {node: '>= 10.13.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - -<<<<<<< HEAD -======= - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - resolve-dir@1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - -<<<<<<< HEAD - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - -======= - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true - -<<<<<<< HEAD - rslog@1.2.3: - resolution: {integrity: sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==} - engines: {node: '>=14.17.6'} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} - engines: {node: '>=18'} - - rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - -<<<<<<< HEAD - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - -<<<<<<< HEAD -======= - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} - engines: {node: '>= 0.4'} - - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - -<<<<<<< HEAD -======= - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - simple-update-notifier@2.0.0: - resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} - engines: {node: '>=10'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - sirv@1.0.19: - resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} - engines: {node: '>= 10'} - -<<<<<<< HEAD - sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - - sonic-boom@4.2.0: - resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} - - sorted-array-functions@1.3.0: - resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} - -======= - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - - sorted-array-functions@1.3.0: - resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} - - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - - spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - -<<<<<<< HEAD - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} -======= - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - - streamroller@3.1.5: - resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} - engines: {node: '>=8.0'} - -<<<<<<< HEAD -======= - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - -<<<<<<< HEAD -======= - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - -<<<<<<< HEAD -======= - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - -<<<<<<< HEAD -======= - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - -<<<<<<< HEAD -======= - tar-fs@2.1.2: - resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} - engines: {node: '>=10'} - hasBin: true - -<<<<<<< HEAD -======= - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - thingies@1.21.0: - resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} - engines: {node: '>=10.18'} - peerDependencies: - tslib: ^2 - -<<<<<<< HEAD - thread-stream@3.1.0: - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} - - thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - -======= - thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - totalist@1.1.0: - resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} - engines: {node: '>=6'} - -<<<<<<< HEAD -======= - touch@3.1.1: - resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} - hasBin: true - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tree-dump@1.0.2: - resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - -<<<<<<< HEAD -======= - triple-beam@1.4.1: - resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} - engines: {node: '>= 14.0.0'} - - ts-essentials@10.0.4: - resolution: {integrity: sha512-lwYdz28+S4nicm+jFi6V58LaAIpxzhg9rLdgNC1VsdP/xiFBseGhF1M/shwCk6zMmwahBZdXcl34LVHrEang3A==} - peerDependencies: - typescript: '>=4.5.0' - peerDependenciesMeta: - typescript: - optional: true - - ts-jest@29.2.6: - resolution: {integrity: sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tsscmp@1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - -<<<<<<< HEAD - twitter-api-v2@1.22.0: - resolution: {integrity: sha512-KlcRL9vcBzjeS/PwxX33NziP+SHp9n35DOclKtpOmnNes7nNVnK7WG4pKlHfBqGrY5kAz/8J5ERS8DWkYOaiWw==} -======= - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - twitter-api-v2@1.21.1: - resolution: {integrity: sha512-A7GqoLQYs1yhFdO+76ZcVOULznvKlQ6Dfg8sQpW5vr1UPXqiA0tmIkaOfXJc0fq/W9h0y+CRjkrJniQ5dwBskQ==} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - typescript@5.8.2: - resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} - engines: {node: '>=14.17'} - hasBin: true - -<<<<<<< HEAD - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} -======= - undefsafe@2.0.5: - resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - upath@2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} - - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - -<<<<<<< HEAD -======= - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - wait-on@8.0.3: - resolution: {integrity: sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==} - engines: {node: '>=12.0.0'} - hasBin: true - -<<<<<<< HEAD -======= - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - - wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webpack-bundle-analyzer@4.6.1: - resolution: {integrity: sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw==} - engines: {node: '>= 10.13.0'} - hasBin: true - - webpack-dev-middleware@7.4.2: - resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - - webpack-dev-server@5.0.4: - resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} - engines: {node: '>= 18.12.0'} - hasBin: true - peerDependencies: - webpack: ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack@5.98.0: - resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - -<<<<<<< HEAD -======= - winston-console-format@1.0.8: - resolution: {integrity: sha512-dq7t/E0D0QRi4XIOwu6HM1+5e//WPqylH88GVjKEhQVrzGFg34MCz+G7pMJcXFBen9C0kBsu5GYgbYsE2LDwKw==} - - winston-transport@4.9.0: - resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} - engines: {node: '>= 12.0.0'} - - winston@3.17.0: - resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==} - engines: {node: '>= 12.0.0'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - -<<<<<<< HEAD -======= - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.1: - resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - -<<<<<<< HEAD - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - -<<<<<<< HEAD -======= - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - ylru@1.4.0: - resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} - engines: {node: '>= 4.0.0'} - -<<<<<<< HEAD -======= - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - zod@3.24.2: - resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} - -snapshots: - -<<<<<<< HEAD -======= - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@asteasolutions/zod-to-openapi@5.5.0(zod@3.24.2)': - dependencies: - openapi3-ts: 4.4.0 - zod: 3.24.2 - -<<<<<<< HEAD - '@curatedotfun/types@0.0.5': {} - -======= - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.26.8': {} - - '@babel/core@7.26.10': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 - convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@5.5.0) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.26.10': - dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.26.5': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.10 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.26.5': {} - - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/helper-validator-option@7.25.9': {} - - '@babel/helpers@7.26.10': - dependencies: - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 - - '@babel/parser@7.26.10': - dependencies: - '@babel/types': 7.26.10 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/template@7.26.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - - '@babel/traverse@7.26.10': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 - debug: 4.4.0(supports-color@5.5.0) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.26.10': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@bcoe/v8-coverage@0.2.3': {} - - '@colors/colors@1.6.0': {} - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@curatedotfun/types@0.0.5': {} - - '@dabh/diagnostics@2.0.3': - dependencies: - colorspace: 1.1.4 - enabled: 2.0.0 - kuler: 2.0.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@discoveryjs/json-ext@0.5.7': {} - - '@drizzle-team/brocli@0.10.2': {} - - '@esbuild-kit/core-utils@3.3.2': - dependencies: - esbuild: 0.18.20 - source-map-support: 0.5.21 - - '@esbuild-kit/esm-loader@2.6.5': - dependencies: - '@esbuild-kit/core-utils': 3.3.2 - get-tsconfig: 4.10.0 - - '@esbuild/aix-ppc64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/android-arm64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/android-arm64@0.18.20': - optional: true - - '@esbuild/android-arm64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/android-arm@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/android-arm@0.18.20': - optional: true - - '@esbuild/android-arm@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/android-x64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/android-x64@0.18.20': - optional: true - - '@esbuild/android-x64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/darwin-arm64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/darwin-arm64@0.18.20': - optional: true - - '@esbuild/darwin-arm64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/darwin-x64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/darwin-x64@0.18.20': - optional: true - - '@esbuild/darwin-x64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/freebsd-arm64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/freebsd-arm64@0.18.20': - optional: true - - '@esbuild/freebsd-arm64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/freebsd-x64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/freebsd-x64@0.18.20': - optional: true - - '@esbuild/freebsd-x64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/linux-arm64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-arm64@0.18.20': - optional: true - - '@esbuild/linux-arm64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/linux-arm@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-arm@0.18.20': - optional: true - - '@esbuild/linux-arm@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/linux-ia32@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-ia32@0.18.20': - optional: true - - '@esbuild/linux-ia32@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/linux-loong64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-loong64@0.18.20': - optional: true - - '@esbuild/linux-loong64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/linux-mips64el@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-mips64el@0.18.20': - optional: true - - '@esbuild/linux-mips64el@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/linux-ppc64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-ppc64@0.18.20': - optional: true - - '@esbuild/linux-ppc64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/linux-riscv64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-riscv64@0.18.20': - optional: true - - '@esbuild/linux-riscv64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/linux-s390x@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-s390x@0.18.20': - optional: true - - '@esbuild/linux-s390x@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/linux-x64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/linux-x64@0.18.20': - optional: true - - '@esbuild/linux-x64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/netbsd-x64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/netbsd-x64@0.18.20': - optional: true - - '@esbuild/netbsd-x64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/openbsd-x64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/openbsd-x64@0.18.20': - optional: true - - '@esbuild/openbsd-x64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/sunos-x64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/sunos-x64@0.18.20': - optional: true - - '@esbuild/sunos-x64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/win32-arm64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/win32-arm64@0.18.20': - optional: true - - '@esbuild/win32-arm64@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/win32-ia32@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/win32-ia32@0.18.20': - optional: true - - '@esbuild/win32-ia32@0.19.12': - optional: true - -<<<<<<< HEAD - '@esbuild/win32-x64@0.17.19': - optional: true - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@esbuild/win32-x64@0.18.20': - optional: true - - '@esbuild/win32-x64@0.19.12': - optional: true - - '@hapi/hoek@9.3.0': {} - - '@hapi/topo@5.1.0': - dependencies: - '@hapi/hoek': 9.3.0 - - '@hono/node-server@1.14.0(hono@4.7.5)': - dependencies: - hono: 4.7.5 - - '@hono/zod-openapi@0.9.10(hono@4.7.5)(zod@3.24.2)': - dependencies: - '@asteasolutions/zod-to-openapi': 5.5.0(zod@3.24.2) - '@hono/zod-validator': 0.2.1(hono@4.7.5)(zod@3.24.2) - hono: 4.7.5 - zod: 3.24.2 - - '@hono/zod-validator@0.1.11(hono@4.7.5)(zod@3.24.2)': - dependencies: - hono: 4.7.5 - zod: 3.24.2 - - '@hono/zod-validator@0.2.1(hono@4.7.5)(zod@3.24.2)': - dependencies: - hono: 4.7.5 - zod: 3.24.2 - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - -<<<<<<< HEAD -======= - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - jest-mock: 29.7.0 - - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.17.25 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/globals@29.7.0': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/reporters@29.7.0': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.17.25 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/source-map@29.6.3': - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@jest/test-sequencer@29.7.0': - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.26.10 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.17.25 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - -<<<<<<< HEAD -======= - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) - hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.8.1) - tslib: 2.8.1 - - '@jsonjoy.com/util@1.5.0(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@leichtgewicht/ip-codec@2.0.5': {} - -<<<<<<< HEAD - '@modern-js/node-bundle-require@2.65.1': - dependencies: - '@modern-js/utils': 2.65.1 - '@swc/helpers': 0.5.13 - esbuild: 0.17.19 - - '@modern-js/utils@2.65.1': - dependencies: - '@swc/helpers': 0.5.13 - caniuse-lite: 1.0.30001707 - lodash: 4.17.21 - rslog: 1.2.3 - - '@module-federation/bridge-react-webpack-plugin@0.11.2': - dependencies: - '@module-federation/sdk': 0.11.2 - '@types/semver': 7.5.8 - semver: 7.6.3 - - '@module-federation/cli@0.11.2(typescript@5.8.2)': - dependencies: - '@modern-js/node-bundle-require': 2.65.1 - '@module-federation/dts-plugin': 0.11.2(typescript@5.8.2) - '@module-federation/sdk': 0.11.2 - chalk: 3.0.0 - commander: 11.1.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - typescript - - utf-8-validate - - vue-tsc - - '@module-federation/data-prefetch@0.11.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@module-federation/runtime': 0.11.2 - '@module-federation/sdk': 0.11.2 -======= - '@module-federation/bridge-react-webpack-plugin@0.11.1': - dependencies: - '@module-federation/sdk': 0.11.1 - '@types/semver': 7.5.8 - semver: 7.6.3 - - '@module-federation/data-prefetch@0.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@module-federation/runtime': 0.11.1 - '@module-federation/sdk': 0.11.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fs-extra: 9.1.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - -<<<<<<< HEAD - '@module-federation/dts-plugin@0.11.2(typescript@5.8.2)': - dependencies: - '@module-federation/error-codes': 0.11.2 - '@module-federation/managers': 0.11.2 - '@module-federation/sdk': 0.11.2 - '@module-federation/third-party-dts-extractor': 0.11.2 -======= - '@module-federation/dts-plugin@0.11.1(typescript@5.8.2)': - dependencies: - '@module-federation/error-codes': 0.11.1 - '@module-federation/managers': 0.11.1 - '@module-federation/sdk': 0.11.1 - '@module-federation/third-party-dts-extractor': 0.11.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - adm-zip: 0.5.16 - ansi-colors: 4.1.3 - axios: 1.8.4 - chalk: 3.0.0 - fs-extra: 9.1.0 - isomorphic-ws: 5.0.0(ws@8.18.0) - koa: 2.15.4 - lodash.clonedeepwith: 4.5.0 - log4js: 6.9.1 - node-schedule: 2.1.1 - rambda: 9.4.2 - typescript: 5.8.2 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - -<<<<<<< HEAD - '@module-federation/enhanced@0.11.2(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.11.2 - '@module-federation/cli': 0.11.2(typescript@5.8.2) - '@module-federation/data-prefetch': 0.11.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@module-federation/dts-plugin': 0.11.2(typescript@5.8.2) - '@module-federation/error-codes': 0.11.2 - '@module-federation/inject-external-runtime-core-plugin': 0.11.2(@module-federation/runtime-tools@0.11.2) - '@module-federation/managers': 0.11.2 - '@module-federation/manifest': 0.11.2(typescript@5.8.2) - '@module-federation/rspack': 0.11.2(@rspack/core@1.2.8(@swc/helpers@0.5.13))(typescript@5.8.2) - '@module-federation/runtime-tools': 0.11.2 - '@module-federation/sdk': 0.11.2 -======= - '@module-federation/enhanced@0.11.1(@rspack/core@1.2.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.11.1 - '@module-federation/data-prefetch': 0.11.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@module-federation/dts-plugin': 0.11.1(typescript@5.8.2) - '@module-federation/error-codes': 0.11.1 - '@module-federation/inject-external-runtime-core-plugin': 0.11.1(@module-federation/runtime-tools@0.11.1) - '@module-federation/managers': 0.11.1 - '@module-federation/manifest': 0.11.1(typescript@5.8.2) - '@module-federation/rspack': 0.11.1(@rspack/core@1.2.6)(typescript@5.8.2) - '@module-federation/runtime-tools': 0.11.1 - '@module-federation/sdk': 0.11.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - btoa: 1.2.1 - upath: 2.0.1 - optionalDependencies: - typescript: 5.8.2 - webpack: 5.98.0(esbuild@0.19.12) - transitivePeerDependencies: - - '@rspack/core' - - bufferutil - - debug - - react - - react-dom - - supports-color - - utf-8-validate - -<<<<<<< HEAD - '@module-federation/error-codes@0.11.2': {} - - '@module-federation/error-codes@0.8.4': {} - - '@module-federation/inject-external-runtime-core-plugin@0.11.2(@module-federation/runtime-tools@0.11.2)': - dependencies: - '@module-federation/runtime-tools': 0.11.2 - - '@module-federation/managers@0.11.2': - dependencies: - '@module-federation/sdk': 0.11.2 - find-pkg: 2.0.0 - fs-extra: 9.1.0 - - '@module-federation/manifest@0.11.2(typescript@5.8.2)': - dependencies: - '@module-federation/dts-plugin': 0.11.2(typescript@5.8.2) - '@module-federation/managers': 0.11.2 - '@module-federation/sdk': 0.11.2 -======= - '@module-federation/error-codes@0.11.1': {} - - '@module-federation/error-codes@0.8.4': {} - - '@module-federation/inject-external-runtime-core-plugin@0.11.1(@module-federation/runtime-tools@0.11.1)': - dependencies: - '@module-federation/runtime-tools': 0.11.1 - - '@module-federation/managers@0.11.1': - dependencies: - '@module-federation/sdk': 0.11.1 - find-pkg: 2.0.0 - fs-extra: 9.1.0 - - '@module-federation/manifest@0.11.1(typescript@5.8.2)': - dependencies: - '@module-federation/dts-plugin': 0.11.1(typescript@5.8.2) - '@module-federation/managers': 0.11.1 - '@module-federation/sdk': 0.11.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - chalk: 3.0.0 - find-pkg: 2.0.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - typescript - - utf-8-validate - - vue-tsc - -<<<<<<< HEAD - '@module-federation/node@2.6.31(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@module-federation/enhanced': 0.11.2(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.19.12)) - '@module-federation/runtime': 0.11.2 - '@module-federation/sdk': 0.11.2 - '@module-federation/utilities': 3.1.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12)) -======= - '@module-federation/node@2.6.30(@rspack/core@1.2.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@module-federation/enhanced': 0.11.1(@rspack/core@1.2.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.2)(webpack@5.98.0(esbuild@0.19.12)) - '@module-federation/runtime': 0.11.1 - '@module-federation/sdk': 0.11.1 - '@module-federation/utilities': 3.1.48(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12)) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - btoa: 1.2.1 - encoding: 0.1.13 - node-fetch: 2.7.0(encoding@0.1.13) - webpack: 5.98.0(esbuild@0.19.12) - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@rspack/core' - - bufferutil - - debug - - supports-color - - typescript - - utf-8-validate - - vue-tsc - -<<<<<<< HEAD - '@module-federation/rspack@0.11.2(@rspack/core@1.2.8(@swc/helpers@0.5.13))(typescript@5.8.2)': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.11.2 - '@module-federation/dts-plugin': 0.11.2(typescript@5.8.2) - '@module-federation/inject-external-runtime-core-plugin': 0.11.2(@module-federation/runtime-tools@0.11.2) - '@module-federation/managers': 0.11.2 - '@module-federation/manifest': 0.11.2(typescript@5.8.2) - '@module-federation/runtime-tools': 0.11.2 - '@module-federation/sdk': 0.11.2 - '@rspack/core': 1.2.8(@swc/helpers@0.5.13) -======= - '@module-federation/rspack@0.11.1(@rspack/core@1.2.6)(typescript@5.8.2)': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.11.1 - '@module-federation/dts-plugin': 0.11.1(typescript@5.8.2) - '@module-federation/inject-external-runtime-core-plugin': 0.11.1(@module-federation/runtime-tools@0.11.1) - '@module-federation/managers': 0.11.1 - '@module-federation/manifest': 0.11.1(typescript@5.8.2) - '@module-federation/runtime-tools': 0.11.1 - '@module-federation/sdk': 0.11.1 - '@rspack/core': 1.2.6 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - btoa: 1.2.1 - optionalDependencies: - typescript: 5.8.2 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - -<<<<<<< HEAD - '@module-federation/runtime-core@0.11.2': - dependencies: - '@module-federation/error-codes': 0.11.2 - '@module-federation/sdk': 0.11.2 - - '@module-federation/runtime-tools@0.11.2': - dependencies: - '@module-federation/runtime': 0.11.2 - '@module-federation/webpack-bundler-runtime': 0.11.2 -======= - '@module-federation/runtime-core@0.11.1': - dependencies: - '@module-federation/error-codes': 0.11.1 - '@module-federation/sdk': 0.11.1 - - '@module-federation/runtime-tools@0.11.1': - dependencies: - '@module-federation/runtime': 0.11.1 - '@module-federation/webpack-bundler-runtime': 0.11.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@module-federation/runtime-tools@0.8.4': - dependencies: - '@module-federation/runtime': 0.8.4 - '@module-federation/webpack-bundler-runtime': 0.8.4 - -<<<<<<< HEAD - '@module-federation/runtime@0.11.2': - dependencies: - '@module-federation/error-codes': 0.11.2 - '@module-federation/runtime-core': 0.11.2 - '@module-federation/sdk': 0.11.2 -======= - '@module-federation/runtime@0.11.1': - dependencies: - '@module-federation/error-codes': 0.11.1 - '@module-federation/runtime-core': 0.11.1 - '@module-federation/sdk': 0.11.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@module-federation/runtime@0.8.4': - dependencies: - '@module-federation/error-codes': 0.8.4 - '@module-federation/sdk': 0.8.4 - -<<<<<<< HEAD - '@module-federation/sdk@0.11.2': {} -======= - '@module-federation/sdk@0.11.1': {} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@module-federation/sdk@0.8.4': - dependencies: - isomorphic-rslog: 0.0.6 - -<<<<<<< HEAD - '@module-federation/third-party-dts-extractor@0.11.2': -======= - '@module-federation/third-party-dts-extractor@0.11.1': ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - dependencies: - find-pkg: 2.0.0 - fs-extra: 9.1.0 - resolve: 1.22.8 - -<<<<<<< HEAD - '@module-federation/utilities@3.1.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@module-federation/sdk': 0.11.2 -======= - '@module-federation/utilities@3.1.48(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@module-federation/sdk': 0.11.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - webpack: 5.98.0(esbuild@0.19.12) - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - -<<<<<<< HEAD - '@module-federation/webpack-bundler-runtime@0.11.2': - dependencies: - '@module-federation/runtime': 0.11.2 - '@module-federation/sdk': 0.11.2 -======= - '@module-federation/webpack-bundler-runtime@0.11.1': - dependencies: - '@module-federation/runtime': 0.11.1 - '@module-federation/sdk': 0.11.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@module-federation/webpack-bundler-runtime@0.8.4': - dependencies: - '@module-federation/runtime': 0.8.4 - '@module-federation/sdk': 0.8.4 - - '@noble/hashes@1.6.1': {} - - '@notionhq/client@2.3.0(encoding@0.1.13)': - dependencies: - '@types/node-fetch': 2.6.12 - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - '@petamoriken/float16@3.9.2': {} - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@polka/url@1.0.0-next.28': {} - -<<<<<<< HEAD - '@rspack/binding-darwin-arm64@1.2.8': - optional: true - - '@rspack/binding-darwin-x64@1.2.8': - optional: true - - '@rspack/binding-linux-arm64-gnu@1.2.8': - optional: true - - '@rspack/binding-linux-arm64-musl@1.2.8': - optional: true - - '@rspack/binding-linux-x64-gnu@1.2.8': - optional: true - - '@rspack/binding-linux-x64-musl@1.2.8': - optional: true - - '@rspack/binding-win32-arm64-msvc@1.2.8': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.2.8': - optional: true - - '@rspack/binding-win32-x64-msvc@1.2.8': - optional: true - - '@rspack/binding@1.2.8': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.2.8 - '@rspack/binding-darwin-x64': 1.2.8 - '@rspack/binding-linux-arm64-gnu': 1.2.8 - '@rspack/binding-linux-arm64-musl': 1.2.8 - '@rspack/binding-linux-x64-gnu': 1.2.8 - '@rspack/binding-linux-x64-musl': 1.2.8 - '@rspack/binding-win32-arm64-msvc': 1.2.8 - '@rspack/binding-win32-ia32-msvc': 1.2.8 - '@rspack/binding-win32-x64-msvc': 1.2.8 - - '@rspack/cli@1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@rspack/core': 1.2.8(@swc/helpers@0.5.13) - '@rspack/dev-server': 1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) -======= - '@rspack/binding-darwin-arm64@1.2.6': - optional: true - - '@rspack/binding-darwin-x64@1.2.6': - optional: true - - '@rspack/binding-linux-arm64-gnu@1.2.6': - optional: true - - '@rspack/binding-linux-arm64-musl@1.2.6': - optional: true - - '@rspack/binding-linux-x64-gnu@1.2.6': - optional: true - - '@rspack/binding-linux-x64-musl@1.2.6': - optional: true - - '@rspack/binding-win32-arm64-msvc@1.2.6': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.2.6': - optional: true - - '@rspack/binding-win32-x64-msvc@1.2.6': - optional: true - - '@rspack/binding@1.2.6': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.2.6 - '@rspack/binding-darwin-x64': 1.2.6 - '@rspack/binding-linux-arm64-gnu': 1.2.6 - '@rspack/binding-linux-arm64-musl': 1.2.6 - '@rspack/binding-linux-x64-gnu': 1.2.6 - '@rspack/binding-linux-x64-musl': 1.2.6 - '@rspack/binding-win32-arm64-msvc': 1.2.6 - '@rspack/binding-win32-ia32-msvc': 1.2.6 - '@rspack/binding-win32-x64-msvc': 1.2.6 - - '@rspack/cli@1.2.6(@rspack/core@1.2.6)(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@rspack/core': 1.2.6 - '@rspack/dev-server': 1.0.10(@rspack/core@1.2.6)(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - colorette: 2.0.20 - exit-hook: 4.0.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack-bundle-analyzer: 4.6.1 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/express' - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack - - webpack-cli - -<<<<<<< HEAD - '@rspack/core@1.2.8(@swc/helpers@0.5.13)': - dependencies: - '@module-federation/runtime-tools': 0.8.4 - '@rspack/binding': 1.2.8 - '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001707 - optionalDependencies: - '@swc/helpers': 0.5.13 - - '@rspack/dev-server@1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@rspack/core': 1.2.8(@swc/helpers@0.5.13) -======= - '@rspack/core@1.2.6': - dependencies: - '@module-federation/runtime-tools': 0.8.4 - '@rspack/binding': 1.2.6 - '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001707 - - '@rspack/dev-server@1.0.10(@rspack/core@1.2.6)(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@rspack/core': 1.2.6 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - chokidar: 3.6.0 - connect-history-api-fallback: 2.0.0 - express: 4.21.2 - http-proxy-middleware: 2.0.7(@types/express@4.17.21) - mime-types: 2.1.35 - p-retry: 4.6.2 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.19.12)) - webpack-dev-server: 5.0.4(webpack@5.98.0(esbuild@0.19.12)) - ws: 8.18.1 - transitivePeerDependencies: - - '@types/express' - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack - - webpack-cli - - '@rspack/lite-tapable@1.0.1': {} - - '@sideway/address@4.1.5': - dependencies: - '@hapi/hoek': 9.3.0 - - '@sideway/formula@3.0.1': {} - - '@sideway/pinpoint@2.0.0': {} - -<<<<<<< HEAD - '@sinclair/typebox@0.32.35': {} - - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.1 - - '@types/async-retry@1.4.9': - dependencies: - '@types/retry': 0.12.5 -======= - '@sinclair/typebox@0.27.8': {} - - '@sinclair/typebox@0.32.35': {} - - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.26.10 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - - '@types/babel__traverse@7.20.6': - dependencies: - '@babel/types': 7.26.10 - - '@types/better-sqlite3@7.6.12': - dependencies: - '@types/node': 20.17.25 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@types/body-parser@1.19.5': - dependencies: - '@types/connect': 3.4.38 -<<<<<<< HEAD - '@types/node': 22.13.13 - - '@types/bonjour@3.5.13': - dependencies: - '@types/node': 22.13.13 -======= - '@types/node': 20.17.25 - - '@types/bonjour@3.5.13': - dependencies: - '@types/node': 20.17.25 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@types/connect-history-api-fallback@1.5.4': - dependencies: - '@types/express-serve-static-core': 5.0.6 -<<<<<<< HEAD - '@types/node': 22.13.13 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.13.13 -======= - '@types/node': 20.17.25 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 20.17.25 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 -<<<<<<< HEAD - '@types/estree': 1.0.7 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.7 - '@types/json-schema': 7.0.15 - - '@types/estree@1.0.7': {} - - '@types/express-serve-static-core@4.19.6': - dependencies: - '@types/node': 22.13.13 -======= - '@types/estree': 1.0.6 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - - '@types/estree@1.0.6': {} - - '@types/express-serve-static-core@4.19.6': - dependencies: - '@types/node': 20.17.25 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/qs': 6.9.18 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express-serve-static-core@5.0.6': - dependencies: -<<<<<<< HEAD - '@types/node': 22.13.13 -======= - '@types/node': 20.17.25 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/qs': 6.9.18 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express@4.17.21': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.18 - '@types/serve-static': 1.15.7 - -<<<<<<< HEAD -======= - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 20.17.25 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/http-errors@2.0.4': {} - - '@types/http-proxy@1.17.16': - dependencies: -<<<<<<< HEAD - '@types/node': 22.13.13 -======= - '@types/node': 20.17.25 - - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@types/json-schema@7.0.15': {} - - '@types/lodash@4.17.16': {} - - '@types/mime@1.3.5': {} - - '@types/node-fetch@2.6.12': - dependencies: -<<<<<<< HEAD - '@types/node': 22.13.13 -======= - '@types/node': 20.17.25 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - form-data: 4.0.2 - - '@types/node-forge@1.3.11': - dependencies: -<<<<<<< HEAD - '@types/node': 22.13.13 - - '@types/node@22.13.13': - dependencies: - undici-types: 6.20.0 - - '@types/pg@8.11.11': - dependencies: - '@types/node': 22.13.13 - pg-protocol: 1.8.0 - pg-types: 4.0.2 -======= - '@types/node': 20.17.25 - - '@types/node@20.17.25': - dependencies: - undici-types: 6.19.8 - - '@types/ora@3.2.0': - dependencies: - ora: 8.2.0 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@types/qs@6.9.18': {} - - '@types/range-parser@1.2.7': {} - - '@types/retry@0.12.0': {} - - '@types/retry@0.12.2': {} - -<<<<<<< HEAD - '@types/retry@0.12.5': {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/semver@7.5.8': {} - - '@types/send@0.17.4': - dependencies: - '@types/mime': 1.3.5 -<<<<<<< HEAD - '@types/node': 22.13.13 -======= - '@types/node': 20.17.25 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@types/serve-index@1.9.4': - dependencies: - '@types/express': 4.17.21 - - '@types/serve-static@1.15.7': - dependencies: - '@types/http-errors': 2.0.4 -<<<<<<< HEAD - '@types/node': 22.13.13 -======= - '@types/node': 20.17.25 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@types/send': 0.17.4 - - '@types/sockjs@0.3.36': - dependencies: -<<<<<<< HEAD - '@types/node': 22.13.13 - - '@types/ws@8.18.0': - dependencies: - '@types/node': 22.13.13 -======= - '@types/node': 20.17.25 - - '@types/stack-utils@2.0.3': {} - - '@types/triple-beam@1.3.5': {} - - '@types/ws@8.18.0': - dependencies: - '@types/node': 20.17.25 - - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - acorn-walk@8.3.4: - dependencies: - acorn: 8.14.1 - - acorn@8.14.1: {} - - adm-zip@0.5.16: {} - - agent-twitter-client@0.0.16: - dependencies: - '@sinclair/typebox': 0.32.35 - headers-polyfill: 3.3.0 - json-stable-stringify: 1.2.1 - node-fetch: 3.3.2 - otpauth: 9.3.6 - set-cookie-parser: 2.7.1 - tough-cookie: 4.1.4 - tslib: 2.8.1 -<<<<<<< HEAD - twitter-api-v2: 1.22.0 -======= - twitter-api-v2: 1.21.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-keywords@5.1.0(ajv@8.17.1): - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - - ansi-colors@4.1.3: {} - -<<<<<<< HEAD -======= - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - ansi-html-community@0.0.8: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - -<<<<<<< HEAD -======= - ansi-styles@5.2.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - ansi-styles@6.2.1: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - -<<<<<<< HEAD - array-flatten@1.1.1: {} - - async-retry@1.3.3: - dependencies: - retry: 0.13.1 -======= - arg@4.1.3: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - array-flatten@1.1.1: {} - - async@3.2.6: {} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - -<<<<<<< HEAD - atomic-sleep@1.0.0: {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - axios@1.8.4: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.2 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - -<<<<<<< HEAD - balanced-match@1.0.2: {} - - batch@0.6.1: {} - - binary-extensions@2.3.0: {} - -======= - babel-jest@29.7.0(@babel/core@7.26.10): - dependencies: - '@babel/core': 7.26.10 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.26.10) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.26.5 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.10): - dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.10) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.10) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.10) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.10) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) - - babel-preset-jest@29.6.3(@babel/core@7.26.10): - dependencies: - '@babel/core': 7.26.10 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) - - balanced-match@1.0.2: {} - - base64-js@1.5.1: {} - - batch@0.6.1: {} - - better-sqlite3@11.8.1: - dependencies: - bindings: 1.5.0 - prebuild-install: 7.1.3 - - binary-extensions@2.3.0: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - bonjour-service@1.3.0: - dependencies: - fast-deep-equal: 3.1.3 - multicast-dns: 7.2.5 - -<<<<<<< HEAD -======= - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001707 - electron-to-chromium: 1.5.123 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.4) - -<<<<<<< HEAD -======= - bs-logger@0.2.6: - dependencies: - fast-json-stable-stringify: 2.1.0 - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - btoa@1.2.1: {} - - buffer-from@1.1.2: {} - -<<<<<<< HEAD -======= - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - bundle-name@4.1.0: - dependencies: - run-applescript: 7.0.0 - - bytes@3.1.2: {} - - cache-content-type@1.0.1: - dependencies: - mime-types: 2.1.35 - ylru: 1.4.0 - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.8: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - -<<<<<<< HEAD -======= - callsites@3.1.0: {} - - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - caniuse-lite@1.0.30001707: {} - - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.4.1: {} - -<<<<<<< HEAD -======= - char-regex@1.0.2: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - -<<<<<<< HEAD - chrome-trace-event@1.0.4: {} - -======= - chownr@1.1.4: {} - - chrome-trace-event@1.0.4: {} - - ci-info@3.9.0: {} - - cjs-module-lexer@1.4.3: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - - cli-spinners@2.9.2: {} - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - co@4.6.0: {} - -<<<<<<< HEAD -======= - collect-v8-coverage@1.0.2: {} - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - -<<<<<<< HEAD - color-name@1.1.4: {} - - colorette@2.0.20: {} - -======= - color-name@1.1.3: {} - - color-name@1.1.4: {} - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - color@3.2.1: - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - - colorette@2.0.20: {} - - colors@1.4.0: {} - - colorspace@1.1.4: - dependencies: - color: 3.2.1 - text-hex: 1.0.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - -<<<<<<< HEAD - commander@11.1.0: {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - commander@2.20.3: {} - - commander@7.2.0: {} - - compressible@2.0.18: - dependencies: - mime-db: 1.54.0 - - compression@1.8.0: - dependencies: - bytes: 3.1.2 - compressible: 2.0.18 - debug: 2.6.9 - negotiator: 0.6.4 - on-headers: 1.0.2 - safe-buffer: 5.2.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - -<<<<<<< HEAD -======= - concat-map@0.0.1: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - concurrently@9.1.2: - dependencies: - chalk: 4.1.2 - lodash: 4.17.21 - rxjs: 7.8.2 - shell-quote: 1.8.2 - supports-color: 8.1.1 - tree-kill: 1.2.2 - yargs: 17.7.2 - - connect-history-api-fallback@2.0.0: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - -<<<<<<< HEAD -======= - convert-source-map@2.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - cookie-signature@1.0.6: {} - - cookie@0.7.1: {} - - cookies@0.9.1: - dependencies: - depd: 2.0.0 - keygrip: 1.1.0 - - core-util-is@1.0.3: {} - -<<<<<<< HEAD - cron-parser@4.9.0: - dependencies: - luxon: 3.6.0 -======= - create-jest@29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-require@1.1.1: {} - - cron-parser@4.9.0: - dependencies: - luxon: 3.5.0 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - data-uri-to-buffer@4.0.1: {} - - date-format@4.0.14: {} - -<<<<<<< HEAD - dateformat@4.6.3: {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - debug@2.6.9: - dependencies: - ms: 2.0.0 - -<<<<<<< HEAD - debug@4.4.0: - dependencies: - ms: 2.1.3 - - deep-equal@1.0.1: {} - -======= - debug@4.4.0(supports-color@5.5.0): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 5.5.0 - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - - dedent@1.5.3: {} - - deep-equal@1.0.1: {} - - deep-extend@0.6.0: {} - - deepmerge@4.3.1: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - default-browser-id@5.0.0: {} - - default-browser@5.2.1: - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.0 - - default-gateway@6.0.3: - dependencies: - execa: 5.1.1 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - define-lazy-prop@3.0.0: {} - - delayed-stream@1.0.0: {} - - delegates@1.0.0: {} - - depd@1.1.2: {} - - depd@2.0.0: {} - - destroy@1.2.0: {} - -<<<<<<< HEAD - detect-node@2.1.0: {} - -======= - detect-libc@2.0.3: {} - - detect-newline@3.1.0: {} - - detect-node@2.1.0: {} - - diff-sequences@29.6.3: {} - - diff@4.0.2: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - dns-packet@5.6.1: - dependencies: - '@leichtgewicht/ip-codec': 2.0.5 - - dotenv@16.4.7: {} - - drizzle-kit@0.30.5: - dependencies: - '@drizzle-team/brocli': 0.10.2 - '@esbuild-kit/esm-loader': 2.6.5 - esbuild: 0.19.12 - esbuild-register: 3.6.0(esbuild@0.19.12) - gel: 2.0.1 - transitivePeerDependencies: - - supports-color - -<<<<<<< HEAD - drizzle-orm@0.40.1(@types/pg@8.11.11)(gel@2.0.1)(pg@8.14.1): - optionalDependencies: - '@types/pg': 8.11.11 - gel: 2.0.1 - pg: 8.14.1 - - drizzle-seed@0.3.1(drizzle-orm@0.40.1(@types/pg@8.11.11)(gel@2.0.1)(pg@8.14.1)): - dependencies: - pure-rand: 6.1.0 - optionalDependencies: - drizzle-orm: 0.40.1(@types/pg@8.11.11)(gel@2.0.1)(pg@8.14.1) -======= - drizzle-orm@0.38.4(@types/better-sqlite3@7.6.12)(better-sqlite3@11.8.1)(react@18.3.1): - optionalDependencies: - '@types/better-sqlite3': 7.6.12 - better-sqlite3: 11.8.1 - react: 18.3.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - duplexer@0.1.2: {} - - eastasianwidth@0.2.0: {} - - ee-first@1.1.1: {} - -<<<<<<< HEAD - electron-to-chromium@1.5.123: {} - -======= - ejs@3.1.10: - dependencies: - jake: 10.9.2 - - electron-to-chromium@1.5.123: {} - - emittery@0.13.1: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - emoji-regex@10.4.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - -<<<<<<< HEAD -======= - enabled@2.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - encodeurl@1.0.2: {} - - encodeurl@2.0.0: {} - - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - enhanced-resolve@5.18.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - - env-paths@3.0.0: {} - -<<<<<<< HEAD -======= - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-module-lexer@1.6.0: {} - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - esbuild-register@3.6.0(esbuild@0.19.12): - dependencies: -<<<<<<< HEAD - debug: 4.4.0 -======= - debug: 4.4.0(supports-color@5.5.0) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - esbuild: 0.19.12 - transitivePeerDependencies: - - supports-color - -<<<<<<< HEAD - esbuild@0.17.19: - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - esbuild@0.18.20: - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - - escalade@3.2.0: {} - - escape-html@1.0.3: {} - -<<<<<<< HEAD -======= - escape-string-regexp@2.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - -<<<<<<< HEAD -======= - esprima@4.0.1: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - etag@1.8.1: {} - - eventemitter3@4.0.7: {} - - events@3.3.0: {} - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - exit-hook@4.0.0: {} - -<<<<<<< HEAD -======= - exit@0.1.2: {} - - expand-template@2.0.3: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - expand-tilde@2.0.2: - dependencies: - homedir-polyfill: 1.0.3 - -<<<<<<< HEAD -======= - expect@29.7.0: - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - express@4.21.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - -<<<<<<< HEAD - fast-copy@3.0.2: {} - - fast-deep-equal@3.1.3: {} - - fast-redact@3.5.0: {} - - fast-safe-stringify@2.1.1: {} -======= - fast-deep-equal@3.1.3: {} - - fast-json-stable-stringify@2.1.0: {} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - fast-uri@3.0.6: {} - - faye-websocket@0.11.4: - dependencies: - websocket-driver: 0.7.4 - -<<<<<<< HEAD -======= - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - - fecha@4.2.3: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - -<<<<<<< HEAD -======= - file-uri-to-path@1.0.0: {} - - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - find-file-up@2.0.1: - dependencies: - resolve-dir: 1.0.1 - - find-pkg@2.0.0: - dependencies: - find-file-up: 2.0.1 - -<<<<<<< HEAD - flatted@3.3.3: {} - -======= - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - flatted@3.3.3: {} - - fn.name@1.1.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - follow-redirects@1.15.9: {} - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - form-data@4.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - - forwarded@0.2.0: {} - - fresh@0.5.2: {} - -<<<<<<< HEAD -======= - fs-constants@1.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - -<<<<<<< HEAD -======= - fs.realpath@1.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - gel@2.0.1: - dependencies: - '@petamoriken/float16': 3.9.2 -<<<<<<< HEAD - debug: 4.4.0 -======= - debug: 4.4.0(supports-color@5.5.0) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - env-paths: 3.0.0 - semver: 7.7.1 - shell-quote: 1.8.2 - which: 4.0.0 - transitivePeerDependencies: - - supports-color - -<<<<<<< HEAD -======= - gensync@1.0.0-beta.2: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - get-caller-file@2.0.5: {} - - get-east-asian-width@1.3.0: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - -<<<<<<< HEAD -======= - get-package-type@0.1.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - - get-stream@6.0.1: {} - - get-tsconfig@4.10.0: - dependencies: - resolve-pkg-maps: 1.0.0 - -<<<<<<< HEAD -======= - github-from-package@0.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-to-regexp@0.4.1: {} - - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - -<<<<<<< HEAD -======= - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - global-modules@1.0.0: - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - - global-prefix@1.0.2: - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - -<<<<<<< HEAD -======= - globals@11.12.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - gopd@1.2.0: {} - - graceful-fs@4.2.11: {} - - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - - handle-thing@2.0.1: {} - -<<<<<<< HEAD -======= - has-flag@3.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - headers-polyfill@3.3.0: {} - -<<<<<<< HEAD - help-me@5.0.0: {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - homedir-polyfill@1.0.3: - dependencies: - parse-passwd: 1.0.0 - - hono@4.7.5: {} - - hpack.js@2.1.6: - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.8 - wbuf: 1.7.3 - - html-entities@2.5.3: {} - -<<<<<<< HEAD -======= - html-escaper@2.0.2: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - http-assert@1.5.0: - dependencies: - deep-equal: 1.0.1 - http-errors: 1.8.1 - - http-deceiver@1.2.7: {} - - http-errors@1.6.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - - http-errors@1.8.1: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 1.5.0 - toidentifier: 1.0.1 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http-parser-js@0.5.9: {} - - http-proxy-middleware@2.0.7(@types/express@4.17.21): - dependencies: - '@types/http-proxy': 1.17.16 - http-proxy: 1.18.1 - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.8 - optionalDependencies: - '@types/express': 4.17.21 - transitivePeerDependencies: - - debug - - http-proxy@1.18.1: - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.9 - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - - human-signals@2.1.0: {} - - hyperdyperid@1.2.0: {} - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - -<<<<<<< HEAD -======= - ieee754@1.2.1: {} - - ignore-by-default@1.0.1: {} - - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - - imurmurhash@0.1.4: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - inherits@2.0.3: {} - - inherits@2.0.4: {} - - ini@1.3.8: {} - - interpret@3.1.1: {} - - ipaddr.js@1.9.1: {} - - ipaddr.js@2.2.0: {} - -<<<<<<< HEAD -======= - is-arrayish@0.2.1: {} - - is-arrayish@0.3.2: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-docker@3.0.0: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - -<<<<<<< HEAD -======= - is-generator-fn@2.1.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - is-generator-function@1.1.0: - dependencies: - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - - is-interactive@2.0.0: {} - - is-network-error@1.1.0: {} - - is-number@7.0.0: {} - - is-plain-obj@3.0.0: {} - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-stream@2.0.1: {} - - is-unicode-supported@1.3.0: {} - - is-unicode-supported@2.1.0: {} - - is-windows@1.0.2: {} - - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - - isarray@1.0.0: {} - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - isexe@3.1.1: {} - - isomorphic-rslog@0.0.6: {} - - isomorphic-ws@5.0.0(ws@8.18.0): - dependencies: - ws: 8.18.0 - -<<<<<<< HEAD -======= - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-lib-source-maps@4.0.1: - dependencies: - debug: 4.4.0(supports-color@5.5.0) - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.1.7: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - -<<<<<<< HEAD - jest-worker@27.5.1: - dependencies: - '@types/node': 22.13.13 - merge-stream: 2.0.0 - supports-color: 8.1.1 - -======= - jake@10.9.2: - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jest-changed-files@29.7.0: - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - - jest-circus@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.3 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-cli@29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-config@29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)): - dependencies: - '@babel/core': 7.26.10 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.10) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.17.25 - ts-node: 10.9.2(@types/node@20.17.25)(typescript@5.8.2) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-diff@29.7.0: - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-docblock@29.7.0: - dependencies: - detect-newline: 3.1.0 - - jest-each@29.7.0: - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 - - jest-environment-node@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - jest-get-type@29.6.3: {} - - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.25 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-leak-detector@29.7.0: - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-matcher-utils@29.7.0: - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.26.2 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-mock-extended@4.0.0-beta1(@jest/globals@29.7.0)(jest@29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)))(typescript@5.8.2): - dependencies: - '@jest/globals': 29.7.0 - jest: 29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - ts-essentials: 10.0.4(typescript@5.8.2) - typescript: 5.8.2 - - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - jest-util: 29.7.0 - - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 - - jest-regex-util@29.6.3: {} - - jest-resolve-dependencies@29.7.0: - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - jest-resolve@29.7.0: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.10 - resolve.exports: 2.0.3 - slash: 3.0.0 - - jest-runner@29.7.0: - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - - jest-runtime@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - chalk: 4.1.2 - cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - - jest-snapshot@29.7.0: - dependencies: - '@babel/core': 7.26.10 - '@babel/generator': 7.26.10 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.26.10 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color - - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - - jest-watcher@29.7.0: - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.25 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 - - jest-worker@27.5.1: - dependencies: - '@types/node': 20.17.25 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest-worker@29.7.0: - dependencies: - '@types/node': 20.17.25 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest@29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - joi@17.13.3: - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 - -<<<<<<< HEAD - joycon@3.1.1: {} - - js-tokens@4.0.0: {} - -======= - js-tokens@4.0.0: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - jsesc@3.1.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@1.0.0: {} - - json-stable-stringify@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - isarray: 2.0.5 - jsonify: 0.0.1 - object-keys: 1.1.1 - -<<<<<<< HEAD - json-stringify-safe@5.0.1: {} -======= - json5@2.2.3: {} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonify@0.0.1: {} - - keygrip@1.1.0: - dependencies: - tsscmp: 1.0.6 - -<<<<<<< HEAD -======= - kleur@3.0.3: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - koa-compose@4.1.0: {} - - koa-convert@2.0.0: - dependencies: - co: 4.6.0 - koa-compose: 4.1.0 - - koa@2.15.4: - dependencies: - accepts: 1.3.8 - cache-content-type: 1.0.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookies: 0.9.1 -<<<<<<< HEAD - debug: 4.4.0 -======= - debug: 4.4.0(supports-color@5.5.0) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - delegates: 1.0.0 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - fresh: 0.5.2 - http-assert: 1.5.0 - http-errors: 1.8.1 - is-generator-function: 1.1.0 - koa-compose: 4.1.0 - koa-convert: 2.0.0 - on-finished: 2.4.1 - only: 0.0.2 - parseurl: 1.3.3 - statuses: 1.5.0 - type-is: 1.6.18 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - -<<<<<<< HEAD -======= - kuler@2.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - launch-editor@2.10.0: - dependencies: - picocolors: 1.1.1 - shell-quote: 1.8.2 - -<<<<<<< HEAD - loader-runner@4.3.0: {} - - lodash.clonedeepwith@4.5.0: {} - -======= - leven@3.1.0: {} - - lines-and-columns@1.2.4: {} - - loader-runner@4.3.0: {} - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - lodash.clonedeepwith@4.5.0: {} - - lodash.memoize@4.1.2: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - lodash@4.17.21: {} - - log-symbols@6.0.0: - dependencies: - chalk: 5.4.1 - is-unicode-supported: 1.3.0 - - log4js@6.9.1: - dependencies: - date-format: 4.0.14 -<<<<<<< HEAD - debug: 4.4.0 -======= - debug: 4.4.0(supports-color@5.5.0) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - flatted: 3.3.3 - rfdc: 1.4.1 - streamroller: 3.1.5 - transitivePeerDependencies: - - supports-color - -<<<<<<< HEAD -======= - logform@2.7.0: - dependencies: - '@colors/colors': 1.6.0 - '@types/triple-beam': 1.3.5 - fecha: 4.2.3 - ms: 2.1.3 - safe-stable-stringify: 2.5.0 - triple-beam: 1.4.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - long-timeout@0.1.1: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lru-cache@10.4.3: {} - -<<<<<<< HEAD - luxon@3.6.0: {} -======= - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - luxon@3.5.0: {} - - make-dir@4.0.0: - dependencies: - semver: 7.7.1 - - make-error@1.3.6: {} - - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - math-intrinsics@1.1.0: {} - - media-typer@0.3.0: {} - - memfs@4.17.0: - dependencies: - '@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) - tree-dump: 1.0.2(tslib@2.8.1) - tslib: 2.8.1 - - merge-descriptors@1.0.3: {} - - merge-stream@2.0.0: {} - - methods@1.1.2: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-db@1.54.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime@1.6.0: {} - - mimic-fn@2.1.0: {} - - mimic-function@5.0.1: {} - -<<<<<<< HEAD - minimalistic-assert@1.0.1: {} - -======= - mimic-response@3.1.0: {} - - minimalistic-assert@1.0.1: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - minipass@7.1.2: {} - -<<<<<<< HEAD -======= - mkdirp-classic@0.5.3: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - mrmime@1.0.1: {} - - ms@2.0.0: {} - - ms@2.1.3: {} - - multicast-dns@7.2.5: - dependencies: - dns-packet: 5.6.1 - thunky: 1.1.0 - -<<<<<<< HEAD -======= - napi-build-utils@2.0.0: {} - - natural-compare@1.4.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - negotiator@0.6.3: {} - - negotiator@0.6.4: {} - - neo-async@2.6.2: {} - -<<<<<<< HEAD - nock@13.5.6: - dependencies: - debug: 4.4.0 - json-stringify-safe: 5.0.1 - propagate: 2.0.1 - transitivePeerDependencies: - - supports-color -======= - node-abi@3.74.0: - dependencies: - semver: 7.7.1 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - node-domexception@1.0.0: {} - - node-fetch@2.7.0(encoding@0.1.13): - dependencies: - whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 - - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - - node-forge@1.3.1: {} - -<<<<<<< HEAD -======= - node-int64@0.4.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - node-releases@2.0.19: {} - - node-schedule@2.1.1: - dependencies: - cron-parser: 4.9.0 - long-timeout: 0.1.1 - sorted-array-functions: 1.3.0 - -<<<<<<< HEAD -======= - nodemon@3.1.9: - dependencies: - chokidar: 3.6.0 - debug: 4.4.0(supports-color@5.5.0) - ignore-by-default: 1.0.1 - minimatch: 3.1.2 - pstree.remy: 1.1.8 - semver: 7.7.1 - simple-update-notifier: 2.0.0 - supports-color: 5.5.0 - touch: 3.1.1 - undefsafe: 2.0.5 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - normalize-path@3.0.0: {} - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - object-inspect@1.13.4: {} - - object-keys@1.1.1: {} - - obuf@1.1.2: {} - -<<<<<<< HEAD - on-exit-leak-free@2.1.2: {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - on-headers@1.0.2: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - -<<<<<<< HEAD -======= - one-time@1.0.0: - dependencies: - fn.name: 1.1.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - - only@0.0.2: {} - - open@10.1.0: - dependencies: - default-browser: 5.2.1 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 3.1.0 - - openapi3-ts@4.4.0: - dependencies: - yaml: 2.7.0 - - opener@1.5.2: {} - - ora@8.2.0: - dependencies: - chalk: 5.4.1 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.0 - - otpauth@9.3.6: - dependencies: - '@noble/hashes': 1.6.1 - -<<<<<<< HEAD -======= - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - p-retry@4.6.2: - dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 - - p-retry@6.2.1: - dependencies: - '@types/retry': 0.12.2 - is-network-error: 1.1.0 - retry: 0.13.1 - -<<<<<<< HEAD - package-json-from-dist@1.0.1: {} - -======= - p-try@2.2.0: {} - - package-json-from-dist@1.0.1: {} - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - parse-passwd@1.0.0: {} - - parseurl@1.3.3: {} - -<<<<<<< HEAD -======= - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-to-regexp@0.1.12: {} - -<<<<<<< HEAD - pg-cloudflare@1.1.1: - optional: true - - pg-connection-string@2.7.0: {} - - pg-int8@1.0.1: {} - - pg-numeric@1.0.2: {} - - pg-pool@3.8.0(pg@8.14.1): - dependencies: - pg: 8.14.1 - - pg-protocol@1.8.0: {} - - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - - pg-types@4.0.2: - dependencies: - pg-int8: 1.0.1 - pg-numeric: 1.0.2 - postgres-array: 3.0.4 - postgres-bytea: 3.0.0 - postgres-date: 2.1.0 - postgres-interval: 3.0.0 - postgres-range: 1.1.4 - - pg@8.14.1: - dependencies: - pg-connection-string: 2.7.0 - pg-pool: 3.8.0(pg@8.14.1) - pg-protocol: 1.8.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 - - pgpass@1.0.5: - dependencies: - split2: 4.2.0 - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - -<<<<<<< HEAD - pino-abstract-transport@2.0.0: - dependencies: - split2: 4.2.0 - - pino-pretty@13.0.0: - dependencies: - colorette: 2.0.20 - dateformat: 4.6.3 - fast-copy: 3.0.2 - fast-safe-stringify: 2.1.1 - help-me: 5.0.0 - joycon: 3.1.1 - minimist: 1.2.8 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 2.0.0 - pump: 3.0.2 - secure-json-parse: 2.7.0 - sonic-boom: 4.2.0 - strip-json-comments: 3.1.1 - - pino-std-serializers@7.0.0: {} - - pino@9.6.0: - dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.5.0 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 2.0.0 - pino-std-serializers: 7.0.0 - process-warning: 4.0.1 - quick-format-unescaped: 4.0.4 - real-require: 0.2.0 - safe-stable-stringify: 2.5.0 - sonic-boom: 4.2.0 - thread-stream: 3.1.0 - - postgres-array@2.0.0: {} - - postgres-array@3.0.4: {} - - postgres-bytea@1.0.0: {} - - postgres-bytea@3.0.0: - dependencies: - obuf: 1.1.2 - - postgres-date@1.0.7: {} - - postgres-date@2.1.0: {} - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - - postgres-interval@3.0.0: {} - - postgres-range@1.1.4: {} - - process-nextick-args@2.0.1: {} - - process-warning@4.0.1: {} - - propagate@2.0.1: {} -======= - pirates@4.0.6: {} - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - prebuild-install@7.1.3: - dependencies: - detect-libc: 2.0.3 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 2.0.0 - node-abi: 3.74.0 - pump: 3.0.2 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.2 - tunnel-agent: 0.6.0 - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - - process-nextick-args@2.0.1: {} - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - proxy-from-env@1.1.0: {} - - psl@1.15.0: - dependencies: - punycode: 2.3.1 - -<<<<<<< HEAD -======= - pstree.remy@1.1.8: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - pump@3.0.2: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - punycode@2.3.1: {} - - pure-rand@6.1.0: {} - - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - - querystringify@2.2.0: {} - -<<<<<<< HEAD - quick-format-unescaped@4.0.4: {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - rambda@9.4.2: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - -<<<<<<< HEAD -======= - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - -<<<<<<< HEAD -======= - react-is@18.3.1: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - -<<<<<<< HEAD - real-require@0.2.0: {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - rechoir@0.8.0: - dependencies: - resolve: 1.22.10 - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - requires-port@1.0.0: {} - -<<<<<<< HEAD -======= - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - resolve-dir@1.0.1: - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - -<<<<<<< HEAD - resolve-pkg-maps@1.0.0: {} - -======= - resolve-from@5.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve.exports@2.0.3: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@1.22.8: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - - retry@0.13.1: {} - - rfdc@1.4.1: {} - - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - -<<<<<<< HEAD - rslog@1.2.3: {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - run-applescript@7.0.0: {} - - rxjs@7.8.2: - dependencies: - tslib: 2.8.1 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - - safe-stable-stringify@2.5.0: {} - - safer-buffer@2.1.2: {} - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - -<<<<<<< HEAD - secure-json-parse@2.7.0: {} - -======= ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - select-hose@2.0.0: {} - - selfsigned@2.4.1: - dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 - -<<<<<<< HEAD -======= - semver@6.3.1: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - semver@7.6.3: {} - - semver@7.7.1: {} - - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - serve-index@1.9.1: - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - - set-cookie-parser@2.7.1: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - setprototypeof@1.1.0: {} - - setprototypeof@1.2.0: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shell-quote@1.8.2: {} - - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - -<<<<<<< HEAD -======= - simple-concat@1.0.1: {} - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - - simple-update-notifier@2.0.0: - dependencies: - semver: 7.7.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - sirv@1.0.19: - dependencies: - '@polka/url': 1.0.0-next.28 - mrmime: 1.0.1 - totalist: 1.1.0 - -<<<<<<< HEAD -======= - sisteransi@1.0.5: {} - - slash@3.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - sockjs@0.3.24: - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - -<<<<<<< HEAD - sonic-boom@4.2.0: - dependencies: - atomic-sleep: 1.0.0 - - sorted-array-functions@1.3.0: {} - -======= - sorted-array-functions@1.3.0: {} - - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - spdy-transport@3.0.0: - dependencies: -<<<<<<< HEAD - debug: 4.4.0 -======= - debug: 4.4.0(supports-color@5.5.0) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.2 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - - spdy@4.0.2: - dependencies: -<<<<<<< HEAD - debug: 4.4.0 -======= - debug: 4.4.0(supports-color@5.5.0) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color - -<<<<<<< HEAD - split2@4.2.0: {} -======= - sprintf-js@1.0.3: {} - - stack-trace@0.0.10: {} - - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - statuses@1.5.0: {} - - statuses@2.0.1: {} - - stdin-discarder@0.2.2: {} - - streamroller@3.1.5: - dependencies: - date-format: 4.0.14 -<<<<<<< HEAD - debug: 4.4.0 -======= - debug: 4.4.0(supports-color@5.5.0) ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - fs-extra: 8.1.0 - transitivePeerDependencies: - - supports-color - -<<<<<<< HEAD -======= - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string-width@7.2.0: - dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - -<<<<<<< HEAD - strip-final-newline@2.0.0: {} - - strip-json-comments@3.1.1: {} - -======= - strip-bom@4.0.0: {} - - strip-final-newline@2.0.0: {} - - strip-json-comments@2.0.1: {} - - strip-json-comments@3.1.1: {} - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - tapable@2.2.1: {} - -<<<<<<< HEAD -======= - tar-fs@2.1.2: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.2 - tar-stream: 2.2.0 - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.98.0(esbuild@0.19.12)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.0 - serialize-javascript: 6.0.2 - terser: 5.39.0 - webpack: 5.98.0(esbuild@0.19.12) - optionalDependencies: - esbuild: 0.19.12 - - terser@5.39.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.1 - commander: 2.20.3 - source-map-support: 0.5.21 - -<<<<<<< HEAD -======= - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - - text-hex@1.0.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - thingies@1.21.0(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - -<<<<<<< HEAD - thread-stream@3.1.0: - dependencies: - real-require: 0.2.0 - - thunky@1.1.0: {} - -======= - thunky@1.1.0: {} - - tmpl@1.0.5: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - toidentifier@1.0.1: {} - - totalist@1.1.0: {} - -<<<<<<< HEAD -======= - touch@3.1.1: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - tough-cookie@4.1.4: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - - tr46@0.0.3: {} - - tree-dump@1.0.2(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - - tree-kill@1.2.2: {} - -<<<<<<< HEAD -======= - triple-beam@1.4.1: {} - - ts-essentials@10.0.4(typescript@5.8.2): - optionalDependencies: - typescript: 5.8.2 - - ts-jest@29.2.6(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)))(typescript@5.8.2): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.17.25)(ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.1 - typescript: 5.8.2 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.26.10 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.10) - esbuild: 0.19.12 - - ts-node@10.9.2(@types/node@20.17.25)(typescript@5.8.2): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.25 - acorn: 8.14.1 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.8.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - tslib@2.8.1: {} - - tsscmp@1.0.6: {} - -<<<<<<< HEAD - twitter-api-v2@1.22.0: {} -======= - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - - twitter-api-v2@1.21.1: {} - - type-detect@4.0.8: {} - - type-fest@0.21.3: {} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - - typescript@5.8.2: {} - -<<<<<<< HEAD - undici-types@6.20.0: {} -======= - undefsafe@2.0.5: {} - - undici-types@6.19.8: {} ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - - universalify@0.1.2: {} - - universalify@0.2.0: {} - - universalify@2.0.1: {} - - unpipe@1.0.0: {} - - upath@2.0.1: {} - - update-browserslist-db@1.1.3(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - util-deprecate@1.0.2: {} - - utils-merge@1.0.1: {} - - uuid@8.3.2: {} - -<<<<<<< HEAD -======= - v8-compile-cache-lib@3.0.1: {} - - v8-to-istanbul@9.3.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - vary@1.1.2: {} - - wait-on@8.0.3: - dependencies: - axios: 1.8.4 - joi: 17.13.3 - lodash: 4.17.21 - minimist: 1.2.8 - rxjs: 7.8.2 - transitivePeerDependencies: - - debug - -<<<<<<< HEAD -======= - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - watchpack@2.4.2: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - wbuf@1.7.3: - dependencies: - minimalistic-assert: 1.0.1 - - web-streams-polyfill@3.3.3: {} - - webidl-conversions@3.0.1: {} - - webpack-bundle-analyzer@4.6.1: - dependencies: - acorn: 8.14.1 - acorn-walk: 8.3.4 - chalk: 4.1.2 - commander: 7.2.0 - gzip-size: 6.0.0 - lodash: 4.17.21 - opener: 1.5.2 - sirv: 1.0.19 - ws: 7.5.10 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.19.12)): - dependencies: - colorette: 2.0.20 - memfs: 4.17.0 - mime-types: 2.1.35 - on-finished: 2.4.1 - range-parser: 1.2.1 - schema-utils: 4.3.0 - optionalDependencies: - webpack: 5.98.0(esbuild@0.19.12) - - webpack-dev-server@5.0.4(webpack@5.98.0(esbuild@0.19.12)): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 - '@types/sockjs': 0.3.36 - '@types/ws': 8.18.0 - ansi-html-community: 0.0.8 - bonjour-service: 1.3.0 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.8.0 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.21.2 - graceful-fs: 4.2.11 - html-entities: 2.5.3 - http-proxy-middleware: 2.0.7(@types/express@4.17.21) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.0 - p-retry: 6.2.1 - rimraf: 5.0.10 - schema-utils: 4.3.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.19.12)) - ws: 8.18.1 - optionalDependencies: - webpack: 5.98.0(esbuild@0.19.12) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack-sources@3.2.3: {} - - webpack@5.98.0(esbuild@0.19.12): - dependencies: - '@types/eslint-scope': 3.7.7 -<<<<<<< HEAD - '@types/estree': 1.0.7 -======= - '@types/estree': 1.0.6 ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.1 - browserslist: 4.24.4 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.1 - es-module-lexer: 1.6.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.98.0(esbuild@0.19.12)) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - websocket-driver@0.7.4: - dependencies: - http-parser-js: 0.5.9 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - - websocket-extensions@0.1.4: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which@1.3.1: - dependencies: - isexe: 2.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - which@4.0.0: - dependencies: - isexe: 3.1.1 - -<<<<<<< HEAD -======= - winston-console-format@1.0.8: - dependencies: - colors: 1.4.0 - logform: 2.7.0 - triple-beam: 1.4.1 - - winston-transport@4.9.0: - dependencies: - logform: 2.7.0 - readable-stream: 3.6.2 - triple-beam: 1.4.1 - - winston@3.17.0: - dependencies: - '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.6 - is-stream: 2.0.1 - logform: 2.7.0 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.5.0 - stack-trace: 0.0.10 - triple-beam: 1.4.1 - winston-transport: 4.9.0 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - -<<<<<<< HEAD -======= - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - ws@7.5.10: {} - - ws@8.18.0: {} - - ws@8.18.1: {} - -<<<<<<< HEAD - xtend@4.0.2: {} - - y18n@5.0.8: {} - -======= - y18n@5.0.8: {} - - yallist@3.1.1: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - yaml@2.7.0: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - ylru@1.4.0: {} - -<<<<<<< HEAD -======= - yn@3.1.1: {} - - yocto-queue@0.1.0: {} - ->>>>>>> a13849c3fb89768d8a523cbbe842b47c3cdc7486 - zod@3.24.2: {} diff --git a/backend/src/index.ts b/backend/src/index.ts index a4a6a42e..51596d47 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -5,9 +5,14 @@ import path from "path"; if (process.env.NODE_ENV === "test") { config({ path: path.resolve(process.cwd(), "backend/.env.test") }); } else { - config(); + config({ path: path.resolve(process.cwd(), "backend/.env") }); } +// Log all environment variables for debugging +console.log("Environment variables loaded:"); +console.log("DATABASE_URL:", process.env.DATABASE_URL); +console.log("NODE_ENV:", process.env.NODE_ENV); + import { serve } from "@hono/node-server"; import { AppInstance } from "types/app"; import { createApp } from "./app"; @@ -28,8 +33,16 @@ async function getInstance(): Promise { try { instance = await createApp(); } catch (error) { - logger.error("Failed to create app instance:", error); - throw new Error("Failed to initialize application"); + const errorMessage = error instanceof Error ? error.message : String(error); + const errorStack = error instanceof Error ? error.stack : undefined; + + logger.error("Failed to create app instance:", { + error: errorMessage, + stack: errorStack, + dirname: __dirname, + cwd: process.cwd() + }); + throw new Error(`Failed to initialize application: ${errorMessage}`); } } return instance; @@ -41,10 +54,30 @@ async function startServer() { // Initialize database in production, but not in tests if (process.env.NODE_ENV !== "test") { - const dbInitialized = await initializeDatabase(); - if (dbInitialized) { - } else { - logger.warn("Continuing without database connection"); + logger.info("Initializing database connection..."); + try { + const dbInitialized = await initializeDatabase(); + if (dbInitialized) { + logger.info("Database connection established successfully"); + } else { + logger.error("Database connection failed. Application cannot continue without database."); + + // Check if DATABASE_URL is set + if (!process.env.DATABASE_URL) { + logger.error("DATABASE_URL environment variable is not set"); + } else { + logger.error("DATABASE_URL is set but connection failed. Check if the database server is running and accessible."); + logger.error("Make sure Docker is running and the PostgreSQL container is started."); + } + + // Exit the application + logger.error("Exiting application due to database connection failure"); + process.exit(1); + } + } catch (dbError) { + logger.error("Error during database initialization:", dbError); + logger.error("Application cannot continue without database. Exiting..."); + process.exit(1); } } diff --git a/backend/src/services/config/config.service.ts b/backend/src/services/config/config.service.ts index c59a8d44..b9b34a11 100644 --- a/backend/src/services/config/config.service.ts +++ b/backend/src/services/config/config.service.ts @@ -17,13 +17,14 @@ export class ConfigService { private constructor() { if (isProduction) { - this.configPath = path.resolve(__dirname, "../../curate.config.json"); + this.configPath = path.resolve(process.cwd(), "curate.config.json"); logger.info("Using production configuration"); } else { // Use test config in development mode this.configPath = path.resolve( - __dirname, - "../test/curate.config.test.json", + process.cwd(), + "backend/test/curate.config.test.json" + ); logger.info("Using test configuration"); } diff --git a/backend/src/services/db/index.ts b/backend/src/services/db/index.ts index c0b794fc..fcbe8f4a 100644 --- a/backend/src/services/db/index.ts +++ b/backend/src/services/db/index.ts @@ -552,10 +552,44 @@ export const db = dbInstance; export const initializeDatabase = async () => { try { + // Log the database URL (with password masked) + const dbUrl = process.env.DATABASE_URL || ''; + const maskedUrl = dbUrl.replace(/:\/\/([^:]+):([^@]+)@/, '://$1:****@'); + logger.info("Attempting to connect to database:", { url: maskedUrl }); + + if (!dbUrl) { + logger.error("DATABASE_URL environment variable is not set or empty"); + return false; + } + await dbInstance.connect(); return true; } catch (err) { - logger.error("Failed to establish database connection:", { err }); + // More detailed error logging + const errorMessage = err instanceof Error ? err.message : String(err); + const errorStack = err instanceof Error ? err.stack : undefined; + const errorCode = (err as any).code; + + logger.error("Failed to establish database connection:", { + error: errorMessage, + code: errorCode, + stack: errorStack, + dirname: __dirname, + cwd: process.cwd() + }); + + // Provide more specific error messages based on error codes + if (errorCode === 'ECONNREFUSED') { + logger.error("Connection refused. Make sure the database server is running and accessible."); + logger.error("If using Docker, ensure the Docker daemon is running and the PostgreSQL container is started."); + } else if (errorCode === 'ENOTFOUND') { + logger.error("Host not found. Check the hostname in your DATABASE_URL."); + } else if (errorCode === '28P01') { + logger.error("Authentication failed. Check your database username and password."); + } else if (errorCode === '3D000') { + logger.error("Database does not exist. Make sure the database has been created."); + } + return false; } }; From fe228c90baa784929726f4e2407691ececdaddac Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 4 Apr 2025 12:44:29 -0500 Subject: [PATCH 006/113] update memory bank --- memory-bank/activeContext.md | 166 ++++++++++++++++------------------ memory-bank/productContext.md | 2 +- memory-bank/progress.md | 83 ++++++++++------- memory-bank/projectbrief.md | 5 +- memory-bank/systemPatterns.md | 32 ++++--- memory-bank/techContext.md | 40 +++++--- 6 files changed, 185 insertions(+), 143 deletions(-) diff --git a/memory-bank/activeContext.md b/memory-bank/activeContext.md index 9b6d6f4b..b8495c5a 100644 --- a/memory-bank/activeContext.md +++ b/memory-bank/activeContext.md @@ -1,58 +1,53 @@ # Active Context ## Current Focus -Platform Stability, Database Migration, Turborepo Conversion, and Feature Enhancement +Comprehensive Error Handling, Database Configuration, Test Coverage, and Security Enhancements ### Background - Successfully operating with Node.js/Hono backend - Using pnpm for package management with Bun for scripts and tests -- Plugin system fully operational with multiple distributors and transformers +- Plugin system fully operational with module federation - Multiple active feeds with Twitter-based curation - -### Next Phase -1. **Platform Stability** - - Monitoring system performance - - Ensuring reliable content processing - - Maintaining plugin compatibility - - Optimizing resource usage - -2. **Database Migration** - - Migrating from SQLite to PostgreSQL with Drizzle ORM āœ“ - - Implementing Docker-based development environment āœ“ - - Creating data migration scripts āœ“ - - Setting up testing infrastructure with isolated test databases āœ“ - -3. **Turborepo Conversion** āœ“ - - Configuring proper workspace support for Bun āœ“ - - Implementing Corepack for package manager versioning āœ“ - - Optimizing Turborepo configuration for better caching āœ“ - - Setting up integration testing for backend services āœ“ - - Improving Docker configuration for Turborepo āœ“ - - Implementing CI/CD with GitHub Actions āœ“ - -4. **Feature Enhancement** - - Expanding distributor plugins - - Improving transformation capabilities - - Enhancing curator experience - - Developing recap functionality - -5. **Documentation Maintenance** - - Keeping API documentation current - - Updating plugin development guides - - Maintaining deployment documentation - - Documenting configuration options +- Deployed to Railway with Docker containerization + +### Next Phase Priorities +1. **Comprehensive Error Handling Solution** + - Implementing granular error types across the application + - Developing consistent error recovery mechanisms + - Enhancing error logging and monitoring + - Creating user-friendly error messages + - Implementing graceful degradation strategies + +2. **Moving Configuration to Database** + - Migrating from JSON-based configuration to database storage + - Implementing configuration versioning + - Creating admin interface for configuration management + - Ensuring backward compatibility + - Implementing validation and security measures + +3. **Completing Test Coverage** + - Expanding component tests for key flows + - Implementing integration tests for external services + - Adding E2E tests for critical user journeys + - Improving test infrastructure with Docker + - Implementing performance testing + +4. **Database Security for Web3Auth** + - Implementing secure authentication with Web3Auth + - Adding database protections for user data + - Creating proper access control mechanisms + - Implementing audit logging + - Ensuring compliance with security best practices ### Key Considerations - Ensuring reliable content processing - Supporting growing number of feeds - Maintaining plugin compatibility - Balancing performance and features -- **JSON sanitization throughout transformation pipeline** -- **Database scalability and performance with PostgreSQL** -- **Consistent development environment with Docker** -- **Optimized build and development workflow with Turborepo** -- **Integration testing for backend services with Docker** -- **Automated testing with GitHub Actions** +- **Comprehensive error handling across the application** +- **Database security for user authentication** +- **Test coverage for critical flows** +- **Configuration management in database** ## Active Decisions @@ -67,20 +62,20 @@ Platform Stability, Database Migration, Turborepo Conversion, and Feature Enhanc - Strong workspace support - Managed via Corepack for version consistency 3. **PostgreSQL with Drizzle ORM** - - Improved scalability over SQLite + - Improved scalability - Read/write separation capability - Transaction support with retry logic - Docker-based development environment -4. **Improved Backend Organization** - - Modular route structure - - Dedicated utility for secure file serving - - Path traversal protection - - Proper MIME type handling -5. **Turborepo for Monorepo Management** - - Optimized task execution and caching - - Workspace-aware dependency management - - Improved development workflow - - Integration testing infrastructure +4. **Module Federation for Plugin System** + - Runtime loading without rebuilds + - Type-safe plugin interfaces + - Easy plugin development + - Hot-reloading capability +5. **Railway Deployment with Docker** + - Simplified deployment process + - Containerized application + - Kubernetes orchestration + - Environment-specific configurations ### Plugin System - Runtime module federation for plugins @@ -95,54 +90,51 @@ Platform Stability, Database Migration, Turborepo Conversion, and Feature Enhanc - Multi-channel distribution ## Current Focus Areas -1. System reliability and performance -2. Database migration to PostgreSQL -3. ~~Turborepo conversion and optimization~~ āœ“ -4. ~~Integration testing implementation~~ āœ“ -5. Plugin ecosystem expansion -6. Curator experience improvement -7. Documentation maintenance +1. Implementing comprehensive error handling solution +2. Moving configuration to database +3. Completing test coverage +4. Adding database protections for Web3Auth +5. Enhancing monitoring and logging +6. Improving performance and scalability ## Next Steps -1. ~~Complete Turborepo conversion~~ āœ“ -2. Complete PostgreSQL migration -3. ~~Implement integration testing for backend services~~ āœ“ -4. ~~Optimize Docker configuration for production~~ āœ“ -5. Enhance recap functionality -6. Expand distributor options -7. Improve transformation capabilities -8. Optimize resource usage +1. Design and implement error handling framework +2. Create database schema for configuration storage +3. Develop migration plan for configuration +4. Implement Web3Auth integration +5. Add database security measures +6. Expand test coverage for critical flows +7. Enhance monitoring and logging ## Validated Solutions 1. Twitter-based submission and moderation -2. Plugin-based architecture +2. Module federation plugin architecture 3. Configuration-driven feed management 4. Multi-channel content distribution -5. **Secure static file serving with proper MIME types** -6. **JSON sanitization at key points in the transformation pipeline** +5. PostgreSQL with Drizzle ORM +6. Docker containerization +7. Railway deployment +8. JSON sanitization at key points in the transformation pipeline -## Testing Strategy Overhaul +## Testing Strategy Implementation -### Current Testing Issues -- Over-reliance on mocks instead of component-level testing -- Using fake databases instead of real ones in Docker containers -- Inconsistent test data management -- Limited HTTP integration testing -- Insufficient message queue testing -- Hidden mocks that make tests harder to understand +### Current Testing Status +- Component tests implemented for key flows +- Docker-Compose for testing infrastructure +- Integration tests for external services +- E2E tests for full flows +- CI/CD with GitHub Actions -### Testing Approach Decision -- **Complete refactoring implemented** - The testing approach has been overhauled +### Testing Approach - Focus on component tests as primary testing strategy - Using Docker-Compose for real database and infrastructure - Implementing a fake MQ for message queue testing - Clear directory structure for different test types - Following Node.js testing best practices as documented in memory-bank/testingPlan.md -### Implementation Priority -1. Set up Docker-Compose for testing infrastructure āœ“ -2. Create a fake MQ implementation āœ“ -3. Refactor existing tests to use real database āœ“ -4. Add component tests for key flows āœ“ -5. Add integration tests for external services āœ“ -6. Add E2E tests for full flows āœ“ +### Next Testing Priorities +1. Expand component test coverage +2. Add more integration tests for external services +3. Implement performance testing +4. Add security testing +5. Improve test data management diff --git a/memory-bank/productContext.md b/memory-bank/productContext.md index 32dc9998..552c6a79 100644 --- a/memory-bank/productContext.md +++ b/memory-bank/productContext.md @@ -66,7 +66,7 @@ curate.fun solves these problems by: ### Platform Management - Configuration-driven feed management -- Plugin-based architecture +- Plugin-based architecture with module federation - Extensible transformation system - Comprehensive admin interface diff --git a/memory-bank/progress.md b/memory-bank/progress.md index e8c70dc7..c71dc027 100644 --- a/memory-bank/progress.md +++ b/memory-bank/progress.md @@ -5,12 +5,12 @@ ### Working - Frontend application with React and TanStack Router - Backend with Node.js/Hono -- Plugin system with multiple distributors and transformers +- Plugin system with module federation - Twitter-based content submission and moderation - Multiple active feeds with different curator networks - Configuration-driven feed management - Multi-channel content distribution -- Development workflow with Bun +- Railway deployment with Docker containerization ### Platform Features @@ -18,7 +18,7 @@ - [x] Content submission via Twitter - [x] Trusted curator moderation - [x] Content processing pipeline -- [x] Plugin architecture +- [x] Plugin architecture with module federation - [x] Configuration management - [x] Multi-feed support - [x] Database storage and retrieval @@ -44,9 +44,9 @@ - [x] Configuration visualization - [x] Responsive design -### In Progress +#### Infrastructure āœ“ - [x] Turborepo conversion - - [x] Workspace configuration for Bun + - [x] Workspace configuration - [x] Corepack integration - [x] Optimized task configuration - [x] Integration testing setup @@ -56,40 +56,61 @@ - [x] Migration scripts - [x] Database service implementation - [x] Testing infrastructure with isolated test databases +- [x] Docker containerization + - [x] Multi-stage build process + - [x] Optimized images + - [x] Development environment + - [x] Production configuration +- [x] Railway deployment + - [x] CI/CD pipeline + - [x] Environment configuration + - [x] Kubernetes setup + - [x] Monitoring and logging + +### In Progress +- [ ] Comprehensive error handling solution +- [ ] Moving configuration to database +- [ ] Completing test coverage +- [ ] Database protections for Web3Auth - [ ] Recap functionality - [ ] Enhanced analytics - [ ] Additional distributor plugins -- [ ] Performance optimization -- [x] Testing infrastructure overhaul - - [x] Docker-Compose for testing infrastructure - - [x] Component tests for key flows - - [x] Integration tests for external services - - [x] E2E tests for full flows -- [x] CI/CD with GitHub Actions - - [x] Docker-based test execution - - [x] Integration with PostgreSQL ## Next Actions -1. ~~Complete Turborepo conversion~~ āœ“ - - ~~Configure Bun workspaces~~ āœ“ - - ~~Set up Corepack for package manager versioning~~ āœ“ - - ~~Optimize Turborepo configuration~~ āœ“ - - ~~Implement integration testing for backend services~~ āœ“ - - ~~Optimize Docker configuration~~ āœ“ -2. ~~Complete PostgreSQL migration~~ āœ“ - - ~~Set up Docker Compose for development~~ āœ“ - - ~~Migrate data from SQLite~~ āœ“ - - ~~Update database service implementation~~ āœ“ - - ~~Configure testing environment~~ āœ“ -3. Complete recap functionality -4. Implement performance monitoring -5. Expand distributor options -6. Enhance transformation capabilities +1. Implement comprehensive error handling solution + - Design error type hierarchy + - Implement error recovery mechanisms + - Enhance error logging + - Add graceful degradation + - Create user-friendly error messages + +2. Move configuration to database + - Design database schema for configuration + - Create migration scripts + - Implement configuration service + - Add versioning support + - Create admin interface + +3. Complete test coverage + - Expand component tests + - Add integration tests + - Implement E2E tests + - Add performance tests + - Improve test infrastructure + +4. Implement database protections for Web3Auth + - Integrate Web3Auth + - Add database security measures + - Implement access control + - Add audit logging + - Ensure compliance with security best practices ## Known Issues - None critical - System is stable and operational -- ~~JSON parsing errors in transformation pipeline~~ - Fixed with sanitization -- ~~Current testing approach relies too heavily on mocks~~ - Fixed with new testing infrastructure +- Configuration management needs to be moved to database for better versioning and security +- Error handling needs to be more comprehensive +- Test coverage needs to be expanded +- Database security needs to be enhanced for Web3Auth integration ## Feed Status - Active feeds: Multiple (Ethereum, NEAR, Solana, Grants, AI, etc.) diff --git a/memory-bank/projectbrief.md b/memory-bank/projectbrief.md index f2df1640..1e0503b5 100644 --- a/memory-bank/projectbrief.md +++ b/memory-bank/projectbrief.md @@ -50,12 +50,14 @@ curate.fun is a content curation platform that aggregates and distributes curate ## Technical Requirements - High reliability and uptime - Scalable architecture -- Plugin extensibility +- Plugin extensibility through module federation - Secure moderation system - Real-time content processing - Efficient resource usage - Comprehensive error handling - Graceful degradation +- Containerized deployment with Docker +- PostgreSQL database with proper security measures ## Current Status The platform is fully operational with: @@ -64,3 +66,4 @@ The platform is fully operational with: - Multiple distribution channels - AI-powered content transformation - Comprehensive plugin system +- Containerized deployment on Railway diff --git a/memory-bank/systemPatterns.md b/memory-bank/systemPatterns.md index f6334286..dd0589a6 100644 --- a/memory-bank/systemPatterns.md +++ b/memory-bank/systemPatterns.md @@ -36,7 +36,7 @@ * Simple Transform (Basic formatting) * Object Transform (Data mapping and transformation) - Plugin Features - * Runtime loading and hot-reloading + * Runtime loading via module federation * Type-safe configuration * Custom endpoint registration * Scheduled task integration @@ -164,42 +164,50 @@ graph TD - Process endpoint for content handling - Dynamic endpoint registration -2. **Plugin Architecture** - - Module federation for runtime loading +3. **Module Federation Plugin System** + - Runtime plugin loading without rebuilds - Type-safe plugin interfaces - Easy plugin development - Comprehensive testing support - Hot-reloading capability -3. **Configuration-Driven** +4. **Configuration-Driven** - JSON-based configuration - Runtime configuration updates - Environment variable support - Extensible action handling - Easy forking and customization -4. **Service Architecture** +5. **Service Architecture** - Platform-agnostic services - Clear service boundaries - Optimized transformer-distributor flow - Comprehensive testing - Mock system for plugin validation -5. **Error Handling** +6. **Error Handling** - Granular error types - Graceful degradation - Error recovery strategies - Detailed error logging - Error aggregation for multiple failures -6. **Task Scheduling** +7. **Task Scheduling** - Configuration-driven cron jobs - Recap generation scheduling - Plugin-specific scheduled tasks - Reliable execution tracking -7. **Hybrid Runtime Approach** - - Node.js for production stability - - Bun for development speed - - Consistent package management - - Optimized build process +8. **Build System** + - RSPack for optimized builds + - Module federation support + - Fast development experience + - Efficient bundling + - TypeScript integration + +9. **Deployment Architecture** + - Docker containerization + - Railway platform deployment + - Kubernetes configuration + - Automated CI/CD pipeline + - Environment-specific configurations diff --git a/memory-bank/techContext.md b/memory-bank/techContext.md index a8f3ad5f..3972211c 100644 --- a/memory-bank/techContext.md +++ b/memory-bank/techContext.md @@ -3,7 +3,7 @@ ## Technology Stack ### Backend -- **Runtime**: Node.js (production) +- **Runtime**: Node.js - **Framework**: Hono - **Language**: TypeScript - **Database**: PostgreSQL with Drizzle ORM (with DB service abstraction) @@ -67,6 +67,13 @@ ## Plugin System +### Module Federation +- Runtime loading of remote modules +- Shared dependencies between host and remotes +- Type-safe plugin interfaces +- Hot-reloading support +- Plugin caching and invalidation + ### Core Plugin Features - Runtime module federation loading - Hot-reloading support @@ -134,27 +141,38 @@ - Twitter-based curator authentication - Environment-based service authentication - API endpoint access control +- Web3Auth integration for frontend (planned) -## Deployment +### Database Security +- Connection pooling with proper limits +- Prepared statements for all queries +- Input validation and sanitization +- Transaction isolation levels +- Database user permissions -### Requirements -- Node.js environment -- Environment variables configuration -- Plugin dependencies -- Frontend build artifacts +## Deployment ### Infrastructure -- Fly.io deployment +- Railway platform deployment +- Docker containerization +- Kubernetes orchestration - PostgreSQL database -- Docker-based development environment -- Health check endpoint +- Health check endpoints - Graceful shutdown handling +### CI/CD Pipeline +- GitHub Actions workflows +- Automated testing +- Docker image building +- Railway deployment +- Environment-specific configurations + ### Monitoring -- Health check endpoint +- Health check endpoints - Service initialization status - Graceful shutdown handling - Error logging and recovery +- Performance metrics ## Development Practices From 4b24929ce63003bdfdf15a7b46dcfc3a322cdcaf Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 4 Apr 2025 12:44:53 -0500 Subject: [PATCH 007/113] update clinerules --- .clinerules | 74 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 22 deletions(-) diff --git a/.clinerules b/.clinerules index 53a9baa8..77f82188 100644 --- a/.clinerules +++ b/.clinerules @@ -4,8 +4,8 @@ ### Package Management - Use pnpm for package management (pnpm@10.6.4) -- Use Corepack for package manager versioning -- Bun is used for running scripts and tests +- Use Corepack for package manager version consistency +- Bun is used for running scripts and tests only - Save type errors and dependency installations until ready to address them ### Database @@ -22,15 +22,21 @@ ### Code Organization - Use service-based architecture -- Implement plugin system for extensibility +- Implement plugin system with module federation for extensibility - Follow clean architecture principles - Use TypeScript strict mode ### Monorepo Structure - Use Turborepo for build orchestration and caching -- Bun workspaces for dependency management +- pnpm workspaces for dependency management - Separate backend and frontend as distinct workspaces +### Build System +- Use RSPack for backend building +- Use RSBuild for frontend building +- Support for module federation +- Optimized for TypeScript + ## Project Preferences ### Code Style @@ -51,6 +57,18 @@ - Handle nested stringified JSON - Implement proper error handling for malformed JSON +### Deployment +- Deploy to Railway using Docker containers +- Use Kubernetes for orchestration +- Implement CI/CD with GitHub Actions +- Use environment-specific configurations + +### Security +- Implement proper database security measures +- Plan for Web3Auth integration in frontend +- Use secure headers and CORS policies +- Implement audit logging for sensitive operations + ## Critical Implementation Paths ### Content Flow @@ -61,7 +79,7 @@ 5. Distribution to configured channels ### Plugin System -1. PluginService loads plugins at runtime +1. PluginService loads plugins at runtime via module federation 2. Plugins register with appropriate service 3. Services use plugins based on configuration 4. Error handling and recovery for plugin failures @@ -72,20 +90,32 @@ 3. Error handling and connection management 4. Type-safe queries with Drizzle ORM -## Known Challenges - -### Testing Infrastructure -- Current testing approach relies too heavily on mocks -- Need to implement Docker-based testing infrastructure -- Need to refactor tests to use real database -- Need to implement component tests for key flows - -### PostgreSQL Migration -- Migration from SQLite to PostgreSQL in progress -- Need to update database service implementation -- Need to migrate existing data - -### Performance Optimization -- Need to optimize resource usage -- Need to implement performance monitoring -- Need to identify and address bottlenecks +## Current Focus Areas + +### Comprehensive Error Handling +- Implementing granular error types across the application +- Developing consistent error recovery mechanisms +- Enhancing error logging and monitoring +- Creating user-friendly error messages +- Implementing graceful degradation strategies + +### Configuration in Database +- Migrating from JSON-based configuration to database storage +- Implementing configuration versioning +- Creating admin interface for configuration management +- Ensuring backward compatibility +- Implementing validation and security measures + +### Test Coverage +- Expanding component tests for key flows +- Implementing integration tests for external services +- Adding E2E tests for critical user journeys +- Improving test infrastructure with Docker +- Implementing performance testing + +### Web3Auth Security +- Implementing secure authentication with Web3Auth +- Adding database protections for user data +- Creating proper access control mechanisms +- Implementing audit logging +- Ensuring compliance with security best practices From 65c7b691fc5b42c56fda9a17c6aff03ded09da0f Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Sun, 6 Apr 2025 23:02:01 -0600 Subject: [PATCH 008/113] Upgrade DB service & production command (#118) * working tests post migration * fmt * fix pathways * nitpicks * fix tests and refactor to Submission type * fix test paths * fix path --- Dockerfile | 3 - backend/pnpm-lock.yaml | 5793 +++++++++++++++++ backend/scripts/dev-server.js | 17 +- backend/src/index.ts | 81 +- backend/src/routes/api/feed.ts | 6 +- backend/src/routes/api/leaderboard.ts | 4 +- backend/src/routes/api/stats.ts | 6 +- backend/src/routes/api/submission.ts | 11 +- backend/src/services/config/config.service.ts | 31 +- backend/src/services/db/connection.ts | 311 + backend/src/services/db/index.ts | 605 +- backend/src/services/db/queries.ts | 76 +- .../db/repositories/feed.repository.ts | 176 + backend/src/services/db/repositories/index.ts | 4 + .../db/repositories/leaderboard.repository.ts | 29 + .../db/repositories/submission.repository.ts | 207 + .../db/repositories/twitter.repository.ts | 152 + backend/src/services/db/transaction.ts | 81 + .../distribution/distribution.service.ts | 4 +- .../submissions/submission.service.ts | 81 +- backend/src/services/twitter/client.ts | 17 +- backend/src/types/twitter.ts | 6 +- backend/test/component/approval-flow.test.ts | 6 +- .../test/component/submission-flow.test.ts | 8 +- backend/test/e2e/full-flow.test.ts | 4 +- backend/test/integration/database.test.ts | 70 +- .../unit/repositories/feed.repository.test.ts | 261 + .../leaderboard.repository.test.ts | 123 + .../submission.repository.test.ts | 438 ++ .../repositories/twitter.repository.test.ts | 252 + backend/test/utils/test-data.ts | 1 - docker-compose.yml | 33 +- frontend/src/components/DownloadButton.tsx | 11 +- frontend/src/components/FeedHeader.tsx | 11 +- frontend/src/components/FeedItem.tsx | 8 +- .../src/components/StatusFilterButtons.tsx | 6 +- frontend/src/components/SubmissionList.tsx | 9 +- frontend/src/lib/api.ts | 8 +- frontend/src/lib/twitter.ts | 8 +- frontend/src/routes/feed/$feedId.tsx | 4 +- frontend/src/routes/feed/index.tsx | 4 +- memory-bank/activeContext.md | 23 +- memory-bank/progress.md | 29 +- memory-bank/systemPatterns.md | 27 +- memory-bank/techContext.md | 2 +- memory-bank/testingPlan.md | 52 + package.json | 2 +- 47 files changed, 8224 insertions(+), 877 deletions(-) create mode 100644 backend/pnpm-lock.yaml create mode 100644 backend/src/services/db/connection.ts create mode 100644 backend/src/services/db/repositories/feed.repository.ts create mode 100644 backend/src/services/db/repositories/index.ts create mode 100644 backend/src/services/db/repositories/leaderboard.repository.ts create mode 100644 backend/src/services/db/repositories/submission.repository.ts create mode 100644 backend/src/services/db/repositories/twitter.repository.ts create mode 100644 backend/src/services/db/transaction.ts create mode 100644 backend/test/unit/repositories/feed.repository.test.ts create mode 100644 backend/test/unit/repositories/leaderboard.repository.test.ts create mode 100644 backend/test/unit/repositories/submission.repository.test.ts create mode 100644 backend/test/unit/repositories/twitter.repository.test.ts diff --git a/Dockerfile b/Dockerfile index a146d292..61663e4c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -65,8 +65,5 @@ USER app # Expose the port EXPOSE 3000 -# Set secure environment defaults -ENV NODE_ENV=production - # Start the application CMD ["pnpm", "run", "--dir", "backend", "start"] diff --git a/backend/pnpm-lock.yaml b/backend/pnpm-lock.yaml new file mode 100644 index 00000000..dc40bca6 --- /dev/null +++ b/backend/pnpm-lock.yaml @@ -0,0 +1,5793 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@hono/node-server': + specifier: ^1.8.2 + version: 1.14.0(hono@4.7.5) + '@hono/zod-openapi': + specifier: ^0.9.5 + version: 0.9.10(hono@4.7.5)(zod@3.24.2) + '@hono/zod-validator': + specifier: ^0.1.11 + version: 0.1.11(hono@4.7.5)(zod@3.24.2) + '@module-federation/runtime': + specifier: ^0.11.1 + version: 0.11.3 + '@notionhq/client': + specifier: ^2.2.15 + version: 2.3.0(encoding@0.1.13) + '@types/async-retry': + specifier: ^1.4.9 + version: 1.4.9 + '@types/lodash': + specifier: ^4.17.16 + version: 4.17.16 + '@types/pg': + specifier: ^8.11.11 + version: 8.11.11 + agent-twitter-client: + specifier: ^0.0.16 + version: 0.0.16 + async-retry: + specifier: ^1.3.3 + version: 1.3.3 + dotenv: + specifier: ^16.4.7 + version: 16.4.7 + drizzle-kit: + specifier: ^0.30.1 + version: 0.30.6 + drizzle-orm: + specifier: ^0.40.1 + version: 0.40.1(@types/pg@8.11.11)(gel@2.0.2)(pg@8.14.1) + hono: + specifier: ^4.0.5 + version: 4.7.5 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + ora: + specifier: ^8.1.1 + version: 8.2.0 + pg: + specifier: ^8.14.1 + version: 8.14.1 + pino: + specifier: ^9.6.0 + version: 9.6.0 + pino-pretty: + specifier: ^13.0.0 + version: 13.0.0 + string-width: + specifier: ^7.2.0 + version: 7.2.0 + devDependencies: + '@curatedotfun/types': + specifier: ^0.0.5 + version: 0.0.5 + '@module-federation/node': + specifier: ^2.6.30 + version: 2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.19.12)) + '@rspack/binding': + specifier: 1.2.8 + version: 1.2.8 + '@rspack/cli': + specifier: 1.2.8 + version: 1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) + '@rspack/core': + specifier: 1.2.8 + version: 1.2.8(@swc/helpers@0.5.13) + axios: + specifier: ^1.6.8 + version: 1.8.4 + concurrently: + specifier: ^9.1.2 + version: 9.1.2 + drizzle-seed: + specifier: ^0.3.1 + version: 0.3.1(drizzle-orm@0.40.1(@types/pg@8.11.11)(gel@2.0.2)(pg@8.14.1)) + nock: + specifier: ^13.5.4 + version: 13.5.6 + typescript: + specifier: ^5.3.3 + version: 5.8.3 + wait-on: + specifier: ^8.0.2 + version: 8.0.3 + zod: + specifier: ^3.22.4 + version: 3.24.2 + +packages: + + '@asteasolutions/zod-to-openapi@5.5.0': + resolution: {integrity: sha512-d5HwrvM6dOKr3XdeF+DmashGvfEc+1oiEfbscugsiwSTrFtuMa7ETpW9sTNnVgn+hJaz+PRxPQUYD7q9/5dUig==} + peerDependencies: + zod: ^3.20.2 + + '@curatedotfun/types@0.0.5': + resolution: {integrity: sha512-thb89PXZHEA2BkVvRbA6b2imiglNDVzPOrdUZswF7q/tsnxGoOCwg7B1u6Y3YrajF7IdWto+TzfNnXUSadjWrA==} + + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + '@drizzle-team/brocli@0.10.2': + resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} + + '@esbuild-kit/core-utils@3.3.2': + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild-kit/esm-loader@2.6.5': + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + deprecated: 'Merged into tsx: https://tsx.is' + + '@esbuild/aix-ppc64@0.19.12': + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.19.12': + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.19.12': + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.19.12': + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.19.12': + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.12': + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.19.12': + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.12': + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.19.12': + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.19.12': + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.19.12': + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.19.12': + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.19.12': + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.19.12': + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.12': + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.19.12': + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.19.12': + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.19.12': + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.19.12': + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.19.12': + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.19.12': + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.19.12': + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@hono/node-server@1.14.0': + resolution: {integrity: sha512-YUCxJwgHRKSqjrdTk9e4VMGKN27MK5r4+MGPyZTgKH+IYbK+KtYbHeOcPGJ91KGGD6RIQiz2dAHxvjauNhOS8g==} + engines: {node: '>=18.14.1'} + peerDependencies: + hono: ^4 + + '@hono/zod-openapi@0.9.10': + resolution: {integrity: sha512-v/b/z0qPxDo952gjRyhJ0n9ifbPoIluR2KmXDL20np0hj99+XvakoIHK5/T/3+hUmXlTj1Kn3TiGsSV6hwZesg==} + engines: {node: '>=16.0.0'} + peerDependencies: + hono: '>=3.11.3' + zod: 3.* + + '@hono/zod-validator@0.1.11': + resolution: {integrity: sha512-PQXeHUP0+36qpRt8yfeD7N2jbK3ETlGvSN6dMof/HwUC/APRokQRjpXZm4rrlG71Ft0aWE01+Bm4XejqPie5Uw==} + peerDependencies: + hono: '>=3.9.0' + zod: ^3.19.1 + + '@hono/zod-validator@0.2.1': + resolution: {integrity: sha512-HFoxln7Q6JsE64qz2WBS28SD33UB2alp3aRKmcWnNLDzEL1BLsWfbdX6e1HIiUprHYTIXf5y7ax8eYidKUwyaA==} + peerDependencies: + hono: '>=3.9.0' + zod: ^3.19.1 + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.2.0': + resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.5.0': + resolution: {integrity: sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@modern-js/node-bundle-require@2.65.1': + resolution: {integrity: sha512-XpEkciVEfDbkkLUI662ZFlI9tXsUQtLXk4NRJDBGosNnk9uL2XszmC8sKsdCSLK8AYuPW2w6MTVWuJsOR0EU8A==} + + '@modern-js/utils@2.65.1': + resolution: {integrity: sha512-HrChf19F+6nALo5XPra8ycjhXGQfGi23+S7Y2FLfTKe8vaNnky8duT/XvRWpbS4pp3SQj8ryO8m/qWSsJ1Rogw==} + + '@module-federation/bridge-react-webpack-plugin@0.11.3': + resolution: {integrity: sha512-uaIWbKqs98vROrgG6DJE54ArxTFyVAvjg0JMDjP6s+lp7hXrjATVhnvpsVOyDBCw4ezhrLVVtuThNTpxfIiOrw==} + + '@module-federation/cli@0.11.3': + resolution: {integrity: sha512-TQAmEoJBaNpXNZf+dY9mJkIFrwkODp7qbNu9sL6sJ+bLUhoUHoTSoOTKMqdhLTSVJKulf4k8GfYPvKoCKX/FaA==} + engines: {node: '>=16.0.0'} + hasBin: true + + '@module-federation/data-prefetch@0.11.3': + resolution: {integrity: sha512-m0Iyl2xclAhIX4mVvPaEgytBx+hwQVJQqghKcN7HJR7UF7tvjO+xoJQmNIlxAl5+QOgPyYlJrmWtNTfzQHbcsw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@module-federation/dts-plugin@0.11.3': + resolution: {integrity: sha512-C43yJySmcwGhmVqisZomlz/OETEUXE7pybfEcrpInKc5FI4o6upLYV4P65jKRS0N+I/U3y6bAsHX4gtIq7XdbA==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + vue-tsc: + optional: true + + '@module-federation/enhanced@0.11.3': + resolution: {integrity: sha512-ySRp2tsJFXjw9wOkWPKV0Jmy6GPJfrWDEfEpJIDc5h75dk4Y0sPX3vrdQtZsNz/ofYJN1z3XJRLNzAZdRdYuIg==} + hasBin: true + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + + '@module-federation/error-codes@0.11.3': + resolution: {integrity: sha512-RG5cZAJUtlcJLoJiFXevdNRnBxrEye5aDHrDHY7szbO3hBK+XLqKTd0OOVHiGE5tpSy3TMy8qR9xHH4a1Q8bWg==} + + '@module-federation/error-codes@0.8.4': + resolution: {integrity: sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==} + + '@module-federation/inject-external-runtime-core-plugin@0.11.3': + resolution: {integrity: sha512-l7MUjXlV6O7h8BSlMC9FlJ0bi9wFz0+PIkn6r7vaE0IuepJ7SuZDzJxtErzTz5OggPOFLygS2r7q+60dNVwh7A==} + peerDependencies: + '@module-federation/runtime-tools': 0.11.3 + + '@module-federation/managers@0.11.3': + resolution: {integrity: sha512-9mhP2gCblG5oWA3YRxlfkIZbl9VuQjCATczs+VnS+sgykNZBUhTDj9K//sIN5Zrrd60IBz9HW7xjj8760ERwFw==} + + '@module-federation/manifest@0.11.3': + resolution: {integrity: sha512-UHODiU4g2mogYbud9/RZk73jDPSJtP4GiRSVtZo1OUW9J4qiy16N4FNw47M2OlGsHlgOzQ3igoo2NX7AQudAjA==} + + '@module-federation/node@2.6.32': + resolution: {integrity: sha512-0tGz84UfmvDOWZJTRLo4vk9i7czd+MHz+WsvqkLRHVxGBaiOkUXlQd0Wabig2uTwBftvm3DrTnpz5uxzLkDt4g==} + peerDependencies: + next: '*' + react: ^16||^17||^18||^19 + react-dom: ^16||^17||^18||^19 + webpack: ^5.40.0 + peerDependenciesMeta: + next: + optional: true + react: + optional: true + react-dom: + optional: true + + '@module-federation/rspack@0.11.3': + resolution: {integrity: sha512-1Mhy3L4jL1z+xFCLny5PBL6Fyu6i2eJB/n7sPTqyu/vfO0cgOfxwBxxcEneq0oAJ1er+n6WWcug8IrJ5hIzkTw==} + peerDependencies: + '@rspack/core': '>=0.7' + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + + '@module-federation/runtime-core@0.11.3': + resolution: {integrity: sha512-xz9++7Z0JXpOepknl2YmIQXzG8hmvLJLRtg7XYHuA1JRXW4vBKaUvvUAqLHvxS9+6FZTb8AAjQ9+8eeAOz5RYg==} + + '@module-federation/runtime-tools@0.11.3': + resolution: {integrity: sha512-mN1Ft2O4Khz8PEwNZT7ujWKjVyCKhkInHoMn2n8U8DmOShOlbSQaBR48ZvLP2NTUcbkZbMmWls4q9Ou2UampOw==} + + '@module-federation/runtime-tools@0.8.4': + resolution: {integrity: sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==} + + '@module-federation/runtime@0.11.3': + resolution: {integrity: sha512-lGCrWQclRVLP6ryYwdwvmphxRJi1thchO5Q4BbK4MsRxYUMlHGkPi0ygAXwedl6Kaa2ZqhbvlMrUhB+n5PnwNQ==} + + '@module-federation/runtime@0.8.4': + resolution: {integrity: sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==} + + '@module-federation/sdk@0.11.3': + resolution: {integrity: sha512-XzohSaFNbLbEoiwPtYOuoDeInx7vOSYHngfcQqJ356LRzNIPdCMjmtA0WM1YhRkpBchmQ1LXg6HVXy7R7AEKsg==} + + '@module-federation/sdk@0.8.4': + resolution: {integrity: sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==} + + '@module-federation/third-party-dts-extractor@0.11.3': + resolution: {integrity: sha512-c/Lpo2Ve33g5gQW62tcVe8O8NmPdt7gifT4Lu+IgWZpsxdnzTZcS4ujuyu19VCTjevNPxYc2aTtfkYjNtvvbpQ==} + + '@module-federation/utilities@3.1.50': + resolution: {integrity: sha512-vDarbdRCryGMzt1mGfh3oXrEAEXytrZd1NfdnLDRDn5K6YR+wdfklJBIG28pFP80Kc0dDjZc+03EqR+yYToPpQ==} + peerDependencies: + next: '*' + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + webpack: ^5.40.0 + peerDependenciesMeta: + next: + optional: true + react: + optional: true + react-dom: + optional: true + + '@module-federation/webpack-bundler-runtime@0.11.3': + resolution: {integrity: sha512-SyLDwwzvR/UxcJi3vcSevcL0/NmbiSZkaVXDOK5z/Xts+uANNzi0OSth1JKfTqT0nUUm4tTkkD6fufPWqg1NZA==} + + '@module-federation/webpack-bundler-runtime@0.8.4': + resolution: {integrity: sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==} + + '@noble/hashes@1.7.1': + resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} + engines: {node: ^14.21.3 || >=16} + + '@notionhq/client@2.3.0': + resolution: {integrity: sha512-l7WqTCpQqC+HibkB9chghONQTYcxNQT0/rOJemBfmuKQRTu2vuV8B3yA395iKaUdDo7HI+0KvQaz9687Xskzkw==} + engines: {node: '>=12'} + + '@petamoriken/float16@3.9.2': + resolution: {integrity: sha512-VgffxawQde93xKxT3qap3OH+meZf7VaSB5Sqd4Rqc+FP5alWbpOyan/7tRbOAvynjpG3GpdtAuGU/NdhQpmrog==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@rspack/binding-darwin-arm64@1.2.8': + resolution: {integrity: sha512-bDlrlroY3iMlzna/3i1gD6eRmhJW2zRyC3Ov6aR1micshVQ9RteigYZWkjZuQfyC5Z8dCcLUQJVojz+pqp0JXg==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@1.2.8': + resolution: {integrity: sha512-0/qOVbMuzZ+WbtDa4TbH46R4vph/W6MHcXbrXDO+vpdTMFDVJ64DnZXT7aqvGcY+7vTCIGm0GT+6ooR4KaIX8A==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@1.2.8': + resolution: {integrity: sha512-En/SMl45s19iUVb1/ZDFQvFDxIjnlfk7yqV3drMWWAL5HSgksNejaTIFTO52aoohIBbmwuk5wSGcbU0G0IFiPg==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-arm64-musl@1.2.8': + resolution: {integrity: sha512-N1oZsXfJ9VLLcK7p1PS65cxLYQCZ7iqHW2OP6Ew2+hlz/d1hzngxgzrtZMCXFOHXDvTzVu5ff6jGS2v7+zv2tA==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-x64-gnu@1.2.8': + resolution: {integrity: sha512-BdPaepoLKuaVwip4QK/nGqNi1xpbCWSxiycPbKRrGqKgt/QGihxxFgiqr4EpWQVIJNIMy4nCsg4arO0+H1KWGQ==} + cpu: [x64] + os: [linux] + + '@rspack/binding-linux-x64-musl@1.2.8': + resolution: {integrity: sha512-GFv0Bod268OcXIcjeLoPlK0oz8rClEIxIRFkz+ejhbvfCwRJ+Fd+EKaaKQTBfZQujPqc0h2GctIF25nN5pFTmA==} + cpu: [x64] + os: [linux] + + '@rspack/binding-win32-arm64-msvc@1.2.8': + resolution: {integrity: sha512-aEU+uJdbvJJGrzzAsjbjrPeNbG/bcG8JoXK2kSsUB+/sWHTIkHX0AQ3oX3aV/lcLKgZWrUxLAfLoCXEnIHMEyQ==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@1.2.8': + resolution: {integrity: sha512-GHYzNOSoiLyG9elLTmMqADJMQzjll+co4irp5AgZ+KHG9EVq0qEHxDqDIJxZnUA15U8JDvCgo6YAo3T0BFEL0Q==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@1.2.8': + resolution: {integrity: sha512-EigKLhKLH1kfv1e/ZgXuSKlIjkbyneJtiLbNDz7EeEVFGV1XMM6bsCea1sb2WOxsPYiOX4Q5JmR1j1KGrZS/LA==} + cpu: [x64] + os: [win32] + + '@rspack/binding@1.2.8': + resolution: {integrity: sha512-T3FMB3N9P1AbSAryfkSRJkPtmeSYs/Gj9zUZoPz1ckPEIcWZmpUOQbJylldjbw5waxtCL1haHNbi0pcSvxiaJw==} + + '@rspack/cli@1.2.8': + resolution: {integrity: sha512-xPNLJCnQt8B1j7i4T67MmVzYxJfx0c+gEhHozfVfpg/2PwuR9PBMnwo+53wJkUJk+ctJ+eMLQomDZymq4j26nA==} + hasBin: true + peerDependencies: + '@rspack/core': ^1.0.0-alpha || ^1.x + '@rspack/tracing': ^1.x + peerDependenciesMeta: + '@rspack/tracing': + optional: true + + '@rspack/core@1.2.8': + resolution: {integrity: sha512-ppj3uQQtkhgrYDLrUqb33YbpNEZCpAudpfVuOHGsvUrAnu1PijbfJJymoA5ZvUhM+HNMvPI5D1ie97TXyb0UVg==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@rspack/tracing': ^1.x + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@rspack/tracing': + optional: true + '@swc/helpers': + optional: true + + '@rspack/dev-server@1.0.10': + resolution: {integrity: sha512-iDsEtP0jNHRm4LJxL00QFTlOuqkdxIFxnd69h0KrFadmtxAWiDLIe4vYdZXWF74w4MezsJFx6dB2nUM/Ok8utA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': '*' + + '@rspack/lite-tapable@1.0.1': + resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} + engines: {node: '>=16.0.0'} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sinclair/typebox@0.32.35': + resolution: {integrity: sha512-Ul3YyOTU++to8cgNkttakC0dWvpERr6RYoHO2W47DLbFvrwBDJUY31B1sImH6JZSYc4Kt4PyHtoPNu+vL2r2dA==} + + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + + '@types/async-retry@1.4.9': + resolution: {integrity: sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + + '@types/express-serve-static-core@5.0.6': + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/http-proxy@1.17.16': + resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash@4.17.16': + resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/node-fetch@2.6.12': + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@22.14.0': + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} + + '@types/pg@8.11.11': + resolution: {integrity: sha512-kGT1qKM8wJQ5qlawUrEkXgvMSXoV213KfMGXcwfDwUIfUHXqXYXOfS1nE1LINRJVVVx5wCm70XnFlMHaIcQAfw==} + + '@types/qs@6.9.18': + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/retry@0.12.2': + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + + '@types/retry@0.12.5': + resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + agent-twitter-client@0.0.16: + resolution: {integrity: sha512-Clgb/N2LXoGMlId6GDUaaR05eJ0PqSifM6wikl/FiQ2+3+6I2ZhZB7KRulc8R4xvYFe6h0wNWe6FZiF48r124w==} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + axios@1.8.4: + resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bonjour-service@1.3.0: + resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + btoa@1.2.1: + resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} + engines: {node: '>= 0.4.0'} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + caniuse-lite@1.0.30001711: + resolution: {integrity: sha512-OpFA8GsKtoV3lCcsI3U5XBAV+oVrMu96OS8XafKqnhOaEAW2mveD1Mx81Sx/02chERwhDakuXs28zbyEc4QMKg==} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.0: + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} + engines: {node: '>= 0.8.0'} + + concurrently@9.1.2: + resolution: {integrity: sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==} + engines: {node: '>=18'} + hasBin: true + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + cookies@0.9.1: + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} + engines: {node: '>= 0.8'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + + dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + drizzle-kit@0.30.6: + resolution: {integrity: sha512-U4wWit0fyZuGuP7iNmRleQyK2V8wCuv57vf5l3MnG4z4fzNTjY/U13M8owyQ5RavqvqxBifWORaR3wIUzlN64g==} + hasBin: true + + drizzle-orm@0.40.1: + resolution: {integrity: sha512-aPNhtiJiPfm3qxz1czrnIDkfvkSdKGXYeZkpG55NPTVI186LmK2fBLMi4dsHpPHlJrZeQ92D322YFPHADBALew==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=4' + '@electric-sql/pglite': '>=0.2.0' + '@libsql/client': '>=0.10.0' + '@libsql/client-wasm': '>=0.10.0' + '@neondatabase/serverless': '>=0.10.0' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=14.0.0' + gel: '>=2' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@libsql/client-wasm': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + gel: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + + drizzle-seed@0.3.1: + resolution: {integrity: sha512-F/0lgvfOAsqlYoHM/QAGut4xXIOXoE5VoAdv2FIl7DpGYVXlAzKuJO+IphkKUFK3Dz+rFlOsQLnMNrvoQ0cx7g==} + peerDependencies: + drizzle-orm: '>=0.36.4' + peerDependenciesMeta: + drizzle-orm: + optional: true + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.132: + resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit-hook@4.0.0: + resolution: {integrity: sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==} + engines: {node: '>=18'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + + fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-file-up@2.0.1: + resolution: {integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==} + engines: {node: '>=8'} + + find-pkg@2.0.0: + resolution: {integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==} + engines: {node: '>=8'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gel@2.0.2: + resolution: {integrity: sha512-XTKpfNR9HZOw+k0Bl04nETZjuP5pypVAXsZADSdwr3EtyygTTe1RqvftU2FjGu7Tp9e576a9b/iIOxWrRBxMiQ==} + engines: {node: '>= 18.0.0'} + hasBin: true + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + headers-polyfill@3.3.0: + resolution: {integrity: sha512-5e57etwBpNcDc0b6KCVWEh/Ro063OxPvzVimUdM0/tsYM/T7Hfy3kknIGj78SFTOhNd8AZY41U8mOHoO4LzmIQ==} + + help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hono@4.7.5: + resolution: {integrity: sha512-fDOK5W2C1vZACsgLONigdZTRZxuBqFtcKh7bUQ5cVSbwI2RWjloJDcgFOVzbQrlI6pCmhlTsVYZ7zpLj4m4qMQ==} + engines: {node: '>=16.9.0'} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + + http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.9: + resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} + + http-proxy-middleware@2.0.7: + resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-network-error@1.1.0: + resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} + engines: {node: '>=16'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + + isomorphic-rslog@0.0.6: + resolution: {integrity: sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==} + engines: {node: '>=14.17.6'} + + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify@1.2.1: + resolution: {integrity: sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==} + engines: {node: '>= 0.4'} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonify@0.0.1: + resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} + + keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + + koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + + koa-convert@2.0.0: + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} + engines: {node: '>= 10'} + + koa@2.15.4: + resolution: {integrity: sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + + launch-editor@2.10.0: + resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + lodash.clonedeepwith@4.5.0: + resolution: {integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + + long-timeout@0.1.1: + resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + luxon@3.6.1: + resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==} + engines: {node: '>=12'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@4.17.0: + resolution: {integrity: sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==} + engines: {node: '>= 4.0.0'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nock@13.5.6: + resolution: {integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==} + engines: {node: '>= 10.13'} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + node-schedule@2.1.1: + resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} + engines: {node: '>=6'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + + open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + engines: {node: '>=18'} + + openapi3-ts@4.4.0: + resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==} + + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} + + otpauth@9.4.0: + resolution: {integrity: sha512-fHIfzIG5RqCkK9cmV8WU+dPQr9/ebR5QOwGZn2JAr1RQF+lmAuLL2YdtdqvmBjNmgJlYk3KZ4a0XokaEhg1Jsw==} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-retry@6.2.1: + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} + engines: {node: '>=16.17'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} + + pg-connection-string@2.7.0: + resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-numeric@1.0.2: + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} + engines: {node: '>=4'} + + pg-pool@3.8.0: + resolution: {integrity: sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.8.0: + resolution: {integrity: sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg-types@4.0.2: + resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} + engines: {node: '>=10'} + + pg@8.14.1: + resolution: {integrity: sha512-0TdbqfjwIun9Fm/r89oB7RFQ0bLgduAhiIqIXOsyKoiC/L54DbuAAzIEN/9Op0f1Po9X7iCPXGoa/Ah+2aI8Xw==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-pretty@13.0.0: + resolution: {integrity: sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==} + hasBin: true + + pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + + pino@9.6.0: + resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==} + hasBin: true + + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-array@3.0.4: + resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==} + engines: {node: '>=12'} + + postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + + postgres-bytea@3.0.0: + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} + engines: {node: '>= 6'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-date@2.1.0: + resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} + engines: {node: '>=12'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + postgres-interval@3.0.0: + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} + engines: {node: '>=12'} + + postgres-range@1.1.4: + resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-warning@4.0.1: + resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} + + propagate@2.0.1: + resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} + engines: {node: '>= 8'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + rambda@9.4.2: + resolution: {integrity: sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + + rslog@1.2.3: + resolution: {integrity: sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==} + engines: {node: '>=14.17.6'} + + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} + + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@1.0.19: + resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} + engines: {node: '>= 10'} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + sonic-boom@4.2.0: + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + + sorted-array-functions@1.3.0: + resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true + + thingies@1.21.0: + resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + totalist@1.1.0: + resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} + engines: {node: '>=6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tree-dump@1.0.2: + resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + + twitter-api-v2@1.22.0: + resolution: {integrity: sha512-KlcRL9vcBzjeS/PwxX33NziP+SHp9n35DOclKtpOmnNes7nNVnK7WG4pKlHfBqGrY5kAz/8J5ERS8DWkYOaiWw==} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + upath@2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + wait-on@8.0.3: + resolution: {integrity: sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==} + engines: {node: '>=12.0.0'} + hasBin: true + + watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-bundle-analyzer@4.6.1: + resolution: {integrity: sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw==} + engines: {node: '>= 10.13.0'} + hasBin: true + + webpack-dev-middleware@7.4.2: + resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-dev-server@5.0.4: + resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.98.0: + resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + ylru@1.4.0: + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} + engines: {node: '>= 4.0.0'} + + zod@3.24.2: + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + +snapshots: + + '@asteasolutions/zod-to-openapi@5.5.0(zod@3.24.2)': + dependencies: + openapi3-ts: 4.4.0 + zod: 3.24.2 + + '@curatedotfun/types@0.0.5': {} + + '@discoveryjs/json-ext@0.5.7': {} + + '@drizzle-team/brocli@0.10.2': {} + + '@esbuild-kit/core-utils@3.3.2': + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + + '@esbuild-kit/esm-loader@2.6.5': + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.10.0 + + '@esbuild/aix-ppc64@0.19.12': + optional: true + + '@esbuild/android-arm64@0.17.19': + optional: true + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm64@0.19.12': + optional: true + + '@esbuild/android-arm@0.17.19': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-arm@0.19.12': + optional: true + + '@esbuild/android-x64@0.17.19': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/android-x64@0.19.12': + optional: true + + '@esbuild/darwin-arm64@0.17.19': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.19.12': + optional: true + + '@esbuild/darwin-x64@0.17.19': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.19.12': + optional: true + + '@esbuild/freebsd-arm64@0.17.19': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.19.12': + optional: true + + '@esbuild/freebsd-x64@0.17.19': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.19.12': + optional: true + + '@esbuild/linux-arm64@0.17.19': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.19.12': + optional: true + + '@esbuild/linux-arm@0.17.19': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-arm@0.19.12': + optional: true + + '@esbuild/linux-ia32@0.17.19': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.19.12': + optional: true + + '@esbuild/linux-loong64@0.17.19': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.19.12': + optional: true + + '@esbuild/linux-mips64el@0.17.19': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.19.12': + optional: true + + '@esbuild/linux-ppc64@0.17.19': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.19.12': + optional: true + + '@esbuild/linux-riscv64@0.17.19': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.19.12': + optional: true + + '@esbuild/linux-s390x@0.17.19': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.19.12': + optional: true + + '@esbuild/linux-x64@0.17.19': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/linux-x64@0.19.12': + optional: true + + '@esbuild/netbsd-x64@0.17.19': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.19.12': + optional: true + + '@esbuild/openbsd-x64@0.17.19': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.19.12': + optional: true + + '@esbuild/sunos-x64@0.17.19': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.19.12': + optional: true + + '@esbuild/win32-arm64@0.17.19': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.19.12': + optional: true + + '@esbuild/win32-ia32@0.17.19': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.19.12': + optional: true + + '@esbuild/win32-x64@0.17.19': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@esbuild/win32-x64@0.19.12': + optional: true + + '@hapi/hoek@9.3.0': {} + + '@hapi/topo@5.1.0': + dependencies: + '@hapi/hoek': 9.3.0 + + '@hono/node-server@1.14.0(hono@4.7.5)': + dependencies: + hono: 4.7.5 + + '@hono/zod-openapi@0.9.10(hono@4.7.5)(zod@3.24.2)': + dependencies: + '@asteasolutions/zod-to-openapi': 5.5.0(zod@3.24.2) + '@hono/zod-validator': 0.2.1(hono@4.7.5)(zod@3.24.2) + hono: 4.7.5 + zod: 3.24.2 + + '@hono/zod-validator@0.1.11(hono@4.7.5)(zod@3.24.2)': + dependencies: + hono: 4.7.5 + zod: 3.24.2 + + '@hono/zod-validator@0.2.1(hono@4.7.5)(zod@3.24.2)': + dependencies: + hono: 4.7.5 + zod: 3.24.2 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 1.21.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.5.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@leichtgewicht/ip-codec@2.0.5': {} + + '@modern-js/node-bundle-require@2.65.1': + dependencies: + '@modern-js/utils': 2.65.1 + '@swc/helpers': 0.5.13 + esbuild: 0.17.19 + + '@modern-js/utils@2.65.1': + dependencies: + '@swc/helpers': 0.5.13 + caniuse-lite: 1.0.30001711 + lodash: 4.17.21 + rslog: 1.2.3 + + '@module-federation/bridge-react-webpack-plugin@0.11.3': + dependencies: + '@module-federation/sdk': 0.11.3 + '@types/semver': 7.5.8 + semver: 7.6.3 + + '@module-federation/cli@0.11.3(typescript@5.8.3)': + dependencies: + '@modern-js/node-bundle-require': 2.65.1 + '@module-federation/dts-plugin': 0.11.3(typescript@5.8.3) + '@module-federation/sdk': 0.11.3 + chalk: 3.0.0 + commander: 11.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + '@module-federation/data-prefetch@0.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@module-federation/runtime': 0.11.3 + '@module-federation/sdk': 0.11.3 + fs-extra: 9.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@module-federation/dts-plugin@0.11.3(typescript@5.8.3)': + dependencies: + '@module-federation/error-codes': 0.11.3 + '@module-federation/managers': 0.11.3 + '@module-federation/sdk': 0.11.3 + '@module-federation/third-party-dts-extractor': 0.11.3 + adm-zip: 0.5.16 + ansi-colors: 4.1.3 + axios: 1.8.4 + chalk: 3.0.0 + fs-extra: 9.1.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + koa: 2.15.4 + lodash.clonedeepwith: 4.5.0 + log4js: 6.9.1 + node-schedule: 2.1.1 + rambda: 9.4.2 + typescript: 5.8.3 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + '@module-federation/enhanced@0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.19.12))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 0.11.3 + '@module-federation/cli': 0.11.3(typescript@5.8.3) + '@module-federation/data-prefetch': 0.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@module-federation/dts-plugin': 0.11.3(typescript@5.8.3) + '@module-federation/error-codes': 0.11.3 + '@module-federation/inject-external-runtime-core-plugin': 0.11.3(@module-federation/runtime-tools@0.11.3) + '@module-federation/managers': 0.11.3 + '@module-federation/manifest': 0.11.3(typescript@5.8.3) + '@module-federation/rspack': 0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.13))(typescript@5.8.3) + '@module-federation/runtime-tools': 0.11.3 + '@module-federation/sdk': 0.11.3 + btoa: 1.2.1 + upath: 2.0.1 + optionalDependencies: + typescript: 5.8.3 + webpack: 5.98.0(esbuild@0.19.12) + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - react + - react-dom + - supports-color + - utf-8-validate + + '@module-federation/error-codes@0.11.3': {} + + '@module-federation/error-codes@0.8.4': {} + + '@module-federation/inject-external-runtime-core-plugin@0.11.3(@module-federation/runtime-tools@0.11.3)': + dependencies: + '@module-federation/runtime-tools': 0.11.3 + + '@module-federation/managers@0.11.3': + dependencies: + '@module-federation/sdk': 0.11.3 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + + '@module-federation/manifest@0.11.3(typescript@5.8.3)': + dependencies: + '@module-federation/dts-plugin': 0.11.3(typescript@5.8.3) + '@module-federation/managers': 0.11.3 + '@module-federation/sdk': 0.11.3 + chalk: 3.0.0 + find-pkg: 2.0.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + '@module-federation/node@2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.19.12))': + dependencies: + '@module-federation/enhanced': 0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.19.12)) + '@module-federation/runtime': 0.11.3 + '@module-federation/sdk': 0.11.3 + '@module-federation/utilities': 3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12)) + btoa: 1.2.1 + encoding: 0.1.13 + node-fetch: 2.7.0(encoding@0.1.13) + webpack: 5.98.0(esbuild@0.19.12) + optionalDependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + '@module-federation/rspack@0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.13))(typescript@5.8.3)': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 0.11.3 + '@module-federation/dts-plugin': 0.11.3(typescript@5.8.3) + '@module-federation/inject-external-runtime-core-plugin': 0.11.3(@module-federation/runtime-tools@0.11.3) + '@module-federation/managers': 0.11.3 + '@module-federation/manifest': 0.11.3(typescript@5.8.3) + '@module-federation/runtime-tools': 0.11.3 + '@module-federation/sdk': 0.11.3 + '@rspack/core': 1.2.8(@swc/helpers@0.5.13) + btoa: 1.2.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + '@module-federation/runtime-core@0.11.3': + dependencies: + '@module-federation/error-codes': 0.11.3 + '@module-federation/sdk': 0.11.3 + + '@module-federation/runtime-tools@0.11.3': + dependencies: + '@module-federation/runtime': 0.11.3 + '@module-federation/webpack-bundler-runtime': 0.11.3 + + '@module-federation/runtime-tools@0.8.4': + dependencies: + '@module-federation/runtime': 0.8.4 + '@module-federation/webpack-bundler-runtime': 0.8.4 + + '@module-federation/runtime@0.11.3': + dependencies: + '@module-federation/error-codes': 0.11.3 + '@module-federation/runtime-core': 0.11.3 + '@module-federation/sdk': 0.11.3 + + '@module-federation/runtime@0.8.4': + dependencies: + '@module-federation/error-codes': 0.8.4 + '@module-federation/sdk': 0.8.4 + + '@module-federation/sdk@0.11.3': {} + + '@module-federation/sdk@0.8.4': + dependencies: + isomorphic-rslog: 0.0.6 + + '@module-federation/third-party-dts-extractor@0.11.3': + dependencies: + find-pkg: 2.0.0 + fs-extra: 9.1.0 + resolve: 1.22.8 + + '@module-federation/utilities@3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12))': + dependencies: + '@module-federation/sdk': 0.11.3 + webpack: 5.98.0(esbuild@0.19.12) + optionalDependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@module-federation/webpack-bundler-runtime@0.11.3': + dependencies: + '@module-federation/runtime': 0.11.3 + '@module-federation/sdk': 0.11.3 + + '@module-federation/webpack-bundler-runtime@0.8.4': + dependencies: + '@module-federation/runtime': 0.8.4 + '@module-federation/sdk': 0.8.4 + + '@noble/hashes@1.7.1': {} + + '@notionhq/client@2.3.0(encoding@0.1.13)': + dependencies: + '@types/node-fetch': 2.6.12 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@petamoriken/float16@3.9.2': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@polka/url@1.0.0-next.28': {} + + '@rspack/binding-darwin-arm64@1.2.8': + optional: true + + '@rspack/binding-darwin-x64@1.2.8': + optional: true + + '@rspack/binding-linux-arm64-gnu@1.2.8': + optional: true + + '@rspack/binding-linux-arm64-musl@1.2.8': + optional: true + + '@rspack/binding-linux-x64-gnu@1.2.8': + optional: true + + '@rspack/binding-linux-x64-musl@1.2.8': + optional: true + + '@rspack/binding-win32-arm64-msvc@1.2.8': + optional: true + + '@rspack/binding-win32-ia32-msvc@1.2.8': + optional: true + + '@rspack/binding-win32-x64-msvc@1.2.8': + optional: true + + '@rspack/binding@1.2.8': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.2.8 + '@rspack/binding-darwin-x64': 1.2.8 + '@rspack/binding-linux-arm64-gnu': 1.2.8 + '@rspack/binding-linux-arm64-musl': 1.2.8 + '@rspack/binding-linux-x64-gnu': 1.2.8 + '@rspack/binding-linux-x64-musl': 1.2.8 + '@rspack/binding-win32-arm64-msvc': 1.2.8 + '@rspack/binding-win32-ia32-msvc': 1.2.8 + '@rspack/binding-win32-x64-msvc': 1.2.8 + + '@rspack/cli@1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@rspack/core': 1.2.8(@swc/helpers@0.5.13) + '@rspack/dev-server': 1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) + colorette: 2.0.20 + exit-hook: 4.0.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack-bundle-analyzer: 4.6.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/express' + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + - webpack-cli + + '@rspack/core@1.2.8(@swc/helpers@0.5.13)': + dependencies: + '@module-federation/runtime-tools': 0.8.4 + '@rspack/binding': 1.2.8 + '@rspack/lite-tapable': 1.0.1 + caniuse-lite: 1.0.30001711 + optionalDependencies: + '@swc/helpers': 0.5.13 + + '@rspack/dev-server@1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': + dependencies: + '@rspack/core': 1.2.8(@swc/helpers@0.5.13) + chokidar: 3.6.0 + connect-history-api-fallback: 2.0.0 + express: 4.21.2 + http-proxy-middleware: 2.0.7(@types/express@4.17.21) + mime-types: 2.1.35 + p-retry: 4.6.2 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.19.12)) + webpack-dev-server: 5.0.4(webpack@5.98.0(esbuild@0.19.12)) + ws: 8.18.1 + transitivePeerDependencies: + - '@types/express' + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + - webpack-cli + + '@rspack/lite-tapable@1.0.1': {} + + '@sideway/address@4.1.5': + dependencies: + '@hapi/hoek': 9.3.0 + + '@sideway/formula@3.0.1': {} + + '@sideway/pinpoint@2.0.0': {} + + '@sinclair/typebox@0.32.35': {} + + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.8.1 + + '@types/async-retry@1.4.9': + dependencies: + '@types/retry': 0.12.5 + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 22.14.0 + + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 22.14.0 + + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 5.0.6 + '@types/node': 22.14.0 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 22.14.0 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.7 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.7': {} + + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 22.14.0 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express-serve-static-core@5.0.6': + dependencies: + '@types/node': 22.14.0 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.9.18 + '@types/serve-static': 1.15.7 + + '@types/http-errors@2.0.4': {} + + '@types/http-proxy@1.17.16': + dependencies: + '@types/node': 22.14.0 + + '@types/json-schema@7.0.15': {} + + '@types/lodash@4.17.16': {} + + '@types/mime@1.3.5': {} + + '@types/node-fetch@2.6.12': + dependencies: + '@types/node': 22.14.0 + form-data: 4.0.2 + + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 22.14.0 + + '@types/node@22.14.0': + dependencies: + undici-types: 6.21.0 + + '@types/pg@8.11.11': + dependencies: + '@types/node': 22.14.0 + pg-protocol: 1.8.0 + pg-types: 4.0.2 + + '@types/qs@6.9.18': {} + + '@types/range-parser@1.2.7': {} + + '@types/retry@0.12.0': {} + + '@types/retry@0.12.2': {} + + '@types/retry@0.12.5': {} + + '@types/semver@7.5.8': {} + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 22.14.0 + + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 4.17.21 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 22.14.0 + '@types/send': 0.17.4 + + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 22.14.0 + + '@types/ws@8.18.1': + dependencies: + '@types/node': 22.14.0 + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + adm-zip@0.5.16: {} + + agent-twitter-client@0.0.16: + dependencies: + '@sinclair/typebox': 0.32.35 + headers-polyfill: 3.3.0 + json-stable-stringify: 1.2.1 + node-fetch: 3.3.2 + otpauth: 9.4.0 + set-cookie-parser: 2.7.1 + tough-cookie: 4.1.4 + tslib: 2.8.1 + twitter-api-v2: 1.22.0 + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-colors@4.1.3: {} + + ansi-html-community@0.0.8: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + array-flatten@1.1.1: {} + + async-retry@1.3.3: + dependencies: + retry: 0.13.1 + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + atomic-sleep@1.0.0: {} + + axios@1.8.4: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + batch@0.6.1: {} + + binary-extensions@2.3.0: {} + + body-parser@1.20.3: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bonjour-service@1.3.0: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001711 + electron-to-chromium: 1.5.132 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + btoa@1.2.1: {} + + buffer-from@1.1.2: {} + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + + bytes@3.1.2: {} + + cache-content-type@1.0.1: + dependencies: + mime-types: 2.1.35 + ylru: 1.4.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + caniuse-lite@1.0.30001711: {} + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chrome-trace-event@1.0.4: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@11.1.0: {} + + commander@2.20.3: {} + + commander@7.2.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.0: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.0.2 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concurrently@9.1.2: + dependencies: + chalk: 4.1.2 + lodash: 4.17.21 + rxjs: 7.8.2 + shell-quote: 1.8.2 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + + connect-history-api-fallback@2.0.0: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} + + cookies@0.9.1: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + + core-util-is@1.0.3: {} + + cron-parser@4.9.0: + dependencies: + luxon: 3.6.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + data-uri-to-buffer@4.0.1: {} + + date-format@4.0.14: {} + + dateformat@4.6.3: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + deep-equal@1.0.1: {} + + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@3.0.0: {} + + delayed-stream@1.0.0: {} + + delegates@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + destroy@1.2.0: {} + + detect-node@2.1.0: {} + + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + + dotenv@16.4.7: {} + + drizzle-kit@0.30.6: + dependencies: + '@drizzle-team/brocli': 0.10.2 + '@esbuild-kit/esm-loader': 2.6.5 + esbuild: 0.19.12 + esbuild-register: 3.6.0(esbuild@0.19.12) + gel: 2.0.2 + transitivePeerDependencies: + - supports-color + + drizzle-orm@0.40.1(@types/pg@8.11.11)(gel@2.0.2)(pg@8.14.1): + optionalDependencies: + '@types/pg': 8.11.11 + gel: 2.0.2 + pg: 8.14.1 + + drizzle-seed@0.3.1(drizzle-orm@0.40.1(@types/pg@8.11.11)(gel@2.0.2)(pg@8.14.1)): + dependencies: + pure-rand: 6.1.0 + optionalDependencies: + drizzle-orm: 0.40.1(@types/pg@8.11.11)(gel@2.0.2)(pg@8.14.1) + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.132: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + env-paths@3.0.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.6.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild-register@3.6.0(esbuild@0.19.12): + dependencies: + debug: 4.4.0 + esbuild: 0.19.12 + transitivePeerDependencies: + - supports-color + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + esbuild@0.19.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit-hook@4.0.0: {} + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + express@4.21.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-copy@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-redact@3.5.0: {} + + fast-safe-stringify@2.1.1: {} + + fast-uri@3.0.6: {} + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-file-up@2.0.1: + dependencies: + resolve-dir: 1.0.1 + + find-pkg@2.0.0: + dependencies: + find-file-up: 2.0.1 + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + forwarded@0.2.0: {} + + fresh@0.5.2: {} + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gel@2.0.2: + dependencies: + '@petamoriken/float16': 3.9.2 + debug: 4.4.0 + env-paths: 3.0.0 + semver: 7.7.1 + shell-quote: 1.8.2 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + handle-thing@2.0.1: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + headers-polyfill@3.3.0: {} + + help-me@5.0.0: {} + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hono@4.7.5: {} + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + html-entities@2.6.0: {} + + http-assert@1.5.0: + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + + http-deceiver@1.2.7: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-parser-js@0.5.9: {} + + http-proxy-middleware@2.0.7(@types/express@4.17.21): + dependencies: + '@types/http-proxy': 1.17.16 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + optionalDependencies: + '@types/express': 4.17.21 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + human-signals@2.1.0: {} + + hyperdyperid@1.2.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + interpret@3.1.1: {} + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.2.0: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@2.0.0: {} + + is-network-error@1.1.0: {} + + is-number@7.0.0: {} + + is-plain-obj@3.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-stream@2.0.1: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + + is-windows@1.0.2: {} + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isexe@3.1.1: {} + + isomorphic-rslog@0.0.6: {} + + isomorphic-ws@5.0.0(ws@8.18.0): + dependencies: + ws: 8.18.0 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jest-worker@27.5.1: + dependencies: + '@types/node': 22.14.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + joi@17.13.3: + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + + joycon@3.1.1: {} + + js-tokens@4.0.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + isarray: 2.0.5 + jsonify: 0.0.1 + object-keys: 1.1.1 + + json-stringify-safe@5.0.1: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonify@0.0.1: {} + + keygrip@1.1.0: + dependencies: + tsscmp: 1.0.6 + + koa-compose@4.1.0: {} + + koa-convert@2.0.0: + dependencies: + co: 4.6.0 + koa-compose: 4.1.0 + + koa@2.15.4: + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + debug: 4.4.0 + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.1.0 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + launch-editor@2.10.0: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.8.2 + + loader-runner@4.3.0: {} + + lodash.clonedeepwith@4.5.0: {} + + lodash@4.17.21: {} + + log-symbols@6.0.0: + dependencies: + chalk: 5.4.1 + is-unicode-supported: 1.3.0 + + log4js@6.9.1: + dependencies: + date-format: 4.0.14 + debug: 4.4.0 + flatted: 3.3.3 + rfdc: 1.4.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + + long-timeout@0.1.1: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@10.4.3: {} + + luxon@3.6.1: {} + + math-intrinsics@1.1.0: {} + + media-typer@0.3.0: {} + + memfs@4.17.0: + dependencies: + '@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) + tree-dump: 1.0.2(tslib@2.8.1) + tslib: 2.8.1 + + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + + methods@1.1.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + minimalistic-assert@1.0.1: {} + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mrmime@1.0.1: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + + nock@13.5.6: + dependencies: + debug: 4.4.0 + json-stringify-safe: 5.0.1 + propagate: 2.0.1 + transitivePeerDependencies: + - supports-color + + node-domexception@1.0.0: {} + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-forge@1.3.1: {} + + node-releases@2.0.19: {} + + node-schedule@2.1.1: + dependencies: + cron-parser: 4.9.0 + long-timeout: 0.1.1 + sorted-array-functions: 1.3.0 + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + obuf@1.1.2: {} + + on-exit-leak-free@2.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + only@0.0.2: {} + + open@10.1.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + + openapi3-ts@4.4.0: + dependencies: + yaml: 2.7.1 + + opener@1.5.2: {} + + ora@8.2.0: + dependencies: + chalk: 5.4.1 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + otpauth@9.4.0: + dependencies: + '@noble/hashes': 1.7.1 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-retry@6.2.1: + dependencies: + '@types/retry': 0.12.2 + is-network-error: 1.1.0 + retry: 0.13.1 + + package-json-from-dist@1.0.1: {} + + parse-passwd@1.0.0: {} + + parseurl@1.3.3: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@0.1.12: {} + + pg-cloudflare@1.1.1: + optional: true + + pg-connection-string@2.7.0: {} + + pg-int8@1.0.1: {} + + pg-numeric@1.0.2: {} + + pg-pool@3.8.0(pg@8.14.1): + dependencies: + pg: 8.14.1 + + pg-protocol@1.8.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg-types@4.0.2: + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.4 + postgres-bytea: 3.0.0 + postgres-date: 2.1.0 + postgres-interval: 3.0.0 + postgres-range: 1.1.4 + + pg@8.14.1: + dependencies: + pg-connection-string: 2.7.0 + pg-pool: 3.8.0(pg@8.14.1) + pg-protocol: 1.8.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-pretty@13.0.0: + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pump: 3.0.2 + secure-json-parse: 2.7.0 + sonic-boom: 4.2.0 + strip-json-comments: 3.1.1 + + pino-std-serializers@7.0.0: {} + + pino@9.6.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.0.0 + process-warning: 4.0.1 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 + + postgres-array@2.0.0: {} + + postgres-array@3.0.4: {} + + postgres-bytea@1.0.0: {} + + postgres-bytea@3.0.0: + dependencies: + obuf: 1.1.2 + + postgres-date@1.0.7: {} + + postgres-date@2.1.0: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + postgres-interval@3.0.0: {} + + postgres-range@1.1.4: {} + + process-nextick-args@2.0.1: {} + + process-warning@4.0.1: {} + + propagate@2.0.1: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + querystringify@2.2.0: {} + + quick-format-unescaped@4.0.4: {} + + rambda@9.4.2: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + real-require@0.2.0: {} + + rechoir@0.8.0: + dependencies: + resolve: 1.22.10 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@1.22.8: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + retry@0.13.1: {} + + rfdc@1.4.1: {} + + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + + rslog@1.2.3: {} + + run-applescript@7.0.0: {} + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@4.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + secure-json-parse@2.7.0: {} + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + + semver@7.6.3: {} + + semver@7.7.1: {} + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + set-cookie-parser@2.7.1: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.2: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@1.0.19: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 1.0.1 + totalist: 1.1.0 + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + sonic-boom@4.2.0: + dependencies: + atomic-sleep: 1.0.0 + + sorted-array-functions@1.3.0: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + spdy-transport@3.0.0: + dependencies: + debug: 4.4.0 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.4.0 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + split2@4.2.0: {} + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + stdin-discarder@0.2.2: {} + + streamroller@3.1.5: + dependencies: + date-format: 4.0.14 + debug: 4.4.0 + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tapable@2.2.1: {} + + terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.98.0(esbuild@0.19.12)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.0 + serialize-javascript: 6.0.2 + terser: 5.39.0 + webpack: 5.98.0(esbuild@0.19.12) + optionalDependencies: + esbuild: 0.19.12 + + terser@5.39.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + thingies@1.21.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + + thunky@1.1.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + totalist@1.1.0: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + + tree-dump@1.0.2(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + + tree-kill@1.2.2: {} + + tslib@2.8.1: {} + + tsscmp@1.0.6: {} + + twitter-api-v2@1.22.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typescript@5.8.3: {} + + undici-types@6.21.0: {} + + universalify@0.1.2: {} + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + upath@2.0.1: {} + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + uuid@8.3.2: {} + + vary@1.1.2: {} + + wait-on@8.0.3: + dependencies: + axios: 1.8.4 + joi: 17.13.3 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - debug + + watchpack@2.4.2: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + web-streams-polyfill@3.3.3: {} + + webidl-conversions@3.0.1: {} + + webpack-bundle-analyzer@4.6.1: + dependencies: + acorn: 8.14.1 + acorn-walk: 8.3.4 + chalk: 4.1.2 + commander: 7.2.0 + gzip-size: 6.0.0 + lodash: 4.17.21 + opener: 1.5.2 + sirv: 1.0.19 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.19.12)): + dependencies: + colorette: 2.0.20 + memfs: 4.17.0 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.3.0 + optionalDependencies: + webpack: 5.98.0(esbuild@0.19.12) + + webpack-dev-server@5.0.4(webpack@5.98.0(esbuild@0.19.12)): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.0 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.21.2 + graceful-fs: 4.2.11 + html-entities: 2.6.0 + http-proxy-middleware: 2.0.7(@types/express@4.17.21) + ipaddr.js: 2.2.0 + launch-editor: 2.10.0 + open: 10.1.0 + p-retry: 6.2.1 + rimraf: 5.0.10 + schema-utils: 4.3.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.19.12)) + ws: 8.18.1 + optionalDependencies: + webpack: 5.98.0(esbuild@0.19.12) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-sources@3.2.3: {} + + webpack@5.98.0(esbuild@0.19.12): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.7 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.1 + browserslist: 4.24.4 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.6.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.98.0(esbuild@0.19.12)) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.9 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@4.0.0: + dependencies: + isexe: 3.1.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@7.5.10: {} + + ws@8.18.0: {} + + ws@8.18.1: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yaml@2.7.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + ylru@1.4.0: {} + + zod@3.24.2: {} diff --git a/backend/scripts/dev-server.js b/backend/scripts/dev-server.js index f03962f7..6c3ecf53 100755 --- a/backend/scripts/dev-server.js +++ b/backend/scripts/dev-server.js @@ -2,10 +2,21 @@ const { spawn } = require("child_process"); const fs = require("fs"); const path = require("path"); +const dotenv = require("dotenv"); // Path to the dist directory const distDir = path.join(__dirname, "../dist"); const mainJsPath = path.join(distDir, "main.js"); +const envPath = path.join(__dirname, "../.env"); + +// Load environment variables from .env file +let envVars = {}; +if (fs.existsSync(envPath)) { + console.log(`šŸ“„ Loading environment variables from ${envPath}`); + envVars = dotenv.parse(fs.readFileSync(envPath)); +} else { + console.warn(`āš ļø No .env file found at ${envPath}`); +} let serverProcess = null; @@ -20,7 +31,11 @@ function startServer() { // Start the server serverProcess = spawn("node", [mainJsPath], { stdio: "inherit", - env: { ...process.env, NODE_ENV: "development" }, + env: { + ...process.env, + ...envVars, + NODE_ENV: "development", + }, }); serverProcess.on("error", (error) => { diff --git a/backend/src/index.ts b/backend/src/index.ts index 51596d47..2d510a27 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,22 +1,17 @@ -// Load environment variables from the appropriate .env file import { config } from "dotenv"; import path from "path"; -if (process.env.NODE_ENV === "test") { +if (isTest) { config({ path: path.resolve(process.cwd(), "backend/.env.test") }); } else { config({ path: path.resolve(process.cwd(), "backend/.env") }); } -// Log all environment variables for debugging -console.log("Environment variables loaded:"); -console.log("DATABASE_URL:", process.env.DATABASE_URL); -console.log("NODE_ENV:", process.env.NODE_ENV); - import { serve } from "@hono/node-server"; +import { isTest } from "./services/config/config.service"; import { AppInstance } from "types/app"; import { createApp } from "./app"; -import { db, initializeDatabase } from "./services/db"; +import { dbConnection } from "./services/db"; import { cleanup, createHighlightBox, @@ -33,52 +28,58 @@ async function getInstance(): Promise { try { instance = await createApp(); } catch (error) { - const errorMessage = error instanceof Error ? error.message : String(error); + const errorMessage = + error instanceof Error ? error.message : String(error); const errorStack = error instanceof Error ? error.stack : undefined; - - logger.error("Failed to create app instance:", { + + logger.error("Failed to create app instance:", { error: errorMessage, stack: errorStack, dirname: __dirname, - cwd: process.cwd() + cwd: process.cwd(), }); + console.log(errorMessage); throw new Error(`Failed to initialize application: ${errorMessage}`); } } return instance; } +/** + * Initialize the database connection + * @returns Promise - true if connection was successful + */ +async function initializeDatabaseConnection(): Promise { + logger.info("Initializing database connection..."); + + try { + await dbConnection.connect(); + return true; + } catch (error) { + // Check if it's a DATABASE_URL error + if (error instanceof Error && error.message.includes("DATABASE_URL")) { + logger.error("DATABASE_URL environment variable is not set or invalid"); + logger.error( + "Please check your .env file and ensure DATABASE_URL is correctly configured", + ); + logger.error(`Current working directory: ${process.cwd()}`); + } else { + logger.error( + "Database connection failed. Application cannot continue without database.", + ); + } + return false; + } +} + async function startServer() { try { createSection("⚔ STARTING SERVER ⚔"); - // Initialize database in production, but not in tests - if (process.env.NODE_ENV !== "test") { - logger.info("Initializing database connection..."); - try { - const dbInitialized = await initializeDatabase(); - if (dbInitialized) { - logger.info("Database connection established successfully"); - } else { - logger.error("Database connection failed. Application cannot continue without database."); - - // Check if DATABASE_URL is set - if (!process.env.DATABASE_URL) { - logger.error("DATABASE_URL environment variable is not set"); - } else { - logger.error("DATABASE_URL is set but connection failed. Check if the database server is running and accessible."); - logger.error("Make sure Docker is running and the PostgreSQL container is started."); - } - - // Exit the application - logger.error("Exiting application due to database connection failure"); - process.exit(1); - } - } catch (dbError) { - logger.error("Error during database initialization:", dbError); - logger.error("Application cannot continue without database. Exiting..."); - process.exit(1); - } + const dbConnected = await initializeDatabaseConnection(); + if (!dbConnected) { + logger.error("Exiting application due to database connection failure"); + process.exit(1); } const { app, context } = await getInstance(); @@ -150,7 +151,7 @@ async function startServer() { logger.info("Distribution service stopped"); } - shutdownPromises.push(db.disconnect()); + shutdownPromises.push(dbConnection.disconnect()); await Promise.all(shutdownPromises); logger.info("Database connections closed"); diff --git a/backend/src/routes/api/feed.ts b/backend/src/routes/api/feed.ts index 81f064e4..ec5ae590 100644 --- a/backend/src/routes/api/feed.ts +++ b/backend/src/routes/api/feed.ts @@ -1,4 +1,4 @@ -import { db } from "../../services/db"; +import { feedRepository } from "../../services/db/repositories"; import { HonoApp } from "../../types/app"; import { serviceUnavailable } from "../../utils/error"; import { logger } from "../../utils/logger"; @@ -26,7 +26,7 @@ router.get("/:feedId", async (c) => { return c.notFound(); } - return c.json(await db.getSubmissionsByFeed(feedId)); + return c.json(await feedRepository.getSubmissionsByFeed(feedId)); }); /** @@ -44,7 +44,7 @@ router.post("/:feedId/process", async (c) => { } // Get approved submissions for this feed - const submissions = await db.getSubmissionsByFeed(feedId); + const submissions = await feedRepository.getSubmissionsByFeed(feedId); const approvedSubmissions = submissions.filter( (sub) => sub.status === "approved", ); diff --git a/backend/src/routes/api/leaderboard.ts b/backend/src/routes/api/leaderboard.ts index bf55370f..d01a52eb 100644 --- a/backend/src/routes/api/leaderboard.ts +++ b/backend/src/routes/api/leaderboard.ts @@ -1,5 +1,5 @@ import { HonoApp } from "../../types/app"; -import { db } from "../../services/db"; +import { leaderboardRepository } from "../../services/db/repositories"; // Create leaderboard routes const router = HonoApp(); @@ -10,7 +10,7 @@ const router = HonoApp(); */ router.get("/", async (c) => { const timeRange = c.req.query("timeRange") || "all"; - const leaderboard = db.getLeaderboard(timeRange); + const leaderboard = await leaderboardRepository.getLeaderboard(timeRange); return c.json(leaderboard); }); diff --git a/backend/src/routes/api/stats.ts b/backend/src/routes/api/stats.ts index d5d3911e..2bad1656 100644 --- a/backend/src/routes/api/stats.ts +++ b/backend/src/routes/api/stats.ts @@ -1,5 +1,5 @@ import { HonoApp } from "../../types/app"; -import { db } from "../../services/db"; +import { submissionRepository } from "../../services/db/repositories"; // Create stats routes export const statsRoutes = HonoApp(); @@ -12,10 +12,10 @@ statsRoutes.get("/", async (c) => { const config = context.configService.getConfig(); // Get posts count from database - const postsCount = await db.getPostsCount(); + const postsCount = await submissionRepository.getPostsCount(); // Get curators count from database - const curatorsCount = await db.getCuratorsCount(); + const curatorsCount = await submissionRepository.getCuratorsCount(); // Get other stats from config const feedsCount = config.feeds.length; diff --git a/backend/src/routes/api/submission.ts b/backend/src/routes/api/submission.ts index 5ed310d4..a0be327b 100644 --- a/backend/src/routes/api/submission.ts +++ b/backend/src/routes/api/submission.ts @@ -1,4 +1,7 @@ -import { db } from "../../services/db"; +import { + submissionRepository, + feedRepository, +} from "../../services/db/repositories"; import { HonoApp } from "../../types/app"; import { z } from "zod"; import { zValidator } from "@hono/zod-validator"; @@ -31,7 +34,7 @@ router.get( const { page, limit, status } = c.req.valid("query"); // Get all submissions with the given status - const allSubmissions = await db.getAllSubmissions(status); + const allSubmissions = await submissionRepository.getAllSubmissions(status); // Sort submissions by submittedAt date (newest first) allSubmissions.sort( @@ -66,7 +69,7 @@ router.get( */ router.get("/single/:submissionId", async (c) => { const submissionId = c.req.param("submissionId"); - const content = await db.getSubmission(submissionId); + const content = await submissionRepository.getSubmission(submissionId); if (!content) { return c.notFound(); @@ -88,7 +91,7 @@ router.get("/feed/:feedId", async (c) => { return c.notFound(); } - let submissions = await db.getSubmissionsByFeed(feedId); + let submissions = await feedRepository.getSubmissionsByFeed(feedId); if (status) { submissions = submissions.filter((sub) => sub.status === status); diff --git a/backend/src/services/config/config.service.ts b/backend/src/services/config/config.service.ts index b9b34a11..14d01595 100644 --- a/backend/src/services/config/config.service.ts +++ b/backend/src/services/config/config.service.ts @@ -10,24 +10,27 @@ import { hydrateConfigValues } from "../../utils/config"; import { logger } from "../../utils/logger"; export const isProduction = process.env.NODE_ENV === "production"; +export const isTest = process.env.NODE_ENV === "test"; export class ConfigService { private static instance: ConfigService; private config: AppConfig | null = null; private configPath: string; private constructor() { - if (isProduction) { - this.configPath = path.resolve(process.cwd(), "curate.config.json"); - logger.info("Using production configuration"); - } else { - // Use test config in development mode + if (isTest) { this.configPath = path.resolve( process.cwd(), - "backend/test/curate.config.test.json" - + "test/curate.config.test.json", ); - logger.info("Using test configuration"); + } else if (isProduction) { + // Dockerfile + this.configPath = path.resolve(process.cwd(), "../curate.config.json"); + } else { + // Starting from root + this.configPath = path.resolve(process.cwd(), "./curate.config.json"); } + + logger.info(`Using configuration from: ${this.configPath}`); } public static getInstance(): ConfigService { @@ -70,18 +73,6 @@ export class ConfigService { } } - // Switch to a different config (if saving locally, wouldn't work in fly.io container) - public async updateConfig(newConfig: AppConfig): Promise { - // saving this for later - try { - await fs.writeFile(this.configPath, JSON.stringify(newConfig, null, 2)); - this.config = newConfig; - } catch (error: unknown) { - const message = error instanceof Error ? error.message : String(error); - throw new Error(`Failed to update config: ${message}`); - } - } - public getPluginRegistry(): PluginsConfig { if (!this.config) { throw new Error("Config not loaded. Call loadConfig() first."); diff --git a/backend/src/services/db/connection.ts b/backend/src/services/db/connection.ts new file mode 100644 index 00000000..17afbbcd --- /dev/null +++ b/backend/src/services/db/connection.ts @@ -0,0 +1,311 @@ +import { Pool, PoolConfig } from "pg"; +import { drizzle } from "drizzle-orm/node-postgres"; +import { NodePgDatabase } from "drizzle-orm/node-postgres"; + +import { logger } from "../../utils/logger"; +import { DEFAULT_READ_POOL_CONFIG, DEFAULT_WRITE_POOL_CONFIG } from "./utils"; + +/** + * DatabaseConnection manages the database connection pools and provides + * access to Drizzle instances for database operations. + */ +export class DatabaseConnection { + private static instance: DatabaseConnection | null = null; + + // Connection pools + private writePool: Pool | null = null; + private readPool: Pool | null = null; + + // Drizzle instances + private writeDb: NodePgDatabase | null = null; + private readDb: NodePgDatabase | null = null; + + private isConnected: boolean = false; + + /** + * Private constructor to prevent direct instantiation. + * Use DatabaseConnection.getInstance() instead. + */ + private constructor() {} + + /** + * Get the singleton instance of DatabaseConnection. + * Creates a new instance if one doesn't exist. + */ + public static getInstance(): DatabaseConnection { + if (!DatabaseConnection.instance) { + DatabaseConnection.instance = new DatabaseConnection(); + } + return DatabaseConnection.instance; + } + + /** + * Validates database connection parameters and throws an error if they're invalid + * @throws Error if DATABASE_URL is not set + */ + private validateConnectionParams(): void { + const dbUrl = process.env.DATABASE_URL; + + if (!dbUrl || dbUrl.trim() === "") { + throw new Error("DATABASE_URL environment variable is not set or empty"); + } + } + + /** + * Establishes connections to the database. + * Creates separate pools for read and write operations. + * @throws Error if connection fails or if DATABASE_URL is not set + */ + public async connect(): Promise { + if (this.isConnected) return; + + try { + // Validate connection parameters first + this.validateConnectionParams(); + + const writeConnectionString = + process.env.DATABASE_WRITE_URL || process.env.DATABASE_URL; + const readConnectionString = + process.env.DATABASE_READ_URL || process.env.DATABASE_URL; + + // Configure write pool (primary) + this.writePool = new Pool({ + connectionString: writeConnectionString, + ...DEFAULT_WRITE_POOL_CONFIG, + }); + + // Configure read pool (can be replicas) + this.readPool = new Pool({ + connectionString: readConnectionString, + ...DEFAULT_READ_POOL_CONFIG, + }); + + // Add event listeners for pool errors + this.writePool.on("error", (err) => { + logger.error("Unexpected error on write pool", err); + }); + + this.readPool.on("error", (err) => { + logger.error("Unexpected error on read pool", err); + }); + + await this.setPoolDefaults(this.writePool, DEFAULT_WRITE_POOL_CONFIG); + await this.setPoolDefaults(this.readPool, DEFAULT_READ_POOL_CONFIG); + + // Initialize Drizzle instances + this.writeDb = drizzle(this.writePool); + this.readDb = drizzle(this.readPool); + + this.isConnected = true; + logger.info("Database connections established successfully"); + } catch (e: any) { + const errorMessage = e.message || String(e); + const errorCode = (e as any).code; + + // Provide a single comprehensive error message + if (errorMessage.includes("DATABASE_URL")) { + // Don't log the stack trace for environment variable issues + // as it's not a code error but a configuration issue + logger.error("DATABASE_URL environment variable is not set or empty"); + } else { + // For other database errors, log more details + logger.error("Failed to initialize database:", { + error: errorMessage, + code: errorCode, + stack: e.stack, + }); + + // Provide helpful context based on error code + if (errorCode === "ECONNREFUSED") { + logger.error( + "Connection refused. Make sure the database server is running and accessible.", + ); + } else if (errorCode === "ENOTFOUND") { + logger.error( + "Host not found. Check the hostname in your DATABASE_URL.", + ); + } else if (errorCode === "28P01") { + logger.error( + "Authentication failed. Check your database username and password.", + ); + } else if (errorCode === "3D000") { + logger.error( + "Database does not exist. Make sure the database has been created.", + ); + } + } + + throw e; // Re-throw the original error to allow proper handling upstream + } + } + + /** + * Sets default parameters for a connection pool + */ + private async setPoolDefaults(pool: Pool, config: PoolConfig): Promise { + if (!pool) return; + + const client = await pool.connect(); + try { + if (config.statement_timeout) { + await client.query( + `SET statement_timeout = ${config.statement_timeout}`, + ); + } + } finally { + client.release(); + } + } + + /** + * Closes database connections with proper draining. + * Safe to call even if not connected. + */ + public async disconnect(): Promise { + if (!this.isConnected) return; + + try { + // Set a timeout for force closing connections + const forceCloseTimeout = setTimeout(() => { + logger.warn("Force closing database connections after timeout"); + if (this.writePool) this.writePool.end(); + if (this.readPool) this.readPool.end(); + }, 5000); + + // Try graceful shutdown + if (this.writePool) await this.writePool.end(); + if (this.readPool) await this.readPool.end(); + + clearTimeout(forceCloseTimeout); + + this.writePool = null; + this.readPool = null; + this.writeDb = null; + this.readDb = null; + this.isConnected = false; + + logger.info("Database connections closed"); + } catch (error) { + logger.error("Error during database disconnect", { error }); + // Still reset the state even if there was an error + this.writePool = null; + this.readPool = null; + this.writeDb = null; + this.readDb = null; + this.isConnected = false; + } + } + + /** + * Ensures database connections are established. + * @throws Error if connection fails + */ + public async ensureConnection(): Promise { + if (!this.isConnected) { + await this.connect(); + } + + if (!this.writeDb || !this.readDb) { + throw new Error("Database connections not established"); + } + } + + /** + * Get the write database instance + * @returns The write database instance + */ + public getWriteDb(): NodePgDatabase { + if (!this.writeDb) { + throw new Error("Write database connection not established"); + } + return this.writeDb; + } + + /** + * Get the read database instance + * @returns The read database instance + */ + public getReadDb(): NodePgDatabase { + if (!this.readDb) { + throw new Error("Read database connection not established"); + } + return this.readDb; + } + + /** + * Get the write pool + * @returns The write pool + */ + public getWritePool(): Pool { + if (!this.writePool) { + throw new Error("Write pool not established"); + } + return this.writePool; + } + + /** + * Checks if the database connection is healthy. + * Useful for health checks and monitoring. + */ + public async healthCheck(): Promise<{ + status: "ok" | "error"; + readResponseTime?: number; + writeResponseTime?: number; + error?: string; + }> { + try { + await this.ensureConnection(); + + // Check read pool + const readStart = Date.now(); + await this.readPool!.query("SELECT 1"); + const readDuration = Date.now() - readStart; + + // Check write pool + const writeStart = Date.now(); + await this.writePool!.query("SELECT 1"); + const writeDuration = Date.now() - writeStart; + + logger.info("Database health check", { + status: "ok", + readResponseTime: readDuration, + writeResponseTime: writeDuration, + }); + + return { + status: "ok", + readResponseTime: readDuration, + writeResponseTime: writeDuration, + }; + } catch (error) { + const errorMessage = + error instanceof Error ? error.message : String(error); + + logger.error("Database health check failed", { error: errorMessage }); + + return { + status: "error", + error: errorMessage, + }; + } + } +} + +// Initialize the singleton instance +export const dbConnection = DatabaseConnection.getInstance(); + +/** + * Initializes the database connection. + * This is the single entry point for database initialization. + * + * @returns Promise - true if connection was successful, false otherwise + */ +export const initializeDatabase = async (): Promise => { + try { + await dbConnection.connect(); + return true; + } catch (err) { + // Error logging is already handled in the connect method + return false; + } +}; diff --git a/backend/src/services/db/index.ts b/backend/src/services/db/index.ts index fcbe8f4a..a25d1280 100644 --- a/backend/src/services/db/index.ts +++ b/backend/src/services/db/index.ts @@ -1,600 +1,13 @@ -import { Pool, PoolClient, PoolConfig } from "pg"; -import { drizzle } from "drizzle-orm/node-postgres"; -import { NodePgDatabase } from "drizzle-orm/node-postgres"; +export { dbConnection, initializeDatabase } from "./connection"; -import { logger } from "../../utils/logger"; -import { - executeWithRetry, - DEFAULT_READ_POOL_CONFIG, - DEFAULT_WRITE_POOL_CONFIG, - withErrorHandling, -} from "./utils"; +export { + executeOperation, + executeTransaction, + withDatabaseErrorHandling, +} from "./transaction"; -import * as queries from "./queries"; - -// Twitter -import { - Moderation, - SubmissionFeed, - SubmissionStatus, - TwitterCookie, - TwitterSubmission, - TwitterSubmissionWithFeedData, -} from "../../types/twitter"; -import * as twitterQueries from "../twitter/queries"; - -/** - * DatabaseService provides a centralized interface for all database operations. - * Implements read/write separation and follows PostgreSQL best practices. - */ -export class DatabaseService { - private static instance: DatabaseService | null = null; - - // Connection pools - private writePool: Pool | null = null; - private readPool: Pool | null = null; - - // Drizzle instances - private writeDb: NodePgDatabase | null = null; - private readDb: NodePgDatabase | null = null; - - private isConnected: boolean = false; - - /** - * Private constructor to prevent direct instantiation. - * Use DatabaseService.getInstance() instead. - */ - private constructor() {} - - /** - * Get the singleton instance of DatabaseService. - * Creates a new instance if one doesn't exist. - */ - public static getInstance(): DatabaseService { - if (!DatabaseService.instance) { - DatabaseService.instance = new DatabaseService(); - } - return DatabaseService.instance; - } - - /** - * Establishes connections to the database. - * Creates separate pools for read and write operations. - */ - public async connect(): Promise { - if (this.isConnected) return; - - try { - const writeConnectionString = - process.env.DATABASE_WRITE_URL || process.env.DATABASE_URL; - const readConnectionString = - process.env.DATABASE_READ_URL || process.env.DATABASE_URL; - - if (!writeConnectionString) { - throw new Error( - "DATABASE_URL or DATABASE_WRITE_URL environment variable is required", - ); - } - - // Configure write pool (primary) - this.writePool = new Pool({ - connectionString: writeConnectionString, - ...DEFAULT_WRITE_POOL_CONFIG, - }); - - // Configure read pool (can be replicas) - this.readPool = new Pool({ - connectionString: readConnectionString, - ...DEFAULT_READ_POOL_CONFIG, - }); - - // Add event listeners for pool errors - this.writePool.on("error", (err) => { - logger.error("Unexpected error on write pool", err); - }); - - this.readPool.on("error", (err) => { - logger.error("Unexpected error on read pool", err); - }); - - // Set statement timeout to prevent long-running queries - await this.setPoolDefaults(this.writePool, DEFAULT_WRITE_POOL_CONFIG); - await this.setPoolDefaults(this.readPool, DEFAULT_READ_POOL_CONFIG); - - // Initialize Drizzle instances - this.writeDb = drizzle(this.writePool); - this.readDb = drizzle(this.readPool); - - this.isConnected = true; - logger.info("Database connections established"); - } catch (e: any) { - logger.error("Failed to initialize database:", { - error: e, - dirname: __dirname, - cwd: process.cwd(), - }); - throw new Error(`Database initialization failed: ${e.message}`); - } - } - - /** - * Sets default parameters for a connection pool - */ - private async setPoolDefaults(pool: Pool, config: PoolConfig): Promise { - if (!pool) return; - - const client = await pool.connect(); - try { - if (config.statement_timeout) { - await client.query( - `SET statement_timeout = ${config.statement_timeout}`, - ); - } - } finally { - client.release(); - } - } - - /** - * Closes database connections with proper draining. - * Safe to call even if not connected. - */ - public async disconnect(): Promise { - if (!this.isConnected) return; - - try { - // Set a timeout for force closing connections - const forceCloseTimeout = setTimeout(() => { - logger.warn("Force closing database connections after timeout"); - if (this.writePool) this.writePool.end(); - if (this.readPool) this.readPool.end(); - }, 5000); - - // Try graceful shutdown - if (this.writePool) await this.writePool.end(); - if (this.readPool) await this.readPool.end(); - - clearTimeout(forceCloseTimeout); - - this.writePool = null; - this.readPool = null; - this.writeDb = null; - this.readDb = null; - this.isConnected = false; - - logger.info("Database connections closed"); - } catch (error) { - logger.error("Error during database disconnect", { error }); - // Still reset the state even if there was an error - this.writePool = null; - this.readPool = null; - this.writeDb = null; - this.readDb = null; - this.isConnected = false; - } - } - - /** - * Ensures database connections are established. - * @throws Error if connection fails - */ - private async ensureConnection(): Promise { - if (!this.isConnected) { - await this.connect(); - } - - if (!this.writeDb || !this.readDb) { - throw new Error("Database connections not established"); - } - } - - /** - * Executes a database operation with retry logic for transient errors. - * Uses the executeWithRetry utility function with async-retry. - * - * @param operation Function that performs the database operation - * @param isWrite Whether this is a write operation (uses write pool) - */ - private async executeWithRetry( - operation: (db: NodePgDatabase) => Promise, - isWrite: boolean = false, - ): Promise { - await this.ensureConnection(); - - const db = isWrite ? this.writeDb! : this.readDb!; - return executeWithRetry(operation, db); - } - - /** - * Executes a transaction with proper error handling and retries. - * @param operations Function that performs operations within the transaction - */ - public async transaction( - operations: (client: PoolClient) => Promise, - ): Promise { - await this.ensureConnection(); - - const client = await this.writePool!.connect(); - try { - await client.query("BEGIN"); - const result = await operations(client); - await client.query("COMMIT"); - return result; - } catch (error) { - await client.query("ROLLBACK"); - throw error; - } finally { - client.release(); - } - } - - async saveSubmission(submission: TwitterSubmission): Promise { - await this.executeWithRetry(async (db) => { - await queries.saveSubmission(db, submission); - }, true); // Write operation - } - - async saveModerationAction(moderation: Moderation): Promise { - await this.executeWithRetry(async (db) => { - await queries.saveModerationAction(db, moderation); - }, true); // Write operation - } - - async updateSubmissionFeedStatus( - submissionId: string, - feedId: string, - status: SubmissionStatus, - moderationResponseTweetId: string, - ): Promise { - await this.executeWithRetry(async (db) => { - await queries.updateSubmissionFeedStatus( - db, - submissionId, - feedId, - status, - moderationResponseTweetId, - ); - }, true); // Write operation - } - - async getSubmission(tweetId: string): Promise { - return await this.executeWithRetry(async (db) => { - return await queries.getSubmission(db, tweetId); - }); // Read operation (default) - } - - async getSubmissionByCuratorTweetId( - curatorTweetId: string, - ): Promise { - return await this.executeWithRetry(async (db) => { - return await queries.getSubmissionByCuratorTweetId(db, curatorTweetId); - }); // Read operation - } - - async getAllSubmissions( - status?: string, - ): Promise { - return await this.executeWithRetry(async (db) => { - return await queries.getAllSubmissions(db, status); - }); // Read operation - } - - async getDailySubmissionCount(userId: string): Promise { - const today = new Date().toISOString().split("T")[0]; - - // Clean up old entries first (write operation) - await this.executeWithRetry(async (db) => { - await queries.cleanupOldSubmissionCounts(db, today); - }, true); - - // Then get the count (read operation) - return await this.executeWithRetry(async (db) => { - return await queries.getDailySubmissionCount(db, userId, today); - }); - } - - async incrementDailySubmissionCount(userId: string): Promise { - await this.executeWithRetry(async (db) => { - await queries.incrementDailySubmissionCount(db, userId); - }, true); // Write operation - } - - async upsertFeeds( - feeds: { id: string; name: string; description?: string }[], - ): Promise { - await this.executeWithRetry(async (db) => { - await queries.upsertFeeds(db, feeds); - }, true); // Write operation - } - - async saveSubmissionToFeed( - submissionId: string, - feedId: string, - status: SubmissionStatus = SubmissionStatus.PENDING, - ): Promise { - await this.executeWithRetry(async (db) => { - await queries.saveSubmissionToFeed(db, submissionId, feedId, status); - }, true); // Write operation - } - - async getFeedsBySubmission(submissionId: string): Promise { - return await this.executeWithRetry(async (db) => { - return await queries.getFeedsBySubmission(db, submissionId); - }); // Read operation - } - - async removeFromSubmissionFeed( - submissionId: string, - feedId: string, - ): Promise { - await this.executeWithRetry(async (db) => { - await queries.removeFromSubmissionFeed(db, submissionId, feedId); - }, true); // Write operation - } - - async getSubmissionsByFeed(feedId: string): Promise< - (TwitterSubmission & { - status: SubmissionStatus; - moderationResponseTweetId?: string; - })[] - > { - return await this.executeWithRetry(async (db) => { - return await queries.getSubmissionsByFeed(db, feedId); - }); // Read operation - } - - // Feed Plugin Management - async getFeedPlugin(feedId: string, pluginId: string) { - return await this.executeWithRetry(async (db) => { - return await queries.getFeedPlugin(db, feedId, pluginId); - }); // Read operation - } - - async upsertFeedPlugin( - feedId: string, - pluginId: string, - config: Record, - ): Promise { - await this.executeWithRetry(async (db) => { - await queries.upsertFeedPlugin(db, feedId, pluginId, config); - }, true); // Write operation - } - - // Twitter Cookie Management - async setTwitterCookies( - username: string, - cookies: TwitterCookie[] | null, - ): Promise { - return withErrorHandling( - async () => { - const cookiesJson = JSON.stringify(cookies); - await this.executeWithRetry(async (db) => { - await twitterQueries.setTwitterCookies(db, username, cookiesJson); - }, true); // Write operation - }, - { - operationName: "set Twitter cookies", - additionalContext: { username }, - }, - ); - } - - async getTwitterCookies(username: string): Promise { - return withErrorHandling( - async () => { - const result = await this.executeWithRetry(async (db) => { - return await twitterQueries.getTwitterCookies(db, username); - }); // Read operation - - if (!result) return null; - return JSON.parse(result.cookies) as TwitterCookie[]; - }, - { - operationName: "get Twitter cookies", - additionalContext: { username }, - }, - ); - } - - async deleteTwitterCookies(username: string): Promise { - return withErrorHandling( - async () => { - await this.executeWithRetry(async (db) => { - await twitterQueries.deleteTwitterCookies(db, username); - }, true); // Write operation - }, - { - operationName: "delete Twitter cookies", - additionalContext: { username }, - }, - ); - } - - // Twitter Cache Management - async setTwitterCacheValue(key: string, value: string): Promise { - return withErrorHandling( - async () => { - await this.executeWithRetry(async (db) => { - await twitterQueries.setTwitterCacheValue(db, key, value); - }, true); // Write operation - }, - { - operationName: "set Twitter cache value", - additionalContext: { key }, - }, - ); - } - - async getTwitterCacheValue(key: string): Promise { - return withErrorHandling( - async () => { - const result = await this.executeWithRetry(async (db) => { - return await twitterQueries.getTwitterCacheValue(db, key); - }); // Read operation - - return result?.value ?? null; - }, - { - operationName: "get Twitter cache value", - additionalContext: { key }, - }, - ); - } - - async deleteTwitterCacheValue(key: string): Promise { - return withErrorHandling( - async () => { - await this.executeWithRetry(async (db) => { - await twitterQueries.deleteTwitterCacheValue(db, key); - }, true); // Write operation - }, - { - operationName: "delete Twitter cache value", - additionalContext: { key }, - }, - ); - } - - async clearTwitterCache(): Promise { - return withErrorHandling( - async () => { - await this.executeWithRetry(async (db) => { - await twitterQueries.clearTwitterCache(db); - }, true); // Write operation - }, - { operationName: "clear Twitter cache" }, - ); - } - - async getLeaderboard( - timeRange: string = "all", - ): Promise { - return withErrorHandling( - async () => { - return await this.executeWithRetry(async (db) => { - return queries.getLeaderboard(db, timeRange); - }); // Read operation - }, - { operationName: "get leaderboard" }, - ); - } - - async getPostsCount(): Promise { - return withErrorHandling( - async () => { - return await this.executeWithRetry(async (db) => { - return await queries.getPostsCount(db); - }); // Read operation - }, - { operationName: "get posts count" }, - 0, // Default value if operation fails - ); - } - - async getCuratorsCount(): Promise { - return withErrorHandling( - async () => { - return await this.executeWithRetry(async (db) => { - return await queries.getCuratorsCount(db); - }); // Read operation - }, - { operationName: "get curators count" }, - 0, // Default value if operation fails - ); - } - - /** - * Checks if the database connection is healthy. - * Useful for health checks and monitoring. - */ - async healthCheck(): Promise<{ - status: "ok" | "error"; - readResponseTime?: number; - writeResponseTime?: number; - error?: string; - }> { - return withErrorHandling( - async () => { - await this.ensureConnection(); - - // Check read pool - const readStart = Date.now(); - await this.readPool!.query("SELECT 1"); - const readDuration = Date.now() - readStart; - - // Check write pool - const writeStart = Date.now(); - await this.writePool!.query("SELECT 1"); - const writeDuration = Date.now() - writeStart; - - logger.info("Database health check", { - status: "ok", - readResponseTime: readDuration, - writeResponseTime: writeDuration, - }); - - return { - status: "ok", - readResponseTime: readDuration, - writeResponseTime: writeDuration, - }; - }, - { operationName: "perform database health check" }, - ); - } -} - -// Initialize the singleton instance -const dbInstance = DatabaseService.getInstance(); - -// Export the singleton instance -export const db = dbInstance; - -export const initializeDatabase = async () => { - try { - // Log the database URL (with password masked) - const dbUrl = process.env.DATABASE_URL || ''; - const maskedUrl = dbUrl.replace(/:\/\/([^:]+):([^@]+)@/, '://$1:****@'); - logger.info("Attempting to connect to database:", { url: maskedUrl }); - - if (!dbUrl) { - logger.error("DATABASE_URL environment variable is not set or empty"); - return false; - } - - await dbInstance.connect(); - return true; - } catch (err) { - // More detailed error logging - const errorMessage = err instanceof Error ? err.message : String(err); - const errorStack = err instanceof Error ? err.stack : undefined; - const errorCode = (err as any).code; - - logger.error("Failed to establish database connection:", { - error: errorMessage, - code: errorCode, - stack: errorStack, - dirname: __dirname, - cwd: process.cwd() - }); - - // Provide more specific error messages based on error codes - if (errorCode === 'ECONNREFUSED') { - logger.error("Connection refused. Make sure the database server is running and accessible."); - logger.error("If using Docker, ensure the Docker daemon is running and the PostgreSQL container is started."); - } else if (errorCode === 'ENOTFOUND') { - logger.error("Host not found. Check the hostname in your DATABASE_URL."); - } else if (errorCode === '28P01') { - logger.error("Authentication failed. Check your database username and password."); - } else if (errorCode === '3D000') { - logger.error("Database does not exist. Make sure the database has been created."); - } - - return false; - } -}; +export * from "./repositories"; // For testing and dependency injection -export const getDatabase = (): DatabaseService => { - return DatabaseService.getInstance(); -}; +import { dbConnection } from "./connection"; +export const getDatabase = () => dbConnection; diff --git a/backend/src/services/db/queries.ts b/backend/src/services/db/queries.ts index 1109a3c6..3eed0331 100644 --- a/backend/src/services/db/queries.ts +++ b/backend/src/services/db/queries.ts @@ -1,22 +1,20 @@ import { and, eq, sql } from "drizzle-orm"; import { NodePgDatabase } from "drizzle-orm/node-postgres"; import { - SubmissionFeed, + FeedStatus, Moderation, - TwitterSubmission, + Submission, + SubmissionFeed, SubmissionStatus, - TwitterSubmissionWithFeedData, - FeedStatus, + SubmissionWithFeedData, } from "../../types/twitter"; import { - feedPlugins, feeds, moderationHistory, submissionCounts, submissionFeeds, submissions, } from "./schema"; -import { DbQueryResult, DbFeedQueryResult, RawDbQueryResult } from "./types"; export async function upsertFeeds( db: NodePgDatabase, @@ -103,7 +101,7 @@ export async function getFeedsBySubmission( export async function saveSubmission( db: NodePgDatabase, - submission: TwitterSubmission, + submission: Submission, ): Promise { await db .insert(submissions) @@ -203,7 +201,7 @@ export async function updateSubmissionFeedStatus( export async function getSubmissionByCuratorTweetId( db: NodePgDatabase, curatorTweetId: string, -): Promise { +): Promise { const results = await db .select({ s: { @@ -258,6 +256,9 @@ export async function getSubmissionByCuratorTweetId( moderationResponseTweetId: r.m.moderationResponseTweetId ?? undefined, })); + // Get feeds for this submission + const feeds = await getFeedsBySubmission(db, results[0].s.tweetId); + return { tweetId: results[0].s.tweetId, userId: results[0].s.userId, @@ -272,13 +273,14 @@ export async function getSubmissionByCuratorTweetId( ? new Date(results[0].s.submittedAt) : null, moderationHistory: modHistory, + feeds, }; } export async function getSubmission( db: NodePgDatabase, tweetId: string, -): Promise { +): Promise { const results = await db .select({ s: { @@ -333,6 +335,9 @@ export async function getSubmission( moderationResponseTweetId: r.m.moderationResponseTweetId ?? undefined, })); + // Get feeds for this submission + const feeds = await getFeedsBySubmission(db, tweetId); + return { tweetId: results[0].s.tweetId, userId: results[0].s.userId, @@ -347,13 +352,14 @@ export async function getSubmission( ? new Date(results[0].s.submittedAt) : null, moderationHistory: modHistory, + feeds, }; } export async function getAllSubmissions( db: NodePgDatabase, status?: string, -): Promise { +): Promise { // Build the query with or without status filter const queryBuilder = status ? db @@ -453,7 +459,7 @@ export async function getAllSubmissions( const results = await queryBuilder.orderBy(moderationHistory.createdAt); // Group results by submission - const submissionMap = new Map(); + const submissionMap = new Map(); const feedStatusMap = new Map>(); for (const result of results) { @@ -641,45 +647,6 @@ export async function removeFromSubmissionFeed( .execute(); } -// Feed Plugin queries -export async function getFeedPlugin( - db: NodePgDatabase, - feedId: string, - pluginId: string, -) { - const results = await db - .select() - .from(feedPlugins) - .where( - and(eq(feedPlugins.feedId, feedId), eq(feedPlugins.pluginId, pluginId)), - ); - - return results.length > 0 ? results[0] : null; -} - -export async function upsertFeedPlugin( - db: NodePgDatabase, - feedId: string, - pluginId: string, - config: Record, -): Promise { - await db - .insert(feedPlugins) - .values({ - feedId, - pluginId, - config: JSON.stringify(config), - }) - .onConflictDoUpdate({ - target: [feedPlugins.feedId, feedPlugins.pluginId], - set: { - config: JSON.stringify(config), - updatedAt: new Date(), - }, - }) - .execute(); -} - export interface FeedSubmissionCount { feedId: string; count: number; @@ -850,12 +817,7 @@ export async function getLeaderboard( export async function getSubmissionsByFeed( db: NodePgDatabase, feedId: string, -): Promise< - (TwitterSubmission & { - status: SubmissionStatus; - moderationResponseTweetId?: string; - })[] -> { +): Promise { const results = await db .select({ s: { @@ -896,7 +858,7 @@ export async function getSubmissionsByFeed( .orderBy(moderationHistory.createdAt); // Group results by submission - const submissionMap = new Map(); + const submissionMap = new Map(); for (const result of results) { if (!submissionMap.has(result.s.tweetId)) { diff --git a/backend/src/services/db/repositories/feed.repository.ts b/backend/src/services/db/repositories/feed.repository.ts new file mode 100644 index 00000000..d6fea9c9 --- /dev/null +++ b/backend/src/services/db/repositories/feed.repository.ts @@ -0,0 +1,176 @@ +import { drizzle } from "drizzle-orm/node-postgres"; +import { + Submission, + SubmissionFeed, + SubmissionStatus, +} from "../../../types/twitter"; +import { logger } from "../../../utils/logger"; +import * as queries from "../queries"; +import { + executeOperation, + executeTransaction, + withDatabaseErrorHandling, +} from "../transaction"; + +/** + * Repository for feed-related database operations. + */ +export class FeedRepository { + /** + * Upserts feeds in the database. + * + * @param feeds Array of feeds to upsert + */ + async upsertFeeds( + feeds: { id: string; name: string; description?: string }[], + ): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await queries.upsertFeeds(db, feeds); + }, true); // Write operation + }, + { + operationName: "upsert feeds", + additionalContext: { feedCount: feeds.length }, + }, + ); + } + + /** + * Saves a submission to a feed. + * + * @param submissionId The submission ID + * @param feedId The feed ID + * @param status The submission status + */ + async saveSubmissionToFeed( + submissionId: string, + feedId: string, + status: SubmissionStatus = SubmissionStatus.PENDING, + ): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await queries.saveSubmissionToFeed(db, submissionId, feedId, status); + }, true); // Write operation + }, + { + operationName: "save submission to feed", + additionalContext: { submissionId, feedId, status }, + }, + ); + } + + /** + * Gets feeds by submission ID. + * + * @param submissionId The submission ID + * @returns Array of submission feeds + */ + async getFeedsBySubmission(submissionId: string): Promise { + return withDatabaseErrorHandling( + async () => { + return await executeOperation(async (db) => { + return await queries.getFeedsBySubmission(db, submissionId); + }); // Read operation + }, + { + operationName: "get feeds by submission", + additionalContext: { submissionId }, + }, + [], // Default empty array if operation fails + ); + } + + /** + * Removes a submission from a feed. + * + * @param submissionId The submission ID + * @param feedId The feed ID + */ + async removeFromSubmissionFeed( + submissionId: string, + feedId: string, + ): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await queries.removeFromSubmissionFeed(db, submissionId, feedId); + }, true); // Write operation + }, + { + operationName: "remove from submission feed", + additionalContext: { submissionId, feedId }, + }, + ); + } + + /** + * Gets submissions by feed ID. + * + * @param feedId The feed ID + * @returns Array of submissions with status + */ + async getSubmissionsByFeed(feedId: string): Promise { + return withDatabaseErrorHandling( + async () => { + return await executeOperation(async (db) => { + return await queries.getSubmissionsByFeed(db, feedId); + }); // Read operation + }, + { + operationName: "get submissions by feed", + additionalContext: { feedId }, + }, + [], // Default empty array if operation fails + ); + } + + /** + * Updates the status of a submission in a feed. + * This is the consolidated method for updating submission status. + * + * @param submissionId The submission ID + * @param feedId The feed ID + * @param status The new status + * @param moderationResponseTweetId The moderation response tweet ID + */ + async updateSubmissionFeedStatus( + submissionId: string, + feedId: string, + status: SubmissionStatus, + moderationResponseTweetId: string, + ): Promise { + return withDatabaseErrorHandling( + async () => { + return await executeTransaction(async (client) => { + const db = drizzle(client); + + // Update the status in a transaction to ensure consistency + await queries.updateSubmissionFeedStatus( + db, + submissionId, + feedId, + status, + moderationResponseTweetId, + ); + + logger.info(`Updated submission status`, { + submissionId, + feedId, + status, + moderationResponseTweetId, + }); + }); + }, + { + operationName: "update submission feed status", + additionalContext: { submissionId, feedId, status }, + }, + ); + } +} + +// Export a singleton instance +export const feedRepository = new FeedRepository(); diff --git a/backend/src/services/db/repositories/index.ts b/backend/src/services/db/repositories/index.ts new file mode 100644 index 00000000..6959be72 --- /dev/null +++ b/backend/src/services/db/repositories/index.ts @@ -0,0 +1,4 @@ +export * from "./twitter.repository"; +export * from "./submission.repository"; +export * from "./feed.repository"; +export * from "./leaderboard.repository"; diff --git a/backend/src/services/db/repositories/leaderboard.repository.ts b/backend/src/services/db/repositories/leaderboard.repository.ts new file mode 100644 index 00000000..d0bdf390 --- /dev/null +++ b/backend/src/services/db/repositories/leaderboard.repository.ts @@ -0,0 +1,29 @@ +import * as queries from "../queries"; +import { executeOperation, withDatabaseErrorHandling } from "../transaction"; + +/** + * Repository for leaderboard-related database operations. + */ +export class LeaderboardRepository { + /** + * Gets the leaderboard data. + * + * @param timeRange The time range for the leaderboard (default: "all") + * @returns Array of leaderboard entries + */ + async getLeaderboard( + timeRange: string = "all", + ): Promise { + return withDatabaseErrorHandling( + async () => { + return await executeOperation(async (db) => { + return queries.getLeaderboard(db, timeRange); + }); // Read operation + }, + { operationName: "get leaderboard" }, + ); + } +} + +// Export a singleton instance +export const leaderboardRepository = new LeaderboardRepository(); diff --git a/backend/src/services/db/repositories/submission.repository.ts b/backend/src/services/db/repositories/submission.repository.ts new file mode 100644 index 00000000..baa4018d --- /dev/null +++ b/backend/src/services/db/repositories/submission.repository.ts @@ -0,0 +1,207 @@ +import { + Moderation, + Submission, + SubmissionWithFeedData, +} from "../../../types/twitter"; +import * as queries from "../queries"; +import { executeOperation, withDatabaseErrorHandling } from "../transaction"; + +/** + * Repository for submission-related database operations. + */ +export class SubmissionRepository { + /** + * Saves a Twitter submission to the database. + * + * @param submission The submission to save + */ + async saveSubmission(submission: Submission): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await queries.saveSubmission(db, submission); + }, true); // Write operation + }, + { + operationName: "save submission", + additionalContext: { tweetId: submission.tweetId }, + }, + ); + } + + /** + * Saves a moderation action to the database. + * + * @param moderation The moderation action to save + */ + async saveModerationAction(moderation: Moderation): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await queries.saveModerationAction(db, moderation); + }, true); // Write operation + }, + { + operationName: "save moderation action", + additionalContext: { + tweetId: moderation.tweetId, + feedId: moderation.feedId, + action: moderation.action, + }, + }, + ); + } + + /** + * Gets a submission by tweet ID along with its associated feeds. + * + * @param tweetId The tweet ID + * @returns The submission with feeds or null if not found + */ + async getSubmission(tweetId: string): Promise { + return withDatabaseErrorHandling( + async () => { + return await executeOperation(async (db) => { + return await queries.getSubmission(db, tweetId); + }); + }, + { + operationName: "get submission with feeds", + additionalContext: { tweetId }, + }, + null, // Default value if operation fails + ); + } + + /** + * Gets a submission by curator tweet ID. + * + * @param curatorTweetId The curator tweet ID + * @returns The submission or null if not found + */ + async getSubmissionByCuratorTweetId( + curatorTweetId: string, + ): Promise { + return withDatabaseErrorHandling( + async () => { + return await executeOperation(async (db) => { + return await queries.getSubmissionByCuratorTweetId( + db, + curatorTweetId, + ); + }); // Read operation + }, + { + operationName: "get submission by curator tweet ID", + additionalContext: { curatorTweetId }, + }, + null, // Default value if operation fails + ); + } + + /** + * Gets all submissions, optionally filtered by status. + * + * @param status Optional status filter + * @returns Array of submissions with feed data + */ + async getAllSubmissions(status?: string): Promise { + return withDatabaseErrorHandling( + async () => { + return await executeOperation(async (db) => { + return await queries.getAllSubmissions(db, status); + }); // Read operation + }, + { + operationName: "get all submissions", + additionalContext: status ? { status } : {}, + }, + [], // Default empty array if operation fails + ); + } + + /** + * Gets the daily submission count for a user. + * + * @param userId The user ID + * @returns The daily submission count + */ + async getDailySubmissionCount(userId: string): Promise { + const today = new Date().toISOString().split("T")[0]; + + return withDatabaseErrorHandling( + async () => { + // Clean up old entries first (write operation) + await executeOperation(async (db) => { + await queries.cleanupOldSubmissionCounts(db, today); + }, true); + + // Then get the count (read operation) + return await executeOperation(async (db) => { + return await queries.getDailySubmissionCount(db, userId, today); + }); + }, + { + operationName: "get daily submission count", + additionalContext: { userId, date: today }, + }, + 0, // Default to 0 if operation fails + ); + } + + /** + * Increments the daily submission count for a user. + * + * @param userId The user ID + */ + async incrementDailySubmissionCount(userId: string): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await queries.incrementDailySubmissionCount(db, userId); + }, true); // Write operation + }, + { + operationName: "increment daily submission count", + additionalContext: { userId }, + }, + ); + } + + /** + * Gets the total number of posts. + * + * @returns The total number of posts + */ + async getPostsCount(): Promise { + return withDatabaseErrorHandling( + async () => { + return await executeOperation(async (db) => { + return await queries.getPostsCount(db); + }); // Read operation + }, + { operationName: "get posts count" }, + 0, // Default value if operation fails + ); + } + + /** + * Gets the total number of curators. + * + * @returns The total number of curators + */ + async getCuratorsCount(): Promise { + return withDatabaseErrorHandling( + async () => { + return await executeOperation(async (db) => { + return await queries.getCuratorsCount(db); + }); // Read operation + }, + { operationName: "get curators count" }, + 0, // Default value if operation fails + ); + } +} + +// Export a singleton instance +export const submissionRepository = new SubmissionRepository(); diff --git a/backend/src/services/db/repositories/twitter.repository.ts b/backend/src/services/db/repositories/twitter.repository.ts new file mode 100644 index 00000000..3d495a8f --- /dev/null +++ b/backend/src/services/db/repositories/twitter.repository.ts @@ -0,0 +1,152 @@ +import { TwitterCookie } from "../../../types/twitter"; +import * as twitterQueries from "../../twitter/queries"; +import { executeOperation, withDatabaseErrorHandling } from "../transaction"; + +/** + * Repository for Twitter-related database operations. + */ +export class TwitterRepository { + /** + * Sets Twitter cookies for a user. + * + * @param username Twitter username + * @param cookies Twitter cookies + */ + async setTwitterCookies( + username: string, + cookies: TwitterCookie[] | null, + ): Promise { + return withDatabaseErrorHandling( + async () => { + const cookiesJson = JSON.stringify(cookies); + await executeOperation(async (db) => { + await twitterQueries.setTwitterCookies(db, username, cookiesJson); + }, true); // Write operation + }, + { + operationName: "set Twitter cookies", + additionalContext: { username }, + }, + ); + } + + /** + * Gets Twitter cookies for a user. + * + * @param username Twitter username + * @returns Twitter cookies or null if not found + */ + async getTwitterCookies(username: string): Promise { + return withDatabaseErrorHandling( + async () => { + const result = await executeOperation(async (db) => { + return await twitterQueries.getTwitterCookies(db, username); + }); // Read operation + + if (!result) return null; + return JSON.parse(result.cookies) as TwitterCookie[]; + }, + { + operationName: "get Twitter cookies", + additionalContext: { username }, + }, + ); + } + + /** + * Deletes Twitter cookies for a user. + * + * @param username Twitter username + */ + async deleteTwitterCookies(username: string): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await twitterQueries.deleteTwitterCookies(db, username); + }, true); // Write operation + }, + { + operationName: "delete Twitter cookies", + additionalContext: { username }, + }, + ); + } + + /** + * Sets a Twitter cache value. + * + * @param key Cache key + * @param value Cache value + */ + async setTwitterCacheValue(key: string, value: string): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await twitterQueries.setTwitterCacheValue(db, key, value); + }, true); // Write operation + }, + { + operationName: "set Twitter cache value", + additionalContext: { key }, + }, + ); + } + + /** + * Gets a Twitter cache value. + * + * @param key Cache key + * @returns Cache value or null if not found + */ + async getTwitterCacheValue(key: string): Promise { + return withDatabaseErrorHandling( + async () => { + const result = await executeOperation(async (db) => { + return await twitterQueries.getTwitterCacheValue(db, key); + }); // Read operation + + return result?.value ?? null; + }, + { + operationName: "get Twitter cache value", + additionalContext: { key }, + }, + ); + } + + /** + * Deletes a Twitter cache value. + * + * @param key Cache key + */ + async deleteTwitterCacheValue(key: string): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await twitterQueries.deleteTwitterCacheValue(db, key); + }, true); // Write operation + }, + { + operationName: "delete Twitter cache value", + additionalContext: { key }, + }, + ); + } + + /** + * Clears the Twitter cache. + */ + async clearTwitterCache(): Promise { + return withDatabaseErrorHandling( + async () => { + await executeOperation(async (db) => { + await twitterQueries.clearTwitterCache(db); + }, true); // Write operation + }, + { operationName: "clear Twitter cache" }, + ); + } +} + +// Export a singleton instance +export const twitterRepository = new TwitterRepository(); diff --git a/backend/src/services/db/transaction.ts b/backend/src/services/db/transaction.ts new file mode 100644 index 00000000..b83cadf5 --- /dev/null +++ b/backend/src/services/db/transaction.ts @@ -0,0 +1,81 @@ +import { PoolClient } from "pg"; +import { NodePgDatabase } from "drizzle-orm/node-postgres"; +import { logger } from "../../utils/logger"; +import { executeWithRetry } from "./utils"; +import { dbConnection } from "./connection"; + +/** + * Executes a database operation with retry logic for transient errors. + * Uses the executeWithRetry utility function with async-retry. + * + * @param operation Function that performs the database operation + * @param isWrite Whether this is a write operation (uses write pool) + */ +export async function executeOperation( + operation: (db: NodePgDatabase) => Promise, + isWrite: boolean = false, +): Promise { + await dbConnection.ensureConnection(); + + const db = isWrite ? dbConnection.getWriteDb() : dbConnection.getReadDb(); + return executeWithRetry(operation, db); +} + +/** + * Executes a transaction with proper error handling and retries. + * @param operations Function that performs operations within the transaction + */ +export async function executeTransaction( + operations: (client: PoolClient) => Promise, +): Promise { + await dbConnection.ensureConnection(); + + const client = await dbConnection.getWritePool().connect(); + try { + await client.query("BEGIN"); + const result = await operations(client); + await client.query("COMMIT"); + return result; + } catch (error) { + await client.query("ROLLBACK"); + logger.error("Transaction failed, rolling back", { error }); + throw error; + } finally { + client.release(); + } +} + +/** + * Wraps a database operation with error handling. + * Provides consistent error handling and logging for database operations. + * + * @param operation The database operation to execute + * @param options Options for error handling + * @param defaultValue Optional default value to return on error + */ +export async function withDatabaseErrorHandling( + operation: () => Promise, + options: { + operationName: string; + additionalContext?: Record; + }, + defaultValue?: T, +): Promise { + try { + return await operation(); + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + const errorStack = error instanceof Error ? error.stack : undefined; + + logger.error(`Failed to ${options.operationName}:`, { + error: errorMessage, + stack: errorStack, + ...options.additionalContext, + }); + + if (defaultValue !== undefined) { + return defaultValue; + } + throw error; + } +} diff --git a/backend/src/services/distribution/distribution.service.ts b/backend/src/services/distribution/distribution.service.ts index de854ef8..37cddd70 100644 --- a/backend/src/services/distribution/distribution.service.ts +++ b/backend/src/services/distribution/distribution.service.ts @@ -1,6 +1,6 @@ import { ActionArgs } from "@curatedotfun/types"; import { PluginError, PluginExecutionError } from "../../types/errors"; -import { TwitterSubmission } from "../../types/twitter"; +import { Submission } from "../../types/twitter"; import { logger } from "../../utils/logger"; import { sanitizeJson } from "../../utils/sanitize"; import { PluginService } from "../plugins/plugin.service"; @@ -9,7 +9,7 @@ import { DistributorConfig } from "./../../types/config"; export class DistributionService { constructor(private pluginService: PluginService) {} - async distributeContent( + async distributeContent( distributor: DistributorConfig, input: T, ): Promise { diff --git a/backend/src/services/submissions/submission.service.ts b/backend/src/services/submissions/submission.service.ts index 00cd0336..1662e4ec 100644 --- a/backend/src/services/submissions/submission.service.ts +++ b/backend/src/services/submissions/submission.service.ts @@ -2,17 +2,21 @@ import { Tweet } from "agent-twitter-client"; import { AppConfig } from "../../types/config"; import { Moderation, + Submission, SubmissionFeed, SubmissionStatus, - TwitterSubmission, } from "../../types/twitter"; import { logger } from "../../utils/logger"; -import { db } from "../db"; -import { TwitterService } from "../twitter/client"; +import { + feedRepository, + submissionRepository, + twitterRepository, +} from "../db/repositories"; import { ProcessorService } from "../processor/processor.service"; +import { TwitterService } from "../twitter/client"; export class SubmissionService { - private checkInterval: NodeJS.Timer | null = null; + private checkInterval: NodeJS.Timeout | null = null; private adminIdCache: Map = new Map(); constructor( @@ -24,7 +28,8 @@ export class SubmissionService { private async initializeAdminIds(): Promise { try { // Try to load admin IDs from cache first - const cachedAdminIds = await db.getTwitterCacheValue("admin_ids"); + const cachedAdminIds = + await twitterRepository.getTwitterCacheValue("admin_ids"); if (cachedAdminIds) { try { const adminMap = JSON.parse(cachedAdminIds); @@ -64,7 +69,10 @@ export class SubmissionService { } // Cache the admin IDs - db.setTwitterCacheValue("admin_ids", JSON.stringify(adminMap)); + await twitterRepository.setTwitterCacheValue( + "admin_ids", + JSON.stringify(adminMap), + ); logger.info("Cached admin IDs for future use"); } catch (error) { logger.error("Failed to initialize admin IDs:", error); @@ -72,14 +80,14 @@ export class SubmissionService { } } - private initializeFeeds(): void { + private async initializeFeeds(): Promise { try { const feedsToUpsert = this.config.feeds.map((feed) => ({ id: feed.id, name: feed.name, description: feed.description, })); - db.upsertFeeds(feedsToUpsert); + await feedRepository.upsertFeeds(feedsToUpsert); } catch (error) { logger.error("Failed to initialize feeds:", error); throw error; @@ -89,7 +97,7 @@ export class SubmissionService { async initialize(): Promise { try { // Initialize feeds - this.initializeFeeds(); + await this.initializeFeeds(); // Initialize admin IDs with caching await this.initializeAdminIds(); @@ -211,15 +219,16 @@ export class SubmissionService { } // Check if this tweet was already submitted - const existingSubmission = await db.getSubmission(originalTweet.id!); - const existingFeeds = existingSubmission - ? await db.getFeedsBySubmission(existingSubmission.tweetId) - : []; + const existingSubmission = await submissionRepository.getSubmission( + originalTweet.id!, + ); + const existingFeeds = existingSubmission?.feeds || []; // Create new submission if it doesn't exist - let submission: TwitterSubmission | undefined; + let submission: Submission | undefined; if (!existingSubmission) { - const dailyCount = await db.getDailySubmissionCount(userId); + const dailyCount = + await submissionRepository.getDailySubmissionCount(userId); const maxSubmissions = this.config.global.maxDailySubmissionsPerUser; if (dailyCount >= maxSubmissions) { @@ -256,15 +265,15 @@ export class SubmissionService { // admin data (update) moderationHistory: [], // moderatorId, userId, tweetId }; - db.saveSubmission(submission); - db.incrementDailySubmissionCount(userId); + await submissionRepository.saveSubmission(submission); + await submissionRepository.incrementDailySubmissionCount(userId); } // Process each feed for (const feedId of feedIds) { const lowercaseFeedId = feedId.toLowerCase(); const feed = this.config.feeds.find( - (f) => f.id.toLowerCase() === lowercaseFeedId, + (f: { id: string }) => f.id.toLowerCase() === lowercaseFeedId, ); if (!feed) { logger.error( @@ -294,10 +303,10 @@ export class SubmissionService { note: this.extractDescription(originalTweet.username!, tweet) || null, }; - db.saveModerationAction(moderation); + await submissionRepository.saveModerationAction(moderation); // Then update feed status - db.updateSubmissionFeedStatus( + await feedRepository.updateSubmissionFeedStatus( originalTweet.id!, feed.id, SubmissionStatus.APPROVED, @@ -313,7 +322,7 @@ export class SubmissionService { } } else { if (feed) { - db.saveSubmissionToFeed( + await feedRepository.saveSubmissionToFeed( originalTweet.id!, feed.id, this.config.global.defaultStatus, @@ -332,10 +341,10 @@ export class SubmissionService { note: this.extractDescription(originalTweet.username!, tweet) || null, }; - db.saveModerationAction(moderation); + await submissionRepository.saveModerationAction(moderation); // Then update feed status - db.updateSubmissionFeedStatus( + await feedRepository.updateSubmissionFeedStatus( originalTweet.id!, feed.id, SubmissionStatus.APPROVED, @@ -389,7 +398,8 @@ export class SubmissionService { const curatorTweetId = tweet.inReplyToStatusId; if (!curatorTweetId) return; - const submission = await db.getSubmissionByCuratorTweetId(curatorTweetId); + const submission = + await submissionRepository.getSubmissionByCuratorTweetId(curatorTweetId); if (!submission) { logger.error(`${tweet.id}: Received moderation for unsaved submission`); return; @@ -410,11 +420,12 @@ export class SubmissionService { } // Get submission feeds to determine which feed is being moderated - const submissionFeeds = await db.getFeedsBySubmission(submission.tweetId); - const pendingFeeds = submissionFeeds - .filter((feed) => feed.status === SubmissionStatus.PENDING) + const pendingFeeds = submission + .feeds!.filter((feed) => feed.status === SubmissionStatus.PENDING) .filter((feed) => { - const feedConfig = this.config.feeds.find((f) => f.id === feed.feedId); + const feedConfig = this.config.feeds.find( + (f: { id: string }) => f.id === feed.feedId, + ); return feedConfig?.moderation.approvers.twitter.some( (approver) => approver.toLowerCase() === adminUsername.toLowerCase(), ); @@ -439,7 +450,7 @@ export class SubmissionService { }; // Save moderation action - db.saveModerationAction(moderation); + await submissionRepository.saveModerationAction(moderation); } // Process based on action @@ -454,18 +465,20 @@ export class SubmissionService { private async processApproval( tweet: Tweet, - submission: TwitterSubmission, + submission: Submission, pendingFeeds: SubmissionFeed[], ): Promise { try { // Process each pending feed for (const pendingFeed of pendingFeeds) { - const feed = this.config.feeds.find((f) => f.id === pendingFeed.feedId); + const feed = this.config.feeds.find( + (f: { id: string }) => f.id === pendingFeed.feedId, + ); if (!feed) continue; // Only update if not already moderated if (!pendingFeed.moderationResponseTweetId) { - db.updateSubmissionFeedStatus( + await feedRepository.updateSubmissionFeedStatus( submission.tweetId, pendingFeed.feedId, SubmissionStatus.APPROVED, @@ -490,7 +503,7 @@ export class SubmissionService { private async processRejection( tweet: Tweet, - submission: TwitterSubmission, + submission: Submission, pendingFeeds: SubmissionFeed[], ): Promise { try { @@ -498,7 +511,7 @@ export class SubmissionService { for (const pendingFeed of pendingFeeds) { // Only update if not already moderated if (!pendingFeed.moderationResponseTweetId) { - db.updateSubmissionFeedStatus( + await feedRepository.updateSubmissionFeedStatus( submission.tweetId, pendingFeed.feedId, SubmissionStatus.REJECTED, diff --git a/backend/src/services/twitter/client.ts b/backend/src/services/twitter/client.ts index afd271c3..06db2fc9 100644 --- a/backend/src/services/twitter/client.ts +++ b/backend/src/services/twitter/client.ts @@ -1,7 +1,7 @@ import { Scraper, SearchMode, Tweet } from "agent-twitter-client"; import { TwitterCookie } from "types/twitter"; import { logger } from "../../utils/logger"; -import { db } from "../db"; +import { twitterRepository } from "../db/repositories"; export class TwitterService { private client: Scraper; @@ -68,7 +68,10 @@ export class TwitterService { httpOnly: cookie.httpOnly, sameSite: cookie.sameSite as "Strict" | "Lax" | "None" | undefined, })); - db.setTwitterCookies(this.config.username, formattedCookies); + await twitterRepository.setTwitterCookies( + this.config.username, + formattedCookies, + ); logger.info("Successfully logged in to Twitter"); return true; } @@ -93,7 +96,7 @@ export class TwitterService { ); await this.client.setCookies(cookieStrings); // Store cookies in database - db.setTwitterCookies(this.config.username, cookies); + await twitterRepository.setTwitterCookies(this.config.username, cookies); // Verify the cookies work if (!(await this.client.isLoggedIn())) { throw new Error("Failed to verify cookies after setting"); @@ -106,7 +109,7 @@ export class TwitterService { } getCookies() { - return db.getTwitterCookies(this.twitterUsername); + return twitterRepository.getTwitterCookies(this.twitterUsername); } async initialize() { @@ -126,7 +129,7 @@ export class TwitterService { if (await this.loadCachedCookies()) { logger.info("Successfully initialized using cached cookies"); this.lastCheckedTweetId = - await db.getTwitterCacheValue("last_tweet_id"); + await twitterRepository.getTwitterCacheValue("last_tweet_id"); return; } @@ -134,7 +137,7 @@ export class TwitterService { for (let attempt = 0; attempt < 3; attempt++) { if (await this.performLogin()) { this.lastCheckedTweetId = - await db.getTwitterCacheValue("last_tweet_id"); + await twitterRepository.getTwitterCacheValue("last_tweet_id"); return; } @@ -235,7 +238,7 @@ export class TwitterService { setLastCheckedTweetId(tweetId: string) { this.lastCheckedTweetId = tweetId; - db.setTwitterCacheValue("last_tweet_id", tweetId); + twitterRepository.setTwitterCacheValue("last_tweet_id", tweetId); logger.info(`Last checked tweet ID updated to: ${tweetId}`); } diff --git a/backend/src/types/twitter.ts b/backend/src/types/twitter.ts index 0378abe1..413beb2a 100644 --- a/backend/src/types/twitter.ts +++ b/backend/src/types/twitter.ts @@ -5,7 +5,7 @@ export interface FeedStatus { moderationResponseTweetId?: string; } -export interface TwitterSubmission { +export interface Submission { tweetId: string; userId: string; username: string; @@ -18,9 +18,9 @@ export interface TwitterSubmission { submittedAt: Date | null; moderationHistory: Moderation[]; status?: SubmissionStatus; + feeds?: SubmissionFeed[]; } - -export interface TwitterSubmissionWithFeedData extends TwitterSubmission { +export interface SubmissionWithFeedData extends Omit { status: SubmissionStatus; moderationResponseTweetId?: string; feedStatuses?: FeedStatus[]; diff --git a/backend/test/component/approval-flow.test.ts b/backend/test/component/approval-flow.test.ts index c49ae923..6fd52b5d 100644 --- a/backend/test/component/approval-flow.test.ts +++ b/backend/test/component/approval-flow.test.ts @@ -76,7 +76,7 @@ describe("Approval Flow", () => { // Verify the submission was approved const submissionResponse = await apiClient.get( - `/api/submission/single/${tweet.id}`, + `/api/submissions/single/${tweet.id}`, ); expect(submissionResponse.status).toBe(200); expect(submissionResponse.data).toMatchObject({ @@ -115,7 +115,7 @@ describe("Approval Flow", () => { // Verify the submission was rejected const submissionResponse = await apiClient.get( - `/api/submission/single/${tweet.id}`, + `/api/submissions/single/${tweet.id}`, ); expect(submissionResponse.status).toBe(200); expect(submissionResponse.data).toMatchObject({ @@ -160,7 +160,7 @@ describe("Approval Flow", () => { // Verify the submission was not approved (still pending) const submissionResponse = await apiClient.get( - `/api/submission/single/${tweet.id}`, + `/api/submissions/single/${tweet.id}`, ); expect(submissionResponse.status).toBe(200); expect(submissionResponse.data).toMatchObject({ diff --git a/backend/test/component/submission-flow.test.ts b/backend/test/component/submission-flow.test.ts index 2e7eb5fa..af40e8bf 100644 --- a/backend/test/component/submission-flow.test.ts +++ b/backend/test/component/submission-flow.test.ts @@ -56,7 +56,7 @@ describe("Submission Flow", () => { // Verify the submission was saved const submissionResponse = await apiClient.get( - `/api/submission/single/${tweet.id}`, + `/api/submissions/single/${tweet.id}`, ); expect(submissionResponse.status).toBe(200); expect(submissionResponse.data).toMatchObject({ @@ -80,9 +80,7 @@ describe("Submission Flow", () => { // Verify submissions were created for each feed for (const feedId of feedIds) { - const submissionsResponse = await apiClient.get( - `/api/feed/${feedId}/submissions`, - ); + const submissionsResponse = await apiClient.get(`/api/feed/${feedId}`); expect(submissionsResponse.status).toBe(200); const submission = submissionsResponse.data.submissions.find( @@ -119,7 +117,7 @@ describe("Submission Flow", () => { // Verify the submission was auto-approved const submissionResponse = await apiClient.get( - `/api/submission/single/${tweet.id}`, + `/api/submissions/single/${tweet.id}`, ); expect(submissionResponse.status).toBe(200); expect(submissionResponse.data).toMatchObject({ diff --git a/backend/test/e2e/full-flow.test.ts b/backend/test/e2e/full-flow.test.ts index 3ab13bff..f14b04e6 100644 --- a/backend/test/e2e/full-flow.test.ts +++ b/backend/test/e2e/full-flow.test.ts @@ -79,7 +79,7 @@ describe("Full Flow E2E", () => { // Verify the submission was created const submissionStatusResponse = await apiClient.get( - `/api/submission/single/${tweet.id}`, + `/api/submissions/single/${tweet.id}`, ); expect(submissionStatusResponse.status).toBe(200); expect(submissionStatusResponse.data).toMatchObject({ @@ -98,7 +98,7 @@ describe("Full Flow E2E", () => { // Verify the submission was approved const approvedSubmissionResponse = await apiClient.get( - `/api/submission/single/${tweet.id}`, + `/api/submissions/single/${tweet.id}`, ); expect(approvedSubmissionResponse.status).toBe(200); expect(approvedSubmissionResponse.data).toMatchObject({ diff --git a/backend/test/integration/database.test.ts b/backend/test/integration/database.test.ts index 207972aa..d10f0aea 100644 --- a/backend/test/integration/database.test.ts +++ b/backend/test/integration/database.test.ts @@ -6,7 +6,11 @@ import { afterAll, beforeEach, } from "bun:test"; -import { db } from "../../src/services/db"; +import { dbConnection } from "../../src/services/db/connection"; +import { + submissionRepository, + feedRepository, +} from "../../src/services/db/repositories"; import { createMockSubmission } from "../utils/test-data"; import { SubmissionStatus } from "../../src/types/twitter"; import { Pool } from "pg"; @@ -27,11 +31,11 @@ describe("Database Integration", () => { // Initialize the database connection console.log("Initializing database service connection..."); - await db.connect(); + await dbConnection.connect(); console.log("Database service connected successfully"); // Verify database service connection - const healthCheck = await db.healthCheck(); + const healthCheck = await dbConnection.healthCheck(); console.log("Database health check:", healthCheck); if (healthCheck.status !== "ok") { @@ -63,7 +67,7 @@ describe("Database Integration", () => { } // Close the database service connection - await db.disconnect(); + await dbConnection.disconnect(); console.log("Database service disconnected"); } catch (error) { console.error("Error in afterAll:", error); @@ -88,15 +92,18 @@ describe("Database Integration", () => { const submission = createMockSubmission(); // Act - await db.saveSubmission(submission); + await submissionRepository.saveSubmission(submission); // Assert - const retrievedSubmission = await db.getSubmission(submission.tweetId); + const retrievedSubmission = await submissionRepository.getSubmission( + submission.tweetId, + ); expect(retrievedSubmission).toMatchObject({ tweetId: submission.tweetId, userId: submission.userId, username: submission.username, content: submission.content, + feeds: [], }); }); @@ -106,17 +113,17 @@ describe("Database Integration", () => { const feedId = "test-feed-1"; // Use existing feed from seed data // Save submission - await db.saveSubmission(submission); + await submissionRepository.saveSubmission(submission); // Add submission to feed - await db.saveSubmissionToFeed( + await feedRepository.saveSubmissionToFeed( submission.tweetId, feedId, SubmissionStatus.PENDING, ); // Act - await db.updateSubmissionFeedStatus( + await feedRepository.updateSubmissionFeedStatus( submission.tweetId, feedId, SubmissionStatus.APPROVED, @@ -124,7 +131,7 @@ describe("Database Integration", () => { ); // Assert - const feeds = await db.getFeedsBySubmission(submission.tweetId); + const feeds = await feedRepository.getFeedsBySubmission(submission.tweetId); const feed = feeds.find((f) => f.feedId === feedId); expect(feed).toBeDefined(); expect(feed?.status).toBe(SubmissionStatus.APPROVED); @@ -140,8 +147,8 @@ describe("Database Integration", () => { ]; for (const submission of submissions) { - await db.saveSubmission(submission); - await db.saveSubmissionToFeed( + await submissionRepository.saveSubmission(submission); + await feedRepository.saveSubmissionToFeed( submission.tweetId, feedId, SubmissionStatus.PENDING, @@ -149,7 +156,8 @@ describe("Database Integration", () => { } // Act - const retrievedSubmissions = await db.getSubmissionsByFeed(feedId); + const retrievedSubmissions = + await feedRepository.getSubmissionsByFeed(feedId); // Assert expect(retrievedSubmissions.length).toBe(submissions.length); @@ -170,32 +178,32 @@ describe("Database Integration", () => { ]; // Add submissions with different statuses - await db.saveSubmission(submissions[0]); - await db.saveSubmissionToFeed( + await submissionRepository.saveSubmission(submissions[0]); + await feedRepository.saveSubmissionToFeed( submissions[0].tweetId, "test-feed-1", SubmissionStatus.PENDING, ); - await db.saveSubmission(submissions[1]); - await db.saveSubmissionToFeed( + await submissionRepository.saveSubmission(submissions[1]); + await feedRepository.saveSubmissionToFeed( submissions[1].tweetId, "test-feed-1", SubmissionStatus.APPROVED, ); - await db.saveSubmission(submissions[2]); - await db.saveSubmissionToFeed( + await submissionRepository.saveSubmission(submissions[2]); + await feedRepository.saveSubmissionToFeed( submissions[2].tweetId, "test-feed-1", SubmissionStatus.REJECTED, ); // Act - Get all submissions - const allSubmissions = await db.getAllSubmissions(); + const allSubmissions = await submissionRepository.getAllSubmissions(); // Act - Get pending submissions - const pendingSubmissions = await db.getAllSubmissions( + const pendingSubmissions = await submissionRepository.getAllSubmissions( SubmissionStatus.PENDING, ); @@ -219,25 +227,25 @@ describe("Database Integration", () => { const feedId = "test-feed-3"; // Use existing feed from seed data // Save submission - await db.saveSubmission(submission); + await submissionRepository.saveSubmission(submission); // Add to feed - await db.saveSubmissionToFeed( + await feedRepository.saveSubmissionToFeed( submission.tweetId, feedId, SubmissionStatus.PENDING, ); // Assert feed was added - let feeds = await db.getFeedsBySubmission(submission.tweetId); + let feeds = await feedRepository.getFeedsBySubmission(submission.tweetId); expect(feeds.length).toBe(1); expect(feeds[0].feedId).toBe(feedId); // Remove from feed - await db.removeFromSubmissionFeed(submission.tweetId, feedId); + await feedRepository.removeFromSubmissionFeed(submission.tweetId, feedId); // Assert feed was removed - feeds = await db.getFeedsBySubmission(submission.tweetId); + feeds = await feedRepository.getFeedsBySubmission(submission.tweetId); expect(feeds.length).toBe(0); }); @@ -246,8 +254,8 @@ describe("Database Integration", () => { const submission = createMockSubmission(); const feedId = "test-feed-3"; // Use existing feed from seed data - await db.saveSubmission(submission); - await db.saveSubmissionToFeed( + await submissionRepository.saveSubmission(submission); + await feedRepository.saveSubmissionToFeed( submission.tweetId, feedId, SubmissionStatus.PENDING, @@ -255,14 +263,14 @@ describe("Database Integration", () => { // Act - Run multiple operations concurrently const operations = [ - db.updateSubmissionFeedStatus( + feedRepository.updateSubmissionFeedStatus( submission.tweetId, feedId, SubmissionStatus.APPROVED, "mod_tweet_id", ), - db.getSubmission(submission.tweetId), - db.getSubmissionsByFeed(feedId), + submissionRepository.getSubmission(submission.tweetId), + feedRepository.getSubmissionsByFeed(feedId), ]; // Assert - No errors should be thrown diff --git a/backend/test/unit/repositories/feed.repository.test.ts b/backend/test/unit/repositories/feed.repository.test.ts new file mode 100644 index 00000000..3ad74453 --- /dev/null +++ b/backend/test/unit/repositories/feed.repository.test.ts @@ -0,0 +1,261 @@ +import { describe, test, expect, beforeEach, mock, spyOn } from "bun:test"; +import { feedRepository } from "../../../src/services/db/repositories"; +import * as transaction from "../../../src/services/db/transaction"; +import * as queries from "../../../src/services/db/queries"; +import { SubmissionStatus } from "../../../src/types/twitter"; +import { logger } from "../../../src/utils/logger"; + +// Mock the drizzle function with a spy +const drizzleMock = mock((client) => ({ mockDb: true, client })); +mock.module("drizzle-orm/node-postgres", () => ({ + drizzle: drizzleMock, +})); + +// Use spyOn to mock the transaction functions +const executeOperationSpy = spyOn( + transaction, + "executeOperation", +).mockImplementation(async (callback, isWrite = false) => { + // Make sure to await the callback to ensure it's executed + return await callback({ mockDb: true }); +}); + +const executeTransactionSpy = spyOn( + transaction, + "executeTransaction", +).mockImplementation(async (callback) => { + return await callback({ mockClient: true }); +}); + +const withDatabaseErrorHandlingSpy = spyOn( + transaction, + "withDatabaseErrorHandling", +).mockImplementation(async (operation, options, defaultValue) => { + try { + // Just directly call the operation function and return its result + return await operation(); + } catch (error) { + // For error tests, return the default value if provided + if (defaultValue !== undefined) { + return defaultValue; + } + throw error; + } +}); + +// Use spyOn to mock the logger +const loggerInfoSpy = spyOn(logger, "info").mockImplementation(() => {}); +const loggerErrorSpy = spyOn(logger, "error").mockImplementation(() => {}); +const loggerWarnSpy = spyOn(logger, "warn").mockImplementation(() => {}); +const loggerDebugSpy = spyOn(logger, "debug").mockImplementation(() => {}); + +// Use spyOn to mock the query functions +const upsertFeedsSpy = spyOn(queries, "upsertFeeds").mockImplementation( + async () => {}, +); +const saveSubmissionToFeedSpy = spyOn( + queries, + "saveSubmissionToFeed", +).mockImplementation(async () => {}); +const getFeedsBySubmissionSpy = spyOn( + queries, + "getFeedsBySubmission", +).mockImplementation(async () => []); +const removeFromSubmissionFeedSpy = spyOn( + queries, + "removeFromSubmissionFeed", +).mockImplementation(async () => {}); +const getSubmissionsByFeedSpy = spyOn( + queries, + "getSubmissionsByFeed", +).mockImplementation(async () => []); +const updateSubmissionFeedStatusSpy = spyOn( + queries, + "updateSubmissionFeedStatus", +).mockImplementation(async () => {}); + +describe("FeedRepository", () => { + beforeEach(() => { + // Reset all spies before each test + executeOperationSpy.mockClear(); + executeTransactionSpy.mockClear(); + withDatabaseErrorHandlingSpy.mockClear(); + loggerInfoSpy.mockClear(); + loggerErrorSpy.mockClear(); + loggerWarnSpy.mockClear(); + loggerDebugSpy.mockClear(); + upsertFeedsSpy.mockClear(); + saveSubmissionToFeedSpy.mockClear(); + getFeedsBySubmissionSpy.mockClear(); + removeFromSubmissionFeedSpy.mockClear(); + getSubmissionsByFeedSpy.mockClear(); + updateSubmissionFeedStatusSpy.mockClear(); + }); + + describe("upsertFeeds", () => { + test("should call executeOperation with the correct parameters", async () => { + const feeds = [ + { id: "feed1", name: "Feed 1", description: "Description 1" }, + { id: "feed2", name: "Feed 2" }, + ]; + + await feedRepository.upsertFeeds(feeds); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(upsertFeedsSpy).toHaveBeenCalledWith({ mockDb: true }, feeds); + }); + }); + + describe("saveSubmissionToFeed", () => { + test("should call executeOperation with the correct parameters", async () => { + const submissionId = "123"; + const feedId = "feed1"; + const status = SubmissionStatus.PENDING; + + await feedRepository.saveSubmissionToFeed(submissionId, feedId, status); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(saveSubmissionToFeedSpy).toHaveBeenCalledWith( + { mockDb: true }, + submissionId, + feedId, + status, + ); + }); + + test("should use default status if not provided", async () => { + const submissionId = "123"; + const feedId = "feed1"; + + await feedRepository.saveSubmissionToFeed(submissionId, feedId); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(saveSubmissionToFeedSpy).toHaveBeenCalledWith( + { mockDb: true }, + submissionId, + feedId, + SubmissionStatus.PENDING, + ); + }); + }); + + describe("getFeedsBySubmission", () => { + test("should return feeds for a submission", async () => { + const submissionId = "123"; + const mockFeeds = [ + { submissionId, feedId: "feed1", status: SubmissionStatus.PENDING }, + { + submissionId, + feedId: "feed2", + status: SubmissionStatus.APPROVED, + moderationResponseTweetId: "456", + }, + ]; + + getFeedsBySubmissionSpy.mockResolvedValueOnce(mockFeeds); + + const result = await feedRepository.getFeedsBySubmission(submissionId); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getFeedsBySubmissionSpy).toHaveBeenCalledWith( + { mockDb: true }, + submissionId, + ); + expect(result).toEqual(mockFeeds); + }); + }); + + describe("removeFromSubmissionFeed", () => { + test("should call executeOperation with the correct parameters", async () => { + const submissionId = "123"; + const feedId = "feed1"; + + await feedRepository.removeFromSubmissionFeed(submissionId, feedId); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(removeFromSubmissionFeedSpy).toHaveBeenCalledWith( + { mockDb: true }, + submissionId, + feedId, + ); + }); + }); + + describe("getSubmissionsByFeed", () => { + test("should return submissions for a feed", async () => { + const feedId = "feed1"; + const mockSubmissions = [ + { + tweetId: "123", + userId: "user1", + username: "testuser", + content: "Test content", + curatorId: "curator1", + curatorUsername: "curator", + curatorTweetId: "456", + createdAt: new Date(), + submittedAt: new Date(), + status: SubmissionStatus.PENDING, + moderationHistory: [], + curatorNotes: "Test notes", + }, + ]; + + getSubmissionsByFeedSpy.mockResolvedValueOnce(mockSubmissions); + + const result = await feedRepository.getSubmissionsByFeed(feedId); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getSubmissionsByFeedSpy).toHaveBeenCalledWith( + { mockDb: true }, + feedId, + ); + expect(result).toEqual(mockSubmissions); + }); + }); + + describe("updateSubmissionFeedStatus", () => { + test("should call withDatabaseErrorHandling", async () => { + const submissionId = "123"; + const feedId = "feed1"; + const status = SubmissionStatus.APPROVED; + const moderationResponseTweetId = "456"; + + await feedRepository.updateSubmissionFeedStatus( + submissionId, + feedId, + status, + moderationResponseTweetId, + ); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + // Just check that it was called, without checking the exact parameters + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + }); + + test("should handle errors gracefully", async () => { + const submissionId = "123"; + const feedId = "feed1"; + const status = SubmissionStatus.APPROVED; + const moderationResponseTweetId = "456"; + + // Mock withDatabaseErrorHandling to simulate error handling + withDatabaseErrorHandlingSpy.mockImplementationOnce( + async (operation, options, defaultValue) => { + // Just return without calling the operation + return undefined; + }, + ); + + // Should not throw due to withDatabaseErrorHandling + await feedRepository.updateSubmissionFeedStatus( + submissionId, + feedId, + status, + moderationResponseTweetId, + ); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + }); + }); +}); diff --git a/backend/test/unit/repositories/leaderboard.repository.test.ts b/backend/test/unit/repositories/leaderboard.repository.test.ts new file mode 100644 index 00000000..361f2e4c --- /dev/null +++ b/backend/test/unit/repositories/leaderboard.repository.test.ts @@ -0,0 +1,123 @@ +import { describe, test, expect, beforeEach, mock, spyOn } from "bun:test"; +import { leaderboardRepository } from "../../../src/services/db/repositories"; +import * as transaction from "../../../src/services/db/transaction"; +import * as queries from "../../../src/services/db/queries"; + +// Use spyOn to mock the transaction functions +const executeOperationSpy = spyOn( + transaction, + "executeOperation", +).mockImplementation(async (callback, isWrite = false) => { + // Make sure to await the callback to ensure it's executed + return await callback({ mockDb: true }); +}); + +const withDatabaseErrorHandlingSpy = spyOn( + transaction, + "withDatabaseErrorHandling", +).mockImplementation(async (operation, options, defaultValue) => { + try { + // Just directly call the operation function and return its result + return await operation(); + } catch (error) { + // For error tests, return the default value if provided + if (defaultValue !== undefined) { + return defaultValue; + } + throw error; + } +}); + +// Use spyOn to mock the query functions +const getLeaderboardSpy = spyOn(queries, "getLeaderboard").mockImplementation( + async () => [], +); + +describe("LeaderboardRepository", () => { + beforeEach(() => { + // Reset all spies before each test + executeOperationSpy.mockClear(); + withDatabaseErrorHandlingSpy.mockClear(); + getLeaderboardSpy.mockClear(); + }); + + describe("getLeaderboard", () => { + test("should return leaderboard data with default timeRange", async () => { + const mockLeaderboard = [ + { + curatorId: "curator1", + curatorUsername: "curator1", + submissionCount: 10, + approvalCount: 8, + rejectionCount: 2, + feedSubmissions: [ + { feedId: "feed1", count: 5, totalInFeed: 20 }, + { feedId: "feed2", count: 5, totalInFeed: 15 }, + ], + }, + { + curatorId: "curator2", + curatorUsername: "curator2", + submissionCount: 5, + approvalCount: 4, + rejectionCount: 1, + feedSubmissions: [ + { feedId: "feed1", count: 3, totalInFeed: 20 }, + { feedId: "feed2", count: 2, totalInFeed: 15 }, + ], + }, + ]; + + getLeaderboardSpy.mockResolvedValueOnce(mockLeaderboard); + + const result = await leaderboardRepository.getLeaderboard(); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(getLeaderboardSpy).toHaveBeenCalledWith({ mockDb: true }, "all"); + expect(result).toEqual(mockLeaderboard); + }); + + test("should return leaderboard data with specified timeRange", async () => { + const timeRange = "month"; + const mockLeaderboard = [ + { + curatorId: "curator1", + curatorUsername: "curator1", + submissionCount: 5, + approvalCount: 4, + rejectionCount: 1, + feedSubmissions: [ + { feedId: "feed1", count: 3, totalInFeed: 10 }, + { feedId: "feed2", count: 2, totalInFeed: 8 }, + ], + }, + ]; + + getLeaderboardSpy.mockResolvedValueOnce(mockLeaderboard); + + const result = await leaderboardRepository.getLeaderboard(timeRange); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(getLeaderboardSpy).toHaveBeenCalledWith( + { mockDb: true }, + timeRange, + ); + expect(result).toEqual(mockLeaderboard); + }); + + test("should handle errors gracefully", async () => { + const error = new Error("Database error"); + + getLeaderboardSpy.mockRejectedValueOnce(error); + + // The withDatabaseErrorHandling function should rethrow the error + // since no default value is provided + await expect(leaderboardRepository.getLeaderboard()).rejects.toThrow( + error, + ); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(getLeaderboardSpy).toHaveBeenCalledWith({ mockDb: true }, "all"); + }); + }); +}); diff --git a/backend/test/unit/repositories/submission.repository.test.ts b/backend/test/unit/repositories/submission.repository.test.ts new file mode 100644 index 00000000..576a2088 --- /dev/null +++ b/backend/test/unit/repositories/submission.repository.test.ts @@ -0,0 +1,438 @@ +import { describe, test, expect, beforeEach, mock, spyOn } from "bun:test"; +import { submissionRepository } from "../../../src/services/db/repositories"; +import * as transaction from "../../../src/services/db/transaction"; +import * as queries from "../../../src/services/db/queries"; +import { SubmissionStatus, Submission } from "../../../src/types/twitter"; + +// Mock the drizzle function +mock.module("drizzle-orm/node-postgres", () => ({ + drizzle: (client) => ({ mockDb: true, client }), +})); + +// Use spyOn to mock the transaction functions +const executeOperationSpy = spyOn( + transaction, + "executeOperation", +).mockImplementation(async (callback, isWrite = false) => { + // Make sure to await the callback to ensure it's executed + return await callback({ mockDb: true }); +}); + +const executeTransactionSpy = spyOn( + transaction, + "executeTransaction", +).mockImplementation(async (callback) => { + return await callback({ mockClient: true }); +}); + +const withDatabaseErrorHandlingSpy = spyOn( + transaction, + "withDatabaseErrorHandling", +).mockImplementation(async (operation, options, defaultValue) => { + try { + // Just directly call the operation function and return its result + return await operation(); + } catch (error) { + // For error tests, return the default value if provided + if (defaultValue !== undefined) { + return defaultValue; + } + throw error; + } +}); + +// Use spyOn to mock the query functions +const saveSubmissionSpy = spyOn(queries, "saveSubmission").mockImplementation( + async () => {}, +); +const saveModerationActionSpy = spyOn( + queries, + "saveModerationAction", +).mockImplementation(async () => {}); +const updateSubmissionFeedStatusSpy = spyOn( + queries, + "updateSubmissionFeedStatus", +).mockImplementation(async () => {}); +const getSubmissionSpy = spyOn(queries, "getSubmission").mockImplementation( + async () => null, +); +const getSubmissionByCuratorTweetIdSpy = spyOn( + queries, + "getSubmissionByCuratorTweetId", +).mockImplementation(async () => null); +const getAllSubmissionsSpy = spyOn( + queries, + "getAllSubmissions", +).mockImplementation(async () => []); +const cleanupOldSubmissionCountsSpy = spyOn( + queries, + "cleanupOldSubmissionCounts", +).mockImplementation(async () => {}); +const getDailySubmissionCountSpy = spyOn( + queries, + "getDailySubmissionCount", +).mockImplementation(async () => 0); +const incrementDailySubmissionCountSpy = spyOn( + queries, + "incrementDailySubmissionCount", +).mockImplementation(async () => {}); +const getPostsCountSpy = spyOn(queries, "getPostsCount").mockImplementation( + async () => 0, +); +const getCuratorsCountSpy = spyOn( + queries, + "getCuratorsCount", +).mockImplementation(async () => 0); + +describe("SubmissionRepository", () => { + beforeEach(() => { + // Reset all spies before each test + executeOperationSpy.mockClear(); + executeTransactionSpy.mockClear(); + withDatabaseErrorHandlingSpy.mockClear(); + saveSubmissionSpy.mockClear(); + saveModerationActionSpy.mockClear(); + updateSubmissionFeedStatusSpy.mockClear(); + getSubmissionSpy.mockClear(); + getSubmissionByCuratorTweetIdSpy.mockClear(); + getAllSubmissionsSpy.mockClear(); + cleanupOldSubmissionCountsSpy.mockClear(); + getDailySubmissionCountSpy.mockClear(); + incrementDailySubmissionCountSpy.mockClear(); + getPostsCountSpy.mockClear(); + getCuratorsCountSpy.mockClear(); + }); + + describe("saveSubmission", () => { + test("should call executeOperation with the correct parameters", async () => { + const submission = { + tweetId: "123", + userId: "user1", + username: "testuser", + content: "Test content", + curatorId: "curator1", + curatorUsername: "curator", + curatorTweetId: "456", + createdAt: new Date(), + submittedAt: new Date(), + moderationHistory: [], + curatorNotes: "Test notes", + }; + + await submissionRepository.saveSubmission(submission); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(saveSubmissionSpy).toHaveBeenCalledWith( + { mockDb: true }, + submission, + ); + }); + }); + + describe("saveModerationAction", () => { + test("should call executeOperation with the correct parameters", async () => { + const moderation = { + tweetId: "123", + feedId: "feed1", + adminId: "admin1", + action: "approve" as const, + timestamp: new Date(), + note: "Approved", + }; + + await submissionRepository.saveModerationAction(moderation); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(saveModerationActionSpy).toHaveBeenCalledWith( + { mockDb: true }, + moderation, + ); + }); + }); + + describe("getSubmission", () => { + test("should return submission with feeds when found", async () => { + const tweetId = "123"; + const mockFeeds = [ + { + submissionId: tweetId, + feedId: "feed1", + status: SubmissionStatus.PENDING, + }, + { + submissionId: tweetId, + feedId: "feed2", + status: SubmissionStatus.APPROVED, + moderationResponseTweetId: "789", + }, + ]; + + const mockSubmission: Submission = { + tweetId, + userId: "user1", + username: "testuser", + content: "Test content", + curatorId: "curator1", + curatorUsername: "curator", + curatorTweetId: "456", + createdAt: new Date(), + submittedAt: new Date(), + moderationHistory: [], + curatorNotes: "Test notes", + feeds: mockFeeds, + }; + + getSubmissionSpy.mockResolvedValueOnce(mockSubmission); + + const result = await submissionRepository.getSubmission(tweetId); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getSubmissionSpy).toHaveBeenCalledWith({ mockDb: true }, tweetId); + expect(result).toEqual(mockSubmission); + }); + + test("should return null when submission not found", async () => { + const tweetId = "123"; + + getSubmissionSpy.mockResolvedValueOnce(null); + + const result = await submissionRepository.getSubmission(tweetId); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getSubmissionSpy).toHaveBeenCalledWith({ mockDb: true }, tweetId); + expect(result).toBeNull(); + }); + + test("should handle database errors gracefully", async () => { + const tweetId = "123"; + + // Mock the executeOperation to throw an error + executeOperationSpy.mockRejectedValueOnce(new Error("Database error")); + + const result = await submissionRepository.getSubmission(tweetId); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(result).toBeNull(); + }); + }); + + describe("getSubmissionByCuratorTweetId", () => { + test("should return submission with feeds when found", async () => { + const curatorTweetId = "456"; + const mockFeeds = [ + { + submissionId: "123", + feedId: "feed1", + status: SubmissionStatus.PENDING, + }, + { + submissionId: "123", + feedId: "feed2", + status: SubmissionStatus.APPROVED, + moderationResponseTweetId: "789", + }, + ]; + + const mockSubmission: Submission = { + tweetId: "123", + userId: "user1", + username: "testuser", + content: "Test content", + curatorId: "curator1", + curatorUsername: "curator", + curatorTweetId, + createdAt: new Date(), + submittedAt: new Date(), + moderationHistory: [], + curatorNotes: "Test notes", + feeds: mockFeeds, + }; + + // Set up the mock to return the mock submission + getSubmissionByCuratorTweetIdSpy.mockResolvedValueOnce(mockSubmission); + + const result = + await submissionRepository.getSubmissionByCuratorTweetId( + curatorTweetId, + ); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getSubmissionByCuratorTweetIdSpy).toHaveBeenCalledWith( + { mockDb: true }, + curatorTweetId, + ); + expect(result).toEqual(mockSubmission); + }); + + test("should return null when submission not found", async () => { + const curatorTweetId = "456"; + + // Set up the mock to return null + getSubmissionByCuratorTweetIdSpy.mockResolvedValueOnce(null); + + const result = + await submissionRepository.getSubmissionByCuratorTweetId( + curatorTweetId, + ); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getSubmissionByCuratorTweetIdSpy).toHaveBeenCalledWith( + { mockDb: true }, + curatorTweetId, + ); + expect(result).toBeNull(); + }); + }); + + describe("getAllSubmissions", () => { + test("should return all submissions", async () => { + const mockSubmissions = [ + { + tweetId: "123", + userId: "user1", + username: "testuser", + content: "Test content", + curatorId: "curator1", + curatorUsername: "curator", + curatorTweetId: "456", + createdAt: new Date(), + submittedAt: new Date(), + moderationHistory: [], + status: SubmissionStatus.PENDING, + feedStatuses: [], + }, + ]; + + getAllSubmissionsSpy.mockResolvedValueOnce(mockSubmissions); + + const result = await submissionRepository.getAllSubmissions(); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getAllSubmissionsSpy).toHaveBeenCalledWith( + { mockDb: true }, + undefined, + ); + expect(result).toEqual(mockSubmissions); + }); + + test("should filter submissions by status", async () => { + const status = SubmissionStatus.APPROVED; + const mockSubmissions = [ + { + tweetId: "123", + userId: "user1", + username: "testuser", + content: "Test content", + curatorId: "curator1", + curatorUsername: "curator", + curatorTweetId: "456", + createdAt: new Date(), + submittedAt: new Date(), + moderationHistory: [], + status: SubmissionStatus.APPROVED, + feedStatuses: [], + }, + ]; + + getAllSubmissionsSpy.mockResolvedValueOnce(mockSubmissions); + + const result = await submissionRepository.getAllSubmissions(status); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getAllSubmissionsSpy).toHaveBeenCalledWith( + { mockDb: true }, + status, + ); + expect(result).toEqual(mockSubmissions); + }); + }); + + describe("getDailySubmissionCount", () => { + test("should clean up old entries and return count", async () => { + const userId = "user1"; + const count = 5; + + getDailySubmissionCountSpy.mockResolvedValueOnce(count); + + const result = await submissionRepository.getDailySubmissionCount(userId); + + // Don't check the exact number of calls as it may vary + expect(executeOperationSpy).toHaveBeenCalled(); + expect(cleanupOldSubmissionCountsSpy).toHaveBeenCalled(); + expect(getDailySubmissionCountSpy).toHaveBeenCalledWith( + { mockDb: true }, + userId, + expect.any(String), + ); + expect(result).toEqual(count); + }); + }); + + describe("incrementDailySubmissionCount", () => { + test("should call executeOperation with the correct parameters", async () => { + const userId = "user1"; + + await submissionRepository.incrementDailySubmissionCount(userId); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(incrementDailySubmissionCountSpy).toHaveBeenCalledWith( + { mockDb: true }, + userId, + ); + }); + }); + + describe("getPostsCount", () => { + test("should return posts count", async () => { + const count = 10; + + getPostsCountSpy.mockResolvedValueOnce(count); + + const result = await submissionRepository.getPostsCount(); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(getPostsCountSpy).toHaveBeenCalledWith({ mockDb: true }); + expect(result).toEqual(count); + }); + + test("should return default value on error", async () => { + // Set up the mock to throw an error + getPostsCountSpy.mockImplementationOnce(() => { + throw new Error("Database error"); + }); + + const result = await submissionRepository.getPostsCount(); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(result).toEqual(0); // Default value + }); + }); + + describe("getCuratorsCount", () => { + test("should return curators count", async () => { + const count = 5; + + getCuratorsCountSpy.mockResolvedValueOnce(count); + + const result = await submissionRepository.getCuratorsCount(); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(getCuratorsCountSpy).toHaveBeenCalledWith({ mockDb: true }); + expect(result).toEqual(count); + }); + + test("should return default value on error", async () => { + // Set up the mock to throw an error + getCuratorsCountSpy.mockImplementationOnce(() => { + throw new Error("Database error"); + }); + + const result = await submissionRepository.getCuratorsCount(); + + expect(withDatabaseErrorHandlingSpy).toHaveBeenCalled(); + expect(result).toEqual(0); // Default value + }); + }); +}); diff --git a/backend/test/unit/repositories/twitter.repository.test.ts b/backend/test/unit/repositories/twitter.repository.test.ts new file mode 100644 index 00000000..3fac80db --- /dev/null +++ b/backend/test/unit/repositories/twitter.repository.test.ts @@ -0,0 +1,252 @@ +import { + describe, + test, + expect, + beforeEach, + afterEach, + mock, + spyOn, +} from "bun:test"; +import { twitterRepository } from "../../../src/services/db/repositories"; +import * as transaction from "../../../src/services/db/transaction"; +import * as twitterQueries from "../../../src/services/twitter/queries"; + +// Use spyOn to mock the transaction functions +const executeOperationSpy = spyOn( + transaction, + "executeOperation", +).mockImplementation(async (callback, isWrite = false) => { + // Make sure to await the callback to ensure it's executed + return await callback({ mockDb: true }); +}); + +const withDatabaseErrorHandlingSpy = spyOn( + transaction, + "withDatabaseErrorHandling", +).mockImplementation(async (operation, options, defaultValue) => { + try { + // Just directly call the operation function and return its result + return await operation(); + } catch (error) { + // For error tests, return the default value if provided + if (defaultValue !== undefined) { + return defaultValue; + } + throw error; + } +}); + +// Use spyOn to mock the twitter query functions +const setTwitterCookiesSpy = spyOn( + twitterQueries, + "setTwitterCookies", +).mockImplementation(async () => {}); +const getTwitterCookiesSpy = spyOn( + twitterQueries, + "getTwitterCookies", +).mockImplementation(async () => null); +const deleteTwitterCookiesSpy = spyOn( + twitterQueries, + "deleteTwitterCookies", +).mockImplementation(async () => {}); +const setTwitterCacheValueSpy = spyOn( + twitterQueries, + "setTwitterCacheValue", +).mockImplementation(async () => {}); +const getTwitterCacheValueSpy = spyOn( + twitterQueries, + "getTwitterCacheValue", +).mockImplementation(async () => null); +const deleteTwitterCacheValueSpy = spyOn( + twitterQueries, + "deleteTwitterCacheValue", +).mockImplementation(async () => {}); +const clearTwitterCacheSpy = spyOn( + twitterQueries, + "clearTwitterCache", +).mockImplementation(async () => {}); + +describe("TwitterRepository", () => { + beforeEach(() => { + // Reset all spies before each test + executeOperationSpy.mockClear(); + withDatabaseErrorHandlingSpy.mockClear(); + setTwitterCookiesSpy.mockClear(); + getTwitterCookiesSpy.mockClear(); + deleteTwitterCookiesSpy.mockClear(); + setTwitterCacheValueSpy.mockClear(); + getTwitterCacheValueSpy.mockClear(); + deleteTwitterCacheValueSpy.mockClear(); + clearTwitterCacheSpy.mockClear(); + }); + + describe("setTwitterCookies", () => { + test("should call executeOperation with the correct parameters", async () => { + const username = "testuser"; + const cookies = [ + { + name: "cookie1", + value: "value1", + domain: "domain", + path: "/", + secure: true, + httpOnly: true, + }, + ]; + + await twitterRepository.setTwitterCookies(username, cookies); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(setTwitterCookiesSpy).toHaveBeenCalledWith( + { mockDb: true }, + username, + JSON.stringify(cookies), + ); + }); + + test("should handle null cookies", async () => { + const username = "testuser"; + + await twitterRepository.setTwitterCookies(username, null); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(setTwitterCookiesSpy).toHaveBeenCalledWith( + { mockDb: true }, + username, + "null", + ); + }); + }); + + describe("getTwitterCookies", () => { + test("should return parsed cookies when found", async () => { + const username = "testuser"; + const cookies = [ + { + name: "cookie1", + value: "value1", + domain: "domain", + path: "/", + secure: true, + httpOnly: true, + }, + ]; + + getTwitterCookiesSpy.mockResolvedValueOnce({ + cookies: JSON.stringify(cookies), + }); + + const result = await twitterRepository.getTwitterCookies(username); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getTwitterCookiesSpy).toHaveBeenCalledWith( + { mockDb: true }, + username, + ); + expect(result).toEqual(cookies); + }); + + test("should return null when no cookies found", async () => { + const username = "testuser"; + + getTwitterCookiesSpy.mockResolvedValueOnce(null); + + const result = await twitterRepository.getTwitterCookies(username); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getTwitterCookiesSpy).toHaveBeenCalledWith( + { mockDb: true }, + username, + ); + expect(result).toBeNull(); + }); + }); + + describe("deleteTwitterCookies", () => { + test("should call executeOperation with the correct parameters", async () => { + const username = "testuser"; + + await twitterRepository.deleteTwitterCookies(username); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(deleteTwitterCookiesSpy).toHaveBeenCalledWith( + { mockDb: true }, + username, + ); + }); + }); + + describe("setTwitterCacheValue", () => { + test("should call executeOperation with the correct parameters", async () => { + const key = "testkey"; + const value = "testvalue"; + + await twitterRepository.setTwitterCacheValue(key, value); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(setTwitterCacheValueSpy).toHaveBeenCalledWith( + { mockDb: true }, + key, + value, + ); + }); + }); + + describe("getTwitterCacheValue", () => { + test("should return cache value when found", async () => { + const key = "testkey"; + const value = "testvalue"; + + getTwitterCacheValueSpy.mockResolvedValueOnce({ value }); + + const result = await twitterRepository.getTwitterCacheValue(key); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getTwitterCacheValueSpy).toHaveBeenCalledWith( + { mockDb: true }, + key, + ); + expect(result).toEqual(value); + }); + + test("should return null when no cache value found", async () => { + const key = "testkey"; + + getTwitterCacheValueSpy.mockResolvedValueOnce(null); + + const result = await twitterRepository.getTwitterCacheValue(key); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(getTwitterCacheValueSpy).toHaveBeenCalledWith( + { mockDb: true }, + key, + ); + expect(result).toBeNull(); + }); + }); + + describe("deleteTwitterCacheValue", () => { + test("should call executeOperation with the correct parameters", async () => { + const key = "testkey"; + + await twitterRepository.deleteTwitterCacheValue(key); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(deleteTwitterCacheValueSpy).toHaveBeenCalledWith( + { mockDb: true }, + key, + ); + }); + }); + + describe("clearTwitterCache", () => { + test("should call executeOperation with the correct parameters", async () => { + await twitterRepository.clearTwitterCache(); + + expect(executeOperationSpy).toHaveBeenCalled(); + expect(clearTwitterCacheSpy).toHaveBeenCalledWith({ + mockDb: true, + }); + }); + }); +}); diff --git a/backend/test/utils/test-data.ts b/backend/test/utils/test-data.ts index e2d2f535..69e006a8 100644 --- a/backend/test/utils/test-data.ts +++ b/backend/test/utils/test-data.ts @@ -105,7 +105,6 @@ export function createMockSubmission(overrides = {}) { curatorNotes: "", createdAt: new Date(), moderationHistory: [], - // Remove feedId and status as they're not part of TwitterSubmission ...overrides, }; } diff --git a/docker-compose.yml b/docker-compose.yml index 2b78b896..cb7c80b0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,6 +22,18 @@ services: volumes: - postgres_data:/var/lib/postgresql/data # dev persists volumes, so you don't lose your setup profiles: ["dev"] + + # Production-specific postgres config + postgres_prod: + extends: postgres + container_name: postgres_prod + environment: + POSTGRES_DB: curatedotfun + ports: + - "5432:5432" + volumes: + - postgres_data_prod:/var/lib/postgresql/data + profiles: ["prod"] # Test-specific postgres config postgres_test: @@ -62,6 +74,18 @@ services: condition: service_healthy command: sh -c "bun add -g pnpm && pnpm install && pnpm run db:migrate && pnpm run db:seed:test" profiles: ["test"] + + # Production-specific initialization + db-init-prod: + extends: db-init + environment: + DATABASE_URL: postgresql://postgres:postgres@postgres_prod:5432/curatedotfun + NODE_ENV: production + depends_on: + postgres_prod: + condition: service_healthy + command: sh -c "bun add -g pnpm && pnpm install && pnpm run db:migrate" + profiles: ["prod"] # Application service app: @@ -69,13 +93,11 @@ services: context: . dockerfile: Dockerfile depends_on: - postgres: + postgres_prod: condition: service_healthy environment: - DATABASE_URL: postgresql://postgres:postgres@postgres_dev:5432/curatedotfun - volumes: - - ./backend:/app/backend - - ./frontend:/app/frontend + DATABASE_URL: postgresql://postgres:postgres@postgres_prod:5432/curatedotfun + NODE_ENV: production env_file: - ./backend/.env ports: @@ -84,3 +106,4 @@ services: volumes: postgres_data: + postgres_data_prod: diff --git a/frontend/src/components/DownloadButton.tsx b/frontend/src/components/DownloadButton.tsx index b91b9ebe..457ba93a 100644 --- a/frontend/src/components/DownloadButton.tsx +++ b/frontend/src/components/DownloadButton.tsx @@ -1,21 +1,16 @@ import { useState } from "react"; -import { - TwitterSubmission, - TwitterSubmissionWithFeedData, -} from "../types/twitter"; +import { Submission, SubmissionWithFeedData } from "../types/twitter"; import { Modal } from "./Modal"; interface DownloadButtonProps { - items: TwitterSubmissionWithFeedData[]; + items: SubmissionWithFeedData[]; feedName?: string | undefined; } const DownloadButton = ({ items, feedName = "all" }: DownloadButtonProps) => { const [isDownloadModalOpen, setIsDownloadModalOpen] = useState(false); - const handleDownload = ( - selectedStatus: "all" | TwitterSubmission["status"], - ) => { + const handleDownload = (selectedStatus: "all" | Submission["status"]) => { const itemsToDownload = items.filter( (item) => selectedStatus === "all" || item.status === selectedStatus, ); diff --git a/frontend/src/components/FeedHeader.tsx b/frontend/src/components/FeedHeader.tsx index 98093dbc..848bf01c 100644 --- a/frontend/src/components/FeedHeader.tsx +++ b/frontend/src/components/FeedHeader.tsx @@ -1,16 +1,13 @@ import StatusFilterButtons from "./StatusFilterButtons"; import DownloadButton from "./DownloadButton"; -import { - TwitterSubmission, - TwitterSubmissionWithFeedData, -} from "../types/twitter"; +import { Submission, SubmissionWithFeedData } from "../types/twitter"; interface FeedHeaderProps { title: string; description: string; - items: TwitterSubmissionWithFeedData[]; - statusFilter: "all" | TwitterSubmission["status"]; - setStatusFilter: (status: "all" | TwitterSubmission["status"]) => void; + items: SubmissionWithFeedData[]; + statusFilter: "all" | Submission["status"]; + setStatusFilter: (status: "all" | Submission["status"]) => void; feedName?: string | undefined; } diff --git a/frontend/src/components/FeedItem.tsx b/frontend/src/components/FeedItem.tsx index 5abbe39c..06bff428 100644 --- a/frontend/src/components/FeedItem.tsx +++ b/frontend/src/components/FeedItem.tsx @@ -2,7 +2,7 @@ import { HiExternalLink, HiChevronDown, HiChevronUp } from "react-icons/hi"; import { FeedStatus, SubmissionStatus, - TwitterSubmissionWithFeedData, + SubmissionWithFeedData, } from "../types/twitter"; import { getTweetUrl, handleApprove, handleReject } from "../lib/twitter"; import { useBotId } from "../lib/config"; @@ -50,7 +50,7 @@ const StatusBadge = ({ feedName, clickable = false, }: { - status: TwitterSubmissionWithFeedData["status"]; + status: SubmissionWithFeedData["status"]; feedId?: string; feedName?: string; clickable?: boolean; @@ -254,7 +254,7 @@ const NotesSection = ({ const ModerationActions = ({ submission, }: { - submission: TwitterSubmissionWithFeedData; + submission: SubmissionWithFeedData; }) => { const botId = useBotId(); @@ -277,7 +277,7 @@ const ModerationActions = ({ }; interface FeedItemProps { - submission: TwitterSubmissionWithFeedData; + submission: SubmissionWithFeedData; statusFilter: "all" | SubmissionStatus; } diff --git a/frontend/src/components/StatusFilterButtons.tsx b/frontend/src/components/StatusFilterButtons.tsx index 284c24e5..74d5c989 100644 --- a/frontend/src/components/StatusFilterButtons.tsx +++ b/frontend/src/components/StatusFilterButtons.tsx @@ -1,8 +1,8 @@ -import { SubmissionStatus, TwitterSubmission } from "../types/twitter"; +import { SubmissionStatus, Submission } from "../types/twitter"; interface StatusFilterButtonsProps { - statusFilter: "all" | TwitterSubmission["status"]; - setStatusFilter: (status: "all" | TwitterSubmission["status"]) => void; + statusFilter: "all" | Submission["status"]; + setStatusFilter: (status: "all" | Submission["status"]) => void; } const StatusFilterButtons = ({ diff --git a/frontend/src/components/SubmissionList.tsx b/frontend/src/components/SubmissionList.tsx index 8753a5ec..5ce9fbf1 100644 --- a/frontend/src/components/SubmissionList.tsx +++ b/frontend/src/components/SubmissionList.tsx @@ -1,12 +1,9 @@ -import { - TwitterSubmission, - TwitterSubmissionWithFeedData, -} from "../types/twitter"; +import { Submission, SubmissionWithFeedData } from "../types/twitter"; import FeedItem from "./FeedItem"; interface SubmissionListProps { - items: TwitterSubmissionWithFeedData[]; - statusFilter: "all" | TwitterSubmission["status"]; + items: SubmissionWithFeedData[]; + statusFilter: "all" | Submission["status"]; botId: string | undefined; feedId?: string | undefined; } diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 30f48eab..c19e5d33 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -1,6 +1,6 @@ import { useMutation, useQuery, useInfiniteQuery } from "@tanstack/react-query"; import type { AppConfig, FeedConfig } from "../types/config"; -import type { TwitterSubmissionWithFeedData } from "../types/twitter"; +import type { SubmissionWithFeedData } from "../types/twitter"; export function useFeedConfig(feedId: string) { return useQuery({ @@ -16,7 +16,7 @@ export function useFeedConfig(feedId: string) { } export function useFeedItems(feedId: string) { - return useQuery({ + return useQuery({ queryKey: ["feed-items", feedId], queryFn: async () => { const response = await fetch(`/api/feed/${feedId}`); @@ -135,9 +135,9 @@ export interface TransformedInfiniteData { export function useAllSubmissions(limit: number = 20, status?: string) { // Use infinite query for direct pagination from the backend return useInfiniteQuery< - PaginatedResponse, + PaginatedResponse, Error, - TransformedInfiniteData, + TransformedInfiniteData, [string, string | undefined], number >({ diff --git a/frontend/src/lib/twitter.ts b/frontend/src/lib/twitter.ts index 0fdda6a3..c3ad87f2 100644 --- a/frontend/src/lib/twitter.ts +++ b/frontend/src/lib/twitter.ts @@ -1,4 +1,4 @@ -import { TwitterSubmissionWithFeedData } from "../types/twitter"; +import { SubmissionWithFeedData } from "../types/twitter"; export const getTweetUrl = (tweetId: string, username: string) => { return `https://x.com/${username}/status/${tweetId}`; @@ -12,7 +12,7 @@ const generateTweetId = () => `${Date.now()}${Math.floor(Math.random() * 1000)}`; export const handleApprove = async ( - submission: TwitterSubmissionWithFeedData, + submission: SubmissionWithFeedData, botId: string, ) => { if (isDev()) { @@ -51,7 +51,7 @@ export const handleApprove = async ( }; export const handleReject = async ( - submission: TwitterSubmissionWithFeedData, + submission: SubmissionWithFeedData, botId: string, ) => { if (isDev()) { @@ -97,7 +97,7 @@ export const getTwitterIntentUrl = ( } & ( | { action: "approve" | "reject"; - submission: TwitterSubmissionWithFeedData; + submission: SubmissionWithFeedData; } | { action: "apply"; submission?: never } ), diff --git a/frontend/src/routes/feed/$feedId.tsx b/frontend/src/routes/feed/$feedId.tsx index f94fe1f0..6a1527ca 100644 --- a/frontend/src/routes/feed/$feedId.tsx +++ b/frontend/src/routes/feed/$feedId.tsx @@ -2,7 +2,7 @@ import { createFileRoute } from "@tanstack/react-router"; import FeedList from "../../components/FeedList"; import Layout from "../../components/Layout"; import { useState } from "react"; -import { TwitterSubmission } from "../../types/twitter"; +import { Submission } from "../../types/twitter"; import { useFeedConfig, useFeedItems } from "../../lib/api"; import { useBotId } from "../../lib/config"; import { getTwitterIntentUrl } from "../../lib/twitter"; @@ -19,7 +19,7 @@ function FeedPage() { const { data: items = [] } = useFeedItems(feedId); const botId = useBotId(); const [statusFilter, setStatusFilter] = useState< - "all" | TwitterSubmission["status"] + "all" | Submission["status"] >("all"); const sidebarContent = ( diff --git a/frontend/src/routes/feed/index.tsx b/frontend/src/routes/feed/index.tsx index 38a0e4ed..3c3f3fbc 100644 --- a/frontend/src/routes/feed/index.tsx +++ b/frontend/src/routes/feed/index.tsx @@ -2,7 +2,7 @@ import { createFileRoute } from "@tanstack/react-router"; import FeedList from "../../components/FeedList"; import Layout from "../../components/Layout"; import { useState } from "react"; -import { TwitterSubmission } from "../../types/twitter"; +import { Submission } from "../../types/twitter"; import { useBotId } from "../../lib/config"; import { useAllSubmissions } from "../../lib/api"; import FeedHeader from "../../components/FeedHeader"; @@ -16,7 +16,7 @@ export const Route = createFileRoute("/feed/")({ function FeedIndexPage() { const botId = useBotId(); const [statusFilter, setStatusFilter] = useState< - "all" | TwitterSubmission["status"] + "all" | Submission["status"] >("all"); // Fetch submissions with infinite scroll diff --git a/memory-bank/activeContext.md b/memory-bank/activeContext.md index b8495c5a..fa04bb8a 100644 --- a/memory-bank/activeContext.md +++ b/memory-bank/activeContext.md @@ -65,6 +65,8 @@ Comprehensive Error Handling, Database Configuration, Test Coverage, and Securit - Improved scalability - Read/write separation capability - Transaction support with retry logic + - Repository pattern for domain-specific operations + - Modular database service architecture - Docker-based development environment 4. **Module Federation for Plugin System** - Runtime loading without rebuilds @@ -91,20 +93,37 @@ Comprehensive Error Handling, Database Configuration, Test Coverage, and Securit ## Current Focus Areas 1. Implementing comprehensive error handling solution + - āœ… Added comprehensive error handling to database repositories + - āœ… Implemented transaction-based operations for data consistency + - āœ… Added default values for graceful degradation + - āœ… Enhanced error logging with context 2. Moving configuration to database 3. Completing test coverage + - āœ… Added tests for error handling scenarios + - āœ… Added tests for transaction-based operations 4. Adding database protections for Web3Auth 5. Enhancing monitoring and logging + - āœ… Improved database operation logging 6. Improving performance and scalability +7. Migrating to repository pattern for database operations + - āœ… Completed initial reorganization + - āœ… Consolidated duplicate status update logic + - āœ… Implemented transaction-based operations for related data + - āœ… Added comprehensive error handling to all repository methods + - āœ… Improved testability and maintainability ## Next Steps -1. Design and implement error handling framework +1. Complete implementation of error handling framework for other services 2. Create database schema for configuration storage 3. Develop migration plan for configuration 4. Implement Web3Auth integration 5. Add database security measures 6. Expand test coverage for critical flows -7. Enhance monitoring and logging +7. Further enhance monitoring and logging +8. Complete full migration to repository pattern + - Update remaining service files to use repositories + - Remove backward compatibility layer + - Add more comprehensive tests for repositories ## Validated Solutions 1. Twitter-based submission and moderation diff --git a/memory-bank/progress.md b/memory-bank/progress.md index c71dc027..01e619fe 100644 --- a/memory-bank/progress.md +++ b/memory-bank/progress.md @@ -55,6 +55,8 @@ - [x] Docker-based development environment - [x] Migration scripts - [x] Database service implementation + - [x] Repository pattern implementation + - [x] Modular database service architecture - [x] Testing infrastructure with isolated test databases - [x] Docker containerization - [x] Multi-stage build process @@ -69,20 +71,35 @@ ### In Progress - [ ] Comprehensive error handling solution + - [x] Database repositories error handling implemented + - [x] Transaction-based operations for data consistency + - [ ] Error handling for other services - [ ] Moving configuration to database - [ ] Completing test coverage + - [x] Tests for database error handling + - [x] Tests for transaction-based operations + - [ ] Tests for other services - [ ] Database protections for Web3Auth +- [ ] Full migration to repository pattern for database operations + - [x] Initial reorganization completed + - [x] Consolidated duplicate status update logic + - [x] Transaction-based operations for related data + - [x] Comprehensive error handling in repositories + - [ ] Update remaining service files to use repositories + - [ ] Remove backward compatibility layer - [ ] Recap functionality - [ ] Enhanced analytics - [ ] Additional distributor plugins ## Next Actions -1. Implement comprehensive error handling solution - - Design error type hierarchy - - Implement error recovery mechanisms - - Enhance error logging - - Add graceful degradation - - Create user-friendly error messages +1. Complete comprehensive error handling solution + - [x] Add error handling to database repositories + - [x] Implement transaction-based operations + - [x] Add default values for graceful degradation + - [x] Enhance error logging with context + - [ ] Design error type hierarchy for other services + - [ ] Implement error recovery mechanisms for other services + - [ ] Create user-friendly error messages 2. Move configuration to database - Design database schema for configuration diff --git a/memory-bank/systemPatterns.md b/memory-bank/systemPatterns.md index dd0589a6..e696cb74 100644 --- a/memory-bank/systemPatterns.md +++ b/memory-bank/systemPatterns.md @@ -47,16 +47,33 @@ 1. **PostgreSQL with Drizzle ORM** - Read/write separation with connection pools - Transaction support with retry logic - - Error handling and connection management - - Singleton pattern for database service - -2. **Development Environment** + - Comprehensive error handling with context-rich logging + - Default values for graceful degradation + - Repository pattern for domain-specific database operations + - Transaction-based operations for related data + - Modular organization with clear separation of concerns + +2. **Database Service Structure** + - Connection management (connection.ts) + - Transaction utilities (transaction.ts) + * executeOperation - For single database operations + * executeTransaction - For multi-step operations requiring atomicity + * withDatabaseErrorHandling - For consistent error handling + - Domain-specific repositories (repositories/) + * Twitter repository + * Submission repository + * Feed repository + * Leaderboard repository + - Consolidated status update logic + - Backward compatibility layer for gradual migration + +3. **Development Environment** - Docker Compose for local development - PostgreSQL container with persistent volume - Automatic migrations on startup - Seed data scripts from SQLite -3. **Testing Environment** +4. **Testing Environment** - Isolated test databases - Automated cleanup between test runs - Mock system for unit tests diff --git a/memory-bank/techContext.md b/memory-bank/techContext.md index 3972211c..2c2058ab 100644 --- a/memory-bank/techContext.md +++ b/memory-bank/techContext.md @@ -6,7 +6,7 @@ - **Runtime**: Node.js - **Framework**: Hono - **Language**: TypeScript -- **Database**: PostgreSQL with Drizzle ORM (with DB service abstraction) +- **Database**: PostgreSQL with Drizzle ORM (with repository pattern) - **Build Tool**: RSPack - **Package Manager**: pnpm (with Corepack) - **Script Runner**: Bun (for tests and development scripts) diff --git a/memory-bank/testingPlan.md b/memory-bank/testingPlan.md index 80dc74fd..15379f05 100644 --- a/memory-bank/testingPlan.md +++ b/memory-bank/testingPlan.md @@ -210,6 +210,58 @@ backend/ - Clean Up All Mocks Before Every Test - Be Mindful About the Mocking Mechanism - Type your mocks + - Use spyOn for direct function mocking + - Prefer direct function mocking over module mocking when possible + - Ensure mocked functions properly handle async operations + +## Mocking Best Practices + +### Using spyOn for Direct Function Mocking + +When mocking functions that are imported directly, use `spyOn` to create a spy on the function: + +```typescript +// Import the module containing the functions to mock +import * as transaction from "../../../src/services/db/transaction"; + +// Create a spy on the function +const executeOperationSpy = spyOn(transaction, "executeOperation").mockImplementation(async (callback, isWrite = false) => { + // Implement the mock behavior + return await callback({ mockDb: true }); +}); + +// In your test, you can then assert that the function was called +expect(executeOperationSpy).toHaveBeenCalled(); +``` + +### Handling Async Operations in Mocks + +When mocking functions that return promises, make sure to properly handle async operations: + +```typescript +// For functions that return a value +const getSubmissionSpy = spyOn(queries, "getSubmission").mockImplementation(async () => { + return { id: "123", name: "Test Submission" }; +}); + +// For functions that might need to return different values in different tests +getSubmissionSpy.mockResolvedValueOnce({ id: "123", name: "Test Submission" }); + +// For functions that should throw an error +getSubmissionSpy.mockRejectedValueOnce(new Error("Database error")); +``` + +### Cleaning Up Mocks Between Tests + +Always reset your mocks before each test to ensure test isolation: + +```typescript +beforeEach(() => { + // Reset all spies before each test + executeOperationSpy.mockClear(); + getSubmissionSpy.mockClear(); +}); +``` ## Implementation Steps diff --git a/package.json b/package.json index e306fb38..455797fc 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "scripts": { "dev": "docker-compose --profile dev up -d postgres_dev && docker-compose --profile dev run --rm db-init-dev && turbo run dev", "build": "turbo run build", - "start": "turbo run start --filter=@curatedotfun/backend", + "start": "docker-compose --profile prod up -d --build postgres_prod && docker-compose --profile prod run --rm db-init-prod && docker-compose --profile prod up -d --build app", "test": "docker-compose --profile test up -d postgres_test && docker-compose --profile test run --rm db-init-test && turbo run test --filter=@curatedotfun/backend || true && docker-compose --profile test down -v", "test:ci": "turbo run test --filter=@curatedotfun/backend", "lint": "turbo run lint", From 98fb5f4447353d54a204e041a3c74b3c96e94627 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 7 Apr 2025 10:29:35 -0500 Subject: [PATCH 009/113] make db:migrate accessible --- package.json | 1 + turbo.json | 3 +++ 2 files changed, 4 insertions(+) diff --git a/package.json b/package.json index 455797fc..70ee4b29 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "clean": "turbo run clean", "fmt": "prettier --write '**/*.{js,jsx,ts,tsx,json}'", "fmt:check": "prettier --check '**/*.{js,jsx,ts,tsx,json}'", + "db:migrate": "turbo run db:migrate --filter=@curatedotfun/backend", "prepare": "corepack enable" }, "type": "module" diff --git a/turbo.json b/turbo.json index 96f5b7cb..4ed158a2 100644 --- a/turbo.json +++ b/turbo.json @@ -28,6 +28,9 @@ }, "clean": { "cache": false + }, + "db:migrate": { + "cache": false } } } From 7ff34997a6d22642f74575290fe3a82e36252662 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 7 Apr 2025 10:32:37 -0500 Subject: [PATCH 010/113] fix command --- package.json | 2 +- turbo.json | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index 70ee4b29..84e69009 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "clean": "turbo run clean", "fmt": "prettier --write '**/*.{js,jsx,ts,tsx,json}'", "fmt:check": "prettier --check '**/*.{js,jsx,ts,tsx,json}'", - "db:migrate": "turbo run db:migrate --filter=@curatedotfun/backend", + "db:migrate": "cd backend && pnpm db:migrate", "prepare": "corepack enable" }, "type": "module" diff --git a/turbo.json b/turbo.json index 4ed158a2..96f5b7cb 100644 --- a/turbo.json +++ b/turbo.json @@ -28,9 +28,6 @@ }, "clean": { "cache": false - }, - "db:migrate": { - "cache": false } } } From acedc5ed083fd386185aba07e437c9d92757b215 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 7 Apr 2025 11:52:45 -0500 Subject: [PATCH 011/113] fix dev script and allowed origins --- README.md | 42 +- backend/.env.example | 3 + backend/.env.test | 5 +- backend/README.md | 52 +- backend/package.json | 2 +- backend/pnpm-lock.yaml | 64 +- backend/scripts/dev-server.js | 174 +- backend/src/app.ts | 24 +- backend/src/index.ts | 15 +- backend/src/services/config/config.service.ts | 7 +- backend/src/utils/config.ts | 23 + docker-compose.yml | 6 +- package.json | 3 +- pnpm-lock.yaml | 1442 ++++++++--------- scripts/dev.sh | 120 ++ 15 files changed, 1085 insertions(+), 897 deletions(-) create mode 100755 scripts/dev.sh diff --git a/README.md b/README.md index b9c33485..284d3321 100644 --- a/README.md +++ b/README.md @@ -172,17 +172,38 @@ This will install dependencies for all packages in the monorepo. ### Running the app +Make sure [Docker Desktop](https://www.docker.com/products/docker-desktop/) (or [Orbstack](https://orbstack.dev/) on MacOS) is running before starting the development servers. + Start both frontend and backend development servers: ```bash -npm run dev +pnpm run dev ``` +This command: + +- Starts a PostgreSQL container for development +- Initializes the database with migrations and seed data +- Starts the frontend and backend development servers +- Preserves your database data between runs + This will launch: - Frontend at - Backend at +For a fresh start with a clean database: + +```bash +pnpm run dev:fresh +``` + +This command performs the same steps as `pnpm run dev` but removes any existing database volumes for a clean slate. + +When you're done, press Ctrl+C (or Cmd+C on Mac) to stop all services. The command will automatically clean up Docker containers while preserving your database data (unless you used the `dev:fresh` command). + +You can customize the development seed data by modifying `backend/scripts/seed-dev.ts`. + ### Building for production Build all packages: @@ -193,15 +214,28 @@ npm run build ### Deploying -For deployment instructions, see our [Deployment Guide](https://docs.curate.fun/docs/developers/deployment). +Start the application in production mode: + +```bash +pnpm run start +``` + +For detailed deployment instructions, see our [Deployment Guide](https://docs.curate.fun/docs/developers/deployment). ### Running tests ```bash -npm run test +pnpm run test ``` -Tests are located in the backend's `src/__tests__` directory. Run them using `npm run test`. +This command: + +- Starts a dedicated PostgreSQL container for testing +- Initializes the test database with migrations and test seed data +- Runs the test suite +- Automatically cleans up all test containers and volumes when complete + +Tests are located in the backend's `test` directory. Test seed data is located in `backend/test/setup/seed-test.ts`. ## Configuration & Usage diff --git a/backend/.env.example b/backend/.env.example index 829bcd9a..00f45041 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -8,6 +8,9 @@ TWITTER_2FA_SECRET=your_twitter_2fa NODE_ENV=development DATABASE_URL=postgresql://postgres:postgres@postgres_dev:5432/curatedotfun # Configured in docker-compose +# CORS Configuration +ALLOWED_ORIGINS=https://example.com,https://api.example.com + #PLUGINS # Telegram Distributor Configuration diff --git a/backend/.env.test b/backend/.env.test index 6dc2c98f..ca3b6959 100644 --- a/backend/.env.test +++ b/backend/.env.test @@ -2,4 +2,7 @@ NODE_ENV=test # Database configuration for PostgreSQL -DATABASE_URL=postgresql://postgres:postgres@localhost:54321/test \ No newline at end of file +DATABASE_URL=postgresql://postgres:postgres@localhost:54321/test + +# CORS Configuration for testing +ALLOWED_ORIGINS=https://test.example.com diff --git a/backend/README.md b/backend/README.md index 05b48605..bda49f30 100644 --- a/backend/README.md +++ b/backend/README.md @@ -101,24 +101,64 @@ cp .env.example .env 3. Start development server: +Make sure [Docker Desktop](https://www.docker.com/products/docker-desktop/) (or [Orbstack](https://orbstack.dev/) on MacOS) is running before starting the development server. + ```bash -bun run dev +# From the root directory +pnpm run dev ``` -### Testing +This command: -Run the test suite: +- Starts a PostgreSQL container for development +- Initializes the database with migrations and seed data +- Starts the backend server in watch mode +- Preserves your database data between runs + +For a fresh start with a clean database: + +```bash +# From the root directory +pnpm run dev:fresh +``` + +This command performs the same steps as `pnpm run dev` but removes any existing database volumes for a clean slate. + +When you're done, press Ctrl+C (or Cmd+C on Mac) to stop all services. The command will automatically clean up Docker containers while preserving your database data (unless you used the `dev:fresh` command). + +4. Modifying seed data: + +Development seed data is located in `backend/scripts/seed-dev.ts`. You can modify this file to customize the initial data loaded into your development database. + +5. Production deployment: ```bash -bun test +# From the root directory +pnpm run start ``` -Run tests in watch mode during development: +This command starts the application in production mode with a PostgreSQL database. + +For detailed deployment instructions, see the [Deployment Guide](https://docs.curate.fun/docs/developers/deployment). + +### Testing + +Run the test suite: ```bash -bun test --watch +# From the root directory +pnpm run test ``` +This command: + +- Starts a dedicated PostgreSQL container for testing +- Initializes the test database with migrations and test seed data +- Runs the test suite +- Automatically cleans up all test containers and volumes when complete + +Test seed data is located in `backend/test/setup/seed-test.ts`. You can modify this file to customize the test data. + API documentation is available at `/swagger` when running the development server. ## Plugin Development diff --git a/backend/package.json b/backend/package.json index eccc568e..41c60fb6 100644 --- a/backend/package.json +++ b/backend/package.json @@ -4,7 +4,7 @@ "scripts": { "build": "rspack build", "start": "node dist/main.js", - "dev": "concurrently \"NODE_ENV=development rspack build --watch\" \"wait-on -d 500 dist/main.js && node scripts/dev-server.js\"", + "dev": "NODE_ENV=development concurrently --kill-others-on-fail \"rspack build --watch\" \"wait-on -d 500 dist/main.js && node scripts/dev-server.js\"", "test": "bun test", "clean": "rm -rf dist coverage .turbo", "db:generate": "drizzle-kit generate --config drizzle.config.ts", diff --git a/backend/pnpm-lock.yaml b/backend/pnpm-lock.yaml index dc40bca6..d47e4329 100644 --- a/backend/pnpm-lock.yaml +++ b/backend/pnpm-lock.yaml @@ -74,13 +74,13 @@ importers: version: 0.0.5 '@module-federation/node': specifier: ^2.6.30 - version: 2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.19.12)) + version: 2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.99.0(esbuild@0.19.12)) '@rspack/binding': specifier: 1.2.8 version: 1.2.8 '@rspack/cli': specifier: 1.2.8 - version: 1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) + version: 1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12)) '@rspack/core': specifier: 1.2.8 version: 1.2.8(@swc/helpers@0.5.13) @@ -1146,8 +1146,8 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - caniuse-lite@1.0.30001711: - resolution: {integrity: sha512-OpFA8GsKtoV3lCcsI3U5XBAV+oVrMu96OS8XafKqnhOaEAW2mveD1Mx81Sx/02chERwhDakuXs28zbyEc4QMKg==} + caniuse-lite@1.0.30001712: + resolution: {integrity: sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==} chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} @@ -2853,8 +2853,8 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - webpack@5.98.0: - resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} + webpack@5.99.0: + resolution: {integrity: sha512-//MpHjkKV7dhKheJ1lJuHkR6tv8ycfYy7YVzVhhIpwKuKCu5/Zty/vGpFi0fV2RRAWTYDuj6oKn4vYyLzRh55g==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -3272,7 +3272,7 @@ snapshots: '@modern-js/utils@2.65.1': dependencies: '@swc/helpers': 0.5.13 - caniuse-lite: 1.0.30001711 + caniuse-lite: 1.0.30001712 lodash: 4.17.21 rslog: 1.2.3 @@ -3330,7 +3330,7 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/enhanced@0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.19.12))': + '@module-federation/enhanced@0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.99.0(esbuild@0.19.12))': dependencies: '@module-federation/bridge-react-webpack-plugin': 0.11.3 '@module-federation/cli': 0.11.3(typescript@5.8.3) @@ -3347,7 +3347,7 @@ snapshots: upath: 2.0.1 optionalDependencies: typescript: 5.8.3 - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) transitivePeerDependencies: - '@rspack/core' - bufferutil @@ -3386,16 +3386,16 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/node@2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.19.12))': + '@module-federation/node@2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.99.0(esbuild@0.19.12))': dependencies: - '@module-federation/enhanced': 0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.98.0(esbuild@0.19.12)) + '@module-federation/enhanced': 0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)(webpack@5.99.0(esbuild@0.19.12)) '@module-federation/runtime': 0.11.3 '@module-federation/sdk': 0.11.3 - '@module-federation/utilities': 3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12)) + '@module-federation/utilities': 3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.0(esbuild@0.19.12)) btoa: 1.2.1 encoding: 0.1.13 node-fetch: 2.7.0(encoding@0.1.13) - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -3465,10 +3465,10 @@ snapshots: fs-extra: 9.1.0 resolve: 1.22.8 - '@module-federation/utilities@3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12))': + '@module-federation/utilities@3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.0(esbuild@0.19.12))': dependencies: '@module-federation/sdk': 0.11.3 - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -3538,11 +3538,11 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.2.8 '@rspack/binding-win32-x64-msvc': 1.2.8 - '@rspack/cli@1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': + '@rspack/cli@1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12))': dependencies: '@discoveryjs/json-ext': 0.5.7 '@rspack/core': 1.2.8(@swc/helpers@0.5.13) - '@rspack/dev-server': 1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) + '@rspack/dev-server': 1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12)) colorette: 2.0.20 exit-hook: 4.0.0 interpret: 3.1.1 @@ -3563,11 +3563,11 @@ snapshots: '@module-federation/runtime-tools': 0.8.4 '@rspack/binding': 1.2.8 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001711 + caniuse-lite: 1.0.30001712 optionalDependencies: '@swc/helpers': 0.5.13 - '@rspack/dev-server@1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': + '@rspack/dev-server@1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12))': dependencies: '@rspack/core': 1.2.8(@swc/helpers@0.5.13) chokidar: 3.6.0 @@ -3576,8 +3576,8 @@ snapshots: http-proxy-middleware: 2.0.7(@types/express@4.17.21) mime-types: 2.1.35 p-retry: 4.6.2 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.19.12)) - webpack-dev-server: 5.0.4(webpack@5.98.0(esbuild@0.19.12)) + webpack-dev-middleware: 7.4.2(webpack@5.99.0(esbuild@0.19.12)) + webpack-dev-server: 5.0.4(webpack@5.99.0(esbuild@0.19.12)) ws: 8.18.1 transitivePeerDependencies: - '@types/express' @@ -3923,7 +3923,7 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001711 + caniuse-lite: 1.0.30001712 electron-to-chromium: 1.5.132 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -3960,7 +3960,7 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - caniuse-lite@1.0.30001711: {} + caniuse-lite@1.0.30001712: {} chalk@3.0.0: dependencies: @@ -5509,14 +5509,14 @@ snapshots: tapable@2.2.1: {} - terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.98.0(esbuild@0.19.12)): + terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.99.0(esbuild@0.19.12)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) optionalDependencies: esbuild: 0.19.12 @@ -5642,7 +5642,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.19.12)): + webpack-dev-middleware@7.4.2(webpack@5.99.0(esbuild@0.19.12)): dependencies: colorette: 2.0.20 memfs: 4.17.0 @@ -5651,9 +5651,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.0 optionalDependencies: - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) - webpack-dev-server@5.0.4(webpack@5.98.0(esbuild@0.19.12)): + webpack-dev-server@5.0.4(webpack@5.99.0(esbuild@0.19.12)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -5683,10 +5683,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.19.12)) + webpack-dev-middleware: 7.4.2(webpack@5.99.0(esbuild@0.19.12)) ws: 8.18.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) transitivePeerDependencies: - bufferutil - debug @@ -5695,7 +5695,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.98.0(esbuild@0.19.12): + webpack@5.99.0(esbuild@0.19.12): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -5717,7 +5717,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.98.0(esbuild@0.19.12)) + terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.99.0(esbuild@0.19.12)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/backend/scripts/dev-server.js b/backend/scripts/dev-server.js index 6c3ecf53..0be9642c 100755 --- a/backend/scripts/dev-server.js +++ b/backend/scripts/dev-server.js @@ -16,54 +16,93 @@ if (fs.existsSync(envPath)) { envVars = dotenv.parse(fs.readFileSync(envPath)); } else { console.warn(`āš ļø No .env file found at ${envPath}`); + // Create a default .env file with DATABASE_URL if it doesn't exist + if (process.env.DATABASE_URL) { + console.log(`šŸ“ Creating default .env file with DATABASE_URL`); + fs.writeFileSync(envPath, `DATABASE_URL=${process.env.DATABASE_URL}\n`); + envVars = { DATABASE_URL: process.env.DATABASE_URL }; + } } let serverProcess = null; +let isRestarting = false; // Function to start or restart the server function startServer() { + // Prevent multiple restarts from happening simultaneously + if (isRestarting) return; + isRestarting = true; + // Kill existing server process if it exists if (serverProcess) { console.log("šŸ”„ Restarting server..."); - serverProcess.kill(); + serverProcess.kill("SIGTERM"); + + // Give the process some time to shut down gracefully + setTimeout(() => { + launchNewServer(); + }, 500); + } else { + launchNewServer(); } +} - // Start the server - serverProcess = spawn("node", [mainJsPath], { - stdio: "inherit", - env: { - ...process.env, - ...envVars, - NODE_ENV: "development", - }, - }); - - serverProcess.on("error", (error) => { - console.error("Failed to start server:", error); - }); - - serverProcess.on("exit", (code, signal) => { - if (signal !== "SIGTERM") { - console.log( - `Server process exited with code ${code} and signal ${signal}`, - ); - } - }); +function launchNewServer() { + try { + // Start the server + serverProcess = spawn("node", [mainJsPath], { + stdio: "inherit", + env: { + ...process.env, + ...envVars, + NODE_ENV: "development", + }, + }); + + serverProcess.on("error", (error) => { + console.error("Failed to start server:", error); + isRestarting = false; + }); + + serverProcess.on("exit", (code, signal) => { + if (signal !== "SIGTERM") { + console.log( + `Server process exited with code ${code} and signal ${signal}`, + ); + } + isRestarting = false; + }); + + // Reset the restarting flag after a short delay + setTimeout(() => { + isRestarting = false; + }, 1000); + } catch (error) { + console.error("Error launching server:", error); + isRestarting = false; + } } // Track if this is the first build let initialBuildTime = 0; +let lastRestartTime = 0; // Initial server start // Wait a bit to ensure the initial build is complete setTimeout(() => { if (fs.existsSync(mainJsPath)) { - // Record the initial build time - initialBuildTime = fs.statSync(mainJsPath).mtimeMs; - startServer(); + try { + // Record the initial build time + initialBuildTime = fs.statSync(mainJsPath).mtimeMs; + lastRestartTime = Date.now(); + startServer(); - // Start watching for changes after the initial server start - setupWatcher(); + // Start watching for changes after the initial server start + setupWatcher(); + } catch (error) { + console.error("Error during initial server start:", error); + process.exit(1); + } } else { console.error(`āŒ Server entry point not found at ${mainJsPath}`); console.log('Make sure to run "rspack build --watch" first'); @@ -74,26 +113,62 @@ setTimeout(() => { // Setup file watcher after initial server start function setupWatcher() { let debounceTimer; + let watcherInitialized = false; - // Watch for changes in the dist directory - fs.watch(distDir, { recursive: true }, (eventType, filename) => { - // Debounce to avoid multiple restarts for the same build - clearTimeout(debounceTimer); - debounceTimer = setTimeout(() => { - if (filename && filename.endsWith(".js")) { - // Check if this is a new build (not the initial one) - const currentMtime = fs.statSync(path.join(distDir, filename)).mtimeMs; - - // Only restart if this is a new change (not the initial build) - if (currentMtime > initialBuildTime) { - console.log(`šŸ“¦ Detected changes in ${filename}`); - startServer(); - // Update the last build time - initialBuildTime = currentMtime; + try { + // Watch for changes in the dist directory + const watcher = fs.watch( + distDir, + { recursive: true }, + (eventType, filename) => { + if (!watcherInitialized) { + watcherInitialized = true; + return; // Skip initial events } - } - }, 500); // 500ms debounce - }); + + // Debounce to avoid multiple restarts for the same build + clearTimeout(debounceTimer); + debounceTimer = setTimeout(() => { + try { + if (filename && filename.endsWith(".js")) { + const filePath = path.join(distDir, filename); + + // Check if file exists (it might have been deleted) + if (!fs.existsSync(filePath)) { + return; + } + + // Check if this is a new build (not the initial one) + const currentMtime = fs.statSync(filePath).mtimeMs; + const now = Date.now(); + + // Only restart if: + // 1. This is a new change (not the initial build) + // 2. It's been at least 2 seconds since the last restart (prevent rapid restarts) + if ( + currentMtime > initialBuildTime && + now - lastRestartTime > 2000 + ) { + console.log(`šŸ“¦ Detected changes in ${filename}`); + lastRestartTime = now; + startServer(); + } + } + } catch (error) { + console.error("Error in file watcher:", error); + } + }, 500); // 500ms debounce + }, + ); + + watcher.on("error", (error) => { + console.error("File watcher error:", error); + }); + + console.log("šŸ” Watching for file changes in dist directory"); + } catch (error) { + console.error("Failed to setup file watcher:", error); + } } // Handle process termination @@ -104,3 +179,12 @@ process.on("SIGINT", () => { } process.exit(0); }); + +// Handle uncaught exceptions +process.on("uncaughtException", (error) => { + console.error("Uncaught exception:", error); + if (serverProcess) { + serverProcess.kill("SIGTERM"); + } + process.exit(1); +}); diff --git a/backend/src/app.ts b/backend/src/app.ts index 0cf215f9..b90354d6 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -2,8 +2,8 @@ import { cors } from "hono/cors"; import { secureHeaders } from "hono/secure-headers"; import path from "path"; import { apiRoutes } from "./routes/api"; -import { configureStaticRoutes, staticRoutes } from "./routes/static"; import { mockTwitterService } from "./routes/api/test"; +import { configureStaticRoutes, staticRoutes } from "./routes/static"; import { ConfigService, isProduction } from "./services/config/config.service"; import { DistributionService } from "./services/distribution/distribution.service"; import { PluginService } from "./services/plugins/plugin.service"; @@ -12,18 +12,12 @@ import { SubmissionService } from "./services/submissions/submission.service"; import { TransformationService } from "./services/transformation/transformation.service"; import { TwitterService } from "./services/twitter/client"; import { AppContext, AppInstance, HonoApp } from "./types/app"; +import { getAllowedOrigins } from "./utils/config"; import { errorHandler } from "./utils/error"; -const ALLOWED_ORIGINS = [ - "http://localhost:3000", - "http://localhost:5173", // Dev server - "http://localhost:3001", // Local landing page - "https://curatedotfun-floral-sun-1539.fly.dev", - "https://www.curate.fun", // Landing page -]; +const ALLOWED_ORIGINS = getAllowedOrigins(); export async function createApp(): Promise { - // Initialize services const configService = ConfigService.getInstance(); await configService.loadConfig(); @@ -45,7 +39,8 @@ export async function createApp(): Promise { }); await twitterService.initialize(); } else { - // use mock service + // Use mock service in test and development + // You can trigger the mock via the frontend's Test Panel twitterService = mockTwitterService; await twitterService.initialize(); } @@ -84,7 +79,14 @@ export async function createApp(): Promise { app.use( "*", cors({ - origin: ALLOWED_ORIGINS, + origin: (origin) => { + // Check if origin is in the allowed list + if (ALLOWED_ORIGINS.includes(origin)) { + return origin; + } + // Otherwise, allow same-origin requests (frontend) + return origin; + }, allowMethods: ["GET", "POST"], }), ); diff --git a/backend/src/index.ts b/backend/src/index.ts index 2d510a27..c91b726a 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,14 +1,8 @@ -import { config } from "dotenv"; -import path from "path"; +import { loadEnvConfig } from "./utils/config"; -if (isTest) { - config({ path: path.resolve(process.cwd(), "backend/.env.test") }); -} else { - config({ path: path.resolve(process.cwd(), "backend/.env") }); -} +loadEnvConfig(); import { serve } from "@hono/node-server"; -import { isTest } from "./services/config/config.service"; import { AppInstance } from "types/app"; import { createApp } from "./app"; import { dbConnection } from "./services/db"; @@ -31,14 +25,13 @@ async function getInstance(): Promise { const errorMessage = error instanceof Error ? error.message : String(error); const errorStack = error instanceof Error ? error.stack : undefined; - - logger.error("Failed to create app instance:", { + logger.error(`Failed to create app instance: ${errorMessage}`, { error: errorMessage, stack: errorStack, dirname: __dirname, cwd: process.cwd(), }); - console.log(errorMessage); + // console.error(errorMessage); throw new Error(`Failed to initialize application: ${errorMessage}`); } } diff --git a/backend/src/services/config/config.service.ts b/backend/src/services/config/config.service.ts index 14d01595..b1baf2a8 100644 --- a/backend/src/services/config/config.service.ts +++ b/backend/src/services/config/config.service.ts @@ -22,12 +22,9 @@ export class ConfigService { process.cwd(), "test/curate.config.test.json", ); - } else if (isProduction) { - // Dockerfile - this.configPath = path.resolve(process.cwd(), "../curate.config.json"); } else { - // Starting from root - this.configPath = path.resolve(process.cwd(), "./curate.config.json"); + // Dockerfile or dev + this.configPath = path.resolve(process.cwd(), "../curate.config.json"); } logger.info(`Using configuration from: ${this.configPath}`); diff --git a/backend/src/utils/config.ts b/backend/src/utils/config.ts index 4a061b54..4862a949 100644 --- a/backend/src/utils/config.ts +++ b/backend/src/utils/config.ts @@ -1,5 +1,28 @@ +import { config } from "dotenv"; +import path from "path"; +import { isTest } from "../services/config/config.service"; import { logger } from "./logger"; +/** + * Loads environment variables from the appropriate .env file + */ +export function loadEnvConfig(): void { + if (isTest) { + config({ path: path.resolve(process.cwd(), "backend/.env.test") }); + } else { + config({ path: path.resolve(process.cwd(), "backend/.env") }); + } +} + +/** + * Gets the allowed origins for CORS from environment variables + */ +export function getAllowedOrigins(): string[] { + return process.env.ALLOWED_ORIGINS + ? process.env.ALLOWED_ORIGINS.split(",").map((origin) => origin.trim()) + : []; +} + /** * Recursively processes a config object, replacing environment variable placeholders * with their actual values. diff --git a/docker-compose.yml b/docker-compose.yml index cb7c80b0..dc4f570b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -61,7 +61,10 @@ services: depends_on: postgres_dev: condition: service_healthy - command: sh -c "bun add -g pnpm && pnpm install && pnpm run db:migrate && pnpm run db:seed:dev" + volumes: + - ./backend:/app + - node_modules_cache:/app/node_modules # Add persistent volume for node_modules, otherwise this messes with rspack bindings + command: sh -c "if [ ! -d /app/node_modules/.pnpm ]; then echo 'šŸ“¦ Installing dependencies...' && bun add -g pnpm && pnpm install; else echo 'āœ… Dependencies already installed, skipping'; fi && pnpm run db:migrate && pnpm run db:seed:dev" profiles: ["dev"] # Test-specific initialization @@ -107,3 +110,4 @@ services: volumes: postgres_data: postgres_data_prod: + node_modules_cache: # Add persistent volume for node_modules diff --git a/package.json b/package.json index 84e69009..155a82e2 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "packageManager": "pnpm@10.6.4", "private": true, "scripts": { - "dev": "docker-compose --profile dev up -d postgres_dev && docker-compose --profile dev run --rm db-init-dev && turbo run dev", + "dev": "./scripts/dev.sh", + "dev:fresh": "./scripts/dev.sh --fresh", "build": "turbo run build", "start": "docker-compose --profile prod up -d --build postgres_prod && docker-compose --profile prod run --rm db-init-prod && docker-compose --profile prod up -d --build app", "test": "docker-compose --profile test up -d postgres_test && docker-compose --profile test run --rm db-init-test && turbo run test --filter=@curatedotfun/backend || true && docker-compose --profile test down -v", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f1a10ac..fc514150 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@types/node': specifier: ^22.13.13 - version: 22.13.13 + version: 22.14.0 concurrently: specifier: ^9.1.2 version: 9.1.2 @@ -19,7 +19,7 @@ importers: version: 3.5.3 turbo: specifier: latest - version: 2.4.4 + version: 2.5.0 backend: dependencies: @@ -34,7 +34,7 @@ importers: version: 0.1.11(hono@4.7.5)(zod@3.24.2) '@module-federation/runtime': specifier: ^0.11.1 - version: 0.11.2 + version: 0.11.3 '@notionhq/client': specifier: ^2.2.15 version: 2.3.0(encoding@0.1.13) @@ -58,10 +58,10 @@ importers: version: 16.4.7 drizzle-kit: specifier: ^0.30.1 - version: 0.30.5 + version: 0.30.6 drizzle-orm: specifier: ^0.40.1 - version: 0.40.1(@types/pg@8.11.11)(bun-types@1.2.6)(gel@2.0.1)(pg@8.14.1) + version: 0.40.1(@types/pg@8.11.11)(bun-types@1.2.7)(gel@2.0.2)(pg@8.14.1) hono: specifier: ^4.0.5 version: 4.7.5 @@ -89,13 +89,13 @@ importers: version: 0.0.5 '@module-federation/node': specifier: ^2.6.30 - version: 2.6.31(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.98.0(esbuild@0.19.12)) + version: 2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.0(esbuild@0.19.12)) '@rspack/binding': specifier: 1.2.8 version: 1.2.8 '@rspack/cli': specifier: 1.2.8 - version: 1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) + version: 1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12)) '@rspack/core': specifier: 1.2.8 version: 1.2.8(@swc/helpers@0.5.15) @@ -107,7 +107,7 @@ importers: version: 9.1.2 drizzle-seed: specifier: ^0.3.1 - version: 0.3.1(drizzle-orm@0.40.1(@types/pg@8.11.11)(bun-types@1.2.6)(gel@2.0.1)(pg@8.14.1)) + version: 0.3.1(drizzle-orm@0.40.1(@types/pg@8.11.11)(bun-types@1.2.7)(gel@2.0.2)(pg@8.14.1)) nock: specifier: ^13.5.4 version: 13.5.6 @@ -125,13 +125,13 @@ importers: dependencies: '@tailwindcss/typography': specifier: ^0.5.15 - version: 0.5.16(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.13)(typescript@5.6.3))) + version: 0.5.16(tailwindcss@3.4.17) '@tanstack/react-query': specifier: ^5.64.1 - version: 5.69.0(react@18.3.1) + version: 5.72.0(react@18.3.1) '@tanstack/react-router': specifier: ^1.114.15 - version: 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) autoprefixer: specifier: ^10.4.20 version: 10.4.21(postcss@8.5.3) @@ -155,17 +155,17 @@ importers: version: 5.5.0(react@18.3.1) tailwindcss: specifier: ^3.4.16 - version: 3.4.17(ts-node@10.9.2(@types/node@22.13.13)(typescript@5.6.3)) + version: 3.4.17 devDependencies: '@curatedotfun/types': specifier: ^0.0.5 version: 0.0.5 '@eslint/js': specifier: ^9.15.0 - version: 9.23.0 + version: 9.24.0 '@mswjs/data': specifier: ^0.16.2 - version: 0.16.2(@types/node@22.13.13)(typescript@5.6.3) + version: 0.16.2(@types/node@22.14.0)(typescript@5.6.3) '@rsbuild/core': specifier: 1.1.13 version: 1.1.13 @@ -174,43 +174,43 @@ importers: version: 1.1.0(@rsbuild/core@1.1.13) '@tanstack/router-devtools': specifier: ^1.114.15 - version: 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) + version: 1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) '@tanstack/router-plugin': specifier: ^1.114.15 - version: 1.114.27(@rsbuild/core@1.1.13)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.3(@types/node@22.13.13)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(webpack@5.98.0) + version: 1.115.0(@rsbuild/core@1.1.13)(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))(webpack@5.99.0) '@types/bun': specifier: ^1.1.16 - version: 1.2.6 + version: 1.2.8 '@types/react': specifier: ^18.3.12 version: 18.3.20 '@types/react-dom': specifier: ^18.3.1 - version: 18.3.5(@types/react@18.3.20) + version: 18.3.6(@types/react@18.3.20) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.3(@types/node@22.13.13)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) + version: 4.3.4(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1)) eslint: specifier: ^9.15.0 - version: 9.23.0(jiti@1.21.7) + version: 9.24.0(jiti@1.21.7) eslint-plugin-react-hooks: specifier: ^5.0.0 - version: 5.2.0(eslint@9.23.0(jiti@1.21.7)) + version: 5.2.0(eslint@9.24.0(jiti@1.21.7)) eslint-plugin-react-refresh: specifier: ^0.4.14 - version: 0.4.19(eslint@9.23.0(jiti@1.21.7)) + version: 0.4.19(eslint@9.24.0(jiti@1.21.7)) globals: specifier: ^15.12.0 version: 15.15.0 msw: specifier: ^2.7.0 - version: 2.7.3(@types/node@22.13.13)(typescript@5.6.3) + version: 2.7.3(@types/node@22.14.0)(typescript@5.6.3) typescript: specifier: ~5.6.2 version: 5.6.3 typescript-eslint: specifier: ^8.15.0 - version: 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) + version: 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) packages: @@ -331,10 +331,6 @@ packages: '@bundled-es-modules/tough-cookie@0.1.6': resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - '@curatedotfun/types@0.0.5': resolution: {integrity: sha512-thb89PXZHEA2BkVvRbA6b2imiglNDVzPOrdUZswF7q/tsnxGoOCwg7B1u6Y3YrajF7IdWto+TzfNnXUSadjWrA==} @@ -359,8 +355,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.1': - resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + '@esbuild/aix-ppc64@0.25.2': + resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -383,8 +379,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.1': - resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + '@esbuild/android-arm64@0.25.2': + resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -407,8 +403,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.1': - resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + '@esbuild/android-arm@0.25.2': + resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -431,8 +427,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.1': - resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + '@esbuild/android-x64@0.25.2': + resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -455,8 +451,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.1': - resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + '@esbuild/darwin-arm64@0.25.2': + resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -479,8 +475,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.1': - resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + '@esbuild/darwin-x64@0.25.2': + resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -503,8 +499,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.1': - resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + '@esbuild/freebsd-arm64@0.25.2': + resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -527,8 +523,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.1': - resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + '@esbuild/freebsd-x64@0.25.2': + resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -551,8 +547,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.1': - resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + '@esbuild/linux-arm64@0.25.2': + resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -575,8 +571,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.1': - resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + '@esbuild/linux-arm@0.25.2': + resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -599,8 +595,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.1': - resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + '@esbuild/linux-ia32@0.25.2': + resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -623,8 +619,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.1': - resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + '@esbuild/linux-loong64@0.25.2': + resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -647,8 +643,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.1': - resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + '@esbuild/linux-mips64el@0.25.2': + resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -671,8 +667,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.1': - resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + '@esbuild/linux-ppc64@0.25.2': + resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -695,8 +691,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.1': - resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + '@esbuild/linux-riscv64@0.25.2': + resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -719,8 +715,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.1': - resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + '@esbuild/linux-s390x@0.25.2': + resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -743,14 +739,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.1': - resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + '@esbuild/linux-x64@0.25.2': + resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.1': - resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + '@esbuild/netbsd-arm64@0.25.2': + resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -773,14 +769,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.1': - resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + '@esbuild/netbsd-x64@0.25.2': + resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.1': - resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + '@esbuild/openbsd-arm64@0.25.2': + resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -803,8 +799,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.1': - resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + '@esbuild/openbsd-x64@0.25.2': + resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -827,8 +823,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.1': - resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + '@esbuild/sunos-x64@0.25.2': + resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -851,8 +847,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.1': - resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + '@esbuild/win32-arm64@0.25.2': + resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -875,8 +871,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.1': - resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + '@esbuild/win32-ia32@0.25.2': + resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -899,8 +895,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.1': - resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + '@esbuild/win32-x64@0.25.2': + resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -915,32 +911,36 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.19.2': - resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.2.0': - resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} + '@eslint/config-helpers@0.2.1': + resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.12.0': resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.23.0': - resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} + '@eslint/js@9.24.0': + resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.7': - resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@hapi/hoek@9.3.0': @@ -994,8 +994,8 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} - '@inquirer/confirm@5.1.8': - resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==} + '@inquirer/confirm@5.1.9': + resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1003,8 +1003,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.9': - resolution: {integrity: sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==} + '@inquirer/core@10.1.10': + resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1016,8 +1016,8 @@ packages: resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} engines: {node: '>=18'} - '@inquirer/type@3.0.5': - resolution: {integrity: sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==} + '@inquirer/type@3.0.6': + resolution: {integrity: sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1050,9 +1050,6 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@jsonjoy.com/base64@1.1.2': resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} engines: {node: '>=10.0'} @@ -1080,22 +1077,22 @@ packages: '@modern-js/utils@2.65.1': resolution: {integrity: sha512-HrChf19F+6nALo5XPra8ycjhXGQfGi23+S7Y2FLfTKe8vaNnky8duT/XvRWpbS4pp3SQj8ryO8m/qWSsJ1Rogw==} - '@module-federation/bridge-react-webpack-plugin@0.11.2': - resolution: {integrity: sha512-XDJC01XsByG9IwtpWgoTrZdGecN7fmfOEbs/MFLvPAkn9RhPoMJ6X76MSlpsOkwFxK1T7YLkgpVXwdiZKVVXUg==} + '@module-federation/bridge-react-webpack-plugin@0.11.3': + resolution: {integrity: sha512-uaIWbKqs98vROrgG6DJE54ArxTFyVAvjg0JMDjP6s+lp7hXrjATVhnvpsVOyDBCw4ezhrLVVtuThNTpxfIiOrw==} - '@module-federation/cli@0.11.2': - resolution: {integrity: sha512-dIM58VawvWM+UdftVQ/tW8A07LrYRE1260DKJ6feRGbu9NoMV/M35WaNO5HKGHsk1kptXzbZoykkateo7TabrA==} + '@module-federation/cli@0.11.3': + resolution: {integrity: sha512-TQAmEoJBaNpXNZf+dY9mJkIFrwkODp7qbNu9sL6sJ+bLUhoUHoTSoOTKMqdhLTSVJKulf4k8GfYPvKoCKX/FaA==} engines: {node: '>=16.0.0'} hasBin: true - '@module-federation/data-prefetch@0.11.2': - resolution: {integrity: sha512-3HiKo/F51MMjy3Os9sELzxfaSiOcpDXT2zTAvedm4h1XT+nGXq04cKcOQ6rhjl91npKP2wOo/2sE3pWYzrnPhw==} + '@module-federation/data-prefetch@0.11.3': + resolution: {integrity: sha512-m0Iyl2xclAhIX4mVvPaEgytBx+hwQVJQqghKcN7HJR7UF7tvjO+xoJQmNIlxAl5+QOgPyYlJrmWtNTfzQHbcsw==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' - '@module-federation/dts-plugin@0.11.2': - resolution: {integrity: sha512-djZZDq8pTpjfDfXoU2knVOAmjoDWvJHcVScbCNI8zjOtwTvvH26EeOfQligiQxdhsCuGf+MQpeP4o6wqWeJW6w==} + '@module-federation/dts-plugin@0.11.3': + resolution: {integrity: sha512-C43yJySmcwGhmVqisZomlz/OETEUXE7pybfEcrpInKc5FI4o6upLYV4P65jKRS0N+I/U3y6bAsHX4gtIq7XdbA==} peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: '>=1.0.24' @@ -1103,8 +1100,8 @@ packages: vue-tsc: optional: true - '@module-federation/enhanced@0.11.2': - resolution: {integrity: sha512-OlISmj/d0egdGkUOgnVxvyCmoo+eMNBMpiCS3pQj4cnVN4NMs67qxioOD4Q5p04Tzc2jSot2LzRcBM44aTNN2A==} + '@module-federation/enhanced@0.11.3': + resolution: {integrity: sha512-ySRp2tsJFXjw9wOkWPKV0Jmy6GPJfrWDEfEpJIDc5h75dk4Y0sPX3vrdQtZsNz/ofYJN1z3XJRLNzAZdRdYuIg==} hasBin: true peerDependencies: typescript: ^4.9.0 || ^5.0.0 @@ -1118,25 +1115,25 @@ packages: webpack: optional: true - '@module-federation/error-codes@0.11.2': - resolution: {integrity: sha512-ik1Qnn0I+WyEdprTck9WGlH41vGsVdUg8cfO+ZM02qOb2cZm5Vu3SlxGAobj6g7uAj0g8yINnd7h7Dci40BxQA==} + '@module-federation/error-codes@0.11.3': + resolution: {integrity: sha512-RG5cZAJUtlcJLoJiFXevdNRnBxrEye5aDHrDHY7szbO3hBK+XLqKTd0OOVHiGE5tpSy3TMy8qR9xHH4a1Q8bWg==} '@module-federation/error-codes@0.8.4': resolution: {integrity: sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==} - '@module-federation/inject-external-runtime-core-plugin@0.11.2': - resolution: {integrity: sha512-3rUWjos0mb2apXpgebWzGmqXx+8Ky2re4b4QxM8pwsE/9HFn18E/HGURJ/5Ur3Xhw81NjIAVVKxKg3bYSqjVuQ==} + '@module-federation/inject-external-runtime-core-plugin@0.11.3': + resolution: {integrity: sha512-l7MUjXlV6O7h8BSlMC9FlJ0bi9wFz0+PIkn6r7vaE0IuepJ7SuZDzJxtErzTz5OggPOFLygS2r7q+60dNVwh7A==} peerDependencies: - '@module-federation/runtime-tools': 0.11.2 + '@module-federation/runtime-tools': 0.11.3 - '@module-federation/managers@0.11.2': - resolution: {integrity: sha512-nFi0dRgNWpLy0KB85tWhuqbQztTSsUixcbheu/ZSCjVVWShFN6Va2lZg0XyUlXFX/fy4vKrwMBBE5LXxXNubRw==} + '@module-federation/managers@0.11.3': + resolution: {integrity: sha512-9mhP2gCblG5oWA3YRxlfkIZbl9VuQjCATczs+VnS+sgykNZBUhTDj9K//sIN5Zrrd60IBz9HW7xjj8760ERwFw==} - '@module-federation/manifest@0.11.2': - resolution: {integrity: sha512-5yDbq0MmlmCihRJDhFsuJEIGVjZkylybeHn7hwH0LHTtWAClc7APeXDKh7jPHVgOVmgcQBqaIqyHPeuantVydw==} + '@module-federation/manifest@0.11.3': + resolution: {integrity: sha512-UHODiU4g2mogYbud9/RZk73jDPSJtP4GiRSVtZo1OUW9J4qiy16N4FNw47M2OlGsHlgOzQ3igoo2NX7AQudAjA==} - '@module-federation/node@2.6.31': - resolution: {integrity: sha512-La+sF0AVW6mAj70WhtNHohMyqevadi9g6X1q42r0N2YaZMx5h/mqRIw/m04/SJOT4D1bSqD7+/VoSBFy9YhnDQ==} + '@module-federation/node@2.6.32': + resolution: {integrity: sha512-0tGz84UfmvDOWZJTRLo4vk9i7czd+MHz+WsvqkLRHVxGBaiOkUXlQd0Wabig2uTwBftvm3DrTnpz5uxzLkDt4g==} peerDependencies: next: '*' react: ^16||^17||^18||^19 @@ -1150,8 +1147,8 @@ packages: react-dom: optional: true - '@module-federation/rspack@0.11.2': - resolution: {integrity: sha512-oEQXufLbAM7MXDVkE5qE+K3ItrWxlSOHL9db8voo20LvaOe3vwr4rILTj3Ou2Rev4QpLY4eMO7HIwPJBTb6ncQ==} + '@module-federation/rspack@0.11.3': + resolution: {integrity: sha512-1Mhy3L4jL1z+xFCLny5PBL6Fyu6i2eJB/n7sPTqyu/vfO0cgOfxwBxxcEneq0oAJ1er+n6WWcug8IrJ5hIzkTw==} peerDependencies: '@rspack/core': '>=0.7' typescript: ^4.9.0 || ^5.0.0 @@ -1162,11 +1159,11 @@ packages: vue-tsc: optional: true - '@module-federation/runtime-core@0.11.2': - resolution: {integrity: sha512-dia5kKybi6MFU0s5PgglJwN27k7n9Sf69Cy5xZ4BWaP0qlaXTsxHKO0PECHNt2Pt8jDdyU29sQ4DwAQfxpnXJQ==} + '@module-federation/runtime-core@0.11.3': + resolution: {integrity: sha512-xz9++7Z0JXpOepknl2YmIQXzG8hmvLJLRtg7XYHuA1JRXW4vBKaUvvUAqLHvxS9+6FZTb8AAjQ9+8eeAOz5RYg==} - '@module-federation/runtime-tools@0.11.2': - resolution: {integrity: sha512-4MJTGAxVq6vxQRkTtTlH7Mm9AVqgn0X9kdu+7RsL7T/qU+jeYsbrntN2CWG3GVVA8r5JddXyTI1iJ0VXQZLV1w==} + '@module-federation/runtime-tools@0.11.3': + resolution: {integrity: sha512-mN1Ft2O4Khz8PEwNZT7ujWKjVyCKhkInHoMn2n8U8DmOShOlbSQaBR48ZvLP2NTUcbkZbMmWls4q9Ou2UampOw==} '@module-federation/runtime-tools@0.5.1': resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} @@ -1174,8 +1171,8 @@ packages: '@module-federation/runtime-tools@0.8.4': resolution: {integrity: sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==} - '@module-federation/runtime@0.11.2': - resolution: {integrity: sha512-Ya9u/L6z2LvhgpqxuKCB7LcigIIRf1BbaxAZIH7mzbq/A7rZtTP7v+73E433jvgiAlbAfPSZkeoYGele6hfRwA==} + '@module-federation/runtime@0.11.3': + resolution: {integrity: sha512-lGCrWQclRVLP6ryYwdwvmphxRJi1thchO5Q4BbK4MsRxYUMlHGkPi0ygAXwedl6Kaa2ZqhbvlMrUhB+n5PnwNQ==} '@module-federation/runtime@0.5.1': resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} @@ -1183,8 +1180,8 @@ packages: '@module-federation/runtime@0.8.4': resolution: {integrity: sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==} - '@module-federation/sdk@0.11.2': - resolution: {integrity: sha512-SBFe5xOamluT900J4AGBx+2/kCH/JbfqXoUwPSAC6PRzb8Y7LB0posnOGzmqYsLZXT37vp3d6AmJDsVoajDqxw==} + '@module-federation/sdk@0.11.3': + resolution: {integrity: sha512-XzohSaFNbLbEoiwPtYOuoDeInx7vOSYHngfcQqJ356LRzNIPdCMjmtA0WM1YhRkpBchmQ1LXg6HVXy7R7AEKsg==} '@module-federation/sdk@0.5.1': resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} @@ -1192,11 +1189,11 @@ packages: '@module-federation/sdk@0.8.4': resolution: {integrity: sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==} - '@module-federation/third-party-dts-extractor@0.11.2': - resolution: {integrity: sha512-rZuFRH43s68O2KED054Pgd9mV18NWME7Q9ZPuAzN1NGNH/J7Nevyt5MJXrHIaopF/2QpcrYNVjIgdqpRp9FJBg==} + '@module-federation/third-party-dts-extractor@0.11.3': + resolution: {integrity: sha512-c/Lpo2Ve33g5gQW62tcVe8O8NmPdt7gifT4Lu+IgWZpsxdnzTZcS4ujuyu19VCTjevNPxYc2aTtfkYjNtvvbpQ==} - '@module-federation/utilities@3.1.49': - resolution: {integrity: sha512-1fhrrQaXe3F1Z7mkgiwtQf3HmFeTRP6lUdGBu1BvKOK66IMIXlncDUoPKijKoU6xvoQsn9SEooQmGzO2MiTVQA==} + '@module-federation/utilities@3.1.50': + resolution: {integrity: sha512-vDarbdRCryGMzt1mGfh3oXrEAEXytrZd1NfdnLDRDn5K6YR+wdfklJBIG28pFP80Kc0dDjZc+03EqR+yYToPpQ==} peerDependencies: next: '*' react: ^16 || ^17 || ^18 @@ -1210,8 +1207,8 @@ packages: react-dom: optional: true - '@module-federation/webpack-bundler-runtime@0.11.2': - resolution: {integrity: sha512-WdwIE6QF+MKs/PdVu0cKPETF743JB9PZ62/qf7Uo3gU4fjsUMc37RnbJZ/qB60EaHHfjwp1v6NnhZw1r4eVsnw==} + '@module-federation/webpack-bundler-runtime@0.11.3': + resolution: {integrity: sha512-SyLDwwzvR/UxcJi3vcSevcL0/NmbiSZkaVXDOK5z/Xts+uANNzi0OSth1JKfTqT0nUUm4tTkkD6fufPWqg1NZA==} '@module-federation/webpack-bundler-runtime@0.5.1': resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} @@ -1226,8 +1223,8 @@ packages: resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==} engines: {node: '>=18'} - '@noble/hashes@1.6.1': - resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} + '@noble/hashes@1.7.1': + resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} engines: {node: ^14.21.3 || >=16} '@nodelib/fs.scandir@2.1.5': @@ -1265,103 +1262,103 @@ packages: '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} - '@rollup/rollup-android-arm-eabi@4.37.0': - resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} + '@rollup/rollup-android-arm-eabi@4.39.0': + resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.37.0': - resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} + '@rollup/rollup-android-arm64@4.39.0': + resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.37.0': - resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} + '@rollup/rollup-darwin-arm64@4.39.0': + resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.37.0': - resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} + '@rollup/rollup-darwin-x64@4.39.0': + resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.37.0': - resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} + '@rollup/rollup-freebsd-arm64@4.39.0': + resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.37.0': - resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} + '@rollup/rollup-freebsd-x64@4.39.0': + resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.37.0': - resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} + '@rollup/rollup-linux-arm-gnueabihf@4.39.0': + resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.37.0': - resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} + '@rollup/rollup-linux-arm-musleabihf@4.39.0': + resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.37.0': - resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} + '@rollup/rollup-linux-arm64-gnu@4.39.0': + resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.37.0': - resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} + '@rollup/rollup-linux-arm64-musl@4.39.0': + resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.37.0': - resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} + '@rollup/rollup-linux-loongarch64-gnu@4.39.0': + resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': - resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': + resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.37.0': - resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} + '@rollup/rollup-linux-riscv64-gnu@4.39.0': + resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.37.0': - resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} + '@rollup/rollup-linux-riscv64-musl@4.39.0': + resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.37.0': - resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} + '@rollup/rollup-linux-s390x-gnu@4.39.0': + resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.37.0': - resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} + '@rollup/rollup-linux-x64-gnu@4.39.0': + resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.37.0': - resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} + '@rollup/rollup-linux-x64-musl@4.39.0': + resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.37.0': - resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} + '@rollup/rollup-win32-arm64-msvc@4.39.0': + resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.37.0': - resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} + '@rollup/rollup-win32-ia32-msvc@4.39.0': + resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.37.0': - resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} + '@rollup/rollup-win32-x64-msvc@4.39.0': + resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==} cpu: [x64] os: [win32] @@ -1512,12 +1509,13 @@ packages: resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} engines: {node: '>=16.0.0'} - '@rspack/plugin-react-refresh@1.0.1': - resolution: {integrity: sha512-KSBc3bsr3mrAPViv7w9MpE9KEWm6q87EyRXyHlRfJ9PpQ56NbX9KZ7AXo7jPeECb0q5sfpM2PSEf+syBiMgLSw==} + '@rspack/plugin-react-refresh@1.0.3': + resolution: {integrity: sha512-gGK197oIZaPFOTYZkWHZMWRdDlu03zIA3zcYuTKn5Ru6FyuQQu3KjprwDORTcYNHXZw188Exh3uhplM/d2ltIQ==} peerDependencies: react-refresh: '>=0.10.0 <1.0.0' + webpack-hot-middleware: 2.x peerDependenciesMeta: - react-refresh: + webpack-hot-middleware: optional: true '@sideway/address@4.1.5': @@ -1543,28 +1541,28 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tanstack/history@1.114.22': - resolution: {integrity: sha512-CNwKraj/Xa8H7DUyzrFBQC3wL96JzIxT4i9CW0hxqFNNmLDyUcMJr8264iqqfxC0u1lFSG96URad08T2Qhadpw==} + '@tanstack/history@1.115.0': + resolution: {integrity: sha512-K7JJNrRVvyjAVnbXOH2XLRhFXDkeP54Kt2P4FR1Kl2KDGlIbkua5VqZQD2rot3qaDrpufyUa63nuLai1kOLTsQ==} engines: {node: '>=12'} - '@tanstack/query-core@5.69.0': - resolution: {integrity: sha512-Kn410jq6vs1P8Nm+ZsRj9H+U3C0kjuEkYLxbiCyn3MDEiYor1j2DGVULqAz62SLZtUZ/e9Xt6xMXiJ3NJ65WyQ==} + '@tanstack/query-core@5.72.0': + resolution: {integrity: sha512-aa3p6Mou++JLLxxxVX9AB9uGeRIGc0JWkw96GASXuMG8K3D+JpYbSFcqXbkGFJ1eX2jKHPurmCBoO43RjjXJCA==} - '@tanstack/react-query@5.69.0': - resolution: {integrity: sha512-Ift3IUNQqTcaFa1AiIQ7WCb/PPy8aexZdq9pZWLXhfLcLxH0+PZqJ2xFImxCpdDZrFRZhLJrh76geevS5xjRhA==} + '@tanstack/react-query@5.72.0': + resolution: {integrity: sha512-4Dejq/IiXrPlr/0xxj4H2GbC6KckwfTCoHWbd02+UoIV0laC9yke0d0KegmFdXJA712I6UCuy8WpPM76uuPJ+w==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-router-devtools@1.114.27': - resolution: {integrity: sha512-DKgMeFMgVdWiNADSemtYfOMR0dQ8xTtShfgRybDGffDe4iOQgnmeFWW1N4oBJylcj7kFRVm3yVOpDC9G6/zW4w==} + '@tanstack/react-router-devtools@1.115.0': + resolution: {integrity: sha512-lvKe0ecJOBTij5TO/O2yLL/UknHLA0aIm4uJYXydM5qW69WktXfOzC7aUaQHEMTQiU0bP1RditQXZqZhQuH+4w==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.114.27 + '@tanstack/react-router': ^1.115.0 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router@1.114.27': - resolution: {integrity: sha512-xfM+FMXpebZQ5//NQEgj5y5SKQqTQEr2/LvePU9IiksxUBCgfjbuOXW5vgDHJ3xXJm3pivYqRx29cHqhueClow==} + '@tanstack/react-router@1.115.0': + resolution: {integrity: sha512-hvIxXeLZzkpSqfnR7s1/5MB2aoSu16gZ4LJmJzVXDcW7JQN/XAMofF1/ahQb69sTuIsauzTF+QMpcL6Q8bjJ7A==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' @@ -1576,15 +1574,15 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.114.25': - resolution: {integrity: sha512-OyLCfs7r+0LEhmQGAdyJxfO+pqGBITlr4aUN0rdhXqDTpqBn0tyrO6Tu+U9B3LQF9Xnux3KqbjzRopTY9QZBog==} + '@tanstack/router-core@1.115.0': + resolution: {integrity: sha512-5XgesPkppANSnR3lrzakjx5+Vx1q4azI1t+kG2ZFvcLG8iRiJ564bDB1W3X2PZQgfKD78jDO/uWAcJTHH4sXuw==} engines: {node: '>=12'} - '@tanstack/router-devtools-core@1.114.25': - resolution: {integrity: sha512-3KFAAytAV6nWcXLTe3nWNaiRPV8AyM3jx5aa2UpB+RLDgDbO+GkVMnv3C7fnGCM6j2nw2/1boAvTvHcoKKO5UA==} + '@tanstack/router-devtools-core@1.115.0': + resolution: {integrity: sha512-s46V8bWxp4fWWjjDm7aGIYw8uPDXu8l1HkwGJwxkf1OQn1MdE7KRIVhGs/GM3Hp2KptQe4Gjomr7r1xrajuMhA==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.114.25 + '@tanstack/router-core': ^1.115.0 csstype: ^3.0.10 solid-js: '>=1.9.5' tiny-invariant: ^1.3.3 @@ -1592,11 +1590,11 @@ packages: csstype: optional: true - '@tanstack/router-devtools@1.114.27': - resolution: {integrity: sha512-82tz+V7e1W+vtRmnBSLTl5rJdXfNAv7kZIQmdS8/I5saKG5nGqQrODn7y/rdjuME5V67bcrkLnwIyR9VFQ0sVw==} + '@tanstack/router-devtools@1.115.0': + resolution: {integrity: sha512-VzNttJJR8J6n9MiufHr8SZVwuUPWBymvx9cBXmoEe/cF3CrkaFG73lHLe+yHfsxht31eI1A7cH3ZoVVxwl6VPw==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.114.27 + '@tanstack/react-router': ^1.115.0 csstype: ^3.0.10 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' @@ -1604,21 +1602,21 @@ packages: csstype: optional: true - '@tanstack/router-generator@1.114.27': - resolution: {integrity: sha512-13Cjn9wI2+OE1kK9L+JW8GypdzgA2Nf6D1H2nOiydSPph/iYsyRxCvv3S5hhuGk0L1U1NrRReCr4rVkhnhiQww==} + '@tanstack/router-generator@1.115.0': + resolution: {integrity: sha512-sDy6zSkDNDPQDk0WXT8PTx7GwkKcxOqrDMwb6Msb28DnO6zUSXiAaX2AtocmNWHYK3ShPM211x0BMmiSTzDuqw==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.114.27 + '@tanstack/react-router': ^1.115.0 peerDependenciesMeta: '@tanstack/react-router': optional: true - '@tanstack/router-plugin@1.114.27': - resolution: {integrity: sha512-/juqdv+TZPsi8GYxq58TpztV93M6BwM7Tv148vM5EZIOCj7LkhQmh4X3E33Eczh8s4D1UCL2Kr607rGEpRpK1w==} + '@tanstack/router-plugin@1.115.0': + resolution: {integrity: sha512-p0KP0X0f010ZWNZYtd6dlMDJgdLLPvLXvguJTRGWd+xqH5i0ukCa+dmpWzSC9+tKLekE0PS45olFBJlj8M+6Iw==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.114.27 + '@tanstack/react-router': ^1.115.0 vite: '>=5.0.0 || >=6.0.0' vite-plugin-solid: ^2.11.2 webpack: '>=5.92.0' @@ -1634,43 +1632,31 @@ packages: webpack: optional: true - '@tanstack/router-utils@1.114.12': - resolution: {integrity: sha512-W4tltvM9FQuDEJejz/JJD3q/pVHBXBb8VmA77pZlj4IBW97RnUNy8CUwZUgSYcb9OReoO4i/VjjQCUq9ZdiDmg==} + '@tanstack/router-utils@1.115.0': + resolution: {integrity: sha512-Dng4y+uLR9b5zPGg7dHReHOTHQa6x+G6nCoZshsDtWrYsrdCcJEtLyhwZ5wG8OyYS6dVr/Cn+E5Bd2b6BhJ89w==} engines: {node: '>=12'} '@tanstack/store@0.7.0': resolution: {integrity: sha512-CNIhdoUsmD2NolYuaIs8VfWM467RK6oIBAW4nPEKZhg1smZ+/CwtCdpURgp7nxSqOaV9oKkzdWD80+bC66F/Jg==} - '@tanstack/virtual-file-routes@1.114.12': - resolution: {integrity: sha512-aR13V1kSE/kUkP4a8snmqvj82OUlR5Q/rzxICmObLCsERGfzikUc4wquOy1d/RzJgsLb8o+FiOjSWynt4T7Jhg==} + '@tanstack/virtual-file-routes@1.115.0': + resolution: {integrity: sha512-XLUh1Py3AftcERrxkxC5Y5m5mfllRH3YR6YVlyjFgI2Tc2Ssy2NKmQFQIafoxfW459UJ8Dn81nWKETEIJifE4g==} engines: {node: '>=12'} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@types/async-retry@1.4.9': resolution: {integrity: sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} @@ -1678,8 +1664,8 @@ packages: '@types/bonjour@3.5.13': resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - '@types/bun@1.2.6': - resolution: {integrity: sha512-fY9CAmTdJH1Llx7rugB0FpgWK2RKuHCs3g2cFDYXUutIy1QGiPQxKkGY8owhfZ4MXWNfxwIbQLChgH5gDsY7vw==} + '@types/bun@1.2.8': + resolution: {integrity: sha512-t8L1RvJVUghW5V+M/fL3Thbxcs0HwNsXsnTEBEfEVqGteiJToOlZ/fyOEaR1kZsNqnu+3XA4RI/qmnX4w6+S+w==} '@types/connect-history-api-fallback@1.5.4': resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} @@ -1696,9 +1682,6 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} @@ -1735,8 +1718,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@22.13.13': - resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==} + '@types/node@22.14.0': + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} '@types/pg@8.11.11': resolution: {integrity: sha512-kGT1qKM8wJQ5qlawUrEkXgvMSXoV213KfMGXcwfDwUIfUHXqXYXOfS1nE1LINRJVVVx5wCm70XnFlMHaIcQAfw==} @@ -1753,8 +1736,8 @@ packages: '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@18.3.5': - resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + '@types/react-dom@18.3.6': + resolution: {integrity: sha512-nf22//wEbKXusP6E9pfOCDwFdHAX4u172eaJI4YkDRQEZiorm6KfYnSC2SWLDMVWUOWPERmJnN0ujeAfTBLvrw==} peerDependencies: '@types/react': ^18.0.0 @@ -1794,57 +1777,54 @@ packages: '@types/uuid@8.3.4': resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - '@types/ws@8.18.0': - resolution: {integrity: sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==} - - '@types/ws@8.5.14': - resolution: {integrity: sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==} + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/eslint-plugin@8.28.0': - resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} + '@typescript-eslint/eslint-plugin@8.29.0': + resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.28.0': - resolution: {integrity: sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==} + '@typescript-eslint/parser@8.29.0': + resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.28.0': - resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} + '@typescript-eslint/scope-manager@8.29.0': + resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.28.0': - resolution: {integrity: sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==} + '@typescript-eslint/type-utils@8.29.0': + resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.28.0': - resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} + '@typescript-eslint/types@8.29.0': + resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.28.0': - resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} + '@typescript-eslint/typescript-estree@8.29.0': + resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.28.0': - resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} + '@typescript-eslint/utils@8.29.0': + resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.28.0': - resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} + '@typescript-eslint/visitor-keys@8.29.0': + resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitejs/plugin-react@4.3.4': @@ -1988,9 +1968,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -2024,8 +2001,8 @@ packages: axios@1.8.4: resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} - babel-dead-code-elimination@1.0.9: - resolution: {integrity: sha512-JLIhax/xullfInZjtu13UJjaLHDeTzt3vOeomaSUdO/nAMEL/pWC/laKrSvWylXMnVWyL5bpmG9njqBZlUQOdg==} + babel-dead-code-elimination@1.0.10: + resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2067,8 +2044,8 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - bun-types@1.2.6: - resolution: {integrity: sha512-FbCKyr5KDiPULUzN/nm5oqQs9nXCHD8dVc64BArxJadCvbNzAI6lUWGh9fSJZWeDIRD38ikceBU8Kj/Uh+53oQ==} + bun-types@1.2.7: + resolution: {integrity: sha512-P4hHhk7kjF99acXqKvltyuMQ2kf/rzIw3ylEDpCxDS9Xa0X0Yp/gJu/vDCucmWpiur5qJ0lwB2bWzOXa2GlHqA==} bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} @@ -2102,8 +2079,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - caniuse-lite@1.0.30001707: - resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + caniuse-lite@1.0.30001712: + resolution: {integrity: sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==} chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} @@ -2233,9 +2210,6 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cron-parser@4.9.0: resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} @@ -2338,10 +2312,6 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - diff@7.0.0: resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} engines: {node: '>=0.3.1'} @@ -2357,8 +2327,8 @@ packages: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} - drizzle-kit@0.30.5: - resolution: {integrity: sha512-l6dMSE100u7sDaTbLczibrQZjA35jLsHNqIV+jmhNVO3O8jzM6kywMOmV9uOz9ZVSCMPQhAZEFjL/qDPVrqpUA==} + drizzle-kit@0.30.6: + resolution: {integrity: sha512-U4wWit0fyZuGuP7iNmRleQyK2V8wCuv57vf5l3MnG4z4fzNTjY/U13M8owyQ5RavqvqxBifWORaR3wIUzlN64g==} hasBin: true drizzle-orm@0.40.1: @@ -2471,8 +2441,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.123: - resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==} + electron-to-chromium@1.5.132: + resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -2547,8 +2517,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.1: - resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + esbuild@0.25.2: + resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} engines: {node: '>=18'} hasBin: true @@ -2590,8 +2560,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.23.0: - resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} + eslint@9.24.0: + resolution: {integrity: sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2767,8 +2737,8 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gel@2.0.1: - resolution: {integrity: sha512-gfem3IGvqKqXwEq7XseBogyaRwGsQGuE7Cw/yQsjLGdgiyqX92G1xENPCE0ltunPGcsJIa6XBOTx/PK169mOqw==} + gel@2.0.2: + resolution: {integrity: sha512-XTKpfNR9HZOw+k0Bl04nETZjuP5pypVAXsZADSdwr3EtyygTTe1RqvftU2FjGu7Tp9e576a9b/iIOxWrRBxMiQ==} engines: {node: '>= 18.0.0'} hasBin: true @@ -2899,8 +2869,8 @@ packages: hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - html-entities@2.5.3: - resolution: {integrity: sha512-D3AfvN7SjhTgBSA8L1BN4FpPzuEd06uy4lHwSoRWr0lndi9BKaNzPLKGOWZ2ocSGguozr08TTb2jhCLHaemruw==} + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} http-assert@1.5.0: resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} @@ -3235,13 +3205,10 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - luxon@3.6.0: - resolution: {integrity: sha512-WE7p0p7W1xji9qxkLYsvcIxZyfP48GuFrWIBQZIsbjCyf65dG1rv4n83HcOyEyhvzxJCrUoObCRNFgRNIQ5KNA==} + luxon@3.6.1: + resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==} engines: {node: '>=12'} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -3475,8 +3442,8 @@ packages: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} - otpauth@9.3.6: - resolution: {integrity: sha512-eIcCvuEvcAAPHxUKC9Q4uCe0Fh/yRc5jv9z+f/kvyIF2LPrhgAOuLB7J9CssGYhND/BL8M9hlHBTFmffpoQlMQ==} + otpauth@9.4.0: + resolution: {integrity: sha512-fHIfzIG5RqCkK9cmV8WU+dPQr9/ebR5QOwGZn2JAr1RQF+lmAuLL2YdtdqvmBjNmgJlYk3KZ4a0XokaEhg1Jsw==} outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} @@ -3600,8 +3567,8 @@ packages: resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==} hasBin: true - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} pluralize@8.0.0: @@ -3851,8 +3818,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rollup@4.37.0: - resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} + rollup@4.39.0: + resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4195,20 +4162,6 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -4221,38 +4174,38 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - turbo-darwin-64@2.4.4: - resolution: {integrity: sha512-5kPvRkLAfmWI0MH96D+/THnDMGXlFNmjeqNRj5grLKiry+M9pKj3pRuScddAXPdlxjO5Ptz06UNaOQrrYGTx1g==} + turbo-darwin-64@2.5.0: + resolution: {integrity: sha512-fP1hhI9zY8hv0idym3hAaXdPi80TLovmGmgZFocVAykFtOxF+GlfIgM/l4iLAV9ObIO4SUXPVWHeBZQQ+Hpjag==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.4.4: - resolution: {integrity: sha512-/gtHPqbGQXDFhrmy+Q/MFW2HUTUlThJ97WLLSe4bxkDrKHecDYhAjbZ4rN3MM93RV9STQb3Tqy4pZBtsd4DfCw==} + turbo-darwin-arm64@2.5.0: + resolution: {integrity: sha512-p9sYq7kXH7qeJwIQE86cOWv/xNqvow846l6c/qWc26Ib1ci5W7V0sI5thsrP3eH+VA0d+SHalTKg5SQXgNQBWA==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.4.4: - resolution: {integrity: sha512-SR0gri4k0bda56hw5u9VgDXLKb1Q+jrw4lM7WAhnNdXvVoep4d6LmnzgMHQQR12Wxl3KyWPbkz9d1whL6NTm2Q==} + turbo-linux-64@2.5.0: + resolution: {integrity: sha512-1iEln2GWiF3iPPPS1HQJT6ZCFXynJPd89gs9SkggH2EJsj3eRUSVMmMC8y6d7bBbhBFsiGGazwFIYrI12zs6uQ==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.4.4: - resolution: {integrity: sha512-COXXwzRd3vslQIfJhXUklgEqlwq35uFUZ7hnN+AUyXx7hUOLIiD5NblL+ETrHnhY4TzWszrbwUMfe2BYWtaPQg==} + turbo-linux-arm64@2.5.0: + resolution: {integrity: sha512-bKBcbvuQHmsX116KcxHJuAcppiiBOfivOObh2O5aXNER6mce7YDDQJy00xQQNp1DhEfcSV2uOsvb3O3nN2cbcA==} cpu: [arm64] os: [linux] - turbo-windows-64@2.4.4: - resolution: {integrity: sha512-PV9rYNouGz4Ff3fd6sIfQy5L7HT9a4fcZoEv8PKRavU9O75G7PoDtm8scpHU10QnK0QQNLbE9qNxOAeRvF0fJg==} + turbo-windows-64@2.5.0: + resolution: {integrity: sha512-9BCo8oQ7BO7J0K913Czbc3tw8QwLqn2nTe4E47k6aVYkM12ASTScweXPTuaPFP5iYXAT6z5Dsniw704Ixa5eGg==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.4.4: - resolution: {integrity: sha512-403sqp9t5sx6YGEC32IfZTVWkRAixOQomGYB8kEc6ZD+//LirSxzeCHCnM8EmSXw7l57U1G+Fb0kxgTcKPU/Lg==} + turbo-windows-arm64@2.5.0: + resolution: {integrity: sha512-OUHCV+ueXa3UzfZ4co/ueIHgeq9B2K48pZwIxKSm5VaLVuv8M13MhM7unukW09g++dpdrrE1w4IOVgxKZ0/exg==} cpu: [arm64] os: [win32] - turbo@2.4.4: - resolution: {integrity: sha512-N9FDOVaY3yz0YCOhYIgOGYad7+m2ptvinXygw27WPLQvcZDl3+0Sa77KGVlLSiuPDChOUEnTKE9VJwLSi9BPGQ==} + turbo@2.5.0: + resolution: {integrity: sha512-PvSRruOsitjy6qdqwIIyolv99+fEn57gP6gn4zhsHTEcCYgXPhv6BAxzAjleS8XKpo+Y582vTTA9nuqYDmbRuA==} hasBin: true twitter-api-v2@1.22.0: @@ -4266,16 +4219,16 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@4.38.0: - resolution: {integrity: sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==} + type-fest@4.39.1: + resolution: {integrity: sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==} engines: {node: '>=16'} type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - typescript-eslint@8.28.0: - resolution: {integrity: sha512-jfZtxJoHm59bvoCMYCe2BM0/baMswRhMmYhy+w6VfcyHrjxZ0OJe0tGasydCpIpA+A/WIJhTyZfb3EtwNC/kHQ==} + typescript-eslint@8.29.0: + resolution: {integrity: sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -4286,8 +4239,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -4325,8 +4278,8 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - use-sync-external-store@1.4.0: - resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -4341,15 +4294,12 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@6.2.3: - resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==} + vite@6.2.5: + resolution: {integrity: sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -4441,8 +4391,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.98.0: - resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} + webpack@5.99.0: + resolution: {integrity: sha512-//MpHjkKV7dhKheJ1lJuHkR6tv8ycfYy7YVzVhhIpwKuKCu5/Zty/vGpFi0fV2RRAWTYDuj6oKn4vYyLzRh55g==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -4542,8 +4492,8 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} engines: {node: '>= 14'} hasBin: true @@ -4559,10 +4509,6 @@ packages: resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} engines: {node: '>= 4.0.0'} - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -4725,11 +4671,6 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - optional: true - '@curatedotfun/types@0.0.5': {} '@discoveryjs/json-ext@0.5.7': {} @@ -4749,7 +4690,7 @@ snapshots: '@esbuild/aix-ppc64@0.19.12': optional: true - '@esbuild/aix-ppc64@0.25.1': + '@esbuild/aix-ppc64@0.25.2': optional: true '@esbuild/android-arm64@0.17.19': @@ -4761,7 +4702,7 @@ snapshots: '@esbuild/android-arm64@0.19.12': optional: true - '@esbuild/android-arm64@0.25.1': + '@esbuild/android-arm64@0.25.2': optional: true '@esbuild/android-arm@0.17.19': @@ -4773,7 +4714,7 @@ snapshots: '@esbuild/android-arm@0.19.12': optional: true - '@esbuild/android-arm@0.25.1': + '@esbuild/android-arm@0.25.2': optional: true '@esbuild/android-x64@0.17.19': @@ -4785,7 +4726,7 @@ snapshots: '@esbuild/android-x64@0.19.12': optional: true - '@esbuild/android-x64@0.25.1': + '@esbuild/android-x64@0.25.2': optional: true '@esbuild/darwin-arm64@0.17.19': @@ -4797,7 +4738,7 @@ snapshots: '@esbuild/darwin-arm64@0.19.12': optional: true - '@esbuild/darwin-arm64@0.25.1': + '@esbuild/darwin-arm64@0.25.2': optional: true '@esbuild/darwin-x64@0.17.19': @@ -4809,7 +4750,7 @@ snapshots: '@esbuild/darwin-x64@0.19.12': optional: true - '@esbuild/darwin-x64@0.25.1': + '@esbuild/darwin-x64@0.25.2': optional: true '@esbuild/freebsd-arm64@0.17.19': @@ -4821,7 +4762,7 @@ snapshots: '@esbuild/freebsd-arm64@0.19.12': optional: true - '@esbuild/freebsd-arm64@0.25.1': + '@esbuild/freebsd-arm64@0.25.2': optional: true '@esbuild/freebsd-x64@0.17.19': @@ -4833,7 +4774,7 @@ snapshots: '@esbuild/freebsd-x64@0.19.12': optional: true - '@esbuild/freebsd-x64@0.25.1': + '@esbuild/freebsd-x64@0.25.2': optional: true '@esbuild/linux-arm64@0.17.19': @@ -4845,7 +4786,7 @@ snapshots: '@esbuild/linux-arm64@0.19.12': optional: true - '@esbuild/linux-arm64@0.25.1': + '@esbuild/linux-arm64@0.25.2': optional: true '@esbuild/linux-arm@0.17.19': @@ -4857,7 +4798,7 @@ snapshots: '@esbuild/linux-arm@0.19.12': optional: true - '@esbuild/linux-arm@0.25.1': + '@esbuild/linux-arm@0.25.2': optional: true '@esbuild/linux-ia32@0.17.19': @@ -4869,7 +4810,7 @@ snapshots: '@esbuild/linux-ia32@0.19.12': optional: true - '@esbuild/linux-ia32@0.25.1': + '@esbuild/linux-ia32@0.25.2': optional: true '@esbuild/linux-loong64@0.17.19': @@ -4881,7 +4822,7 @@ snapshots: '@esbuild/linux-loong64@0.19.12': optional: true - '@esbuild/linux-loong64@0.25.1': + '@esbuild/linux-loong64@0.25.2': optional: true '@esbuild/linux-mips64el@0.17.19': @@ -4893,7 +4834,7 @@ snapshots: '@esbuild/linux-mips64el@0.19.12': optional: true - '@esbuild/linux-mips64el@0.25.1': + '@esbuild/linux-mips64el@0.25.2': optional: true '@esbuild/linux-ppc64@0.17.19': @@ -4905,7 +4846,7 @@ snapshots: '@esbuild/linux-ppc64@0.19.12': optional: true - '@esbuild/linux-ppc64@0.25.1': + '@esbuild/linux-ppc64@0.25.2': optional: true '@esbuild/linux-riscv64@0.17.19': @@ -4917,7 +4858,7 @@ snapshots: '@esbuild/linux-riscv64@0.19.12': optional: true - '@esbuild/linux-riscv64@0.25.1': + '@esbuild/linux-riscv64@0.25.2': optional: true '@esbuild/linux-s390x@0.17.19': @@ -4929,7 +4870,7 @@ snapshots: '@esbuild/linux-s390x@0.19.12': optional: true - '@esbuild/linux-s390x@0.25.1': + '@esbuild/linux-s390x@0.25.2': optional: true '@esbuild/linux-x64@0.17.19': @@ -4941,10 +4882,10 @@ snapshots: '@esbuild/linux-x64@0.19.12': optional: true - '@esbuild/linux-x64@0.25.1': + '@esbuild/linux-x64@0.25.2': optional: true - '@esbuild/netbsd-arm64@0.25.1': + '@esbuild/netbsd-arm64@0.25.2': optional: true '@esbuild/netbsd-x64@0.17.19': @@ -4956,10 +4897,10 @@ snapshots: '@esbuild/netbsd-x64@0.19.12': optional: true - '@esbuild/netbsd-x64@0.25.1': + '@esbuild/netbsd-x64@0.25.2': optional: true - '@esbuild/openbsd-arm64@0.25.1': + '@esbuild/openbsd-arm64@0.25.2': optional: true '@esbuild/openbsd-x64@0.17.19': @@ -4971,7 +4912,7 @@ snapshots: '@esbuild/openbsd-x64@0.19.12': optional: true - '@esbuild/openbsd-x64@0.25.1': + '@esbuild/openbsd-x64@0.25.2': optional: true '@esbuild/sunos-x64@0.17.19': @@ -4983,7 +4924,7 @@ snapshots: '@esbuild/sunos-x64@0.19.12': optional: true - '@esbuild/sunos-x64@0.25.1': + '@esbuild/sunos-x64@0.25.2': optional: true '@esbuild/win32-arm64@0.17.19': @@ -4995,7 +4936,7 @@ snapshots: '@esbuild/win32-arm64@0.19.12': optional: true - '@esbuild/win32-arm64@0.25.1': + '@esbuild/win32-arm64@0.25.2': optional: true '@esbuild/win32-ia32@0.17.19': @@ -5007,7 +4948,7 @@ snapshots: '@esbuild/win32-ia32@0.19.12': optional: true - '@esbuild/win32-ia32@0.25.1': + '@esbuild/win32-ia32@0.25.2': optional: true '@esbuild/win32-x64@0.17.19': @@ -5019,17 +4960,17 @@ snapshots: '@esbuild/win32-x64@0.19.12': optional: true - '@esbuild/win32-x64@0.25.1': + '@esbuild/win32-x64@0.25.2': optional: true - '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.5.1(eslint@9.24.0(jiti@1.21.7))': dependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.19.2': + '@eslint/config-array@0.20.0': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.0 @@ -5037,12 +4978,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.0': {} + '@eslint/config-helpers@0.2.1': {} '@eslint/core@0.12.0': dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -5057,13 +5002,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.23.0': {} + '@eslint/js@9.24.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.7': + '@eslint/plugin-kit@0.2.8': dependencies: - '@eslint/core': 0.12.0 + '@eslint/core': 0.13.0 levn: 0.4.1 '@hapi/hoek@9.3.0': {} @@ -5106,17 +5051,17 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@inquirer/confirm@5.1.8(@types/node@22.13.13)': + '@inquirer/confirm@5.1.9(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.13) - '@inquirer/type': 3.0.5(@types/node@22.13.13) + '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/type': 3.0.6(@types/node@22.14.0) optionalDependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 - '@inquirer/core@10.1.9(@types/node@22.13.13)': + '@inquirer/core@10.1.10(@types/node@22.14.0)': dependencies: '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.13.13) + '@inquirer/type': 3.0.6(@types/node@22.14.0) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -5124,13 +5069,13 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@inquirer/figures@1.0.11': {} - '@inquirer/type@3.0.5(@types/node@22.13.13)': + '@inquirer/type@3.0.6(@types/node@22.14.0)': optionalDependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@isaacs/cliui@8.0.2': dependencies: @@ -5163,12 +5108,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - optional: true - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -5196,21 +5135,21 @@ snapshots: '@modern-js/utils@2.65.1': dependencies: '@swc/helpers': 0.5.13 - caniuse-lite: 1.0.30001707 + caniuse-lite: 1.0.30001712 lodash: 4.17.21 rslog: 1.2.3 - '@module-federation/bridge-react-webpack-plugin@0.11.2': + '@module-federation/bridge-react-webpack-plugin@0.11.3': dependencies: - '@module-federation/sdk': 0.11.2 + '@module-federation/sdk': 0.11.3 '@types/semver': 7.5.8 semver: 7.6.3 - '@module-federation/cli@0.11.2(typescript@5.6.3)': + '@module-federation/cli@0.11.3(typescript@5.6.3)': dependencies: '@modern-js/node-bundle-require': 2.65.1 - '@module-federation/dts-plugin': 0.11.2(typescript@5.6.3) - '@module-federation/sdk': 0.11.2 + '@module-federation/dts-plugin': 0.11.3(typescript@5.6.3) + '@module-federation/sdk': 0.11.3 chalk: 3.0.0 commander: 11.1.0 transitivePeerDependencies: @@ -5221,20 +5160,20 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/data-prefetch@0.11.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@module-federation/data-prefetch@0.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@module-federation/runtime': 0.11.2 - '@module-federation/sdk': 0.11.2 + '@module-federation/runtime': 0.11.3 + '@module-federation/sdk': 0.11.3 fs-extra: 9.1.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@module-federation/dts-plugin@0.11.2(typescript@5.6.3)': + '@module-federation/dts-plugin@0.11.3(typescript@5.6.3)': dependencies: - '@module-federation/error-codes': 0.11.2 - '@module-federation/managers': 0.11.2 - '@module-federation/sdk': 0.11.2 - '@module-federation/third-party-dts-extractor': 0.11.2 + '@module-federation/error-codes': 0.11.3 + '@module-federation/managers': 0.11.3 + '@module-federation/sdk': 0.11.3 + '@module-federation/third-party-dts-extractor': 0.11.3 adm-zip: 0.5.16 ansi-colors: 4.1.3 axios: 1.8.4 @@ -5254,24 +5193,24 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/enhanced@0.11.2(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.98.0(esbuild@0.19.12))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.11.2 - '@module-federation/cli': 0.11.2(typescript@5.6.3) - '@module-federation/data-prefetch': 0.11.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@module-federation/dts-plugin': 0.11.2(typescript@5.6.3) - '@module-federation/error-codes': 0.11.2 - '@module-federation/inject-external-runtime-core-plugin': 0.11.2(@module-federation/runtime-tools@0.11.2) - '@module-federation/managers': 0.11.2 - '@module-federation/manifest': 0.11.2(typescript@5.6.3) - '@module-federation/rspack': 0.11.2(@rspack/core@1.2.8(@swc/helpers@0.5.15))(typescript@5.6.3) - '@module-federation/runtime-tools': 0.11.2 - '@module-federation/sdk': 0.11.2 + '@module-federation/enhanced@0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.0(esbuild@0.19.12))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 0.11.3 + '@module-federation/cli': 0.11.3(typescript@5.6.3) + '@module-federation/data-prefetch': 0.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@module-federation/dts-plugin': 0.11.3(typescript@5.6.3) + '@module-federation/error-codes': 0.11.3 + '@module-federation/inject-external-runtime-core-plugin': 0.11.3(@module-federation/runtime-tools@0.11.3) + '@module-federation/managers': 0.11.3 + '@module-federation/manifest': 0.11.3(typescript@5.6.3) + '@module-federation/rspack': 0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.15))(typescript@5.6.3) + '@module-federation/runtime-tools': 0.11.3 + '@module-federation/sdk': 0.11.3 btoa: 1.2.1 upath: 2.0.1 optionalDependencies: typescript: 5.6.3 - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) transitivePeerDependencies: - '@rspack/core' - bufferutil @@ -5281,25 +5220,25 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/error-codes@0.11.2': {} + '@module-federation/error-codes@0.11.3': {} '@module-federation/error-codes@0.8.4': {} - '@module-federation/inject-external-runtime-core-plugin@0.11.2(@module-federation/runtime-tools@0.11.2)': + '@module-federation/inject-external-runtime-core-plugin@0.11.3(@module-federation/runtime-tools@0.11.3)': dependencies: - '@module-federation/runtime-tools': 0.11.2 + '@module-federation/runtime-tools': 0.11.3 - '@module-federation/managers@0.11.2': + '@module-federation/managers@0.11.3': dependencies: - '@module-federation/sdk': 0.11.2 + '@module-federation/sdk': 0.11.3 find-pkg: 2.0.0 fs-extra: 9.1.0 - '@module-federation/manifest@0.11.2(typescript@5.6.3)': + '@module-federation/manifest@0.11.3(typescript@5.6.3)': dependencies: - '@module-federation/dts-plugin': 0.11.2(typescript@5.6.3) - '@module-federation/managers': 0.11.2 - '@module-federation/sdk': 0.11.2 + '@module-federation/dts-plugin': 0.11.3(typescript@5.6.3) + '@module-federation/managers': 0.11.3 + '@module-federation/sdk': 0.11.3 chalk: 3.0.0 find-pkg: 2.0.0 transitivePeerDependencies: @@ -5310,16 +5249,16 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/node@2.6.31(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.98.0(esbuild@0.19.12))': + '@module-federation/node@2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.0(esbuild@0.19.12))': dependencies: - '@module-federation/enhanced': 0.11.2(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.98.0(esbuild@0.19.12)) - '@module-federation/runtime': 0.11.2 - '@module-federation/sdk': 0.11.2 - '@module-federation/utilities': 3.1.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12)) + '@module-federation/enhanced': 0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.0(esbuild@0.19.12)) + '@module-federation/runtime': 0.11.3 + '@module-federation/sdk': 0.11.3 + '@module-federation/utilities': 3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.0(esbuild@0.19.12)) btoa: 1.2.1 encoding: 0.1.13 node-fetch: 2.7.0(encoding@0.1.13) - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5332,15 +5271,15 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/rspack@0.11.2(@rspack/core@1.2.8(@swc/helpers@0.5.15))(typescript@5.6.3)': + '@module-federation/rspack@0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.15))(typescript@5.6.3)': dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.11.2 - '@module-federation/dts-plugin': 0.11.2(typescript@5.6.3) - '@module-federation/inject-external-runtime-core-plugin': 0.11.2(@module-federation/runtime-tools@0.11.2) - '@module-federation/managers': 0.11.2 - '@module-federation/manifest': 0.11.2(typescript@5.6.3) - '@module-federation/runtime-tools': 0.11.2 - '@module-federation/sdk': 0.11.2 + '@module-federation/bridge-react-webpack-plugin': 0.11.3 + '@module-federation/dts-plugin': 0.11.3(typescript@5.6.3) + '@module-federation/inject-external-runtime-core-plugin': 0.11.3(@module-federation/runtime-tools@0.11.3) + '@module-federation/managers': 0.11.3 + '@module-federation/manifest': 0.11.3(typescript@5.6.3) + '@module-federation/runtime-tools': 0.11.3 + '@module-federation/sdk': 0.11.3 '@rspack/core': 1.2.8(@swc/helpers@0.5.15) btoa: 1.2.1 optionalDependencies: @@ -5351,15 +5290,15 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/runtime-core@0.11.2': + '@module-federation/runtime-core@0.11.3': dependencies: - '@module-federation/error-codes': 0.11.2 - '@module-federation/sdk': 0.11.2 + '@module-federation/error-codes': 0.11.3 + '@module-federation/sdk': 0.11.3 - '@module-federation/runtime-tools@0.11.2': + '@module-federation/runtime-tools@0.11.3': dependencies: - '@module-federation/runtime': 0.11.2 - '@module-federation/webpack-bundler-runtime': 0.11.2 + '@module-federation/runtime': 0.11.3 + '@module-federation/webpack-bundler-runtime': 0.11.3 '@module-federation/runtime-tools@0.5.1': dependencies: @@ -5371,11 +5310,11 @@ snapshots: '@module-federation/runtime': 0.8.4 '@module-federation/webpack-bundler-runtime': 0.8.4 - '@module-federation/runtime@0.11.2': + '@module-federation/runtime@0.11.3': dependencies: - '@module-federation/error-codes': 0.11.2 - '@module-federation/runtime-core': 0.11.2 - '@module-federation/sdk': 0.11.2 + '@module-federation/error-codes': 0.11.3 + '@module-federation/runtime-core': 0.11.3 + '@module-federation/sdk': 0.11.3 '@module-federation/runtime@0.5.1': dependencies: @@ -5386,7 +5325,7 @@ snapshots: '@module-federation/error-codes': 0.8.4 '@module-federation/sdk': 0.8.4 - '@module-federation/sdk@0.11.2': {} + '@module-federation/sdk@0.11.3': {} '@module-federation/sdk@0.5.1': {} @@ -5394,24 +5333,24 @@ snapshots: dependencies: isomorphic-rslog: 0.0.6 - '@module-federation/third-party-dts-extractor@0.11.2': + '@module-federation/third-party-dts-extractor@0.11.3': dependencies: find-pkg: 2.0.0 fs-extra: 9.1.0 resolve: 1.22.8 - '@module-federation/utilities@3.1.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.98.0(esbuild@0.19.12))': + '@module-federation/utilities@3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.0(esbuild@0.19.12))': dependencies: - '@module-federation/sdk': 0.11.2 - webpack: 5.98.0(esbuild@0.19.12) + '@module-federation/sdk': 0.11.3 + webpack: 5.99.0(esbuild@0.19.12) optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@module-federation/webpack-bundler-runtime@0.11.2': + '@module-federation/webpack-bundler-runtime@0.11.3': dependencies: - '@module-federation/runtime': 0.11.2 - '@module-federation/sdk': 0.11.2 + '@module-federation/runtime': 0.11.3 + '@module-federation/sdk': 0.11.3 '@module-federation/webpack-bundler-runtime@0.5.1': dependencies: @@ -5423,7 +5362,7 @@ snapshots: '@module-federation/runtime': 0.8.4 '@module-federation/sdk': 0.8.4 - '@mswjs/data@0.16.2(@types/node@22.13.13)(typescript@5.6.3)': + '@mswjs/data@0.16.2(@types/node@22.14.0)(typescript@5.6.3)': dependencies: '@types/lodash': 4.17.16 '@types/md5': 2.3.5 @@ -5439,7 +5378,7 @@ snapshots: strict-event-emitter: 0.5.1 uuid: 8.3.2 optionalDependencies: - msw: 2.7.3(@types/node@22.13.13)(typescript@5.6.3) + msw: 2.7.3(@types/node@22.14.0)(typescript@5.6.3) transitivePeerDependencies: - '@types/node' - supports-color @@ -5454,7 +5393,7 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@noble/hashes@1.6.1': {} + '@noble/hashes@1.7.1': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -5491,64 +5430,64 @@ snapshots: '@polka/url@1.0.0-next.28': {} - '@rollup/rollup-android-arm-eabi@4.37.0': + '@rollup/rollup-android-arm-eabi@4.39.0': optional: true - '@rollup/rollup-android-arm64@4.37.0': + '@rollup/rollup-android-arm64@4.39.0': optional: true - '@rollup/rollup-darwin-arm64@4.37.0': + '@rollup/rollup-darwin-arm64@4.39.0': optional: true - '@rollup/rollup-darwin-x64@4.37.0': + '@rollup/rollup-darwin-x64@4.39.0': optional: true - '@rollup/rollup-freebsd-arm64@4.37.0': + '@rollup/rollup-freebsd-arm64@4.39.0': optional: true - '@rollup/rollup-freebsd-x64@4.37.0': + '@rollup/rollup-freebsd-x64@4.39.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + '@rollup/rollup-linux-arm-gnueabihf@4.39.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.37.0': + '@rollup/rollup-linux-arm-musleabihf@4.39.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.37.0': + '@rollup/rollup-linux-arm64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.37.0': + '@rollup/rollup-linux-arm64-musl@4.39.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + '@rollup/rollup-linux-loongarch64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.37.0': + '@rollup/rollup-linux-riscv64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.37.0': + '@rollup/rollup-linux-riscv64-musl@4.39.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.37.0': + '@rollup/rollup-linux-s390x-gnu@4.39.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.37.0': + '@rollup/rollup-linux-x64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-x64-musl@4.37.0': + '@rollup/rollup-linux-x64-musl@4.39.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.37.0': + '@rollup/rollup-win32-arm64-msvc@4.39.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.37.0': + '@rollup/rollup-win32-ia32-msvc@4.39.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.37.0': + '@rollup/rollup-win32-x64-msvc@4.39.0': optional: true '@rsbuild/core@1.1.13': @@ -5561,8 +5500,10 @@ snapshots: '@rsbuild/plugin-react@1.1.0(@rsbuild/core@1.1.13)': dependencies: '@rsbuild/core': 1.1.13 - '@rspack/plugin-react-refresh': 1.0.1(react-refresh@0.16.0) + '@rspack/plugin-react-refresh': 1.0.3(react-refresh@0.16.0) react-refresh: 0.16.0 + transitivePeerDependencies: + - webpack-hot-middleware '@rspack/binding-darwin-arm64@1.1.8': optional: true @@ -5642,11 +5583,11 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.2.8 '@rspack/binding-win32-x64-msvc': 1.2.8 - '@rspack/cli@1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': + '@rspack/cli@1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12))': dependencies: '@discoveryjs/json-ext': 0.5.7 '@rspack/core': 1.2.8(@swc/helpers@0.5.15) - '@rspack/dev-server': 1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12)) + '@rspack/dev-server': 1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12)) colorette: 2.0.20 exit-hook: 4.0.0 interpret: 3.1.1 @@ -5667,7 +5608,7 @@ snapshots: '@module-federation/runtime-tools': 0.5.1 '@rspack/binding': 1.1.8 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001707 + caniuse-lite: 1.0.30001712 optionalDependencies: '@swc/helpers': 0.5.15 @@ -5676,11 +5617,11 @@ snapshots: '@module-federation/runtime-tools': 0.8.4 '@rspack/binding': 1.2.8 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001707 + caniuse-lite: 1.0.30001712 optionalDependencies: '@swc/helpers': 0.5.15 - '@rspack/dev-server@1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.98.0(esbuild@0.19.12))': + '@rspack/dev-server@1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12))': dependencies: '@rspack/core': 1.2.8(@swc/helpers@0.5.15) chokidar: 3.6.0 @@ -5689,8 +5630,8 @@ snapshots: http-proxy-middleware: 2.0.7(@types/express@4.17.21) mime-types: 2.1.35 p-retry: 4.6.2 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.19.12)) - webpack-dev-server: 5.0.4(webpack@5.98.0(esbuild@0.19.12)) + webpack-dev-middleware: 7.4.2(webpack@5.99.0(esbuild@0.19.12)) + webpack-dev-server: 5.0.4(webpack@5.99.0(esbuild@0.19.12)) ws: 8.18.1 transitivePeerDependencies: - '@types/express' @@ -5703,11 +5644,10 @@ snapshots: '@rspack/lite-tapable@1.0.1': {} - '@rspack/plugin-react-refresh@1.0.1(react-refresh@0.16.0)': + '@rspack/plugin-react-refresh@1.0.3(react-refresh@0.16.0)': dependencies: error-stack-parser: 2.1.4 - html-entities: 2.5.3 - optionalDependencies: + html-entities: 2.6.0 react-refresh: 0.16.0 '@sideway/address@4.1.5': @@ -5728,27 +5668,27 @@ snapshots: dependencies: tslib: 2.8.1 - '@tailwindcss/typography@0.5.16(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.13)(typescript@5.6.3)))': + '@tailwindcss/typography@0.5.16(tailwindcss@3.4.17)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@22.13.13)(typescript@5.6.3)) + tailwindcss: 3.4.17 - '@tanstack/history@1.114.22': {} + '@tanstack/history@1.115.0': {} - '@tanstack/query-core@5.69.0': {} + '@tanstack/query-core@5.72.0': {} - '@tanstack/react-query@5.69.0(react@18.3.1)': + '@tanstack/react-query@5.72.0(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.69.0 + '@tanstack/query-core': 5.72.0 react: 18.3.1 - '@tanstack/react-router-devtools@1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': + '@tanstack/react-router-devtools@1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-devtools-core': 1.114.25(@tanstack/router-core@1.114.25)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) + '@tanstack/react-router': 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/router-devtools-core': 1.115.0(@tanstack/router-core@1.115.0)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) solid-js: 1.9.5 @@ -5757,11 +5697,11 @@ snapshots: - csstype - tiny-invariant - '@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/history': 1.114.22 + '@tanstack/history': 1.115.0 '@tanstack/react-store': 0.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-core': 1.114.25 + '@tanstack/router-core': 1.115.0 jsesc: 3.1.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5773,17 +5713,17 @@ snapshots: '@tanstack/store': 0.7.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - use-sync-external-store: 1.4.0(react@18.3.1) + use-sync-external-store: 1.5.0(react@18.3.1) - '@tanstack/router-core@1.114.25': + '@tanstack/router-core@1.115.0': dependencies: - '@tanstack/history': 1.114.22 + '@tanstack/history': 1.115.0 '@tanstack/store': 0.7.0 tiny-invariant: 1.3.3 - '@tanstack/router-devtools-core@1.114.25(@tanstack/router-core@1.114.25)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/router-devtools-core@1.115.0(@tanstack/router-core@1.115.0)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/router-core': 1.114.25 + '@tanstack/router-core': 1.115.0 clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.5 @@ -5791,10 +5731,10 @@ snapshots: optionalDependencies: csstype: 3.1.3 - '@tanstack/router-devtools@1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': + '@tanstack/router-devtools@1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/react-router-devtools': 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) + '@tanstack/react-router': 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router-devtools': 1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) react: 18.3.1 @@ -5805,16 +5745,16 @@ snapshots: - '@tanstack/router-core' - tiny-invariant - '@tanstack/router-generator@1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@tanstack/router-generator@1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: - '@tanstack/virtual-file-routes': 1.114.12 + '@tanstack/virtual-file-routes': 1.115.0 prettier: 3.5.3 tsx: 4.19.3 zod: 3.24.2 optionalDependencies: - '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-plugin@1.114.27(@rsbuild/core@1.1.13)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.3(@types/node@22.13.13)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(webpack@5.98.0)': + '@tanstack/router-plugin@1.115.0(@rsbuild/core@1.1.13)(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))(webpack@5.99.0)': dependencies: '@babel/core': 7.26.10 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) @@ -5822,26 +5762,26 @@ snapshots: '@babel/template': 7.27.0 '@babel/traverse': 7.27.0 '@babel/types': 7.27.0 - '@tanstack/router-core': 1.114.25 - '@tanstack/router-generator': 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@tanstack/router-utils': 1.114.12 - '@tanstack/virtual-file-routes': 1.114.12 + '@tanstack/router-core': 1.115.0 + '@tanstack/router-generator': 1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@tanstack/router-utils': 1.115.0 + '@tanstack/virtual-file-routes': 1.115.0 '@types/babel__core': 7.20.5 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - babel-dead-code-elimination: 1.0.9 + '@types/babel__traverse': 7.20.7 + babel-dead-code-elimination: 1.0.10 chokidar: 3.6.0 unplugin: 2.2.2 zod: 3.24.2 optionalDependencies: '@rsbuild/core': 1.1.13 - '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - vite: 6.2.3(@types/node@22.13.13)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - webpack: 5.98.0 + '@tanstack/react-router': 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + vite: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) + webpack: 5.99.0 transitivePeerDependencies: - supports-color - '@tanstack/router-utils@1.114.12': + '@tanstack/router-utils@1.115.0': dependencies: '@babel/generator': 7.27.0 '@babel/parser': 7.27.0 @@ -5850,19 +5790,7 @@ snapshots: '@tanstack/store@0.7.0': {} - '@tanstack/virtual-file-routes@1.114.12': {} - - '@tsconfig/node10@1.0.11': - optional: true - - '@tsconfig/node12@1.0.11': - optional: true - - '@tsconfig/node14@1.0.3': - optional: true - - '@tsconfig/node16@1.0.4': - optional: true + '@tanstack/virtual-file-routes@1.115.0': {} '@types/async-retry@1.4.9': dependencies: @@ -5872,11 +5800,11 @@ snapshots: dependencies: '@babel/parser': 7.27.0 '@babel/types': 7.27.0 - '@types/babel__generator': 7.6.8 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.7 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: '@babel/types': 7.27.0 @@ -5885,31 +5813,31 @@ snapshots: '@babel/parser': 7.27.0 '@babel/types': 7.27.0 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.20.7': dependencies: '@babel/types': 7.27.0 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 - '@types/bun@1.2.6': + '@types/bun@1.2.8': dependencies: - bun-types: 1.2.6 + bun-types: 1.2.7 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.6 - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@types/connect@3.4.38': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@types/cookie@0.6.0': {} @@ -5923,20 +5851,18 @@ snapshots: '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 - '@types/estree@1.0.6': {} - '@types/estree@1.0.7': {} '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -5952,7 +5878,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@types/json-schema@7.0.15': {} @@ -5964,20 +5890,20 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 form-data: 4.0.2 '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 - '@types/node@22.13.13': + '@types/node@22.14.0': dependencies: - undici-types: 6.20.0 + undici-types: 6.21.0 '@types/pg@8.11.11': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 pg-protocol: 1.8.0 pg-types: 4.0.2 @@ -5989,7 +5915,7 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@18.3.5(@types/react@18.3.20)': + '@types/react-dom@18.3.6(@types/react@18.3.20)': dependencies: '@types/react': 18.3.20 @@ -6009,7 +5935,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@types/serve-index@1.9.4': dependencies: @@ -6018,12 +5944,12 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 '@types/statuses@2.0.5': {} @@ -6031,23 +5957,19 @@ snapshots: '@types/uuid@8.3.4': {} - '@types/ws@8.18.0': + '@types/ws@8.18.1': dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 - '@types/ws@8.5.14': - dependencies: - '@types/node': 22.13.13 - - '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.28.0 - '@typescript-eslint/type-utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.28.0 - eslint: 9.23.0(jiti@1.21.7) + '@typescript-eslint/parser': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/type-utils': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.29.0 + eslint: 9.24.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -6056,40 +5978,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3)': + '@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.28.0 - '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.28.0 + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.29.0 debug: 4.4.0 - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.28.0': + '@typescript-eslint/scope-manager@8.29.0': dependencies: - '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/visitor-keys': 8.28.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/visitor-keys': 8.29.0 - '@typescript-eslint/type-utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) debug: 4.4.0 - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.28.0': {} + '@typescript-eslint/types@8.29.0': {} - '@typescript-eslint/typescript-estree@8.28.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.29.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/visitor-keys': 8.28.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/visitor-keys': 8.29.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -6100,30 +6022,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3)': + '@typescript-eslint/utils@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.28.0 - '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.6.3) - eslint: 9.23.0(jiti@1.21.7) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.24.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.29.0 + '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.6.3) + eslint: 9.24.0(jiti@1.21.7) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.28.0': + '@typescript-eslint/visitor-keys@8.29.0': dependencies: - '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/types': 8.29.0 eslint-visitor-keys: 4.2.0 - '@vitejs/plugin-react@4.3.4(vite@6.2.3(@types/node@22.13.13)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': + '@vitejs/plugin-react@4.3.4(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.3(@types/node@22.13.13)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + vite: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - supports-color @@ -6230,7 +6152,7 @@ snapshots: headers-polyfill: 3.3.0 json-stable-stringify: 1.2.1 node-fetch: 3.3.2 - otpauth: 9.3.6 + otpauth: 9.4.0 set-cookie-parser: 2.7.1 tough-cookie: 4.1.4 tslib: 2.8.1 @@ -6286,9 +6208,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@4.1.3: - optional: true - arg@5.0.2: {} argparse@2.0.1: {} @@ -6308,7 +6227,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001707 + caniuse-lite: 1.0.30001712 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -6323,7 +6242,7 @@ snapshots: transitivePeerDependencies: - debug - babel-dead-code-elimination@1.0.9: + babel-dead-code-elimination@1.0.10: dependencies: '@babel/core': 7.26.10 '@babel/parser': 7.27.0 @@ -6375,8 +6294,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001707 - electron-to-chromium: 1.5.123 + caniuse-lite: 1.0.30001712 + electron-to-chromium: 1.5.132 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -6384,10 +6303,10 @@ snapshots: buffer-from@1.1.2: {} - bun-types@1.2.6: + bun-types@1.2.7: dependencies: - '@types/node': 22.13.13 - '@types/ws': 8.5.14 + '@types/node': 22.14.0 + '@types/ws': 8.18.1 bundle-name@4.1.0: dependencies: @@ -6421,7 +6340,7 @@ snapshots: camelcase-css@2.0.1: {} - caniuse-lite@1.0.30001707: {} + caniuse-lite@1.0.30001712: {} chalk@3.0.0: dependencies: @@ -6542,12 +6461,9 @@ snapshots: core-util-is@1.0.3: {} - create-require@1.1.1: - optional: true - cron-parser@4.9.0: dependencies: - luxon: 3.6.0 + luxon: 3.6.1 cross-spawn@7.0.6: dependencies: @@ -6616,9 +6532,6 @@ snapshots: didyoumean@1.2.2: {} - diff@4.0.2: - optional: true - diff@7.0.0: {} dlv@1.1.3: {} @@ -6629,28 +6542,28 @@ snapshots: dotenv@16.4.7: {} - drizzle-kit@0.30.5: + drizzle-kit@0.30.6: dependencies: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 esbuild: 0.19.12 esbuild-register: 3.6.0(esbuild@0.19.12) - gel: 2.0.1 + gel: 2.0.2 transitivePeerDependencies: - supports-color - drizzle-orm@0.40.1(@types/pg@8.11.11)(bun-types@1.2.6)(gel@2.0.1)(pg@8.14.1): + drizzle-orm@0.40.1(@types/pg@8.11.11)(bun-types@1.2.7)(gel@2.0.2)(pg@8.14.1): optionalDependencies: '@types/pg': 8.11.11 - bun-types: 1.2.6 - gel: 2.0.1 + bun-types: 1.2.7 + gel: 2.0.2 pg: 8.14.1 - drizzle-seed@0.3.1(drizzle-orm@0.40.1(@types/pg@8.11.11)(bun-types@1.2.6)(gel@2.0.1)(pg@8.14.1)): + drizzle-seed@0.3.1(drizzle-orm@0.40.1(@types/pg@8.11.11)(bun-types@1.2.7)(gel@2.0.2)(pg@8.14.1)): dependencies: pure-rand: 6.1.0 optionalDependencies: - drizzle-orm: 0.40.1(@types/pg@8.11.11)(bun-types@1.2.6)(gel@2.0.1)(pg@8.14.1) + drizzle-orm: 0.40.1(@types/pg@8.11.11)(bun-types@1.2.7)(gel@2.0.2)(pg@8.14.1) dunder-proto@1.0.1: dependencies: @@ -6664,7 +6577,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.123: {} + electron-to-chromium@1.5.132: {} emoji-regex@10.4.0: {} @@ -6795,33 +6708,33 @@ snapshots: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - esbuild@0.25.1: + esbuild@0.25.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.1 - '@esbuild/android-arm': 0.25.1 - '@esbuild/android-arm64': 0.25.1 - '@esbuild/android-x64': 0.25.1 - '@esbuild/darwin-arm64': 0.25.1 - '@esbuild/darwin-x64': 0.25.1 - '@esbuild/freebsd-arm64': 0.25.1 - '@esbuild/freebsd-x64': 0.25.1 - '@esbuild/linux-arm': 0.25.1 - '@esbuild/linux-arm64': 0.25.1 - '@esbuild/linux-ia32': 0.25.1 - '@esbuild/linux-loong64': 0.25.1 - '@esbuild/linux-mips64el': 0.25.1 - '@esbuild/linux-ppc64': 0.25.1 - '@esbuild/linux-riscv64': 0.25.1 - '@esbuild/linux-s390x': 0.25.1 - '@esbuild/linux-x64': 0.25.1 - '@esbuild/netbsd-arm64': 0.25.1 - '@esbuild/netbsd-x64': 0.25.1 - '@esbuild/openbsd-arm64': 0.25.1 - '@esbuild/openbsd-x64': 0.25.1 - '@esbuild/sunos-x64': 0.25.1 - '@esbuild/win32-arm64': 0.25.1 - '@esbuild/win32-ia32': 0.25.1 - '@esbuild/win32-x64': 0.25.1 + '@esbuild/aix-ppc64': 0.25.2 + '@esbuild/android-arm': 0.25.2 + '@esbuild/android-arm64': 0.25.2 + '@esbuild/android-x64': 0.25.2 + '@esbuild/darwin-arm64': 0.25.2 + '@esbuild/darwin-x64': 0.25.2 + '@esbuild/freebsd-arm64': 0.25.2 + '@esbuild/freebsd-x64': 0.25.2 + '@esbuild/linux-arm': 0.25.2 + '@esbuild/linux-arm64': 0.25.2 + '@esbuild/linux-ia32': 0.25.2 + '@esbuild/linux-loong64': 0.25.2 + '@esbuild/linux-mips64el': 0.25.2 + '@esbuild/linux-ppc64': 0.25.2 + '@esbuild/linux-riscv64': 0.25.2 + '@esbuild/linux-s390x': 0.25.2 + '@esbuild/linux-x64': 0.25.2 + '@esbuild/netbsd-arm64': 0.25.2 + '@esbuild/netbsd-x64': 0.25.2 + '@esbuild/openbsd-arm64': 0.25.2 + '@esbuild/openbsd-x64': 0.25.2 + '@esbuild/sunos-x64': 0.25.2 + '@esbuild/win32-arm64': 0.25.2 + '@esbuild/win32-ia32': 0.25.2 + '@esbuild/win32-x64': 0.25.2 escalade@3.2.0: {} @@ -6829,13 +6742,13 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@5.2.0(eslint@9.23.0(jiti@1.21.7)): + eslint-plugin-react-hooks@5.2.0(eslint@9.24.0(jiti@1.21.7)): dependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) - eslint-plugin-react-refresh@0.4.19(eslint@9.23.0(jiti@1.21.7)): + eslint-plugin-react-refresh@0.4.19(eslint@9.24.0(jiti@1.21.7)): dependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.24.0(jiti@1.21.7) eslint-scope@5.1.1: dependencies: @@ -6851,16 +6764,16 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.23.0(jiti@1.21.7): + eslint@9.24.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.24.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.2 - '@eslint/config-helpers': 0.2.0 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.1 '@eslint/core': 0.12.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.23.0 - '@eslint/plugin-kit': 0.2.7 + '@eslint/js': 9.24.0 + '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 @@ -7090,7 +7003,7 @@ snapshots: function-bind@1.1.2: {} - gel@2.0.1: + gel@2.0.2: dependencies: '@petamoriken/float16': 3.9.2 debug: 4.4.0 @@ -7223,7 +7136,7 @@ snapshots: readable-stream: 2.3.8 wbuf: 1.7.3 - html-entities@2.5.3: {} + html-entities@2.6.0: {} http-assert@1.5.0: dependencies: @@ -7392,7 +7305,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -7554,10 +7467,7 @@ snapshots: dependencies: react: 18.3.1 - luxon@3.6.0: {} - - make-error@1.3.6: - optional: true + luxon@3.6.1: {} math-intrinsics@1.1.0: {} @@ -7623,12 +7533,12 @@ snapshots: ms@2.1.3: {} - msw@2.7.3(@types/node@22.13.13)(typescript@5.6.3): + msw@2.7.3(@types/node@22.14.0)(typescript@5.6.3): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.8(@types/node@22.13.13) + '@inquirer/confirm': 5.1.9(@types/node@22.14.0) '@mswjs/interceptors': 0.37.6 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -7641,7 +7551,7 @@ snapshots: path-to-regexp: 6.3.0 picocolors: 1.1.1 strict-event-emitter: 0.5.1 - type-fest: 4.38.0 + type-fest: 4.39.1 yargs: 17.7.2 optionalDependencies: typescript: 5.6.3 @@ -7752,7 +7662,7 @@ snapshots: openapi3-ts@4.4.0: dependencies: - yaml: 2.7.0 + yaml: 2.7.1 opener@1.5.2: {} @@ -7777,9 +7687,9 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.1.0 - otpauth@9.3.6: + otpauth@9.4.0: dependencies: - '@noble/hashes': 1.6.1 + '@noble/hashes': 1.7.1 outvariant@1.4.3: {} @@ -7916,7 +7826,7 @@ snapshots: sonic-boom: 4.2.0 thread-stream: 3.1.0 - pirates@4.0.6: {} + pirates@4.0.7: {} pluralize@8.0.0: {} @@ -7932,13 +7842,12 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.3 - postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.13)(typescript@5.6.3)): + postcss-load-config@4.0.2(postcss@8.5.3): dependencies: lilconfig: 3.1.3 - yaml: 2.7.0 + yaml: 2.7.1 optionalDependencies: postcss: 8.5.3 - ts-node: 10.9.2(@types/node@22.13.13)(typescript@5.6.3) postcss-nested@6.2.0(postcss@8.5.3): dependencies: @@ -8132,30 +8041,30 @@ snapshots: dependencies: glob: 10.4.5 - rollup@4.37.0: + rollup@4.39.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.37.0 - '@rollup/rollup-android-arm64': 4.37.0 - '@rollup/rollup-darwin-arm64': 4.37.0 - '@rollup/rollup-darwin-x64': 4.37.0 - '@rollup/rollup-freebsd-arm64': 4.37.0 - '@rollup/rollup-freebsd-x64': 4.37.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 - '@rollup/rollup-linux-arm-musleabihf': 4.37.0 - '@rollup/rollup-linux-arm64-gnu': 4.37.0 - '@rollup/rollup-linux-arm64-musl': 4.37.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 - '@rollup/rollup-linux-riscv64-gnu': 4.37.0 - '@rollup/rollup-linux-riscv64-musl': 4.37.0 - '@rollup/rollup-linux-s390x-gnu': 4.37.0 - '@rollup/rollup-linux-x64-gnu': 4.37.0 - '@rollup/rollup-linux-x64-musl': 4.37.0 - '@rollup/rollup-win32-arm64-msvc': 4.37.0 - '@rollup/rollup-win32-ia32-msvc': 4.37.0 - '@rollup/rollup-win32-x64-msvc': 4.37.0 + '@rollup/rollup-android-arm-eabi': 4.39.0 + '@rollup/rollup-android-arm64': 4.39.0 + '@rollup/rollup-darwin-arm64': 4.39.0 + '@rollup/rollup-darwin-x64': 4.39.0 + '@rollup/rollup-freebsd-arm64': 4.39.0 + '@rollup/rollup-freebsd-x64': 4.39.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.39.0 + '@rollup/rollup-linux-arm-musleabihf': 4.39.0 + '@rollup/rollup-linux-arm64-gnu': 4.39.0 + '@rollup/rollup-linux-arm64-musl': 4.39.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.39.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-musl': 4.39.0 + '@rollup/rollup-linux-s390x-gnu': 4.39.0 + '@rollup/rollup-linux-x64-gnu': 4.39.0 + '@rollup/rollup-linux-x64-musl': 4.39.0 + '@rollup/rollup-win32-arm64-msvc': 4.39.0 + '@rollup/rollup-win32-ia32-msvc': 4.39.0 + '@rollup/rollup-win32-x64-msvc': 4.39.0 fsevents: 2.3.3 rslog@1.2.3: {} @@ -8433,7 +8342,7 @@ snapshots: glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 - pirates: 4.0.6 + pirates: 4.0.7 ts-interface-checker: 0.1.13 supports-color@7.2.0: @@ -8446,7 +8355,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.13)(typescript@5.6.3)): + tailwindcss@3.4.17: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -8465,7 +8374,7 @@ snapshots: postcss: 8.5.3 postcss-import: 15.1.0(postcss@8.5.3) postcss-js: 4.0.1(postcss@8.5.3) - postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.13)(typescript@5.6.3)) + postcss-load-config: 4.0.2(postcss@8.5.3) postcss-nested: 6.2.0(postcss@8.5.3) postcss-selector-parser: 6.1.2 resolve: 1.22.10 @@ -8475,25 +8384,25 @@ snapshots: tapable@2.2.1: {} - terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.98.0(esbuild@0.19.12)): + terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.99.0(esbuild@0.19.12)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) optionalDependencies: esbuild: 0.19.12 - terser-webpack-plugin@5.3.14(webpack@5.98.0): + terser-webpack-plugin@5.3.14(webpack@5.99.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.98.0 + webpack: 5.99.0 optional: true terser@5.39.0: @@ -8554,62 +8463,43 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@types/node@22.13.13)(typescript@5.6.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.13.13 - acorn: 8.14.1 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.6.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true - tslib@2.8.1: {} tsscmp@1.0.6: {} tsx@4.19.3: dependencies: - esbuild: 0.25.1 + esbuild: 0.25.2 get-tsconfig: 4.10.0 optionalDependencies: fsevents: 2.3.3 - turbo-darwin-64@2.4.4: + turbo-darwin-64@2.5.0: optional: true - turbo-darwin-arm64@2.4.4: + turbo-darwin-arm64@2.5.0: optional: true - turbo-linux-64@2.4.4: + turbo-linux-64@2.5.0: optional: true - turbo-linux-arm64@2.4.4: + turbo-linux-arm64@2.5.0: optional: true - turbo-windows-64@2.4.4: + turbo-windows-64@2.5.0: optional: true - turbo-windows-arm64@2.4.4: + turbo-windows-arm64@2.5.0: optional: true - turbo@2.4.4: + turbo@2.5.0: optionalDependencies: - turbo-darwin-64: 2.4.4 - turbo-darwin-arm64: 2.4.4 - turbo-linux-64: 2.4.4 - turbo-linux-arm64: 2.4.4 - turbo-windows-64: 2.4.4 - turbo-windows-arm64: 2.4.4 + turbo-darwin-64: 2.5.0 + turbo-darwin-arm64: 2.5.0 + turbo-linux-64: 2.5.0 + turbo-linux-arm64: 2.5.0 + turbo-windows-64: 2.5.0 + turbo-windows-arm64: 2.5.0 twitter-api-v2@1.22.0: {} @@ -8619,26 +8509,26 @@ snapshots: type-fest@0.21.3: {} - type-fest@4.38.0: {} + type-fest@4.39.1: {} type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - typescript-eslint@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3): + typescript-eslint@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - eslint: 9.23.0(jiti@1.21.7) + '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/parser': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + eslint: 9.24.0(jiti@1.21.7) typescript: 5.6.3 transitivePeerDependencies: - supports-color typescript@5.6.3: {} - undici-types@6.20.0: {} + undici-types@6.21.0: {} universalify@0.1.2: {} @@ -8670,7 +8560,7 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - use-sync-external-store@1.4.0(react@18.3.1): + use-sync-external-store@1.5.0(react@18.3.1): dependencies: react: 18.3.1 @@ -8680,23 +8570,20 @@ snapshots: uuid@8.3.2: {} - v8-compile-cache-lib@3.0.1: - optional: true - vary@1.1.2: {} - vite@6.2.3(@types/node@22.13.13)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): + vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1): dependencies: - esbuild: 0.25.1 + esbuild: 0.25.2 postcss: 8.5.3 - rollup: 4.37.0 + rollup: 4.39.0 optionalDependencies: - '@types/node': 22.13.13 + '@types/node': 22.14.0 fsevents: 2.3.3 jiti: 1.21.7 terser: 5.39.0 tsx: 4.19.3 - yaml: 2.7.0 + yaml: 2.7.1 wait-on@8.0.3: dependencies: @@ -8736,7 +8623,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.19.12)): + webpack-dev-middleware@7.4.2(webpack@5.99.0(esbuild@0.19.12)): dependencies: colorette: 2.0.20 memfs: 4.17.0 @@ -8745,9 +8632,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.0 optionalDependencies: - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) - webpack-dev-server@5.0.4(webpack@5.98.0(esbuild@0.19.12)): + webpack-dev-server@5.0.4(webpack@5.99.0(esbuild@0.19.12)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -8755,7 +8642,7 @@ snapshots: '@types/serve-index': 1.9.4 '@types/serve-static': 1.15.7 '@types/sockjs': 0.3.36 - '@types/ws': 8.18.0 + '@types/ws': 8.18.1 ansi-html-community: 0.0.8 bonjour-service: 1.3.0 chokidar: 3.6.0 @@ -8765,7 +8652,7 @@ snapshots: default-gateway: 6.0.3 express: 4.21.2 graceful-fs: 4.2.11 - html-entities: 2.5.3 + html-entities: 2.6.0 http-proxy-middleware: 2.0.7(@types/express@4.17.21) ipaddr.js: 2.2.0 launch-editor: 2.10.0 @@ -8777,10 +8664,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.19.12)) + webpack-dev-middleware: 7.4.2(webpack@5.99.0(esbuild@0.19.12)) ws: 8.18.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.19.12) + webpack: 5.99.0(esbuild@0.19.12) transitivePeerDependencies: - bufferutil - debug @@ -8791,7 +8678,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.98.0: + webpack@5.99.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -8813,7 +8700,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(webpack@5.98.0) + terser-webpack-plugin: 5.3.14(webpack@5.99.0) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -8822,7 +8709,7 @@ snapshots: - uglify-js optional: true - webpack@5.98.0(esbuild@0.19.12): + webpack@5.99.0(esbuild@0.19.12): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -8844,7 +8731,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.98.0(esbuild@0.19.12)) + terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.99.0(esbuild@0.19.12)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -8911,7 +8798,7 @@ snapshots: yallist@3.1.1: {} - yaml@2.7.0: {} + yaml@2.7.1: {} yargs-parser@21.1.1: {} @@ -8927,9 +8814,6 @@ snapshots: ylru@1.4.0: {} - yn@3.1.1: - optional: true - yocto-queue@0.1.0: {} yoctocolors-cjs@2.1.2: {} diff --git a/scripts/dev.sh b/scripts/dev.sh new file mode 100755 index 00000000..7e2625db --- /dev/null +++ b/scripts/dev.sh @@ -0,0 +1,120 @@ +#!/bin/bash + +# Parse command line arguments +FRESH=false +SKIP_DB=false +for arg in "$@" +do + case $arg in + --fresh) + FRESH=true + shift # Remove --fresh from processing + ;; + --skip-db) + SKIP_DB=true + shift # Remove --skip-db from processing + ;; + *) + # Unknown option + ;; + esac +done + +# Function to clean up Docker containers +cleanup() { + echo "" + echo "šŸ›‘ Cleaning up Docker containers..." + if [ "$FRESH" = true ]; then + echo "🧹 Removing volumes for fresh start next time..." + docker-compose --profile dev down -v + else + echo "šŸ’¾ Stopping containers but preserving data..." + docker-compose --profile dev down + fi + exit 0 +} + +# Trap SIGINT and SIGTERM signals to clean up Docker containers +trap cleanup SIGINT SIGTERM EXIT + +# Set DATABASE_URL environment variable for the dev process +export DATABASE_URL="postgresql://postgres:postgres@localhost:5432/curatedotfun" + +if [ "$SKIP_DB" = true ]; then + echo "ā© Skipping database setup as requested with --skip-db" +else + # Check if postgres_dev is already running + if docker ps | grep -q postgres_dev; then + echo "🐘 PostgreSQL container is already running." + else + # Start Docker containers + echo "šŸš€ Starting Docker containers..." + + # If --fresh flag is provided, remove existing volumes first + if [ "$FRESH" = true ]; then + echo "🧹 Starting with fresh database..." + docker-compose --profile dev down -v + fi + + # Start postgres container + echo "🐘 Starting PostgreSQL container..." + docker-compose --profile dev up -d postgres_dev + + # Check if postgres container started successfully + if [ $? -ne 0 ]; then + echo "āŒ Failed to start PostgreSQL container." + + # Check if the port is already in use + if lsof -i :5432 > /dev/null; then + echo "āš ļø Port 5432 is already in use. This might be causing the issue." + echo "šŸ‘‰ You can try one of the following:" + echo " 1. Stop the existing PostgreSQL service: brew services stop postgresql" + echo " 2. Run with --skip-db to skip database setup (if you have PostgreSQL running elsewhere)" + echo " 3. Modify docker-compose.yml to use a different port" + fi + + echo "🧹 Cleaning up..." + cleanup + exit 1 + fi + + # Wait for PostgreSQL to be ready + echo "ā³ Waiting for PostgreSQL to be ready..." + for i in {1..30}; do + if docker exec postgres_dev pg_isready -U postgres > /dev/null 2>&1; then + echo "āœ… PostgreSQL is ready!" + break + fi + if [ $i -eq 30 ]; then + echo "āŒ Timed out waiting for PostgreSQL to be ready." + echo "🧹 Cleaning up..." + cleanup + exit 1 + fi + sleep 1 + done + + # Run database initialization + echo "šŸ”„ Initializing database..." + docker-compose --profile dev run --rm db-init-dev + + # Check if database initialization was successful + if [ $? -ne 0 ]; then + echo "āŒ Failed to initialize database." + echo "🧹 Cleaning up..." + cleanup + exit 1 + fi + + echo "āœ… Database setup complete!" + fi +fi + +# Run the dev command +echo "šŸš€ Starting development servers..." +echo "šŸ“ Press Ctrl+C to stop all services and clean up containers" +echo "🌐 Frontend will be available at: http://localhost:5173" +echo "šŸ”Œ Backend will be available at: http://localhost:3000" +echo "" + +turbo run dev From bd77c8b638a039463213d7511b1e4bbbedac0303 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 7 Apr 2025 11:56:55 -0500 Subject: [PATCH 012/113] add migrations --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 61663e4c..2ac3e0ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,6 +46,7 @@ RUN addgroup -S app && adduser -S app -G app COPY --from=builder --chown=app:app /app/backend/dist ./backend/dist COPY --from=builder --chown=app:app /app/backend/package.json ./backend/package.json COPY --from=builder --chown=app:app /app/backend/drizzle.config.ts ./backend/drizzle.config.ts +COPY --from=builder --chown=app:app /app/backend/src/services/db/migrations ./backend/src/services/db/migrations COPY --from=builder --chown=app:app /app/backend/src/services/db/schema.ts ./backend/src/services/db/schema.ts COPY --from=builder --chown=app:app /app/backend/src/services/twitter/schema.ts ./backend/src/services/twitter/schema.ts COPY --from=builder --chown=app:app /app/package.json ./ From 62adc6f8e84f705a0bf2974e97ed26c08274eba3 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 7 Apr 2025 12:51:43 -0500 Subject: [PATCH 013/113] fix mimetypes and assets in production --- backend/src/routes/static.ts | 115 +++++++++++++++++++++++++++++++++++ docker-compose.yml | 2 +- frontend/rsbuild.config.ts | 17 ++++++ frontend/src/index.css | 2 +- 4 files changed, 134 insertions(+), 2 deletions(-) diff --git a/backend/src/routes/static.ts b/backend/src/routes/static.ts index c0532fb5..73739200 100644 --- a/backend/src/routes/static.ts +++ b/backend/src/routes/static.ts @@ -25,6 +25,11 @@ async function serveFileWithMimeType( return c.newResponse(content, { headers: { "Content-Type": mimeType, + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, OPTIONS", + "Access-Control-Allow-Headers": + "Origin, X-Requested-With, Content-Type, Accept", + "Cache-Control": "public, max-age=31536000", }, }); } catch (error) { @@ -69,6 +74,116 @@ export function configureStaticRoutes(publicDir: string) { ); }); + // Handle font files (both paths for compatibility) + staticRoutes.get("/fonts/*", async (c) => { + const filename = c.req.path.replace("/fonts/", ""); + let mimeType = "application/octet-stream"; + + if (filename.endsWith(".ttf")) mimeType = "font/ttf"; + else if (filename.endsWith(".woff")) mimeType = "font/woff"; + else if (filename.endsWith(".woff2")) mimeType = "font/woff2"; + else if (filename.endsWith(".eot")) + mimeType = "application/vnd.ms-fontobject"; + else if (filename.endsWith(".otf")) mimeType = "font/otf"; + + return serveFileWithMimeType( + path.join(publicDir, "fonts"), + filename, + mimeType, + c, + ); + }); + + staticRoutes.get("/assets/fonts/*", async (c) => { + const filename = c.req.path.replace("/assets/fonts/", ""); + let mimeType = "application/octet-stream"; + + if (filename.endsWith(".ttf")) mimeType = "font/ttf"; + else if (filename.endsWith(".woff")) mimeType = "font/woff"; + else if (filename.endsWith(".woff2")) mimeType = "font/woff2"; + else if (filename.endsWith(".eot")) + mimeType = "application/vnd.ms-fontobject"; + else if (filename.endsWith(".otf")) mimeType = "font/otf"; + + return serveFileWithMimeType( + path.join(publicDir, "assets/fonts"), + filename, + mimeType, + c, + ); + }); + + // Handle image files (both paths for compatibility) + staticRoutes.get("/images/*", async (c) => { + const filename = c.req.path.replace("/images/", ""); + let mimeType = "application/octet-stream"; + + if (filename.endsWith(".png")) mimeType = "image/png"; + else if (filename.endsWith(".jpg") || filename.endsWith(".jpeg")) + mimeType = "image/jpeg"; + else if (filename.endsWith(".gif")) mimeType = "image/gif"; + else if (filename.endsWith(".svg")) mimeType = "image/svg+xml"; + else if (filename.endsWith(".ico")) mimeType = "image/x-icon"; + + return serveFileWithMimeType( + path.join(publicDir, "images"), + filename, + mimeType, + c, + ); + }); + + staticRoutes.get("/assets/images/*", async (c) => { + const filename = c.req.path.replace("/assets/images/", ""); + let mimeType = "application/octet-stream"; + + if (filename.endsWith(".png")) mimeType = "image/png"; + else if (filename.endsWith(".jpg") || filename.endsWith(".jpeg")) + mimeType = "image/jpeg"; + else if (filename.endsWith(".gif")) mimeType = "image/gif"; + else if (filename.endsWith(".svg")) mimeType = "image/svg+xml"; + else if (filename.endsWith(".ico")) mimeType = "image/x-icon"; + + return serveFileWithMimeType( + path.join(publicDir, "assets/images"), + filename, + mimeType, + c, + ); + }); + + // Handle icon files + staticRoutes.get("/icons/*", async (c) => { + const filename = c.req.path.replace("/icons/", ""); + let mimeType = "image/svg+xml"; // Default for icons + + if (filename.endsWith(".png")) mimeType = "image/png"; + else if (filename.endsWith(".jpg") || filename.endsWith(".jpeg")) + mimeType = "image/jpeg"; + else if (filename.endsWith(".ico")) mimeType = "image/x-icon"; + + return serveFileWithMimeType( + path.join(publicDir, "icons"), + filename, + mimeType, + c, + ); + }); + + // Handle root-level files (favicon, etc.) + staticRoutes.get("/:filename{.+\\..+}", async (c) => { + const filename = c.req.param("filename"); + let mimeType = "application/octet-stream"; + + if (filename.endsWith(".ico")) mimeType = "image/x-icon"; + else if (filename.endsWith(".png")) mimeType = "image/png"; + else if (filename.endsWith(".svg")) mimeType = "image/svg+xml"; + else if (filename.endsWith(".webmanifest")) + mimeType = "application/manifest+json"; + + return serveFileWithMimeType(publicDir, filename, mimeType, c); + }); + // Serve other static files staticRoutes.use("/static/*", serveStatic(staticOptions)); staticRoutes.use("/assets/*", serveStatic(staticOptions)); diff --git a/docker-compose.yml b/docker-compose.yml index dc4f570b..f9725fd2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -64,7 +64,7 @@ services: volumes: - ./backend:/app - node_modules_cache:/app/node_modules # Add persistent volume for node_modules, otherwise this messes with rspack bindings - command: sh -c "if [ ! -d /app/node_modules/.pnpm ]; then echo 'šŸ“¦ Installing dependencies...' && bun add -g pnpm && pnpm install; else echo 'āœ… Dependencies already installed, skipping'; fi && pnpm run db:migrate && pnpm run db:seed:dev" + command: sh -c "bun add -g pnpm && if [ ! -d /app/node_modules/.pnpm ]; then echo 'šŸ“¦ Installing dependencies...' && pnpm install; else echo 'āœ… Dependencies already installed, skipping'; fi && pnpm run db:migrate && pnpm run db:seed:dev" profiles: ["dev"] # Test-specific initialization diff --git a/frontend/rsbuild.config.ts b/frontend/rsbuild.config.ts index c8dd003d..0b4331b5 100644 --- a/frontend/rsbuild.config.ts +++ b/frontend/rsbuild.config.ts @@ -1,12 +1,21 @@ import { defineConfig } from "@rsbuild/core"; import { pluginReact } from "@rsbuild/plugin-react"; import { TanStackRouterRspack } from "@tanstack/router-plugin/rspack"; +import path from "path"; export default defineConfig({ plugins: [pluginReact()], html: { template: "./index.html", }, + source: { + alias: { + "@fonts": path.resolve(__dirname, "public/fonts"), + }, + }, + output: { + assetPrefix: "/", + }, tools: { rspack: { plugins: [TanStackRouterRspack()], @@ -19,6 +28,13 @@ export default defineConfig({ filename: "fonts/[name][ext]", }, }, + { + test: /\.(png|jpg|jpeg|gif|svg|ico)$/i, + type: "asset/resource", + generator: { + filename: "images/[name][ext]", + }, + }, ], }, }, @@ -35,6 +51,7 @@ export default defineConfig({ }, }, dev: { + assetPrefix: "/", writeToDisk: true, }, }); diff --git a/frontend/src/index.css b/frontend/src/index.css index 8f6e4afa..f268a628 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -6,7 +6,7 @@ @font-face { font-family: 'Londrina Solid'; - src: url('../public/fonts/LondrinaSolid-NNS.ttf') format('truetype'); + src: url('@fonts/LondrinaSolid-NNS.ttf') format('truetype'); font-weight: normal; font-style: normal; } From 89368226207f1656b732260adf5b2a08e67dfac9 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 7 Apr 2025 14:58:27 -0600 Subject: [PATCH 014/113] Migrate schema and improve dev server (#119) * fixes increment count * fix db writes * fmt * nitpicks --- backend/scripts/seed-dev.ts | 201 +----- .../__test__/mocks/twitter-service.mock.ts | 6 +- backend/src/app.ts | 4 + backend/src/services/config/config.service.ts | 4 +- .../db/migrations/0001_fixed_hulk.sql | 1 + .../db/migrations/meta/0001_snapshot.json | 627 ++++++++++++++++++ .../services/db/migrations/meta/_journal.json | 7 + backend/src/services/db/queries.ts | 14 +- .../db/repositories/feed.repository.ts | 9 - .../db/repositories/submission.repository.ts | 8 +- backend/src/services/db/schema.ts | 3 +- backend/src/services/db/transaction.ts | 45 +- .../submissions/submission.service.ts | 4 +- backend/src/utils/logger.ts | 60 ++ backend/test/README.md | 2 +- backend/test/curate.config.test.json | 1 + .../submission.repository.test.ts | 1 - memory-bank/techContext.md | 11 + scripts/dev.sh | 3 +- 19 files changed, 799 insertions(+), 212 deletions(-) create mode 100644 backend/src/services/db/migrations/0001_fixed_hulk.sql create mode 100644 backend/src/services/db/migrations/meta/0001_snapshot.json diff --git a/backend/scripts/seed-dev.ts b/backend/scripts/seed-dev.ts index 09e1381c..f4cee3a1 100644 --- a/backend/scripts/seed-dev.ts +++ b/backend/scripts/seed-dev.ts @@ -19,188 +19,43 @@ async function main() { const db = drizzle(pool, { schema }); try { - // Clear existing data - await pool.query(` - TRUNCATE TABLE feeds CASCADE; - TRUNCATE TABLE submissions CASCADE; - TRUNCATE TABLE submission_feeds CASCADE; - TRUNCATE TABLE moderation_history CASCADE; - TRUNCATE TABLE feed_plugins CASCADE; - TRUNCATE TABLE submission_counts CASCADE; - TRUNCATE TABLE twitter_cookies CASCADE; - TRUNCATE TABLE twitter_cache CASCADE; - `); - - console.log("Existing data cleared. Inserting dev data..."); + // Only clear existing data if FRESH is set to true + if (process.env.FRESH === "true") { + console.log("Clearing existing data..."); + await pool.query(` + TRUNCATE TABLE feeds CASCADE; + TRUNCATE TABLE submissions CASCADE; + TRUNCATE TABLE submission_feeds CASCADE; + TRUNCATE TABLE moderation_history CASCADE; + TRUNCATE TABLE feed_plugins CASCADE; + TRUNCATE TABLE submission_counts CASCADE; + TRUNCATE TABLE twitter_cookies CASCADE; + TRUNCATE TABLE twitter_cache CASCADE; + `); + console.log("Existing data cleared. Inserting dev data..."); + } else { + console.log("Preserving existing data..."); + } // Insert feeds - await db.insert(schema.feeds).values([ - { - id: "test-feed-1", - name: "Test Feed 1", - description: "A test feed for testing", - createdAt: new Date(), - updatedAt: new Date(), - }, - { - id: "test-feed-2", - name: "Test Feed 2", - description: "Another test feed for testing", - createdAt: new Date(), - updatedAt: new Date(), - }, - { - id: "test-feed-3", - name: "Test Feed 3", - description: "Yet another test feed for testing", - createdAt: new Date(), - updatedAt: new Date(), - }, - ]); + // await db.insert(schema.feeds).values([ + // This happens in submission service + // ]); // Insert submissions - await db.insert(schema.submissions).values([ - { - tweetId: "tweet-1", - userId: "user-1", - username: "testuser1", - curatorId: "curator-1", - curatorUsername: "curator1", - curatorTweetId: "curator-tweet-1", - content: "Test tweet 1 content", - curatorNotes: null, - submittedAt: new Date().toISOString(), - createdAt: new Date(), - updatedAt: new Date(), - }, - { - tweetId: "tweet-2", - userId: "user-2", - username: "testuser2", - curatorId: "curator-1", - curatorUsername: "curator1", - curatorTweetId: "curator-tweet-2", - content: "Test tweet 2 content", - curatorNotes: "Good content", - submittedAt: new Date().toISOString(), - createdAt: new Date(), - updatedAt: new Date(), - }, - { - tweetId: "tweet-3", - userId: "user-3", - username: "testuser3", - curatorId: "curator-2", - curatorUsername: "curator2", - curatorTweetId: "curator-tweet-3", - content: "Test tweet 3 content", - curatorNotes: null, - submittedAt: new Date().toISOString(), - createdAt: new Date(), - updatedAt: new Date(), - }, - ]); + // await db.insert(schema.submissions).values([ + + // ]); // Insert submission_feeds - await db.insert(schema.submissionFeeds).values([ - { - submissionId: "tweet-1", - feedId: "test-feed-1", - status: "pending", - moderationResponseTweetId: null, - createdAt: new Date(), - updatedAt: new Date(), - }, - { - submissionId: "tweet-2", - feedId: "test-feed-1", - status: "approved", - moderationResponseTweetId: "mod-tweet-1", - createdAt: new Date(), - updatedAt: new Date(), - }, - { - submissionId: "tweet-2", - feedId: "test-feed-2", - status: "pending", - moderationResponseTweetId: null, - createdAt: new Date(), - updatedAt: new Date(), - }, - { - submissionId: "tweet-3", - feedId: "test-feed-3", - status: "rejected", - moderationResponseTweetId: "mod-tweet-2", - createdAt: new Date(), - updatedAt: new Date(), - }, - ]); + // await db.insert(schema.submissionFeeds).values([ - // Insert moderation_history - await db.insert(schema.moderationHistory).values([ - { - tweetId: "tweet-2", - feedId: "test-feed-1", - adminId: "moderator-1", - action: "approve", - note: "Approved for feed 1", - createdAt: new Date(), - updatedAt: new Date(), - }, - { - tweetId: "tweet-3", - feedId: "test-feed-3", - adminId: "moderator-2", - action: "reject", - note: "Rejected for feed 3", - createdAt: new Date(), - updatedAt: new Date(), - }, - ]); + // ]); - // Insert feed_plugins - await db.insert(schema.feedPlugins).values([ - { - feedId: "test-feed-1", - pluginId: "telegram", - config: '{"channelId": "test-channel-1", "enabled": true}', - createdAt: new Date(), - updatedAt: new Date(), - }, - { - feedId: "test-feed-2", - pluginId: "rss", - config: '{"title": "Test RSS Feed", "enabled": true}', - createdAt: new Date(), - updatedAt: new Date(), - }, - ]); + // Insert moderation_history + // await db.insert(schema.moderationHistory).values([ - // Insert submission_counts - await db.insert(schema.submissionCounts).values([ - { - userId: "user-1", - count: 1, - lastResetDate: new Date(), - createdAt: new Date(), - updatedAt: new Date(), - }, - { - userId: "user-2", - count: 1, - lastResetDate: new Date(), - createdAt: new Date(), - updatedAt: new Date(), - }, - { - userId: "user-3", - count: 1, - lastResetDate: new Date(), - createdAt: new Date(), - updatedAt: new Date(), - }, - ]); + // ]); console.log("Database seeded successfully!"); } catch (error) { diff --git a/backend/src/__test__/mocks/twitter-service.mock.ts b/backend/src/__test__/mocks/twitter-service.mock.ts index b2ac0978..53fdf81b 100644 --- a/backend/src/__test__/mocks/twitter-service.mock.ts +++ b/backend/src/__test__/mocks/twitter-service.mock.ts @@ -44,7 +44,7 @@ export class MockTwitterService extends TwitterService { }; }, likeTweet: async (tweetId: string) => { - logger.info(`Mock: Liked tweet ${tweetId}`); + logger.info(`[MOCK]: Liked tweet ${tweetId}`); return true; }, sendTweet: async (message: string, replyToId?: string) => { @@ -92,7 +92,7 @@ export class MockTwitterService extends TwitterService { }; this.mockTweets.push(fullTweet); logger.info( - `Mock: Added tweet "${fullTweet.text}" from @${fullTweet.username}${tweet.inReplyToStatusId ? ` as reply to ${tweet.inReplyToStatusId}` : ""}`, + `[MOCK]: Added tweet "${fullTweet.text}" from @${fullTweet.username}${tweet.inReplyToStatusId ? ` as reply to ${tweet.inReplyToStatusId}` : ""}`, ); return fullTweet; } @@ -103,7 +103,7 @@ export class MockTwitterService extends TwitterService { public clearMockTweets() { this.mockTweets = []; - logger.info("Mock: Cleared all tweets"); + logger.info("[MOCK]: Cleared all tweets"); } async initialize(): Promise { diff --git a/backend/src/app.ts b/backend/src/app.ts index b90354d6..64579872 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -53,6 +53,10 @@ export async function createApp(): Promise { ) : null; + if (submissionService) { + submissionService.initialize(); + } + const context: AppContext = { twitterService, submissionService, diff --git a/backend/src/services/config/config.service.ts b/backend/src/services/config/config.service.ts index b1baf2a8..4fdc2fd3 100644 --- a/backend/src/services/config/config.service.ts +++ b/backend/src/services/config/config.service.ts @@ -17,13 +17,13 @@ export class ConfigService { private configPath: string; private constructor() { - if (isTest) { + if (!isProduction) { this.configPath = path.resolve( process.cwd(), "test/curate.config.test.json", ); } else { - // Dockerfile or dev + // Production environment this.configPath = path.resolve(process.cwd(), "../curate.config.json"); } diff --git a/backend/src/services/db/migrations/0001_fixed_hulk.sql b/backend/src/services/db/migrations/0001_fixed_hulk.sql new file mode 100644 index 00000000..7e11f58e --- /dev/null +++ b/backend/src/services/db/migrations/0001_fixed_hulk.sql @@ -0,0 +1 @@ +ALTER TABLE "submission_counts" ALTER COLUMN "last_reset_date" SET DATA TYPE date; \ No newline at end of file diff --git a/backend/src/services/db/migrations/meta/0001_snapshot.json b/backend/src/services/db/migrations/meta/0001_snapshot.json new file mode 100644 index 00000000..15d04d70 --- /dev/null +++ b/backend/src/services/db/migrations/meta/0001_snapshot.json @@ -0,0 +1,627 @@ +{ + "id": "1fcb2de0-e4d9-470b-b1e0-945aac184a2b", + "prevId": "1be74893-cfc8-47f1-b9e9-788ded3c0097", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.feed_plugins": { + "name": "feed_plugins", + "schema": "", + "columns": { + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "plugin_id": { + "name": "plugin_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "config": { + "name": "config", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "feed_plugins_feed_idx": { + "name": "feed_plugins_feed_idx", + "columns": [ + { + "expression": "feed_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "feed_plugins_plugin_idx": { + "name": "feed_plugins_plugin_idx", + "columns": [ + { + "expression": "plugin_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feed_plugins_feed_id_feeds_id_fk": { + "name": "feed_plugins_feed_id_feeds_id_fk", + "tableFrom": "feed_plugins", + "tableTo": "feeds", + "columnsFrom": ["feed_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feed_plugins_feed_id_plugin_id_pk": { + "name": "feed_plugins_feed_id_plugin_id_pk", + "columns": ["feed_id", "plugin_id"] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.moderation_history": { + "name": "moderation_history", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tweet_id": { + "name": "tweet_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "admin_id": { + "name": "admin_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "note": { + "name": "note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "moderation_history_tweet_idx": { + "name": "moderation_history_tweet_idx", + "columns": [ + { + "expression": "tweet_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "moderation_history_admin_idx": { + "name": "moderation_history_admin_idx", + "columns": [ + { + "expression": "admin_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "moderation_history_feed_idx": { + "name": "moderation_history_feed_idx", + "columns": [ + { + "expression": "feed_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "moderation_history_tweet_id_submissions_tweet_id_fk": { + "name": "moderation_history_tweet_id_submissions_tweet_id_fk", + "tableFrom": "moderation_history", + "tableTo": "submissions", + "columnsFrom": ["tweet_id"], + "columnsTo": ["tweet_id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "moderation_history_feed_id_feeds_id_fk": { + "name": "moderation_history_feed_id_feeds_id_fk", + "tableFrom": "moderation_history", + "tableTo": "feeds", + "columnsFrom": ["feed_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.submission_counts": { + "name": "submission_counts", + "schema": "", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "count": { + "name": "count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "last_reset_date": { + "name": "last_reset_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "submission_counts_date_idx": { + "name": "submission_counts_date_idx", + "columns": [ + { + "expression": "last_reset_date", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.submission_feeds": { + "name": "submission_feeds", + "schema": "", + "columns": { + "submission_id": { + "name": "submission_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "moderation_response_tweet_id": { + "name": "moderation_response_tweet_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "submission_feeds_feed_idx": { + "name": "submission_feeds_feed_idx", + "columns": [ + { + "expression": "feed_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "submission_feeds_submission_id_submissions_tweet_id_fk": { + "name": "submission_feeds_submission_id_submissions_tweet_id_fk", + "tableFrom": "submission_feeds", + "tableTo": "submissions", + "columnsFrom": ["submission_id"], + "columnsTo": ["tweet_id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "submission_feeds_feed_id_feeds_id_fk": { + "name": "submission_feeds_feed_id_feeds_id_fk", + "tableFrom": "submission_feeds", + "tableTo": "feeds", + "columnsFrom": ["feed_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "submission_feeds_submission_id_feed_id_pk": { + "name": "submission_feeds_submission_id_feed_id_pk", + "columns": ["submission_id", "feed_id"] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.submissions": { + "name": "submissions", + "schema": "", + "columns": { + "tweet_id": { + "name": "tweet_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "curator_id": { + "name": "curator_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "curator_username": { + "name": "curator_username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "curator_tweet_id": { + "name": "curator_tweet_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "curator_notes": { + "name": "curator_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "submitted_at": { + "name": "submitted_at", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "submissions_user_id_idx": { + "name": "submissions_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "submissions_submitted_at_idx": { + "name": "submissions_submitted_at_idx", + "columns": [ + { + "expression": "submitted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.twitter_cache": { + "name": "twitter_cache", + "schema": "", + "columns": { + "key": { + "name": "key", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.twitter_cookies": { + "name": "twitter_cookies", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "cookies": { + "name": "cookies", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/backend/src/services/db/migrations/meta/_journal.json b/backend/src/services/db/migrations/meta/_journal.json index a9d8d1d3..50e2a104 100644 --- a/backend/src/services/db/migrations/meta/_journal.json +++ b/backend/src/services/db/migrations/meta/_journal.json @@ -8,6 +8,13 @@ "when": 1742922628639, "tag": "0000_parallel_magma", "breakpoints": true + }, + { + "idx": 1, + "version": "7", + "when": 1744050920872, + "tag": "0001_fixed_hulk", + "breakpoints": true } ] } diff --git a/backend/src/services/db/queries.ts b/backend/src/services/db/queries.ts index 3eed0331..e8d75738 100644 --- a/backend/src/services/db/queries.ts +++ b/backend/src/services/db/queries.ts @@ -579,18 +579,16 @@ export async function getAllSubmissions( export async function cleanupOldSubmissionCounts( db: NodePgDatabase, - date: string, ): Promise { await db .delete(submissionCounts) - .where(sql`${submissionCounts.lastResetDate} < ${sql.raw(`'${date}'`)}`) + .where(sql`${submissionCounts.lastResetDate} < CURRENT_DATE`) .execute(); } export async function getDailySubmissionCount( db: NodePgDatabase, userId: string, - date: string, ): Promise { const results = await db .select({ count: submissionCounts.count }) @@ -598,7 +596,7 @@ export async function getDailySubmissionCount( .where( and( eq(submissionCounts.userId, userId), - eq(submissionCounts.lastResetDate, sql.raw(`'${date}'`)), + eq(submissionCounts.lastResetDate, sql`CURRENT_DATE`), ), ); @@ -609,23 +607,21 @@ export async function incrementDailySubmissionCount( db: NodePgDatabase, userId: string, ): Promise { - const today = new Date(); - await db .insert(submissionCounts) .values({ userId, count: 1, - lastResetDate: today, + lastResetDate: sql`CURRENT_DATE`, }) .onConflictDoUpdate({ target: submissionCounts.userId, set: { count: sql`CASE - WHEN ${submissionCounts.lastResetDate} < ${sql.raw(`'${today}'`)} THEN 1 + WHEN ${submissionCounts.lastResetDate} < CURRENT_DATE THEN 1 ELSE ${submissionCounts.count} + 1 END`, - lastResetDate: today, + lastResetDate: sql`CURRENT_DATE`, }, }) .execute(); diff --git a/backend/src/services/db/repositories/feed.repository.ts b/backend/src/services/db/repositories/feed.repository.ts index d6fea9c9..ded82555 100644 --- a/backend/src/services/db/repositories/feed.repository.ts +++ b/backend/src/services/db/repositories/feed.repository.ts @@ -146,8 +146,6 @@ export class FeedRepository { async () => { return await executeTransaction(async (client) => { const db = drizzle(client); - - // Update the status in a transaction to ensure consistency await queries.updateSubmissionFeedStatus( db, submissionId, @@ -155,13 +153,6 @@ export class FeedRepository { status, moderationResponseTweetId, ); - - logger.info(`Updated submission status`, { - submissionId, - feedId, - status, - moderationResponseTweetId, - }); }); }, { diff --git a/backend/src/services/db/repositories/submission.repository.ts b/backend/src/services/db/repositories/submission.repository.ts index baa4018d..a97622b0 100644 --- a/backend/src/services/db/repositories/submission.repository.ts +++ b/backend/src/services/db/repositories/submission.repository.ts @@ -127,23 +127,21 @@ export class SubmissionRepository { * @returns The daily submission count */ async getDailySubmissionCount(userId: string): Promise { - const today = new Date().toISOString().split("T")[0]; - return withDatabaseErrorHandling( async () => { // Clean up old entries first (write operation) await executeOperation(async (db) => { - await queries.cleanupOldSubmissionCounts(db, today); + await queries.cleanupOldSubmissionCounts(db); }, true); // Then get the count (read operation) return await executeOperation(async (db) => { - return await queries.getDailySubmissionCount(db, userId, today); + return await queries.getDailySubmissionCount(db, userId); }); }, { operationName: "get daily submission count", - additionalContext: { userId, date: today }, + additionalContext: { userId }, }, 0, // Default to 0 if operation fails ); diff --git a/backend/src/services/db/schema.ts b/backend/src/services/db/schema.ts index 00b75ba3..285347dd 100644 --- a/backend/src/services/db/schema.ts +++ b/backend/src/services/db/schema.ts @@ -6,6 +6,7 @@ import { text, timestamp, serial, + date, } from "drizzle-orm/pg-core"; // From exports/plugins @@ -104,7 +105,7 @@ export const submissionCounts = table( { userId: text("user_id").primaryKey(), count: integer("count").notNull().default(0), - lastResetDate: timestamp("last_reset_date").notNull(), + lastResetDate: date("last_reset_date").notNull(), ...timestamps, }, (table) => [index("submission_counts_date_idx").on(table.lastResetDate)], diff --git a/backend/src/services/db/transaction.ts b/backend/src/services/db/transaction.ts index b83cadf5..082daabb 100644 --- a/backend/src/services/db/transaction.ts +++ b/backend/src/services/db/transaction.ts @@ -64,14 +64,49 @@ export async function withDatabaseErrorHandling( try { return await operation(); } catch (error) { + // Extract basic error properties const errorMessage = error instanceof Error ? error.message : String(error); const errorStack = error instanceof Error ? error.stack : undefined; - - logger.error(`Failed to ${options.operationName}:`, { - error: errorMessage, + // Extract PostgreSQL-specific error properties if they exist + const errorDetails: Record = { + message: errorMessage, stack: errorStack, - ...options.additionalContext, - }); + }; + // Handle PostgreSQL errors which often have additional properties + if (error instanceof Error && typeof error === "object") { + // Extract common PostgreSQL error properties + const pgErrorProps = [ + "code", + "detail", + "hint", + "position", + "internalPosition", + "internalQuery", + "where", + "schema", + "table", + "column", + "dataType", + "constraint", + "severity", + ]; + for (const prop of pgErrorProps) { + if (prop in error) { + errorDetails[prop] = (error as any)[prop]; + } + } + // Check for nested error objects + if ("original" in error) { + errorDetails.original = {}; + const original = (error as any).original; + for (const prop of [...pgErrorProps, "message", "stack"]) { + if (original && prop in original) { + errorDetails.original[prop] = original[prop]; + } + } + } + } + logger.error({ error: errorDetails }, `Failed to ${options.operationName}`); if (defaultValue !== undefined) { return defaultValue; diff --git a/backend/src/services/submissions/submission.service.ts b/backend/src/services/submissions/submission.service.ts index 1662e4ec..96dbd56c 100644 --- a/backend/src/services/submissions/submission.service.ts +++ b/backend/src/services/submissions/submission.service.ts @@ -367,7 +367,7 @@ export class SubmissionService { `${tweet.id}: Successfully processed submission for tweet ${originalTweet.id}`, ); } catch (error) { - logger.error(`${tweet.id}: Error while handling submission:`, error); + logger.error(error, `${tweet.id}: Error while handling submission`); } } @@ -495,8 +495,8 @@ export class SubmissionService { } } catch (error) { logger.error( - `${submission.tweetId}: Failed to process approved submission:`, error, + `${submission.tweetId}: Failed to process approved submission`, ); } } diff --git a/backend/src/utils/logger.ts b/backend/src/utils/logger.ts index 662a418c..35848f5a 100644 --- a/backend/src/utils/logger.ts +++ b/backend/src/utils/logger.ts @@ -3,6 +3,62 @@ import pretty from "pino-pretty"; import ora, { Ora } from "ora"; import stringWidth from "string-width"; +// Helper function to serialize error objects properly +const errorSerializer = (err: any) => { + if (!err) return err; + + // If it's not an object, just return it + if (typeof err !== "object") return err; + + // Create a base serialized error + const serialized: Record = { + message: err.message || "Unknown error", + name: err.name, + stack: err.stack, + }; + + // Add all enumerable properties + for (const key in err) { + if ( + Object.prototype.hasOwnProperty.call(err, key) && + key !== "message" && + key !== "name" && + key !== "stack" + ) { + serialized[key] = err[key]; + } + } + + // Handle nested error objects + if (err.original) { + serialized.original = errorSerializer(err.original); + } + + // Handle PostgreSQL specific properties + const pgProps = [ + "code", + "detail", + "hint", + "position", + "internalPosition", + "internalQuery", + "where", + "schema", + "table", + "column", + "dataType", + "constraint", + "severity", + ]; + for (const prop of pgProps) { + if (prop in err) { + serialized[prop] = err[prop]; + } + } + + return serialized; +}; + // Create a custom pretty transport const prettyTransport = pretty({ colorize: true, @@ -15,6 +71,10 @@ const prettyTransport = pretty({ export const logger = pino( { level: "info", + serializers: { + err: errorSerializer, + error: errorSerializer, + }, }, prettyTransport, ); diff --git a/backend/test/README.md b/backend/test/README.md index c400c428..284aff34 100644 --- a/backend/test/README.md +++ b/backend/test/README.md @@ -59,7 +59,7 @@ The test environment is configured in `.env.test`. This file sets the database c ### Test Data -The test database is seeded with a consistent set of test data defined in `setup/seed/seed.sql`. This includes: +The test database is seeded with a consistent set of test data defined in `setup/seed-test.sql`. This includes: - Test feeds - Test submissions diff --git a/backend/test/curate.config.test.json b/backend/test/curate.config.test.json index b230422c..ebc350af 100644 --- a/backend/test/curate.config.test.json +++ b/backend/test/curate.config.test.json @@ -77,6 +77,7 @@ "plugin": "@curatedotfun/ai-transform", "config": { "prompt": "Create a structured summary of this content", + "apiKey": "{OPENROUTER_API_KEY}", "schema": { "title": { "type": "string", diff --git a/backend/test/unit/repositories/submission.repository.test.ts b/backend/test/unit/repositories/submission.repository.test.ts index 576a2088..3f5a91dd 100644 --- a/backend/test/unit/repositories/submission.repository.test.ts +++ b/backend/test/unit/repositories/submission.repository.test.ts @@ -364,7 +364,6 @@ describe("SubmissionRepository", () => { expect(getDailySubmissionCountSpy).toHaveBeenCalledWith( { mockDb: true }, userId, - expect.any(String), ); expect(result).toEqual(count); }); diff --git a/memory-bank/techContext.md b/memory-bank/techContext.md index 2c2058ab..ea142d3b 100644 --- a/memory-bank/techContext.md +++ b/memory-bank/techContext.md @@ -200,6 +200,17 @@ - Seed data scripts - Hot-reloading for development +### Database Management +- Drizzle ORM for type-safe database operations +- Drizzle Kit for schema migrations +- Database commands: + * `pnpm run db:generate` - Generate migrations from schema changes + * `pnpm run db:migrate` - Apply migrations to database + * `pnpm run db:check` - Check schema for issues + * `pnpm run db:studio` - Launch Drizzle Studio for database management + * `pnpm run db:seed:dev` - Seed development database + * `pnpm run db:seed:test` - Seed test database + ### Testing Strategy - Unit Testing * Service tests diff --git a/scripts/dev.sh b/scripts/dev.sh index 7e2625db..9974d2dc 100755 --- a/scripts/dev.sh +++ b/scripts/dev.sh @@ -96,7 +96,8 @@ else # Run database initialization echo "šŸ”„ Initializing database..." - docker-compose --profile dev run --rm db-init-dev + # Pass the FRESH environment variable to the db-init-dev service + docker-compose --profile dev run --rm -e FRESH=$FRESH db-init-dev # Check if database initialization was successful if [ $? -ne 0 ]; then From 9350cc00694f981332371b5ced72be5de2139f82 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 7 Apr 2025 16:12:02 -0500 Subject: [PATCH 015/113] add SEI and update rak --- curate.config.json | 60 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/curate.config.json b/curate.config.json index 0fd9a90a..09c7981d 100644 --- a/curate.config.json +++ b/curate.config.json @@ -596,7 +596,7 @@ "civilmonkey", "CC_ReFi_News", "potlock_", - "plutgrel", + "plugrel", "NewsRefi", "potlock_intern", "PaulBurg_" @@ -647,6 +647,44 @@ "outputs": { "stream": { "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], "distribute": [ { "transform": [ @@ -660,8 +698,7 @@ "plugin": "@curatedotfun/telegram", "config": { "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "-1002472938420", - "messageThreadId": "9" + "channelId": "@desciunderground" } } ] @@ -1183,7 +1220,7 @@ }, "outputs": { "stream": { - "enabled": false, + "enabled": true, "transform": [ { "plugin": "@curatedotfun/object-transform", @@ -1938,6 +1975,21 @@ } } }, + { + "id": "sei", + "name": "SEI", + "description": "Updates around SEI ecosystem & more", + "moderation": { + "approvers": { + "twitter": ["plugrel", "potlock_intern"] + } + }, + "outputs": { + "stream": { + "enabled": false + } + } + }, { "id": "hyperliquid", "name": "Hyperliquid", From 846f895b58363df86d3665d59d2f719f3b24ac29 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Tue, 8 Apr 2025 11:37:48 -0500 Subject: [PATCH 016/113] fix leaderboard and dates --- backend/src/services/db/queries.ts | 213 +- frontend/package.json | 1 + frontend/pnpm-lock.yaml | 3928 -------------------------- frontend/src/components/FeedItem.tsx | 4 +- frontend/src/utils/datetime.ts | 14 + package.json | 2 +- pnpm-lock.yaml | 486 ++-- 7 files changed, 370 insertions(+), 4278 deletions(-) delete mode 100644 frontend/pnpm-lock.yaml create mode 100644 frontend/src/utils/datetime.ts diff --git a/backend/src/services/db/queries.ts b/backend/src/services/db/queries.ts index e8d75738..e287df24 100644 --- a/backend/src/services/db/queries.ts +++ b/backend/src/services/db/queries.ts @@ -29,6 +29,7 @@ export async function upsertFeeds( name: feed.name, description: feed.description, createdAt: new Date(), + updatedAt: new Date(), }) .onConflictDoUpdate({ target: feeds.id, @@ -74,6 +75,9 @@ export async function saveSubmissionToFeed( submissionId, feedId, status, + createdAt: new Date(), + updatedAt: new Date(), + moderationResponseTweetId: null, }) .onConflictDoNothing() .execute(); @@ -613,6 +617,8 @@ export async function incrementDailySubmissionCount( userId, count: 1, lastResetDate: sql`CURRENT_DATE`, + createdAt: new Date(), + updatedAt: new Date(), }) .onConflictDoUpdate({ target: submissionCounts.userId, @@ -690,124 +696,117 @@ export async function getLeaderboard( db: NodePgDatabase, timeRange: string = "all", ): Promise { - // Calculate date range based on timeRange - let dateFilter = ""; - const now = new Date(); - - if (timeRange === "month") { - // First day of current month - const firstDayOfMonth = new Date(now.getFullYear(), now.getMonth(), 1); - dateFilter = `AND s.created_at >= '${firstDayOfMonth.toISOString()}'`; - } else if (timeRange === "week") { - // Start of current week (Sunday) - const firstDayOfWeek = new Date(now); - const day = now.getDay(); // 0 for Sunday, 1 for Monday, etc. - firstDayOfWeek.setDate(now.getDate() - day); - firstDayOfWeek.setHours(0, 0, 0, 0); - dateFilter = `AND s.created_at >= '${firstDayOfWeek.toISOString()}'`; - } else if (timeRange === "today") { - // Start of today - const startOfDay = new Date( - now.getFullYear(), - now.getMonth(), - now.getDate(), - ); - dateFilter = `AND s.created_at >= '${startOfDay.toISOString()}'`; - } - - interface CuratorRow { - curatorId: string; - curatorUsername: string; - submissionCount: number; - approvalCount: number; - rejectionCount: number; - } - - const curatorsResult = await db.execute(sql` - SELECT - s.curator_id AS curatorId, - s.curator_username AS curatorUsername, - COUNT(DISTINCT s.tweet_id) AS submissionCount, - COUNT(DISTINCT CASE WHEN mh.action = 'approve' THEN s.tweet_id END) AS approvalCount, - COUNT(DISTINCT CASE WHEN mh.action = 'reject' THEN s.tweet_id END) AS rejectionCount - FROM - submissions s - LEFT JOIN - moderation_history mh ON s.tweet_id = mh.tweet_id - WHERE - 1=1 ${sql.raw(dateFilter)} - GROUP BY - s.curator_id, s.curator_username - ORDER BY - submissioncount DESC - `); - - const curators = curatorsResult.rows.map((row: any) => ({ - curatorId: String(row.curatorId), - curatorUsername: String(row.curatorUsername), - submissionCount: Number(row.submissionCount), - approvalCount: Number(row.approvalCount), - rejectionCount: Number(row.rejectionCount), - })); - - // Get total submissions per feed - const feedTotalsResult = await db.execute(sql` - SELECT - feed_id AS feedid, - COUNT(DISTINCT submission_id) AS totalcount - FROM - submission_feeds - GROUP BY - feed_id - `); - - // Create a map for quick lookup of feed totals - const feedTotalsMap = new Map(); - for (const row of feedTotalsResult.rows) { - feedTotalsMap.set(String(row.feedid), Number(row.totalcount)); + // Use PostgreSQL's date functions for more efficient filtering + let dateCondition; + + switch (timeRange) { + case "month": + // First day of current month using PostgreSQL's date_trunc + dateCondition = sql`AND s.created_at >= date_trunc('month', CURRENT_DATE)`; + break; + case "week": + // Start of current week (Sunday) using PostgreSQL's date_trunc + dateCondition = sql`AND s.created_at >= date_trunc('week', CURRENT_DATE)`; + break; + case "today": + // Start of today using PostgreSQL's date_trunc + dateCondition = sql`AND s.created_at >= date_trunc('day', CURRENT_DATE)`; + break; + default: + // No date filter for "all" + dateCondition = sql``; + break; } - // For each curator, get their submissions per feed - const result: LeaderboardEntry[] = []; - - for (const curator of curators) { - const curatorFeedsResult = await db.execute(sql` + // Use a single query with Common Table Expressions (CTEs) for better performance + const result = await db.execute(sql` + WITH feed_totals AS ( + -- Get total submissions per feed + SELECT + feed_id AS feedid, + COUNT(DISTINCT submission_id) AS totalcount + FROM + submission_feeds + GROUP BY + feed_id + ), + curator_stats AS ( + -- Get curator statistics SELECT + s.curator_id AS curatorid, + s.curator_username AS curatorusername, + COUNT(DISTINCT s.tweet_id) AS submissioncount, + COUNT(DISTINCT CASE WHEN mh.action = 'approve' THEN s.tweet_id END) AS approvalcount, + COUNT(DISTINCT CASE WHEN mh.action = 'reject' THEN s.tweet_id END) AS rejectioncount + FROM + submissions s + LEFT JOIN + moderation_history mh ON s.tweet_id = mh.tweet_id + WHERE + 1=1 ${dateCondition} + GROUP BY + s.curator_id, s.curator_username + ), + curator_feeds AS ( + -- Get feed submissions per curator + SELECT + s.curator_id AS curatorid, sf.feed_id AS feedid, - COUNT(DISTINCT sf.submission_id) AS count + COUNT(DISTINCT sf.submission_id) AS count, + ft.totalcount FROM submission_feeds sf JOIN submissions s ON sf.submission_id = s.tweet_id + JOIN + feed_totals ft ON sf.feed_id = ft.feedid WHERE - s.curator_id = ${curator.curatorId} + 1=1 ${dateCondition} GROUP BY - sf.feed_id - `); - - // Convert to FeedSubmissionCount array with total counts - const feedSubmissions: FeedSubmissionCount[] = curatorFeedsResult.rows.map( - (row) => ({ - feedId: String(row.feedid), - count: Number(row.count), - totalInFeed: feedTotalsMap.get(String(row.feedid)) || 0, - }), - ); - - // Sort by count (highest first) - feedSubmissions.sort((a, b) => b.count - a.count); - - result.push({ - curatorId: curator.curatorId, - curatorUsername: curator.curatorUsername, - submissionCount: curator.submissionCount, - approvalCount: curator.approvalCount, - rejectionCount: curator.rejectionCount, - feedSubmissions, - }); - } + s.curator_id, sf.feed_id, ft.totalcount + ) + -- Combine all data with JSON aggregation + SELECT + cs.curatorid, + cs.curatorusername, + cs.submissioncount, + cs.approvalcount, + cs.rejectioncount, + COALESCE( + json_agg( + json_build_object( + 'feedId', cf.feedid, + 'count', cf.count, + 'totalInFeed', cf.totalcount + ) ORDER BY cf.count DESC + ) FILTER (WHERE cf.feedid IS NOT NULL), + '[]' + ) AS feedsubmissions + FROM + curator_stats cs + LEFT JOIN + curator_feeds cf ON cs.curatorid = cf.curatorid + GROUP BY + cs.curatorid, cs.curatorusername, cs.submissioncount, cs.approvalcount, cs.rejectioncount + ORDER BY + cs.submissioncount DESC + `); - return result; + // Map the results to the expected format + return result.rows.map((row: any) => ({ + curatorId: String(row.curatorid), + curatorUsername: String(row.curatorusername), + submissionCount: Number(row.submissioncount), + approvalCount: Number(row.approvalcount), + rejectionCount: Number(row.rejectioncount), + feedSubmissions: Array.isArray(row.feedsubmissions) + ? row.feedsubmissions.map((fs: any) => ({ + feedId: String(fs.feedId), + count: Number(fs.count), + totalInFeed: Number(fs.totalInFeed), + })) + : [], + })); } export async function getSubmissionsByFeed( diff --git a/frontend/package.json b/frontend/package.json index 7b8838a1..aad3e503 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -18,6 +18,7 @@ "@tanstack/react-router": "^1.114.15", "autoprefixer": "^10.4.20", "axios": "^1.7.9", + "date-fns": "^4.1.0", "lucide-react": "^0.479.0", "postcss": "^8.4.49", "react": "^18.3.1", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml deleted file mode 100644 index a696f87c..00000000 --- a/frontend/pnpm-lock.yaml +++ /dev/null @@ -1,3928 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@tailwindcss/typography': - specifier: ^0.5.15 - version: 0.5.16(tailwindcss@3.4.17) - '@tanstack/react-query': - specifier: ^5.64.1 - version: 5.69.0(react@18.3.1) - '@tanstack/react-router': - specifier: ^1.114.15 - version: 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - autoprefixer: - specifier: ^10.4.20 - version: 10.4.21(postcss@8.5.3) - axios: - specifier: ^1.7.9 - version: 1.8.4 - lucide-react: - specifier: ^0.479.0 - version: 0.479.0(react@18.3.1) - postcss: - specifier: ^8.4.49 - version: 8.5.3 - react: - specifier: ^18.3.1 - version: 18.3.1 - react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) - react-icons: - specifier: ^5.4.0 - version: 5.5.0(react@18.3.1) - tailwindcss: - specifier: ^3.4.16 - version: 3.4.17 - devDependencies: - '@curatedotfun/types': - specifier: ^0.0.5 - version: 0.0.5 - '@eslint/js': - specifier: ^9.15.0 - version: 9.23.0 - '@mswjs/data': - specifier: ^0.16.2 - version: 0.16.2(@types/node@22.13.11)(typescript@5.6.3) - '@rsbuild/core': - specifier: 1.1.13 - version: 1.1.13 - '@rsbuild/plugin-react': - specifier: 1.1.0 - version: 1.1.0(@rsbuild/core@1.1.13) - '@tanstack/router-devtools': - specifier: ^1.114.15 - version: 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) - '@tanstack/router-plugin': - specifier: ^1.114.15 - version: 1.114.27(@rsbuild/core@1.1.13)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.2(@types/node@22.13.11)(jiti@1.21.7)(tsx@4.19.3)(yaml@2.7.0)) - '@types/bun': - specifier: ^1.1.16 - version: 1.2.5 - '@types/react': - specifier: ^18.3.12 - version: 18.3.19 - '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.5(@types/react@18.3.19) - '@vitejs/plugin-react': - specifier: ^4.3.4 - version: 4.3.4(vite@6.2.2(@types/node@22.13.11)(jiti@1.21.7)(tsx@4.19.3)(yaml@2.7.0)) - eslint: - specifier: ^9.15.0 - version: 9.23.0(jiti@1.21.7) - eslint-plugin-react-hooks: - specifier: ^5.0.0 - version: 5.2.0(eslint@9.23.0(jiti@1.21.7)) - eslint-plugin-react-refresh: - specifier: ^0.4.14 - version: 0.4.19(eslint@9.23.0(jiti@1.21.7)) - globals: - specifier: ^15.12.0 - version: 15.15.0 - msw: - specifier: ^2.7.0 - version: 2.7.3(@types/node@22.13.11)(typescript@5.6.3) - typescript: - specifier: ~5.6.2 - version: 5.6.3 - typescript-eslint: - specifier: ^8.15.0 - version: 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - -packages: - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.26.10': - resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.26.5': - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.26.10': - resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.26.10': - resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-self@7.25.9': - resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.25.9': - resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/runtime@7.26.10': - resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.26.9': - resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.26.10': - resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.26.10': - resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} - engines: {node: '>=6.9.0'} - - '@bundled-es-modules/cookie@2.0.1': - resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==} - - '@bundled-es-modules/statuses@1.0.1': - resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} - - '@bundled-es-modules/tough-cookie@0.1.6': - resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - - '@curatedotfun/types@0.0.5': - resolution: {integrity: sha512-thb89PXZHEA2BkVvRbA6b2imiglNDVzPOrdUZswF7q/tsnxGoOCwg7B1u6Y3YrajF7IdWto+TzfNnXUSadjWrA==} - - '@esbuild/aix-ppc64@0.25.1': - resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.1': - resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.1': - resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.1': - resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.1': - resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.1': - resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.1': - resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.1': - resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.1': - resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.1': - resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.1': - resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.1': - resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.1': - resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.1': - resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.1': - resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.1': - resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.1': - resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.1': - resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.1': - resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.1': - resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.1': - resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.25.1': - resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.1': - resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.1': - resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.1': - resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.5.1': - resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.19.2': - resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.2.0': - resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.12.0': - resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.23.0': - resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.7': - resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} - engines: {node: '>=18.18'} - - '@inquirer/confirm@5.1.8': - resolution: {integrity: sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/core@10.1.9': - resolution: {integrity: sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/figures@1.0.11': - resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} - engines: {node: '>=18'} - - '@inquirer/type@3.0.5': - resolution: {integrity: sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@module-federation/runtime-tools@0.5.1': - resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} - - '@module-federation/runtime@0.5.1': - resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} - - '@module-federation/sdk@0.5.1': - resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} - - '@module-federation/webpack-bundler-runtime@0.5.1': - resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} - - '@mswjs/data@0.16.2': - resolution: {integrity: sha512-/C0d/PBcJyQJokUhcjO4HiZPc67hzllKlRtD1XELygl2t991/ATAAQJVcStn4YtVALsNodruzOHT0JIvgr0hnA==} - - '@mswjs/interceptors@0.37.6': - resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==} - engines: {node: '>=18'} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@open-draft/deferred-promise@2.2.0': - resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} - - '@open-draft/logger@0.3.0': - resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} - - '@open-draft/until@2.1.0': - resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@rollup/rollup-android-arm-eabi@4.37.0': - resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.37.0': - resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.37.0': - resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.37.0': - resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.37.0': - resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.37.0': - resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.37.0': - resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.37.0': - resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.37.0': - resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.37.0': - resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.37.0': - resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': - resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.37.0': - resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.37.0': - resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.37.0': - resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.37.0': - resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.37.0': - resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.37.0': - resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.37.0': - resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.37.0': - resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} - cpu: [x64] - os: [win32] - - '@rsbuild/core@1.1.13': - resolution: {integrity: sha512-XBL2hrin8731W6iTGGL+x3cv07n4vm2D7u6XHRwtQkRfySzAqGx7ThlQLdNX/dJwfsoQrYQuWl/qzaljjXtGtg==} - engines: {node: '>=16.7.0'} - hasBin: true - - '@rsbuild/plugin-react@1.1.0': - resolution: {integrity: sha512-uqdRoV2V91G1XIA14dAmxqYTlTDVf0ktpE7TgwG29oQ2j+DerF1kh29WPHK9HvGE34JTfaBrsme2Zmb6bGD0cw==} - peerDependencies: - '@rsbuild/core': 1.x - - '@rspack/binding-darwin-arm64@1.1.8': - resolution: {integrity: sha512-I7avr471ghQ3LAqKm2fuXuJPLgQ9gffn5Q4nHi8rsukuZUtiLDPfYzK1QuupEp2JXRWM1gG5lIbSUOht3cD6Ug==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@1.1.8': - resolution: {integrity: sha512-vfqf/c+mcx8rr1M8LnqKmzDdnrgguflZnjGerBLjNerAc+dcUp3lCvNxRIvZ2TkSZZBW8BpCMgjj3n70CZ4VLQ==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@1.1.8': - resolution: {integrity: sha512-lZlO/rAJSeozi+qtVLkGSXfe+riPawCwM4FsrflELfNlvvEXpANwtrdJ+LsaNVXcgvhh50ZX2KicTdmx9G2b6Q==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-musl@1.1.8': - resolution: {integrity: sha512-bX7exULSZwy8xtDh6Z65b6sRC4uSxGuyvSLCEKyhmG6AnJkg0gQMxk3hoO0hWnyGEZgdJEn+jEhk0fjl+6ZRAQ==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-x64-gnu@1.1.8': - resolution: {integrity: sha512-2Prw2USgTJ3aLdLExfik8pAwAHbX4MZrACBGEmR7Vbb56kLjC+++fXkciRc50pUDK4JFr1VQ7eNZrJuDR6GG6Q==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-musl@1.1.8': - resolution: {integrity: sha512-bnVGB/mQBKEdzOU/CPmcOE3qEXxGOGGW7/i6iLl2MamVOykJq8fYjL9j86yi6L0r009ja16OgWckykQGc4UqGw==} - cpu: [x64] - os: [linux] - - '@rspack/binding-win32-arm64-msvc@1.1.8': - resolution: {integrity: sha512-u+na3gxhzeksm4xZyAzn1+XWo5a5j7hgWA/KcFPDQ8qQNkRknx4jnQMxVtcZ9pLskAYV4AcOV/AIximx7zvv8A==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@1.1.8': - resolution: {integrity: sha512-FijUxym1INd5fFHwVCLuVP8XEAb4Sk1sMwEEQUlugiDra9ZsLaPw4OgPGxbxkD6SB0DeUz9Zq46Xbcf6d3OgfA==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@1.1.8': - resolution: {integrity: sha512-SBzIcND4qpDt71jlu1MCDxt335tqInT3YID9V4DoQ4t8wgM/uad7EgKOWKTK6vc2RRaOIShfS2XzqjNUxPXh4w==} - cpu: [x64] - os: [win32] - - '@rspack/binding@1.1.8': - resolution: {integrity: sha512-+/JzXx1HctfgPj+XtsCTbRkxiaOfAXGZZLEvs7jgp04WgWRSZ5u97WRCePNPvy+sCfOEH/2zw2ZK36Z7oQRGhQ==} - - '@rspack/core@1.1.8': - resolution: {integrity: sha512-pcZtcj5iXLCuw9oElTYC47bp/RQADm/MMEb3djHdwJuSlFWfWPQi5QFgJ/lJAxIW9UNHnTFrYtytycfjpuoEcA==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@rspack/lite-tapable@1.0.1': - resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} - engines: {node: '>=16.0.0'} - - '@rspack/plugin-react-refresh@1.0.1': - resolution: {integrity: sha512-KSBc3bsr3mrAPViv7w9MpE9KEWm6q87EyRXyHlRfJ9PpQ56NbX9KZ7AXo7jPeECb0q5sfpM2PSEf+syBiMgLSw==} - peerDependencies: - react-refresh: '>=0.10.0 <1.0.0' - peerDependenciesMeta: - react-refresh: - optional: true - - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - - '@tailwindcss/typography@0.5.16': - resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - - '@tanstack/history@1.114.22': - resolution: {integrity: sha512-CNwKraj/Xa8H7DUyzrFBQC3wL96JzIxT4i9CW0hxqFNNmLDyUcMJr8264iqqfxC0u1lFSG96URad08T2Qhadpw==} - engines: {node: '>=12'} - - '@tanstack/query-core@5.69.0': - resolution: {integrity: sha512-Kn410jq6vs1P8Nm+ZsRj9H+U3C0kjuEkYLxbiCyn3MDEiYor1j2DGVULqAz62SLZtUZ/e9Xt6xMXiJ3NJ65WyQ==} - - '@tanstack/react-query@5.69.0': - resolution: {integrity: sha512-Ift3IUNQqTcaFa1AiIQ7WCb/PPy8aexZdq9pZWLXhfLcLxH0+PZqJ2xFImxCpdDZrFRZhLJrh76geevS5xjRhA==} - peerDependencies: - react: ^18 || ^19 - - '@tanstack/react-router-devtools@1.114.27': - resolution: {integrity: sha512-DKgMeFMgVdWiNADSemtYfOMR0dQ8xTtShfgRybDGffDe4iOQgnmeFWW1N4oBJylcj7kFRVm3yVOpDC9G6/zW4w==} - engines: {node: '>=12'} - peerDependencies: - '@tanstack/react-router': ^1.114.27 - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' - - '@tanstack/react-router@1.114.27': - resolution: {integrity: sha512-xfM+FMXpebZQ5//NQEgj5y5SKQqTQEr2/LvePU9IiksxUBCgfjbuOXW5vgDHJ3xXJm3pivYqRx29cHqhueClow==} - engines: {node: '>=12'} - peerDependencies: - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' - - '@tanstack/react-store@0.7.0': - resolution: {integrity: sha512-S/Rq17HaGOk+tQHV/yrePMnG1xbsKZIl/VsNWnNXt4XW+tTY8dTlvpJH2ZQ3GRALsusG5K6Q3unAGJ2pd9W/Ng==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - '@tanstack/router-core@1.114.25': - resolution: {integrity: sha512-OyLCfs7r+0LEhmQGAdyJxfO+pqGBITlr4aUN0rdhXqDTpqBn0tyrO6Tu+U9B3LQF9Xnux3KqbjzRopTY9QZBog==} - engines: {node: '>=12'} - - '@tanstack/router-devtools-core@1.114.25': - resolution: {integrity: sha512-3KFAAytAV6nWcXLTe3nWNaiRPV8AyM3jx5aa2UpB+RLDgDbO+GkVMnv3C7fnGCM6j2nw2/1boAvTvHcoKKO5UA==} - engines: {node: '>=12'} - peerDependencies: - '@tanstack/router-core': ^1.114.25 - csstype: ^3.0.10 - solid-js: '>=1.9.5' - tiny-invariant: ^1.3.3 - peerDependenciesMeta: - csstype: - optional: true - - '@tanstack/router-devtools@1.114.27': - resolution: {integrity: sha512-82tz+V7e1W+vtRmnBSLTl5rJdXfNAv7kZIQmdS8/I5saKG5nGqQrODn7y/rdjuME5V67bcrkLnwIyR9VFQ0sVw==} - engines: {node: '>=12'} - peerDependencies: - '@tanstack/react-router': ^1.114.27 - csstype: ^3.0.10 - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' - peerDependenciesMeta: - csstype: - optional: true - - '@tanstack/router-generator@1.114.27': - resolution: {integrity: sha512-13Cjn9wI2+OE1kK9L+JW8GypdzgA2Nf6D1H2nOiydSPph/iYsyRxCvv3S5hhuGk0L1U1NrRReCr4rVkhnhiQww==} - engines: {node: '>=12'} - peerDependencies: - '@tanstack/react-router': ^1.114.27 - peerDependenciesMeta: - '@tanstack/react-router': - optional: true - - '@tanstack/router-plugin@1.114.27': - resolution: {integrity: sha512-/juqdv+TZPsi8GYxq58TpztV93M6BwM7Tv148vM5EZIOCj7LkhQmh4X3E33Eczh8s4D1UCL2Kr607rGEpRpK1w==} - engines: {node: '>=12'} - peerDependencies: - '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.114.27 - vite: '>=5.0.0 || >=6.0.0' - vite-plugin-solid: ^2.11.2 - webpack: '>=5.92.0' - peerDependenciesMeta: - '@rsbuild/core': - optional: true - '@tanstack/react-router': - optional: true - vite: - optional: true - vite-plugin-solid: - optional: true - webpack: - optional: true - - '@tanstack/router-utils@1.114.12': - resolution: {integrity: sha512-W4tltvM9FQuDEJejz/JJD3q/pVHBXBb8VmA77pZlj4IBW97RnUNy8CUwZUgSYcb9OReoO4i/VjjQCUq9ZdiDmg==} - engines: {node: '>=12'} - - '@tanstack/store@0.7.0': - resolution: {integrity: sha512-CNIhdoUsmD2NolYuaIs8VfWM467RK6oIBAW4nPEKZhg1smZ+/CwtCdpURgp7nxSqOaV9oKkzdWD80+bC66F/Jg==} - - '@tanstack/virtual-file-routes@1.114.12': - resolution: {integrity: sha512-aR13V1kSE/kUkP4a8snmqvj82OUlR5Q/rzxICmObLCsERGfzikUc4wquOy1d/RzJgsLb8o+FiOjSWynt4T7Jhg==} - engines: {node: '>=12'} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/bun@1.2.5': - resolution: {integrity: sha512-w2OZTzrZTVtbnJew1pdFmgV99H0/L+Pvw+z1P67HaR18MHOzYnTYOi6qzErhK8HyT+DB782ADVPPE92Xu2/Opg==} - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/lodash@4.17.16': - resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} - - '@types/md5@2.3.5': - resolution: {integrity: sha512-/i42wjYNgE6wf0j2bcTX6kuowmdL/6PE4IVitMpm2eYKBUuYCprdcWVK+xEF0gcV6ufMCRhtxmReGfc6hIK7Jw==} - - '@types/node@22.13.11': - resolution: {integrity: sha512-iEUCUJoU0i3VnrCmgoWCXttklWcvoCIx4jzcP22fioIVSdTmjgoEvmAO/QPw6TcS9k5FrNgn4w7q5lGOd1CT5g==} - - '@types/pluralize@0.0.29': - resolution: {integrity: sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==} - - '@types/prop-types@15.7.14': - resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} - - '@types/react-dom@18.3.5': - resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} - peerDependencies: - '@types/react': ^18.0.0 - - '@types/react@18.3.19': - resolution: {integrity: sha512-fcdJqaHOMDbiAwJnXv6XCzX0jDW77yI3tJqYh1Byn8EL5/S628WRx9b/y3DnNe55zTukUQKrfYxiZls2dHcUMw==} - - '@types/statuses@2.0.5': - resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} - - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@8.5.14': - resolution: {integrity: sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==} - - '@typescript-eslint/eslint-plugin@8.27.0': - resolution: {integrity: sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/parser@8.27.0': - resolution: {integrity: sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/scope-manager@8.27.0': - resolution: {integrity: sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.27.0': - resolution: {integrity: sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/types@8.27.0': - resolution: {integrity: sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.27.0': - resolution: {integrity: sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/utils@8.27.0': - resolution: {integrity: sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/visitor-keys@8.27.0': - resolution: {integrity: sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@vitejs/plugin-react@4.3.4': - resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - ansis@3.17.0: - resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} - engines: {node: '>=14'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - axios@1.8.4: - resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} - - babel-dead-code-elimination@1.0.9: - resolution: {integrity: sha512-JLIhax/xullfInZjtu13UJjaLHDeTzt3vOeomaSUdO/nAMEL/pWC/laKrSvWylXMnVWyL5bpmG9njqBZlUQOdg==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bun-types@1.2.5: - resolution: {integrity: sha512-3oO6LVGGRRKI4kHINx5PIdIgnLRb7l/SprhzqXapmoYkFl5m4j6EvALvbDVuuBFaamB46Ap6HCUxIXNLCGy+tg==} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - caniuse-lite@1.0.30001707: - resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cli-width@4.1.0: - resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} - engines: {node: '>= 12'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - - core-js@3.39.0: - resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - electron-to-chromium@1.5.123: - resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - esbuild@0.25.1: - resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-plugin-react-hooks@5.2.0: - resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - - eslint-plugin-react-refresh@0.4.19: - resolution: {integrity: sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==} - peerDependencies: - eslint: '>=8.40' - - eslint-scope@8.3.0: - resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.23.0: - resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} - - goober@2.1.16: - resolution: {integrity: sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==} - peerDependencies: - csstype: ^3.0.10 - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - graphql@16.10.0: - resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - headers-polyfill@4.0.3: - resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} - - html-entities@2.5.3: - resolution: {integrity: sha512-D3AfvN7SjhTgBSA8L1BN4FpPzuEd06uy4lHwSoRWr0lndi9BKaNzPLKGOWZ2ocSGguozr08TTb2jhCLHaemruw==} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-node-process@1.2.0: - resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.castarray@4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lucide-react@0.479.0: - resolution: {integrity: sha512-aBhNnveRhorBOK7uA4gDjgaf+YlHMdMhQ/3cupk6exM10hWlEU+2QtWYOfhXhjAsmdb6LeKR+NZnow4UxRRiTQ==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - msw@2.7.3: - resolution: {integrity: sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - typescript: '>= 4.8.x' - peerDependenciesMeta: - typescript: - optional: true - - mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - outvariant@1.4.3: - resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} - engines: {node: '>=14'} - hasBin: true - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-icons@5.5.0: - resolution: {integrity: sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==} - peerDependencies: - react: '*' - - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - - react-refresh@0.16.0: - resolution: {integrity: sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A==} - engines: {node: '>=0.10.0'} - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rollup@4.37.0: - resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - - seroval-plugins@1.2.1: - resolution: {integrity: sha512-H5vs53+39+x4Udwp4J5rNZfgFuA+Lt+uU+09w1gYBVWomtAl98B+E9w7yC05Xc81/HgLvJdlyqJbU0fJCKCmdw==} - engines: {node: '>=10'} - peerDependencies: - seroval: ^1.0 - - seroval@1.2.1: - resolution: {integrity: sha512-yBxFFs3zmkvKNmR0pFSU//rIsYjuX418TnlDmc2weaq5XFDqDIV/NOMPBoLrbxjLH42p4UzRuXHryXh9dYcKcw==} - engines: {node: '>=10'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - solid-js@1.9.5: - resolution: {integrity: sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - strict-event-emitter@0.5.1: - resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tailwindcss@3.4.17: - resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} - engines: {node: '>=14.0.0'} - hasBin: true - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - - tiny-warning@1.0.3: - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tsx@4.19.3: - resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} - engines: {node: '>=18.0.0'} - hasBin: true - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@4.37.0: - resolution: {integrity: sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==} - engines: {node: '>=16'} - - typescript-eslint@8.27.0: - resolution: {integrity: sha512-ZZ/8+Y0rRUMuW1gJaPtLWe4ryHbsPLzzibk5Sq+IFa2aOH1Vo0gPr1fbA6pOnzBke7zC2Da4w8AyCgxKXo3lqA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - unplugin@2.2.2: - resolution: {integrity: sha512-Qp+iiD+qCRnUek+nDoYvtWX7tfnYyXsrOnJ452FRTgOyKmTM7TUJ3l+PLPJOOWPTUyKISKp4isC5JJPSXUjGgw==} - engines: {node: '>=18.12.0'} - - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - use-sync-external-store@1.4.0: - resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - vite@6.2.2: - resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yoctocolors-cjs@2.1.2: - resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} - engines: {node: '>=18'} - - zod@3.24.2: - resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} - -snapshots: - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.26.8': {} - - '@babel/core@7.26.10': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.26.10': - dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.26.5': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.10 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.26.5': {} - - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/helper-validator-option@7.25.9': {} - - '@babel/helpers@7.26.10': - dependencies: - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 - - '@babel/parser@7.26.10': - dependencies: - '@babel/types': 7.26.10 - - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/runtime@7.26.10': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.26.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - - '@babel/traverse@7.26.10': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.26.10': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@bundled-es-modules/cookie@2.0.1': - dependencies: - cookie: 0.7.2 - - '@bundled-es-modules/statuses@1.0.1': - dependencies: - statuses: 2.0.1 - - '@bundled-es-modules/tough-cookie@0.1.6': - dependencies: - '@types/tough-cookie': 4.0.5 - tough-cookie: 4.1.4 - - '@curatedotfun/types@0.0.5': {} - - '@esbuild/aix-ppc64@0.25.1': - optional: true - - '@esbuild/android-arm64@0.25.1': - optional: true - - '@esbuild/android-arm@0.25.1': - optional: true - - '@esbuild/android-x64@0.25.1': - optional: true - - '@esbuild/darwin-arm64@0.25.1': - optional: true - - '@esbuild/darwin-x64@0.25.1': - optional: true - - '@esbuild/freebsd-arm64@0.25.1': - optional: true - - '@esbuild/freebsd-x64@0.25.1': - optional: true - - '@esbuild/linux-arm64@0.25.1': - optional: true - - '@esbuild/linux-arm@0.25.1': - optional: true - - '@esbuild/linux-ia32@0.25.1': - optional: true - - '@esbuild/linux-loong64@0.25.1': - optional: true - - '@esbuild/linux-mips64el@0.25.1': - optional: true - - '@esbuild/linux-ppc64@0.25.1': - optional: true - - '@esbuild/linux-riscv64@0.25.1': - optional: true - - '@esbuild/linux-s390x@0.25.1': - optional: true - - '@esbuild/linux-x64@0.25.1': - optional: true - - '@esbuild/netbsd-arm64@0.25.1': - optional: true - - '@esbuild/netbsd-x64@0.25.1': - optional: true - - '@esbuild/openbsd-arm64@0.25.1': - optional: true - - '@esbuild/openbsd-x64@0.25.1': - optional: true - - '@esbuild/sunos-x64@0.25.1': - optional: true - - '@esbuild/win32-arm64@0.25.1': - optional: true - - '@esbuild/win32-ia32@0.25.1': - optional: true - - '@esbuild/win32-x64@0.25.1': - optional: true - - '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@1.21.7))': - dependencies: - eslint: 9.23.0(jiti@1.21.7) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.19.2': - dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.2.0': {} - - '@eslint/core@0.12.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.1': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.23.0': {} - - '@eslint/object-schema@2.1.6': {} - - '@eslint/plugin-kit@0.2.7': - dependencies: - '@eslint/core': 0.12.0 - levn: 0.4.1 - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.2': {} - - '@inquirer/confirm@5.1.8(@types/node@22.13.11)': - dependencies: - '@inquirer/core': 10.1.9(@types/node@22.13.11) - '@inquirer/type': 3.0.5(@types/node@22.13.11) - optionalDependencies: - '@types/node': 22.13.11 - - '@inquirer/core@10.1.9(@types/node@22.13.11)': - dependencies: - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.13.11) - ansi-escapes: 4.3.2 - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.13.11 - - '@inquirer/figures@1.0.11': {} - - '@inquirer/type@3.0.5(@types/node@22.13.11)': - optionalDependencies: - '@types/node': 22.13.11 - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@module-federation/runtime-tools@0.5.1': - dependencies: - '@module-federation/runtime': 0.5.1 - '@module-federation/webpack-bundler-runtime': 0.5.1 - - '@module-federation/runtime@0.5.1': - dependencies: - '@module-federation/sdk': 0.5.1 - - '@module-federation/sdk@0.5.1': {} - - '@module-federation/webpack-bundler-runtime@0.5.1': - dependencies: - '@module-federation/runtime': 0.5.1 - '@module-federation/sdk': 0.5.1 - - '@mswjs/data@0.16.2(@types/node@22.13.11)(typescript@5.6.3)': - dependencies: - '@types/lodash': 4.17.16 - '@types/md5': 2.3.5 - '@types/pluralize': 0.0.29 - '@types/uuid': 8.3.4 - date-fns: 2.30.0 - debug: 4.4.0 - graphql: 16.10.0 - lodash: 4.17.21 - md5: 2.3.0 - outvariant: 1.4.3 - pluralize: 8.0.0 - strict-event-emitter: 0.5.1 - uuid: 8.3.2 - optionalDependencies: - msw: 2.7.3(@types/node@22.13.11)(typescript@5.6.3) - transitivePeerDependencies: - - '@types/node' - - supports-color - - typescript - - '@mswjs/interceptors@0.37.6': - dependencies: - '@open-draft/deferred-promise': 2.2.0 - '@open-draft/logger': 0.3.0 - '@open-draft/until': 2.1.0 - is-node-process: 1.2.0 - outvariant: 1.4.3 - strict-event-emitter: 0.5.1 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - - '@open-draft/deferred-promise@2.2.0': {} - - '@open-draft/logger@0.3.0': - dependencies: - is-node-process: 1.2.0 - outvariant: 1.4.3 - - '@open-draft/until@2.1.0': {} - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@rollup/rollup-android-arm-eabi@4.37.0': - optional: true - - '@rollup/rollup-android-arm64@4.37.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.37.0': - optional: true - - '@rollup/rollup-darwin-x64@4.37.0': - optional: true - - '@rollup/rollup-freebsd-arm64@4.37.0': - optional: true - - '@rollup/rollup-freebsd-x64@4.37.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.37.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.37.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.37.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.37.0': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.37.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.37.0': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.37.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.37.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.37.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.37.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.37.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.37.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.37.0': - optional: true - - '@rsbuild/core@1.1.13': - dependencies: - '@rspack/core': 1.1.8(@swc/helpers@0.5.15) - '@rspack/lite-tapable': 1.0.1 - '@swc/helpers': 0.5.15 - core-js: 3.39.0 - - '@rsbuild/plugin-react@1.1.0(@rsbuild/core@1.1.13)': - dependencies: - '@rsbuild/core': 1.1.13 - '@rspack/plugin-react-refresh': 1.0.1(react-refresh@0.16.0) - react-refresh: 0.16.0 - - '@rspack/binding-darwin-arm64@1.1.8': - optional: true - - '@rspack/binding-darwin-x64@1.1.8': - optional: true - - '@rspack/binding-linux-arm64-gnu@1.1.8': - optional: true - - '@rspack/binding-linux-arm64-musl@1.1.8': - optional: true - - '@rspack/binding-linux-x64-gnu@1.1.8': - optional: true - - '@rspack/binding-linux-x64-musl@1.1.8': - optional: true - - '@rspack/binding-win32-arm64-msvc@1.1.8': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.1.8': - optional: true - - '@rspack/binding-win32-x64-msvc@1.1.8': - optional: true - - '@rspack/binding@1.1.8': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.1.8 - '@rspack/binding-darwin-x64': 1.1.8 - '@rspack/binding-linux-arm64-gnu': 1.1.8 - '@rspack/binding-linux-arm64-musl': 1.1.8 - '@rspack/binding-linux-x64-gnu': 1.1.8 - '@rspack/binding-linux-x64-musl': 1.1.8 - '@rspack/binding-win32-arm64-msvc': 1.1.8 - '@rspack/binding-win32-ia32-msvc': 1.1.8 - '@rspack/binding-win32-x64-msvc': 1.1.8 - - '@rspack/core@1.1.8(@swc/helpers@0.5.15)': - dependencies: - '@module-federation/runtime-tools': 0.5.1 - '@rspack/binding': 1.1.8 - '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001707 - optionalDependencies: - '@swc/helpers': 0.5.15 - - '@rspack/lite-tapable@1.0.1': {} - - '@rspack/plugin-react-refresh@1.0.1(react-refresh@0.16.0)': - dependencies: - error-stack-parser: 2.1.4 - html-entities: 2.5.3 - optionalDependencies: - react-refresh: 0.16.0 - - '@swc/helpers@0.5.15': - dependencies: - tslib: 2.8.1 - - '@tailwindcss/typography@0.5.16(tailwindcss@3.4.17)': - dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.17 - - '@tanstack/history@1.114.22': {} - - '@tanstack/query-core@5.69.0': {} - - '@tanstack/react-query@5.69.0(react@18.3.1)': - dependencies: - '@tanstack/query-core': 5.69.0 - react: 18.3.1 - - '@tanstack/react-router-devtools@1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': - dependencies: - '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-devtools-core': 1.114.25(@tanstack/router-core@1.114.25)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - solid-js: 1.9.5 - transitivePeerDependencies: - - '@tanstack/router-core' - - csstype - - tiny-invariant - - '@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/history': 1.114.22 - '@tanstack/react-store': 0.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-core': 1.114.25 - jsesc: 3.1.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - - '@tanstack/react-store@0.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/store': 0.7.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - use-sync-external-store: 1.4.0(react@18.3.1) - - '@tanstack/router-core@1.114.25': - dependencies: - '@tanstack/history': 1.114.22 - '@tanstack/store': 0.7.0 - tiny-invariant: 1.3.3 - - '@tanstack/router-devtools-core@1.114.25(@tanstack/router-core@1.114.25)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': - dependencies: - '@tanstack/router-core': 1.114.25 - clsx: 2.1.1 - goober: 2.1.16(csstype@3.1.3) - solid-js: 1.9.5 - tiny-invariant: 1.3.3 - optionalDependencies: - csstype: 3.1.3 - - '@tanstack/router-devtools@1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': - dependencies: - '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/react-router-devtools': 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) - clsx: 2.1.1 - goober: 2.1.16(csstype@3.1.3) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - csstype: 3.1.3 - transitivePeerDependencies: - - '@tanstack/router-core' - - tiny-invariant - - '@tanstack/router-generator@1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': - dependencies: - '@tanstack/virtual-file-routes': 1.114.12 - prettier: 3.5.3 - tsx: 4.19.3 - zod: 3.24.2 - optionalDependencies: - '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - - '@tanstack/router-plugin@1.114.27(@rsbuild/core@1.1.13)(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.2(@types/node@22.13.11)(jiti@1.21.7)(tsx@4.19.3)(yaml@2.7.0))': - dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 - '@tanstack/router-core': 1.114.25 - '@tanstack/router-generator': 1.114.27(@tanstack/react-router@1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@tanstack/router-utils': 1.114.12 - '@tanstack/virtual-file-routes': 1.114.12 - '@types/babel__core': 7.20.5 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - babel-dead-code-elimination: 1.0.9 - chokidar: 3.6.0 - unplugin: 2.2.2 - zod: 3.24.2 - optionalDependencies: - '@rsbuild/core': 1.1.13 - '@tanstack/react-router': 1.114.27(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - vite: 6.2.2(@types/node@22.13.11)(jiti@1.21.7)(tsx@4.19.3)(yaml@2.7.0) - transitivePeerDependencies: - - supports-color - - '@tanstack/router-utils@1.114.12': - dependencies: - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 - ansis: 3.17.0 - diff: 7.0.0 - - '@tanstack/store@0.7.0': {} - - '@tanstack/virtual-file-routes@1.114.12': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.26.10 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - - '@types/babel__traverse@7.20.6': - dependencies: - '@babel/types': 7.26.10 - - '@types/bun@1.2.5': - dependencies: - bun-types: 1.2.5 - - '@types/cookie@0.6.0': {} - - '@types/estree@1.0.6': {} - - '@types/json-schema@7.0.15': {} - - '@types/lodash@4.17.16': {} - - '@types/md5@2.3.5': {} - - '@types/node@22.13.11': - dependencies: - undici-types: 6.20.0 - - '@types/pluralize@0.0.29': {} - - '@types/prop-types@15.7.14': {} - - '@types/react-dom@18.3.5(@types/react@18.3.19)': - dependencies: - '@types/react': 18.3.19 - - '@types/react@18.3.19': - dependencies: - '@types/prop-types': 15.7.14 - csstype: 3.1.3 - - '@types/statuses@2.0.5': {} - - '@types/tough-cookie@4.0.5': {} - - '@types/uuid@8.3.4': {} - - '@types/ws@8.5.14': - dependencies: - '@types/node': 22.13.11 - - '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.27.0 - '@typescript-eslint/type-utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.27.0 - eslint: 9.23.0(jiti@1.21.7) - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.27.0 - '@typescript-eslint/types': 8.27.0 - '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.27.0 - debug: 4.4.0 - eslint: 9.23.0(jiti@1.21.7) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.27.0': - dependencies: - '@typescript-eslint/types': 8.27.0 - '@typescript-eslint/visitor-keys': 8.27.0 - - '@typescript-eslint/type-utils@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - debug: 4.4.0 - eslint: 9.23.0(jiti@1.21.7) - ts-api-utils: 2.1.0(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.27.0': {} - - '@typescript-eslint/typescript-estree@8.27.0(typescript@5.6.3)': - dependencies: - '@typescript-eslint/types': 8.27.0 - '@typescript-eslint/visitor-keys': 8.27.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.6.3) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.27.0 - '@typescript-eslint/types': 8.27.0 - '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.6.3) - eslint: 9.23.0(jiti@1.21.7) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.27.0': - dependencies: - '@typescript-eslint/types': 8.27.0 - eslint-visitor-keys: 4.2.0 - - '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@22.13.11)(jiti@1.21.7)(tsx@4.19.3)(yaml@2.7.0))': - dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 6.2.2(@types/node@22.13.11)(jiti@1.21.7)(tsx@4.19.3)(yaml@2.7.0) - transitivePeerDependencies: - - supports-color - - acorn-jsx@5.3.2(acorn@8.14.1): - dependencies: - acorn: 8.14.1 - - acorn@8.14.1: {} - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - ansis@3.17.0: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - - argparse@2.0.1: {} - - asynckit@0.4.0: {} - - autoprefixer@10.4.21(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001707 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - axios@1.8.4: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.2 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - babel-dead-code-elimination@1.0.9: - dependencies: - '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 - transitivePeerDependencies: - - supports-color - - balanced-match@1.0.2: {} - - binary-extensions@2.3.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001707 - electron-to-chromium: 1.5.123 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.4) - - bun-types@1.2.5: - dependencies: - '@types/node': 22.13.11 - '@types/ws': 8.5.14 - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - callsites@3.1.0: {} - - camelcase-css@2.0.1: {} - - caniuse-lite@1.0.30001707: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - charenc@0.0.2: {} - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - cli-width@4.1.0: {} - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clsx@2.1.1: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - commander@4.1.1: {} - - concat-map@0.0.1: {} - - convert-source-map@2.0.0: {} - - cookie@0.7.2: {} - - core-js@3.39.0: {} - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crypt@0.0.2: {} - - cssesc@3.0.0: {} - - csstype@3.1.3: {} - - date-fns@2.30.0: - dependencies: - '@babel/runtime': 7.26.10 - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - deep-is@0.1.4: {} - - delayed-stream@1.0.0: {} - - didyoumean@1.2.2: {} - - diff@7.0.0: {} - - dlv@1.1.3: {} - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - eastasianwidth@0.2.0: {} - - electron-to-chromium@1.5.123: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - error-stack-parser@2.1.4: - dependencies: - stackframe: 1.3.4 - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - esbuild@0.25.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.1 - '@esbuild/android-arm': 0.25.1 - '@esbuild/android-arm64': 0.25.1 - '@esbuild/android-x64': 0.25.1 - '@esbuild/darwin-arm64': 0.25.1 - '@esbuild/darwin-x64': 0.25.1 - '@esbuild/freebsd-arm64': 0.25.1 - '@esbuild/freebsd-x64': 0.25.1 - '@esbuild/linux-arm': 0.25.1 - '@esbuild/linux-arm64': 0.25.1 - '@esbuild/linux-ia32': 0.25.1 - '@esbuild/linux-loong64': 0.25.1 - '@esbuild/linux-mips64el': 0.25.1 - '@esbuild/linux-ppc64': 0.25.1 - '@esbuild/linux-riscv64': 0.25.1 - '@esbuild/linux-s390x': 0.25.1 - '@esbuild/linux-x64': 0.25.1 - '@esbuild/netbsd-arm64': 0.25.1 - '@esbuild/netbsd-x64': 0.25.1 - '@esbuild/openbsd-arm64': 0.25.1 - '@esbuild/openbsd-x64': 0.25.1 - '@esbuild/sunos-x64': 0.25.1 - '@esbuild/win32-arm64': 0.25.1 - '@esbuild/win32-ia32': 0.25.1 - '@esbuild/win32-x64': 0.25.1 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eslint-plugin-react-hooks@5.2.0(eslint@9.23.0(jiti@1.21.7)): - dependencies: - eslint: 9.23.0(jiti@1.21.7) - - eslint-plugin-react-refresh@0.4.19(eslint@9.23.0(jiti@1.21.7)): - dependencies: - eslint: 9.23.0(jiti@1.21.7) - - eslint-scope@8.3.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.0: {} - - eslint@9.23.0(jiti@1.21.7): - dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.2 - '@eslint/config-helpers': 0.2.0 - '@eslint/core': 0.12.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.23.0 - '@eslint/plugin-kit': 0.2.7 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.3.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 1.21.7 - transitivePeerDependencies: - - supports-color - - espree@10.3.0: - dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) - eslint-visitor-keys: 4.2.0 - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - esutils@2.0.3: {} - - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.19.1: - dependencies: - reusify: 1.1.0 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - - flatted@3.3.3: {} - - follow-redirects@1.15.9: {} - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - form-data@4.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - - fraction.js@4.3.7: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - gensync@1.0.0-beta.2: {} - - get-caller-file@2.0.5: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - - get-tsconfig@4.10.0: - dependencies: - resolve-pkg-maps: 1.0.0 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - globals@11.12.0: {} - - globals@14.0.0: {} - - globals@15.15.0: {} - - goober@2.1.16(csstype@3.1.3): - dependencies: - csstype: 3.1.3 - - gopd@1.2.0: {} - - graphemer@1.4.0: {} - - graphql@16.10.0: {} - - has-flag@4.0.0: {} - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - headers-polyfill@4.0.3: {} - - html-entities@2.5.3: {} - - ignore@5.3.2: {} - - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-buffer@1.1.6: {} - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-node-process@1.2.0: {} - - is-number@7.0.0: {} - - isexe@2.0.0: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jiti@1.21.7: {} - - js-tokens@4.0.0: {} - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsesc@3.1.0: {} - - json-buffer@3.0.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json5@2.2.3: {} - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.castarray@4.4.0: {} - - lodash.isplainobject@4.0.6: {} - - lodash.merge@4.6.2: {} - - lodash@4.17.21: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lru-cache@10.4.3: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lucide-react@0.479.0(react@18.3.1): - dependencies: - react: 18.3.1 - - math-intrinsics@1.1.0: {} - - md5@2.3.0: - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - - merge2@1.4.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minipass@7.1.2: {} - - ms@2.1.3: {} - - msw@2.7.3(@types/node@22.13.11)(typescript@5.6.3): - dependencies: - '@bundled-es-modules/cookie': 2.0.1 - '@bundled-es-modules/statuses': 1.0.1 - '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.8(@types/node@22.13.11) - '@mswjs/interceptors': 0.37.6 - '@open-draft/deferred-promise': 2.2.0 - '@open-draft/until': 2.1.0 - '@types/cookie': 0.6.0 - '@types/statuses': 2.0.5 - graphql: 16.10.0 - headers-polyfill: 4.0.3 - is-node-process: 1.2.0 - outvariant: 1.4.3 - path-to-regexp: 6.3.0 - picocolors: 1.1.1 - strict-event-emitter: 0.5.1 - type-fest: 4.37.0 - yargs: 17.7.2 - optionalDependencies: - typescript: 5.6.3 - transitivePeerDependencies: - - '@types/node' - - mute-stream@2.0.0: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.11: {} - - natural-compare@1.4.0: {} - - node-releases@2.0.19: {} - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - outvariant@1.4.3: {} - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - package-json-from-dist@1.0.1: {} - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-to-regexp@6.3.0: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - pify@2.3.0: {} - - pirates@4.0.6: {} - - pluralize@8.0.0: {} - - postcss-import@15.1.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.10 - - postcss-js@4.0.1(postcss@8.5.3): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.5.3 - - postcss-load-config@4.0.2(postcss@8.5.3): - dependencies: - lilconfig: 3.1.3 - yaml: 2.7.0 - optionalDependencies: - postcss: 8.5.3 - - postcss-nested@6.2.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - postcss-selector-parser@6.0.10: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.5.3: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - prelude-ls@1.2.1: {} - - prettier@3.5.3: {} - - proxy-from-env@1.1.0: {} - - psl@1.15.0: - dependencies: - punycode: 2.3.1 - - punycode@2.3.1: {} - - querystringify@2.2.0: {} - - queue-microtask@1.2.3: {} - - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-icons@5.5.0(react@18.3.1): - dependencies: - react: 18.3.1 - - react-refresh@0.14.2: {} - - react-refresh@0.16.0: {} - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - regenerator-runtime@0.14.1: {} - - require-directory@2.1.1: {} - - requires-port@1.0.0: {} - - resolve-from@4.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - reusify@1.1.0: {} - - rollup@4.37.0: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.37.0 - '@rollup/rollup-android-arm64': 4.37.0 - '@rollup/rollup-darwin-arm64': 4.37.0 - '@rollup/rollup-darwin-x64': 4.37.0 - '@rollup/rollup-freebsd-arm64': 4.37.0 - '@rollup/rollup-freebsd-x64': 4.37.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 - '@rollup/rollup-linux-arm-musleabihf': 4.37.0 - '@rollup/rollup-linux-arm64-gnu': 4.37.0 - '@rollup/rollup-linux-arm64-musl': 4.37.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 - '@rollup/rollup-linux-riscv64-gnu': 4.37.0 - '@rollup/rollup-linux-riscv64-musl': 4.37.0 - '@rollup/rollup-linux-s390x-gnu': 4.37.0 - '@rollup/rollup-linux-x64-gnu': 4.37.0 - '@rollup/rollup-linux-x64-musl': 4.37.0 - '@rollup/rollup-win32-arm64-msvc': 4.37.0 - '@rollup/rollup-win32-ia32-msvc': 4.37.0 - '@rollup/rollup-win32-x64-msvc': 4.37.0 - fsevents: 2.3.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - semver@6.3.1: {} - - semver@7.7.1: {} - - seroval-plugins@1.2.1(seroval@1.2.1): - dependencies: - seroval: 1.2.1 - - seroval@1.2.1: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - solid-js@1.9.5: - dependencies: - csstype: 3.1.3 - seroval: 1.2.1 - seroval-plugins: 1.2.1(seroval@1.2.1) - - source-map-js@1.2.1: {} - - stackframe@1.3.4: {} - - statuses@2.0.1: {} - - strict-event-emitter@0.5.1: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - strip-json-comments@3.1.1: {} - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - tailwindcss@3.4.17: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.3 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.3 - postcss-import: 15.1.0(postcss@8.5.3) - postcss-js: 4.0.1(postcss@8.5.3) - postcss-load-config: 4.0.2(postcss@8.5.3) - postcss-nested: 6.2.0(postcss@8.5.3) - postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - tiny-invariant@1.3.3: {} - - tiny-warning@1.0.3: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tough-cookie@4.1.4: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - - ts-api-utils@2.1.0(typescript@5.6.3): - dependencies: - typescript: 5.6.3 - - ts-interface-checker@0.1.13: {} - - tslib@2.8.1: {} - - tsx@4.19.3: - dependencies: - esbuild: 0.25.1 - get-tsconfig: 4.10.0 - optionalDependencies: - fsevents: 2.3.3 - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-fest@0.21.3: {} - - type-fest@4.37.0: {} - - typescript-eslint@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/parser': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/utils': 8.27.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.6.3) - eslint: 9.23.0(jiti@1.21.7) - typescript: 5.6.3 - transitivePeerDependencies: - - supports-color - - typescript@5.6.3: {} - - undici-types@6.20.0: {} - - universalify@0.2.0: {} - - unplugin@2.2.2: - dependencies: - acorn: 8.14.1 - webpack-virtual-modules: 0.6.2 - - update-browserslist-db@1.1.3(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - use-sync-external-store@1.4.0(react@18.3.1): - dependencies: - react: 18.3.1 - - util-deprecate@1.0.2: {} - - uuid@8.3.2: {} - - vite@6.2.2(@types/node@22.13.11)(jiti@1.21.7)(tsx@4.19.3)(yaml@2.7.0): - dependencies: - esbuild: 0.25.1 - postcss: 8.5.3 - rollup: 4.37.0 - optionalDependencies: - '@types/node': 22.13.11 - fsevents: 2.3.3 - jiti: 1.21.7 - tsx: 4.19.3 - yaml: 2.7.0 - - webpack-virtual-modules@0.6.2: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - word-wrap@1.2.5: {} - - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - y18n@5.0.8: {} - - yallist@3.1.1: {} - - yaml@2.7.0: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yocto-queue@0.1.0: {} - - yoctocolors-cjs@2.1.2: {} - - zod@3.24.2: {} diff --git a/frontend/src/components/FeedItem.tsx b/frontend/src/components/FeedItem.tsx index 06bff428..7be904fb 100644 --- a/frontend/src/components/FeedItem.tsx +++ b/frontend/src/components/FeedItem.tsx @@ -8,9 +8,7 @@ import { getTweetUrl, handleApprove, handleReject } from "../lib/twitter"; import { useBotId } from "../lib/config"; import { useState, useRef, useEffect } from "react"; import { Link } from "@tanstack/react-router"; -const formatDate = (dateString: string) => { - return new Date(dateString).toLocaleString(); -}; +import { formatDate } from "../utils/datetime"; // Reusable Components const UserLink = ({ username }: { username: string }) => ( diff --git a/frontend/src/utils/datetime.ts b/frontend/src/utils/datetime.ts new file mode 100644 index 00000000..c1e837f2 --- /dev/null +++ b/frontend/src/utils/datetime.ts @@ -0,0 +1,14 @@ +import { parseISO, format } from "date-fns"; + +export const formatDate = (dateInput: string | Date) => { + try { + // Handle both string and Date inputs + const date = + typeof dateInput === "string" ? parseISO(dateInput) : dateInput; + // Format the date using date-fns + return format(date, "MMM d, yyyy h:mm a"); + } catch (error) { + console.error("Error formatting date:", error); + return String(dateInput); + } +}; diff --git a/package.json b/package.json index 155a82e2..f0d1156e 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "prettier": "^3.3.3", "turbo": "latest" }, - "packageManager": "pnpm@10.6.4", + "packageManager": "pnpm@10.8.0+sha512.0e82714d1b5b43c74610193cb20734897c1d00de89d0e18420aebc5977fa13d780a9cb05734624e81ebd81cc876cd464794850641c48b9544326b5622ca29971", "private": true, "scripts": { "dev": "./scripts/dev.sh", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc514150..35a352c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,16 +25,16 @@ importers: dependencies: '@hono/node-server': specifier: ^1.8.2 - version: 1.14.0(hono@4.7.5) + version: 1.14.0(hono@4.7.6) '@hono/zod-openapi': specifier: ^0.9.5 - version: 0.9.10(hono@4.7.5)(zod@3.24.2) + version: 0.9.10(hono@4.7.6)(zod@3.24.2) '@hono/zod-validator': specifier: ^0.1.11 - version: 0.1.11(hono@4.7.5)(zod@3.24.2) + version: 0.1.11(hono@4.7.6)(zod@3.24.2) '@module-federation/runtime': specifier: ^0.11.1 - version: 0.11.3 + version: 0.11.4 '@notionhq/client': specifier: ^2.2.15 version: 2.3.0(encoding@0.1.13) @@ -64,7 +64,7 @@ importers: version: 0.40.1(@types/pg@8.11.11)(bun-types@1.2.7)(gel@2.0.2)(pg@8.14.1) hono: specifier: ^4.0.5 - version: 4.7.5 + version: 4.7.6 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -89,13 +89,13 @@ importers: version: 0.0.5 '@module-federation/node': specifier: ^2.6.30 - version: 2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.0(esbuild@0.19.12)) + version: 2.6.33(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.3(esbuild@0.19.12)) '@rspack/binding': specifier: 1.2.8 version: 1.2.8 '@rspack/cli': specifier: 1.2.8 - version: 1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12)) + version: 1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.3(esbuild@0.19.12)) '@rspack/core': specifier: 1.2.8 version: 1.2.8(@swc/helpers@0.5.15) @@ -128,16 +128,19 @@ importers: version: 0.5.16(tailwindcss@3.4.17) '@tanstack/react-query': specifier: ^5.64.1 - version: 5.72.0(react@18.3.1) + version: 5.72.1(react@18.3.1) '@tanstack/react-router': specifier: ^1.114.15 - version: 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) autoprefixer: specifier: ^10.4.20 version: 10.4.21(postcss@8.5.3) axios: specifier: ^1.7.9 version: 1.8.4 + date-fns: + specifier: ^4.1.0 + version: 4.1.0 lucide-react: specifier: ^0.479.0 version: 0.479.0(react@18.3.1) @@ -174,10 +177,10 @@ importers: version: 1.1.0(@rsbuild/core@1.1.13) '@tanstack/router-devtools': specifier: ^1.114.15 - version: 1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) + version: 1.115.2(@tanstack/react-router@1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) '@tanstack/router-plugin': specifier: ^1.114.15 - version: 1.115.0(@rsbuild/core@1.1.13)(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))(webpack@5.99.0) + version: 1.115.2(@rsbuild/core@1.1.13)(@tanstack/react-router@1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))(webpack@5.99.3) '@types/bun': specifier: ^1.1.16 version: 1.2.8 @@ -210,7 +213,7 @@ importers: version: 5.6.3 typescript-eslint: specifier: ^8.15.0 - version: 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + version: 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) packages: @@ -1077,22 +1080,22 @@ packages: '@modern-js/utils@2.65.1': resolution: {integrity: sha512-HrChf19F+6nALo5XPra8ycjhXGQfGi23+S7Y2FLfTKe8vaNnky8duT/XvRWpbS4pp3SQj8ryO8m/qWSsJ1Rogw==} - '@module-federation/bridge-react-webpack-plugin@0.11.3': - resolution: {integrity: sha512-uaIWbKqs98vROrgG6DJE54ArxTFyVAvjg0JMDjP6s+lp7hXrjATVhnvpsVOyDBCw4ezhrLVVtuThNTpxfIiOrw==} + '@module-federation/bridge-react-webpack-plugin@0.11.4': + resolution: {integrity: sha512-oagMRwPuMBOJ+0fggNlwgp/5LxxKyWmXBjfJmJGlJQtADxcWp3odlGXTZuAxDO2sh0S8toDnJFNt5bqruSszwg==} - '@module-federation/cli@0.11.3': - resolution: {integrity: sha512-TQAmEoJBaNpXNZf+dY9mJkIFrwkODp7qbNu9sL6sJ+bLUhoUHoTSoOTKMqdhLTSVJKulf4k8GfYPvKoCKX/FaA==} + '@module-federation/cli@0.11.4': + resolution: {integrity: sha512-ARl++lw29Ne12P2WFNRpD4dwnZW0aodMDay3/tTOE9Nx4BdBVfHf5HyCZIph589STy+dIy/ih/ebHbue1glL3Q==} engines: {node: '>=16.0.0'} hasBin: true - '@module-federation/data-prefetch@0.11.3': - resolution: {integrity: sha512-m0Iyl2xclAhIX4mVvPaEgytBx+hwQVJQqghKcN7HJR7UF7tvjO+xoJQmNIlxAl5+QOgPyYlJrmWtNTfzQHbcsw==} + '@module-federation/data-prefetch@0.11.4': + resolution: {integrity: sha512-wRUJ8E4QJBwMp/vejH5M1rR0EbuxrwQyHUHW0Ec5C5NQludqDbXJVf+f01fdPnJI+hVt5hL4GPltZwwuUWzdIw==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' - '@module-federation/dts-plugin@0.11.3': - resolution: {integrity: sha512-C43yJySmcwGhmVqisZomlz/OETEUXE7pybfEcrpInKc5FI4o6upLYV4P65jKRS0N+I/U3y6bAsHX4gtIq7XdbA==} + '@module-federation/dts-plugin@0.11.4': + resolution: {integrity: sha512-QkHbW/ZOyqNI2Oz7ZqAAiTWc3vTejoimS3nfRy947rvX3xaFEavmgJNJLBEJntos2eAF3gw5TCEuKL08zVI7BQ==} peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: '>=1.0.24' @@ -1100,8 +1103,8 @@ packages: vue-tsc: optional: true - '@module-federation/enhanced@0.11.3': - resolution: {integrity: sha512-ySRp2tsJFXjw9wOkWPKV0Jmy6GPJfrWDEfEpJIDc5h75dk4Y0sPX3vrdQtZsNz/ofYJN1z3XJRLNzAZdRdYuIg==} + '@module-federation/enhanced@0.11.4': + resolution: {integrity: sha512-WFmJsTMUSdXxNEBPhvVJRszFecHPnTbNg/LhwT1i631v7AqzLE8R/lE/CsAoMaxuuPtQqEmZgU9wwjRLW80DfA==} hasBin: true peerDependencies: typescript: ^4.9.0 || ^5.0.0 @@ -1115,25 +1118,25 @@ packages: webpack: optional: true - '@module-federation/error-codes@0.11.3': - resolution: {integrity: sha512-RG5cZAJUtlcJLoJiFXevdNRnBxrEye5aDHrDHY7szbO3hBK+XLqKTd0OOVHiGE5tpSy3TMy8qR9xHH4a1Q8bWg==} + '@module-federation/error-codes@0.11.4': + resolution: {integrity: sha512-WugZdcNbNVTKuxuArGfnRW1R+siNgMBhad451HniyCG+SjlS0HEO9zIDuVP12l3xJsiTHgLqyutYEvunQ5O1aQ==} '@module-federation/error-codes@0.8.4': resolution: {integrity: sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==} - '@module-federation/inject-external-runtime-core-plugin@0.11.3': - resolution: {integrity: sha512-l7MUjXlV6O7h8BSlMC9FlJ0bi9wFz0+PIkn6r7vaE0IuepJ7SuZDzJxtErzTz5OggPOFLygS2r7q+60dNVwh7A==} + '@module-federation/inject-external-runtime-core-plugin@0.11.4': + resolution: {integrity: sha512-VHPD8NpAZ9m+EgvojX/1+CDp0eR4Jx/SbWsCVJm1qijh9BU5JSrVnRe+pVJPHHkNfkN70mzqWRexr4oC7qMC4Q==} peerDependencies: - '@module-federation/runtime-tools': 0.11.3 + '@module-federation/runtime-tools': 0.11.4 - '@module-federation/managers@0.11.3': - resolution: {integrity: sha512-9mhP2gCblG5oWA3YRxlfkIZbl9VuQjCATczs+VnS+sgykNZBUhTDj9K//sIN5Zrrd60IBz9HW7xjj8760ERwFw==} + '@module-federation/managers@0.11.4': + resolution: {integrity: sha512-BCoIKCo7QBvqBgwXjMUPlUKYIPXieHDvQhXp24oQIQk4WhEcaMw3BByTPKOje9V6GKZqkmzQwO00e3Ca2lnHxQ==} - '@module-federation/manifest@0.11.3': - resolution: {integrity: sha512-UHODiU4g2mogYbud9/RZk73jDPSJtP4GiRSVtZo1OUW9J4qiy16N4FNw47M2OlGsHlgOzQ3igoo2NX7AQudAjA==} + '@module-federation/manifest@0.11.4': + resolution: {integrity: sha512-5dLyQNezlSfZeWtpDcKs6TnSr7JaJXcLggFAk0WhFan4WXdi+aEQtDMVCBdbdQ3hpEq3OYz9T1Ez4q6CVimZZA==} - '@module-federation/node@2.6.32': - resolution: {integrity: sha512-0tGz84UfmvDOWZJTRLo4vk9i7czd+MHz+WsvqkLRHVxGBaiOkUXlQd0Wabig2uTwBftvm3DrTnpz5uxzLkDt4g==} + '@module-federation/node@2.6.33': + resolution: {integrity: sha512-wuoh3bQ95aBzEXkRHOvuDd1kd5RPAck84SUYRnN+xsJAYe3syGtY2zUx6/XPYhEjCvBDVNVv2jznn4qILSerNQ==} peerDependencies: next: '*' react: ^16||^17||^18||^19 @@ -1147,8 +1150,8 @@ packages: react-dom: optional: true - '@module-federation/rspack@0.11.3': - resolution: {integrity: sha512-1Mhy3L4jL1z+xFCLny5PBL6Fyu6i2eJB/n7sPTqyu/vfO0cgOfxwBxxcEneq0oAJ1er+n6WWcug8IrJ5hIzkTw==} + '@module-federation/rspack@0.11.4': + resolution: {integrity: sha512-NbNPvzbnlSoNf2BsRywX6jnKLCzMA7cHGqn7m9+xyCjLrUVt3+AAUhxSW4+HdiHgfm/T2e4G1By9OtwVdX0L1Q==} peerDependencies: '@rspack/core': '>=0.7' typescript: ^4.9.0 || ^5.0.0 @@ -1159,11 +1162,11 @@ packages: vue-tsc: optional: true - '@module-federation/runtime-core@0.11.3': - resolution: {integrity: sha512-xz9++7Z0JXpOepknl2YmIQXzG8hmvLJLRtg7XYHuA1JRXW4vBKaUvvUAqLHvxS9+6FZTb8AAjQ9+8eeAOz5RYg==} + '@module-federation/runtime-core@0.11.4': + resolution: {integrity: sha512-+n2fWUPj6cCeHXmChZ35RFyNONfBEcNgQ3o7KEmxOBJ6bRh1vr3AO2OPRPYr5WHcvAyjny+l/xhi+sZPNV3uOQ==} - '@module-federation/runtime-tools@0.11.3': - resolution: {integrity: sha512-mN1Ft2O4Khz8PEwNZT7ujWKjVyCKhkInHoMn2n8U8DmOShOlbSQaBR48ZvLP2NTUcbkZbMmWls4q9Ou2UampOw==} + '@module-federation/runtime-tools@0.11.4': + resolution: {integrity: sha512-rNtaY1Eo9PJ9kn6Z9wp+OsPOA6dbJa4zyDVC1Bo+dnKkjoJ+YwGYpBw88vb0btwCtc5gJkK14ZvnYtDyPVrPWQ==} '@module-federation/runtime-tools@0.5.1': resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} @@ -1171,8 +1174,8 @@ packages: '@module-federation/runtime-tools@0.8.4': resolution: {integrity: sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==} - '@module-federation/runtime@0.11.3': - resolution: {integrity: sha512-lGCrWQclRVLP6ryYwdwvmphxRJi1thchO5Q4BbK4MsRxYUMlHGkPi0ygAXwedl6Kaa2ZqhbvlMrUhB+n5PnwNQ==} + '@module-federation/runtime@0.11.4': + resolution: {integrity: sha512-pUfhsa3iYoXBV3CsUfBJN04Cvckj9gBbs8+sLsYiWxxU+cJYNiJpco0iKxRX1/60O+RAH8fAaNq5ilz2qc204A==} '@module-federation/runtime@0.5.1': resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} @@ -1180,8 +1183,8 @@ packages: '@module-federation/runtime@0.8.4': resolution: {integrity: sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==} - '@module-federation/sdk@0.11.3': - resolution: {integrity: sha512-XzohSaFNbLbEoiwPtYOuoDeInx7vOSYHngfcQqJ356LRzNIPdCMjmtA0WM1YhRkpBchmQ1LXg6HVXy7R7AEKsg==} + '@module-federation/sdk@0.11.4': + resolution: {integrity: sha512-23Poajva/+wye8+66NvEiL/dJDUahOjEgxljLvzmxQXi9x5hdrfJvBDIwLtzyewZ+vA5Nzpwz35sSzEOyPJUqg==} '@module-federation/sdk@0.5.1': resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} @@ -1189,11 +1192,11 @@ packages: '@module-federation/sdk@0.8.4': resolution: {integrity: sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==} - '@module-federation/third-party-dts-extractor@0.11.3': - resolution: {integrity: sha512-c/Lpo2Ve33g5gQW62tcVe8O8NmPdt7gifT4Lu+IgWZpsxdnzTZcS4ujuyu19VCTjevNPxYc2aTtfkYjNtvvbpQ==} + '@module-federation/third-party-dts-extractor@0.11.4': + resolution: {integrity: sha512-hgqi7K1BTBAxW2NAqguwFvQfbQrEAHfb7CBwx+w9jKm77koKrS3+uHoAHD1mh34eWnkK2kVBktcbBPoxA0df3Q==} - '@module-federation/utilities@3.1.50': - resolution: {integrity: sha512-vDarbdRCryGMzt1mGfh3oXrEAEXytrZd1NfdnLDRDn5K6YR+wdfklJBIG28pFP80Kc0dDjZc+03EqR+yYToPpQ==} + '@module-federation/utilities@3.1.51': + resolution: {integrity: sha512-TccjlRDiNMg/VsAoiUqvqvzKkAsFwj3mtbjnbZ+fLvlmr1BhouzYIjyBFxvSZBrXdEKkzLKDKGRABWF8D79AOg==} peerDependencies: next: '*' react: ^16 || ^17 || ^18 @@ -1207,8 +1210,8 @@ packages: react-dom: optional: true - '@module-federation/webpack-bundler-runtime@0.11.3': - resolution: {integrity: sha512-SyLDwwzvR/UxcJi3vcSevcL0/NmbiSZkaVXDOK5z/Xts+uANNzi0OSth1JKfTqT0nUUm4tTkkD6fufPWqg1NZA==} + '@module-federation/webpack-bundler-runtime@0.11.4': + resolution: {integrity: sha512-lhY0RGkirPTC5AIdXjyCe4uNYtKQA7A2Oo08sa0XIAhzZUeBzVIAes1jWGS3nvPV5/SZ+ldzoMmTvlrEpgz5vQ==} '@module-federation/webpack-bundler-runtime@0.5.1': resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} @@ -1545,24 +1548,24 @@ packages: resolution: {integrity: sha512-K7JJNrRVvyjAVnbXOH2XLRhFXDkeP54Kt2P4FR1Kl2KDGlIbkua5VqZQD2rot3qaDrpufyUa63nuLai1kOLTsQ==} engines: {node: '>=12'} - '@tanstack/query-core@5.72.0': - resolution: {integrity: sha512-aa3p6Mou++JLLxxxVX9AB9uGeRIGc0JWkw96GASXuMG8K3D+JpYbSFcqXbkGFJ1eX2jKHPurmCBoO43RjjXJCA==} + '@tanstack/query-core@5.72.1': + resolution: {integrity: sha512-nOu0EEkZuJ0BZnYgeaEfo44+psq1jBO7/zp3KudixD4dvgOVerrhAhDEKsWx2N7MxB59mjO4r0ddP/VqWGPK+Q==} - '@tanstack/react-query@5.72.0': - resolution: {integrity: sha512-4Dejq/IiXrPlr/0xxj4H2GbC6KckwfTCoHWbd02+UoIV0laC9yke0d0KegmFdXJA712I6UCuy8WpPM76uuPJ+w==} + '@tanstack/react-query@5.72.1': + resolution: {integrity: sha512-4UEMyRx54xj144D2nDvDIMiXSG5BrqyCJrmyNoGbymNS+VWODcBDFrmRk9p2fe12UGZ4JtKPTNuW2Jg0aisUgQ==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-router-devtools@1.115.0': - resolution: {integrity: sha512-lvKe0ecJOBTij5TO/O2yLL/UknHLA0aIm4uJYXydM5qW69WktXfOzC7aUaQHEMTQiU0bP1RditQXZqZhQuH+4w==} + '@tanstack/react-router-devtools@1.115.2': + resolution: {integrity: sha512-g8lK8MXj9Mv0QKUNNC6QooUn9KJXcRZFQ0JiWUZNxeluTww43JFZ37zmD3fQugWRPOrcX9UaaJCjMaO/b+Sb6g==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.115.0 + '@tanstack/react-router': ^1.115.2 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router@1.115.0': - resolution: {integrity: sha512-hvIxXeLZzkpSqfnR7s1/5MB2aoSu16gZ4LJmJzVXDcW7JQN/XAMofF1/ahQb69sTuIsauzTF+QMpcL6Q8bjJ7A==} + '@tanstack/react-router@1.115.2': + resolution: {integrity: sha512-KWRtoDp1odMUUd0m7utTot3NsAxfb/W8UlPG5omtS0TCl8F+ErwurjS6Qn7rKg7q0CF8KcFDvhhBC1cXnOpoSQ==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' @@ -1590,11 +1593,11 @@ packages: csstype: optional: true - '@tanstack/router-devtools@1.115.0': - resolution: {integrity: sha512-VzNttJJR8J6n9MiufHr8SZVwuUPWBymvx9cBXmoEe/cF3CrkaFG73lHLe+yHfsxht31eI1A7cH3ZoVVxwl6VPw==} + '@tanstack/router-devtools@1.115.2': + resolution: {integrity: sha512-Zr/XA0n0cMiHA+gnEWfe8zUMP6TG7GEjPW1ej9/38LZFRg1uCqdQ6qhRdOmkUP+5KmxqW5sWOJTXXZ44b9OGnw==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.115.0 + '@tanstack/react-router': ^1.115.2 csstype: ^3.0.10 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' @@ -1602,21 +1605,21 @@ packages: csstype: optional: true - '@tanstack/router-generator@1.115.0': - resolution: {integrity: sha512-sDy6zSkDNDPQDk0WXT8PTx7GwkKcxOqrDMwb6Msb28DnO6zUSXiAaX2AtocmNWHYK3ShPM211x0BMmiSTzDuqw==} + '@tanstack/router-generator@1.115.2': + resolution: {integrity: sha512-T77B6MnEdCPU9QFhjX/bhzaHKlKSo6n2MkIc78WrsnZ0Zx/zTtbzsGiLYyFZQ0tvB4/eazRrBh6YYY3qRwkGhg==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.115.0 + '@tanstack/react-router': ^1.115.2 peerDependenciesMeta: '@tanstack/react-router': optional: true - '@tanstack/router-plugin@1.115.0': - resolution: {integrity: sha512-p0KP0X0f010ZWNZYtd6dlMDJgdLLPvLXvguJTRGWd+xqH5i0ukCa+dmpWzSC9+tKLekE0PS45olFBJlj8M+6Iw==} + '@tanstack/router-plugin@1.115.2': + resolution: {integrity: sha512-81poBAU55nauRPddjbtRzGZwPy0/+SXIn6yRUXlMBQhnpMNlnsWbMyigV/iNm5F7SEUOI2u2Q79bt5Fvk2FNbA==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.115.0 + '@tanstack/react-router': ^1.115.2 vite: '>=5.0.0 || >=6.0.0' vite-plugin-solid: ^2.11.2 webpack: '>=5.92.0' @@ -1780,51 +1783,51 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/eslint-plugin@8.29.0': - resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==} + '@typescript-eslint/eslint-plugin@8.29.1': + resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.29.0': - resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} + '@typescript-eslint/parser@8.29.1': + resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.29.0': - resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} + '@typescript-eslint/scope-manager@8.29.1': + resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.29.0': - resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==} + '@typescript-eslint/type-utils@8.29.1': + resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.29.0': - resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} + '@typescript-eslint/types@8.29.1': + resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.29.0': - resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} + '@typescript-eslint/typescript-estree@8.29.1': + resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.29.0': - resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} + '@typescript-eslint/utils@8.29.1': + resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.29.0': - resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} + '@typescript-eslint/visitor-keys@8.29.1': + resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitejs/plugin-react@4.3.4': @@ -2237,6 +2240,9 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + date-format@4.0.14: resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} engines: {node: '>=4.0'} @@ -2441,8 +2447,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.132: - resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} + electron-to-chromium@1.5.134: + resolution: {integrity: sha512-zSwzrLg3jNP3bwsLqWHmS5z2nIOQ5ngMnfMZOWWtXnqqQkPVyOipxK98w+1beLw1TB+EImPNcG8wVP/cLVs2Og==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -2862,8 +2868,8 @@ packages: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} - hono@4.7.5: - resolution: {integrity: sha512-fDOK5W2C1vZACsgLONigdZTRZxuBqFtcKh7bUQ5cVSbwI2RWjloJDcgFOVzbQrlI6pCmhlTsVYZ7zpLj4m4qMQ==} + hono@4.7.6: + resolution: {integrity: sha512-564rVzELU+9BRqqx5k8sT2NFwGD3I3Vifdb6P7CmM6FiarOSY+fDC+6B+k9wcCb86ReoayteZP2ki0cRLN1jbw==} engines: {node: '>=16.9.0'} hpack.js@2.1.6: @@ -2891,8 +2897,8 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - http-parser-js@0.5.9: - resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} http-proxy-middleware@2.0.7: resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} @@ -4227,8 +4233,8 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - typescript-eslint@8.29.0: - resolution: {integrity: sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==} + typescript-eslint@8.29.1: + resolution: {integrity: sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -4391,8 +4397,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.99.0: - resolution: {integrity: sha512-//MpHjkKV7dhKheJ1lJuHkR6tv8ycfYy7YVzVhhIpwKuKCu5/Zty/vGpFi0fV2RRAWTYDuj6oKn4vYyLzRh55g==} + webpack@5.99.3: + resolution: {integrity: sha512-Sb8csGqLL9kY7nqHyJq9Yw1sx+/mpBLXuqM6edfjFOpODiFjzkLUKF08s5WxDxWg9akMklrbTsVsoj7jBULhfw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -5017,25 +5023,25 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@hono/node-server@1.14.0(hono@4.7.5)': + '@hono/node-server@1.14.0(hono@4.7.6)': dependencies: - hono: 4.7.5 + hono: 4.7.6 - '@hono/zod-openapi@0.9.10(hono@4.7.5)(zod@3.24.2)': + '@hono/zod-openapi@0.9.10(hono@4.7.6)(zod@3.24.2)': dependencies: '@asteasolutions/zod-to-openapi': 5.5.0(zod@3.24.2) - '@hono/zod-validator': 0.2.1(hono@4.7.5)(zod@3.24.2) - hono: 4.7.5 + '@hono/zod-validator': 0.2.1(hono@4.7.6)(zod@3.24.2) + hono: 4.7.6 zod: 3.24.2 - '@hono/zod-validator@0.1.11(hono@4.7.5)(zod@3.24.2)': + '@hono/zod-validator@0.1.11(hono@4.7.6)(zod@3.24.2)': dependencies: - hono: 4.7.5 + hono: 4.7.6 zod: 3.24.2 - '@hono/zod-validator@0.2.1(hono@4.7.5)(zod@3.24.2)': + '@hono/zod-validator@0.2.1(hono@4.7.6)(zod@3.24.2)': dependencies: - hono: 4.7.5 + hono: 4.7.6 zod: 3.24.2 '@humanfs/core@0.19.1': {} @@ -5139,17 +5145,17 @@ snapshots: lodash: 4.17.21 rslog: 1.2.3 - '@module-federation/bridge-react-webpack-plugin@0.11.3': + '@module-federation/bridge-react-webpack-plugin@0.11.4': dependencies: - '@module-federation/sdk': 0.11.3 + '@module-federation/sdk': 0.11.4 '@types/semver': 7.5.8 semver: 7.6.3 - '@module-federation/cli@0.11.3(typescript@5.6.3)': + '@module-federation/cli@0.11.4(typescript@5.6.3)': dependencies: '@modern-js/node-bundle-require': 2.65.1 - '@module-federation/dts-plugin': 0.11.3(typescript@5.6.3) - '@module-federation/sdk': 0.11.3 + '@module-federation/dts-plugin': 0.11.4(typescript@5.6.3) + '@module-federation/sdk': 0.11.4 chalk: 3.0.0 commander: 11.1.0 transitivePeerDependencies: @@ -5160,20 +5166,20 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/data-prefetch@0.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@module-federation/data-prefetch@0.11.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@module-federation/runtime': 0.11.3 - '@module-federation/sdk': 0.11.3 + '@module-federation/runtime': 0.11.4 + '@module-federation/sdk': 0.11.4 fs-extra: 9.1.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@module-federation/dts-plugin@0.11.3(typescript@5.6.3)': + '@module-federation/dts-plugin@0.11.4(typescript@5.6.3)': dependencies: - '@module-federation/error-codes': 0.11.3 - '@module-federation/managers': 0.11.3 - '@module-federation/sdk': 0.11.3 - '@module-federation/third-party-dts-extractor': 0.11.3 + '@module-federation/error-codes': 0.11.4 + '@module-federation/managers': 0.11.4 + '@module-federation/sdk': 0.11.4 + '@module-federation/third-party-dts-extractor': 0.11.4 adm-zip: 0.5.16 ansi-colors: 4.1.3 axios: 1.8.4 @@ -5193,24 +5199,24 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/enhanced@0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.0(esbuild@0.19.12))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.11.3 - '@module-federation/cli': 0.11.3(typescript@5.6.3) - '@module-federation/data-prefetch': 0.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@module-federation/dts-plugin': 0.11.3(typescript@5.6.3) - '@module-federation/error-codes': 0.11.3 - '@module-federation/inject-external-runtime-core-plugin': 0.11.3(@module-federation/runtime-tools@0.11.3) - '@module-federation/managers': 0.11.3 - '@module-federation/manifest': 0.11.3(typescript@5.6.3) - '@module-federation/rspack': 0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.15))(typescript@5.6.3) - '@module-federation/runtime-tools': 0.11.3 - '@module-federation/sdk': 0.11.3 + '@module-federation/enhanced@0.11.4(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.3(esbuild@0.19.12))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 0.11.4 + '@module-federation/cli': 0.11.4(typescript@5.6.3) + '@module-federation/data-prefetch': 0.11.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@module-federation/dts-plugin': 0.11.4(typescript@5.6.3) + '@module-federation/error-codes': 0.11.4 + '@module-federation/inject-external-runtime-core-plugin': 0.11.4(@module-federation/runtime-tools@0.11.4) + '@module-federation/managers': 0.11.4 + '@module-federation/manifest': 0.11.4(typescript@5.6.3) + '@module-federation/rspack': 0.11.4(@rspack/core@1.2.8(@swc/helpers@0.5.15))(typescript@5.6.3) + '@module-federation/runtime-tools': 0.11.4 + '@module-federation/sdk': 0.11.4 btoa: 1.2.1 upath: 2.0.1 optionalDependencies: typescript: 5.6.3 - webpack: 5.99.0(esbuild@0.19.12) + webpack: 5.99.3(esbuild@0.19.12) transitivePeerDependencies: - '@rspack/core' - bufferutil @@ -5220,25 +5226,25 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/error-codes@0.11.3': {} + '@module-federation/error-codes@0.11.4': {} '@module-federation/error-codes@0.8.4': {} - '@module-federation/inject-external-runtime-core-plugin@0.11.3(@module-federation/runtime-tools@0.11.3)': + '@module-federation/inject-external-runtime-core-plugin@0.11.4(@module-federation/runtime-tools@0.11.4)': dependencies: - '@module-federation/runtime-tools': 0.11.3 + '@module-federation/runtime-tools': 0.11.4 - '@module-federation/managers@0.11.3': + '@module-federation/managers@0.11.4': dependencies: - '@module-federation/sdk': 0.11.3 + '@module-federation/sdk': 0.11.4 find-pkg: 2.0.0 fs-extra: 9.1.0 - '@module-federation/manifest@0.11.3(typescript@5.6.3)': + '@module-federation/manifest@0.11.4(typescript@5.6.3)': dependencies: - '@module-federation/dts-plugin': 0.11.3(typescript@5.6.3) - '@module-federation/managers': 0.11.3 - '@module-federation/sdk': 0.11.3 + '@module-federation/dts-plugin': 0.11.4(typescript@5.6.3) + '@module-federation/managers': 0.11.4 + '@module-federation/sdk': 0.11.4 chalk: 3.0.0 find-pkg: 2.0.0 transitivePeerDependencies: @@ -5249,16 +5255,16 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/node@2.6.32(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.0(esbuild@0.19.12))': + '@module-federation/node@2.6.33(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.3(esbuild@0.19.12))': dependencies: - '@module-federation/enhanced': 0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.0(esbuild@0.19.12)) - '@module-federation/runtime': 0.11.3 - '@module-federation/sdk': 0.11.3 - '@module-federation/utilities': 3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.0(esbuild@0.19.12)) + '@module-federation/enhanced': 0.11.4(@rspack/core@1.2.8(@swc/helpers@0.5.15))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.99.3(esbuild@0.19.12)) + '@module-federation/runtime': 0.11.4 + '@module-federation/sdk': 0.11.4 + '@module-federation/utilities': 3.1.51(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.3(esbuild@0.19.12)) btoa: 1.2.1 encoding: 0.1.13 node-fetch: 2.7.0(encoding@0.1.13) - webpack: 5.99.0(esbuild@0.19.12) + webpack: 5.99.3(esbuild@0.19.12) optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5271,15 +5277,15 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/rspack@0.11.3(@rspack/core@1.2.8(@swc/helpers@0.5.15))(typescript@5.6.3)': + '@module-federation/rspack@0.11.4(@rspack/core@1.2.8(@swc/helpers@0.5.15))(typescript@5.6.3)': dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.11.3 - '@module-federation/dts-plugin': 0.11.3(typescript@5.6.3) - '@module-federation/inject-external-runtime-core-plugin': 0.11.3(@module-federation/runtime-tools@0.11.3) - '@module-federation/managers': 0.11.3 - '@module-federation/manifest': 0.11.3(typescript@5.6.3) - '@module-federation/runtime-tools': 0.11.3 - '@module-federation/sdk': 0.11.3 + '@module-federation/bridge-react-webpack-plugin': 0.11.4 + '@module-federation/dts-plugin': 0.11.4(typescript@5.6.3) + '@module-federation/inject-external-runtime-core-plugin': 0.11.4(@module-federation/runtime-tools@0.11.4) + '@module-federation/managers': 0.11.4 + '@module-federation/manifest': 0.11.4(typescript@5.6.3) + '@module-federation/runtime-tools': 0.11.4 + '@module-federation/sdk': 0.11.4 '@rspack/core': 1.2.8(@swc/helpers@0.5.15) btoa: 1.2.1 optionalDependencies: @@ -5290,15 +5296,15 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/runtime-core@0.11.3': + '@module-federation/runtime-core@0.11.4': dependencies: - '@module-federation/error-codes': 0.11.3 - '@module-federation/sdk': 0.11.3 + '@module-federation/error-codes': 0.11.4 + '@module-federation/sdk': 0.11.4 - '@module-federation/runtime-tools@0.11.3': + '@module-federation/runtime-tools@0.11.4': dependencies: - '@module-federation/runtime': 0.11.3 - '@module-federation/webpack-bundler-runtime': 0.11.3 + '@module-federation/runtime': 0.11.4 + '@module-federation/webpack-bundler-runtime': 0.11.4 '@module-federation/runtime-tools@0.5.1': dependencies: @@ -5310,11 +5316,11 @@ snapshots: '@module-federation/runtime': 0.8.4 '@module-federation/webpack-bundler-runtime': 0.8.4 - '@module-federation/runtime@0.11.3': + '@module-federation/runtime@0.11.4': dependencies: - '@module-federation/error-codes': 0.11.3 - '@module-federation/runtime-core': 0.11.3 - '@module-federation/sdk': 0.11.3 + '@module-federation/error-codes': 0.11.4 + '@module-federation/runtime-core': 0.11.4 + '@module-federation/sdk': 0.11.4 '@module-federation/runtime@0.5.1': dependencies: @@ -5325,7 +5331,7 @@ snapshots: '@module-federation/error-codes': 0.8.4 '@module-federation/sdk': 0.8.4 - '@module-federation/sdk@0.11.3': {} + '@module-federation/sdk@0.11.4': {} '@module-federation/sdk@0.5.1': {} @@ -5333,24 +5339,24 @@ snapshots: dependencies: isomorphic-rslog: 0.0.6 - '@module-federation/third-party-dts-extractor@0.11.3': + '@module-federation/third-party-dts-extractor@0.11.4': dependencies: find-pkg: 2.0.0 fs-extra: 9.1.0 resolve: 1.22.8 - '@module-federation/utilities@3.1.50(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.0(esbuild@0.19.12))': + '@module-federation/utilities@3.1.51(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.99.3(esbuild@0.19.12))': dependencies: - '@module-federation/sdk': 0.11.3 - webpack: 5.99.0(esbuild@0.19.12) + '@module-federation/sdk': 0.11.4 + webpack: 5.99.3(esbuild@0.19.12) optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@module-federation/webpack-bundler-runtime@0.11.3': + '@module-federation/webpack-bundler-runtime@0.11.4': dependencies: - '@module-federation/runtime': 0.11.3 - '@module-federation/sdk': 0.11.3 + '@module-federation/runtime': 0.11.4 + '@module-federation/sdk': 0.11.4 '@module-federation/webpack-bundler-runtime@0.5.1': dependencies: @@ -5583,11 +5589,11 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.2.8 '@rspack/binding-win32-x64-msvc': 1.2.8 - '@rspack/cli@1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12))': + '@rspack/cli@1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.3(esbuild@0.19.12))': dependencies: '@discoveryjs/json-ext': 0.5.7 '@rspack/core': 1.2.8(@swc/helpers@0.5.15) - '@rspack/dev-server': 1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12)) + '@rspack/dev-server': 1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.3(esbuild@0.19.12)) colorette: 2.0.20 exit-hook: 4.0.0 interpret: 3.1.1 @@ -5621,7 +5627,7 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.15 - '@rspack/dev-server@1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.0(esbuild@0.19.12))': + '@rspack/dev-server@1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.15))(@types/express@4.17.21)(webpack@5.99.3(esbuild@0.19.12))': dependencies: '@rspack/core': 1.2.8(@swc/helpers@0.5.15) chokidar: 3.6.0 @@ -5630,8 +5636,8 @@ snapshots: http-proxy-middleware: 2.0.7(@types/express@4.17.21) mime-types: 2.1.35 p-retry: 4.6.2 - webpack-dev-middleware: 7.4.2(webpack@5.99.0(esbuild@0.19.12)) - webpack-dev-server: 5.0.4(webpack@5.99.0(esbuild@0.19.12)) + webpack-dev-middleware: 7.4.2(webpack@5.99.3(esbuild@0.19.12)) + webpack-dev-server: 5.0.4(webpack@5.99.3(esbuild@0.19.12)) ws: 8.18.1 transitivePeerDependencies: - '@types/express' @@ -5678,16 +5684,16 @@ snapshots: '@tanstack/history@1.115.0': {} - '@tanstack/query-core@5.72.0': {} + '@tanstack/query-core@5.72.1': {} - '@tanstack/react-query@5.72.0(react@18.3.1)': + '@tanstack/react-query@5.72.1(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.72.0 + '@tanstack/query-core': 5.72.1 react: 18.3.1 - '@tanstack/react-router-devtools@1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': + '@tanstack/react-router-devtools@1.115.2(@tanstack/react-router@1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/react-router': 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': 1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-devtools-core': 1.115.0(@tanstack/router-core@1.115.0)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5697,7 +5703,7 @@ snapshots: - csstype - tiny-invariant - '@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-router@1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@tanstack/history': 1.115.0 '@tanstack/react-store': 0.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -5731,10 +5737,10 @@ snapshots: optionalDependencies: csstype: 3.1.3 - '@tanstack/router-devtools@1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': + '@tanstack/router-devtools@1.115.2(@tanstack/react-router@1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/react-router': 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/react-router-devtools': 1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) + '@tanstack/react-router': 1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router-devtools': 1.115.2(@tanstack/react-router@1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.115.0)(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tiny-invariant@1.3.3) clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) react: 18.3.1 @@ -5745,16 +5751,16 @@ snapshots: - '@tanstack/router-core' - tiny-invariant - '@tanstack/router-generator@1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@tanstack/router-generator@1.115.2(@tanstack/react-router@1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@tanstack/virtual-file-routes': 1.115.0 prettier: 3.5.3 tsx: 4.19.3 zod: 3.24.2 optionalDependencies: - '@tanstack/react-router': 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': 1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-plugin@1.115.0(@rsbuild/core@1.1.13)(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))(webpack@5.99.0)': + '@tanstack/router-plugin@1.115.2(@rsbuild/core@1.1.13)(@tanstack/react-router@1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))(webpack@5.99.3)': dependencies: '@babel/core': 7.26.10 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) @@ -5763,7 +5769,7 @@ snapshots: '@babel/traverse': 7.27.0 '@babel/types': 7.27.0 '@tanstack/router-core': 1.115.0 - '@tanstack/router-generator': 1.115.0(@tanstack/react-router@1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@tanstack/router-generator': 1.115.2(@tanstack/react-router@1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@tanstack/router-utils': 1.115.0 '@tanstack/virtual-file-routes': 1.115.0 '@types/babel__core': 7.20.5 @@ -5775,9 +5781,9 @@ snapshots: zod: 3.24.2 optionalDependencies: '@rsbuild/core': 1.1.13 - '@tanstack/react-router': 1.115.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': 1.115.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) vite: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) - webpack: 5.99.0 + webpack: 5.99.3 transitivePeerDependencies: - supports-color @@ -5961,14 +5967,14 @@ snapshots: dependencies: '@types/node': 22.14.0 - '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/type-utils': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/parser': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/type-utils': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.29.1 eslint: 9.24.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 @@ -5978,27 +5984,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': + '@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.29.1 debug: 4.4.0 eslint: 9.24.0(jiti@1.21.7) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.29.0': + '@typescript-eslint/scope-manager@8.29.1': dependencies: - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 - '@typescript-eslint/type-utils@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.6.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) debug: 4.4.0 eslint: 9.24.0(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.6.3) @@ -6006,12 +6012,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.29.0': {} + '@typescript-eslint/types@8.29.1': {} - '@typescript-eslint/typescript-estree@8.29.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.29.1(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -6022,20 +6028,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': + '@typescript-eslint/utils@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.24.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.6.3) eslint: 9.24.0(jiti@1.21.7) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.29.0': + '@typescript-eslint/visitor-keys@8.29.1': dependencies: - '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/types': 8.29.1 eslint-visitor-keys: 4.2.0 '@vitejs/plugin-react@4.3.4(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))': @@ -6295,7 +6301,7 @@ snapshots: browserslist@4.24.4: dependencies: caniuse-lite: 1.0.30001712 - electron-to-chromium: 1.5.132 + electron-to-chromium: 1.5.134 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -6483,6 +6489,8 @@ snapshots: dependencies: '@babel/runtime': 7.27.0 + date-fns@4.1.0: {} + date-format@4.0.14: {} dateformat@4.6.3: {} @@ -6577,7 +6585,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.132: {} + electron-to-chromium@1.5.134: {} emoji-regex@10.4.0: {} @@ -7127,7 +7135,7 @@ snapshots: dependencies: parse-passwd: 1.0.0 - hono@4.7.5: {} + hono@4.7.6: {} hpack.js@2.1.6: dependencies: @@ -7168,7 +7176,7 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-parser-js@0.5.9: {} + http-parser-js@0.5.10: {} http-proxy-middleware@2.0.7(@types/express@4.17.21): dependencies: @@ -8384,25 +8392,25 @@ snapshots: tapable@2.2.1: {} - terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.99.0(esbuild@0.19.12)): + terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.99.3(esbuild@0.19.12)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.99.0(esbuild@0.19.12) + webpack: 5.99.3(esbuild@0.19.12) optionalDependencies: esbuild: 0.19.12 - terser-webpack-plugin@5.3.14(webpack@5.99.0): + terser-webpack-plugin@5.3.14(webpack@5.99.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.99.0 + webpack: 5.99.3 optional: true terser@5.39.0: @@ -8516,11 +8524,11 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typescript-eslint@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3): + typescript-eslint@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/parser': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/parser': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0(jiti@1.21.7))(typescript@5.6.3) eslint: 9.24.0(jiti@1.21.7) typescript: 5.6.3 transitivePeerDependencies: @@ -8623,7 +8631,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.2(webpack@5.99.0(esbuild@0.19.12)): + webpack-dev-middleware@7.4.2(webpack@5.99.3(esbuild@0.19.12)): dependencies: colorette: 2.0.20 memfs: 4.17.0 @@ -8632,9 +8640,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.0 optionalDependencies: - webpack: 5.99.0(esbuild@0.19.12) + webpack: 5.99.3(esbuild@0.19.12) - webpack-dev-server@5.0.4(webpack@5.99.0(esbuild@0.19.12)): + webpack-dev-server@5.0.4(webpack@5.99.3(esbuild@0.19.12)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -8664,10 +8672,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.99.0(esbuild@0.19.12)) + webpack-dev-middleware: 7.4.2(webpack@5.99.3(esbuild@0.19.12)) ws: 8.18.1 optionalDependencies: - webpack: 5.99.0(esbuild@0.19.12) + webpack: 5.99.3(esbuild@0.19.12) transitivePeerDependencies: - bufferutil - debug @@ -8678,7 +8686,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.99.0: + webpack@5.99.3: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -8700,7 +8708,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(webpack@5.99.0) + terser-webpack-plugin: 5.3.14(webpack@5.99.3) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -8709,7 +8717,7 @@ snapshots: - uglify-js optional: true - webpack@5.99.0(esbuild@0.19.12): + webpack@5.99.3(esbuild@0.19.12): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -8731,7 +8739,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.99.0(esbuild@0.19.12)) + terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.99.3(esbuild@0.19.12)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -8741,7 +8749,7 @@ snapshots: websocket-driver@0.7.4: dependencies: - http-parser-js: 0.5.9 + http-parser-js: 0.5.10 safe-buffer: 5.2.1 websocket-extensions: 0.1.4 From ed6f18909d3de80d925b2e53cf5e7456115ec2d0 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Tue, 8 Apr 2025 12:39:17 -0500 Subject: [PATCH 017/113] fix created at query --- backend/src/services/db/queries.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/services/db/queries.ts b/backend/src/services/db/queries.ts index e287df24..35e3b345 100644 --- a/backend/src/services/db/queries.ts +++ b/backend/src/services/db/queries.ts @@ -217,7 +217,7 @@ export async function getSubmissionByCuratorTweetId( curatorId: submissions.curatorId, curatorUsername: submissions.curatorUsername, curatorTweetId: submissions.curatorTweetId, - createdAt: submissions.createdAt, + createdAt: sql`${submissions.createdAt}::text`, submittedAt: sql`COALESCE(${submissions.submittedAt}::text, ${submissions.createdAt}::text)`, }, m: { @@ -296,7 +296,7 @@ export async function getSubmission( curatorId: submissions.curatorId, curatorUsername: submissions.curatorUsername, curatorTweetId: submissions.curatorTweetId, - createdAt: submissions.createdAt, + createdAt: sql`${submissions.createdAt}::text`, submittedAt: sql`COALESCE(${submissions.submittedAt}::text, ${submissions.createdAt}::text)`, }, m: { @@ -377,7 +377,7 @@ export async function getAllSubmissions( curatorId: submissions.curatorId, curatorUsername: submissions.curatorUsername, curatorTweetId: submissions.curatorTweetId, - createdAt: submissions.createdAt, + createdAt: sql`${submissions.createdAt}::text`, submittedAt: sql`COALESCE(${submissions.submittedAt}::text, ${submissions.createdAt}::text)`, }, m: { @@ -424,7 +424,7 @@ export async function getAllSubmissions( curatorId: submissions.curatorId, curatorUsername: submissions.curatorUsername, curatorTweetId: submissions.curatorTweetId, - createdAt: submissions.createdAt, + createdAt: sql`${submissions.createdAt}::text`, submittedAt: sql`COALESCE(${submissions.submittedAt}::text, ${submissions.createdAt}::text)`, }, m: { @@ -824,7 +824,7 @@ export async function getSubmissionsByFeed( curatorId: submissions.curatorId, curatorUsername: submissions.curatorUsername, curatorTweetId: submissions.curatorTweetId, - createdAt: submissions.createdAt, + createdAt: sql`${submissions.createdAt}::text`, submittedAt: sql`COALESCE(${submissions.submittedAt}::text, ${submissions.createdAt}::text)`, }, sf: { From 363313d4853746ab5c30a4ff5ad4faa295207695 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Tue, 8 Apr 2025 13:07:54 -0500 Subject: [PATCH 018/113] cast to date --- backend/src/services/db/queries.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/services/db/queries.ts b/backend/src/services/db/queries.ts index 35e3b345..87eceda8 100644 --- a/backend/src/services/db/queries.ts +++ b/backend/src/services/db/queries.ts @@ -586,7 +586,7 @@ export async function cleanupOldSubmissionCounts( ): Promise { await db .delete(submissionCounts) - .where(sql`${submissionCounts.lastResetDate} < CURRENT_DATE`) + .where(sql`${submissionCounts.lastResetDate}::date < CURRENT_DATE`) .execute(); } @@ -600,7 +600,7 @@ export async function getDailySubmissionCount( .where( and( eq(submissionCounts.userId, userId), - eq(submissionCounts.lastResetDate, sql`CURRENT_DATE`), + eq(sql`${submissionCounts.lastResetDate}::date`, sql`CURRENT_DATE`), ), ); @@ -624,7 +624,7 @@ export async function incrementDailySubmissionCount( target: submissionCounts.userId, set: { count: sql`CASE - WHEN ${submissionCounts.lastResetDate} < CURRENT_DATE THEN 1 + WHEN ${submissionCounts.lastResetDate}::date < CURRENT_DATE THEN 1 ELSE ${submissionCounts.count} + 1 END`, lastResetDate: sql`CURRENT_DATE`, From a38884149d37fe29b50a3b66876fa21b078d8f65 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Tue, 8 Apr 2025 13:16:48 -0500 Subject: [PATCH 019/113] point to railway --- frontend/vercel.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/vercel.json b/frontend/vercel.json index b751e178..f6ec3b0b 100644 --- a/frontend/vercel.json +++ b/frontend/vercel.json @@ -2,7 +2,7 @@ "rewrites": [ { "source": "/(.*)", - "destination": "https://curatedotfun-floral-sun-1539.fly.dev/$1" + "destination": "https://curatedotfun-production.up.railway.app/feed/$1" } ] } From 5a74537b0066875b3cea8d614bc718e399eecc89 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Tue, 8 Apr 2025 13:22:36 -0500 Subject: [PATCH 020/113] fix url --- frontend/vercel.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/vercel.json b/frontend/vercel.json index f6ec3b0b..2d6be4d0 100644 --- a/frontend/vercel.json +++ b/frontend/vercel.json @@ -2,7 +2,7 @@ "rewrites": [ { "source": "/(.*)", - "destination": "https://curatedotfun-production.up.railway.app/feed/$1" + "destination": "https://curatedotfun-production.up.railway.app/$1" } ] } From 39ff46105849c914488fbd62a15d8ac03688daab Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Wed, 9 Apr 2025 11:39:24 -0500 Subject: [PATCH 021/113] add RSS for desci and grants --- curate.config.json | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/curate.config.json b/curate.config.json index 09c7981d..55028b5c 100644 --- a/curate.config.json +++ b/curate.config.json @@ -700,6 +700,40 @@ "botToken": "{TELEGRAM_BOT_TOKEN}", "channelId": "@desciunderground" } + }, + { + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "title": "{{title}}", + "content": "

{{title}}

{{summary}}

", + "description": "{{summary}}", + "link": "{{source}}", + "publishedAt": "{{createdAt}}", + "author": { + "name": "{{username}}", + "link": "https://x.com/{{author}}" + }, + "categories": ["desci", "{{tags}}"], + "source": { + "url": "{{source}}", + "title": "twitter" + } + } + } + } + ], + "plugin": "@curatedotfun/rss", + "config": { + "serviceUrl": "https://desci-rss.up.railway.app", + "apiSecret": "{DESCI_RSS_API_SECRET}", + "feedConfig": { + "title": "DeSci World", + "description": "Decentralized Science updates" + } + } } ] } From 2726555f9f8507349fc24b2117e64bf00c63551f Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Wed, 9 Apr 2025 11:40:52 -0500 Subject: [PATCH 022/113] add grants --- curate.config.json | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/curate.config.json b/curate.config.json index 55028b5c..7b0e0868 100644 --- a/curate.config.json +++ b/curate.config.json @@ -125,6 +125,40 @@ "submittedAt": "date" } } + }, + { + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "title": "{{title}}", + "content": "

{{title}}

{{summary}}

", + "description": "{{summary}}", + "link": "{{source}}", + "publishedAt": "{{createdAt}}", + "author": { + "name": "{{username}}", + "link": "https://x.com/{{author}}" + }, + "categories": ["grants", "{{tags}}"], + "source": { + "url": "{{source}}", + "title": "twitter" + } + } + } + } + ], + "plugin": "@curatedotfun/rss", + "config": { + "serviceUrl": "https://grants-rss.up.railway.app", + "apiSecret": "{GRANTS_RSS_API_SECRET}", + "feedConfig": { + "title": "Crypto Grant Wire", + "description": "Blockchain grant updates" + } + } } ] }, From b779eec5ee8fba9b87b50b5bf8bc2b4e17ccdca3 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Thu, 10 Apr 2025 14:20:29 -0600 Subject: [PATCH 023/113] adds a catch-all feed (#122) --- .../services/submissions/submission.service.ts | 12 +----------- curate.config.json | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/backend/src/services/submissions/submission.service.ts b/backend/src/services/submissions/submission.service.ts index 96dbd56c..b49fd66e 100644 --- a/backend/src/services/submissions/submission.service.ts +++ b/backend/src/services/submissions/submission.service.ts @@ -199,16 +199,6 @@ export class SubmissionService { ), ); - // If no feeds specified, reject submission - if (feedIds.length === 0) { - // await this.twitterService.replyToTweet( - // tweet.id, - // `Please specify at least one valid feed using hashtags (e.g. #grants, #ethereum, #near)`, - // ); - logger.error(`${tweet.id}: Provided invalid feeds, ${feedIds}`); - return; - } - // Fetch original tweet const originalTweet = await this.twitterService.getTweet(inReplyToId); if (!originalTweet) { @@ -270,7 +260,7 @@ export class SubmissionService { } // Process each feed - for (const feedId of feedIds) { + for (const feedId of [...feedIds, "all"]) { const lowercaseFeedId = feedId.toLowerCase(); const feed = this.config.feeds.find( (f: { id: string }) => f.id.toLowerCase() === lowercaseFeedId, diff --git a/curate.config.json b/curate.config.json index 7b0e0868..e1e3ce65 100644 --- a/curate.config.json +++ b/curate.config.json @@ -38,6 +38,21 @@ } }, "feeds": [ + { + "id": "all", + "name": "All", + "description": "All submissions", + "moderation": { + "approvers": { + "twitter": [] + } + }, + "outputs": { + "stream": { + "enabled": false + } + } + }, { "id": "grants", "name": "Crypto Grant Wire", From 2589d5573fadc9f2057cebbb21b8736bb2a33e3d Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Mon, 21 Apr 2025 08:28:36 -0700 Subject: [PATCH 024/113] added more feeds monad, cryptoexploits, btcintern artbitrum base --- curate.config.json | 303 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 281 insertions(+), 22 deletions(-) diff --git a/curate.config.json b/curate.config.json index e1e3ce65..a1cb790a 100644 --- a/curate.config.json +++ b/curate.config.json @@ -2193,7 +2193,62 @@ }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@based_reporter" + } + } + ] } } }, @@ -2208,7 +2263,62 @@ }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@monadpress" + } + } + ] } } }, @@ -2230,7 +2340,7 @@ { "id": "arbitrum", "name": "arbitrum", - "description": "News about Atrbitrum Ecoystem", + "description": "News about Arbitrum Ecoystem", "moderation": { "approvers": { "twitter": ["plugrel", "potlock_intern"] @@ -2238,10 +2348,64 @@ }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@arbitrumintern" + } + } + ] } } - }, { "id": "stablecoins", "name": "Stablecoins", @@ -2392,21 +2556,6 @@ } } }, - { - "id": "arbitrum", - "name": "arbitrum", - "description": "News about Arbitrum Ecoystem", - "moderation": { - "approvers": { - "twitter": ["plugrel", "potlock_intern"] - } - }, - "outputs": { - "stream": { - "enabled": false - } - } - }, { "id": "polygon", "name": "Polygon", @@ -2448,7 +2597,62 @@ }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@btcintern" + } + } + ] } } }, @@ -2493,7 +2697,62 @@ }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@web3exploits" + } + } + ] } } }, From b4ac0386b1e11e4fd67e4d3e45a927213c9f4e2f Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 21 Apr 2025 12:48:54 -0500 Subject: [PATCH 025/113] fix config --- curate.config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/curate.config.json b/curate.config.json index a1cb790a..01921cfc 100644 --- a/curate.config.json +++ b/curate.config.json @@ -2406,6 +2406,7 @@ ] } } + }, { "id": "stablecoins", "name": "Stablecoins", From 0b1dbed13f461ced2cb1406badd383ff97f67701 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 28 Apr 2025 10:44:30 -0500 Subject: [PATCH 026/113] add celo and afrobeats --- curate.config.json | 127 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 126 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 01921cfc..b0291d59 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1488,7 +1488,132 @@ }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@celo_news" + } + } + ] + } + } + }, + { + "id": "afrobeats", + "name": "Afrobeat Heartbeat", + "description": "Latest afrobeats music, events, festivals, and dances", + "moderation": { + "approvers": { + "twitter": ["plugrel"] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@afrobeats" + } + } + ] } } }, From 590a88b0a2d30223ddd4b106c36d6648afa1d0dc Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 28 Apr 2025 11:00:40 -0500 Subject: [PATCH 027/113] nearhacks channel --- curate.config.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/curate.config.json b/curate.config.json index b0291d59..5e6da2a5 100644 --- a/curate.config.json +++ b/curate.config.json @@ -371,15 +371,14 @@ { "plugin": "@curatedotfun/simple-transform", "config": { - "template": "šŸ‰ NEAR: *[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" } } ], "plugin": "@curatedotfun/telegram", "config": { "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "-1002472938420", - "messageThreadId": "8" + "channelId": "@NearHacks" } }, { From 7c3d0335fd5991cba8a713f9fb3faab5f3ed6c69 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Thu, 1 May 2025 07:36:43 -0700 Subject: [PATCH 028/113] added back to stablecoins feed since stablewatch forked their own --- curate.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 5e6da2a5..20455ac8 100644 --- a/curate.config.json +++ b/curate.config.json @@ -2537,7 +2537,7 @@ "description": "News about the Stablecoins Ecoystem", "moderation": { "approvers": { - "twitter": ["stablewatchHQ", "Piotr_Saczuk"] + "twitter": ["stablewatchHQ", "potlock_", "plugrel", "potlock_intern", "Piotr_Saczuk"] } }, "outputs": { From 2b60aeb2322d83e89ec3ed8b2830787c856b65fa Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Thu, 1 May 2025 12:55:58 -0500 Subject: [PATCH 029/113] africa and afrobeats --- curate.config.json | 92 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 87 insertions(+), 5 deletions(-) diff --git a/curate.config.json b/curate.config.json index 20455ac8..01a18d7f 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1548,11 +1548,11 @@ }, { "id": "afrobeats", - "name": "Afrobeat Heartbeat", - "description": "Latest afrobeats music, events, festivals, and dances", + "name": "Afrobeats", + "description": "Everything Afrobeats from new music, festival, events, clubs, dances and more!", "moderation": { "approvers": { - "twitter": ["plugrel"] + "twitter": ["plugrel", "potlock_intern", "youngfreshdao"] } }, "outputs": { @@ -1609,7 +1609,83 @@ "plugin": "@curatedotfun/telegram", "config": { "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "@afrobeats" + "channelId": "@@afrobeats_party" + } + } + ] + } + } + }, + { + "id": "africa", + "name": "Web3Fusion", + "description": "The main news source for everything crypto in Africa", + "moderation": { + "approvers": { + "twitter": [ + "plugrel", + "potlock_intern", + "earnest_etim", + "nearafrica_", + "webfusiondev" + ] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@@webfsn" } } ] @@ -2537,7 +2613,13 @@ "description": "News about the Stablecoins Ecoystem", "moderation": { "approvers": { - "twitter": ["stablewatchHQ", "potlock_", "plugrel", "potlock_intern", "Piotr_Saczuk"] + "twitter": [ + "stablewatchHQ", + "potlock_", + "plugrel", + "potlock_intern", + "Piotr_Saczuk" + ] } }, "outputs": { From ed564913867c5b09ed850247c55ab329a1a1b45f Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Thu, 1 May 2025 12:50:11 -0600 Subject: [PATCH 030/113] Remove duplicate --- curate.config.json | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/curate.config.json b/curate.config.json index 01a18d7f..9822d65c 100644 --- a/curate.config.json +++ b/curate.config.json @@ -2679,21 +2679,6 @@ "channelId": "@stablecoinspress" } }, - { - "transform": [ - { - "plugin": "@curatedotfun/simple-transform", - "config": { - "template": " *[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" - } - } - ], - "plugin": "@curatedotfun/telegram", - "config": { - "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "@stablecoinspress" - } - }, { "transform": [ { From 0e6d3078cfc503eeddc95cd6ede9b13e633126fd Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 2 May 2025 01:17:35 -0500 Subject: [PATCH 031/113] fix channel ids --- curate.config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/curate.config.json b/curate.config.json index 9822d65c..68d4204a 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1609,7 +1609,7 @@ "plugin": "@curatedotfun/telegram", "config": { "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "@@afrobeats_party" + "channelId": "@afrobeats_party" } } ] @@ -1685,7 +1685,7 @@ "plugin": "@curatedotfun/telegram", "config": { "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "@@webfsn" + "channelId": "@webfsn" } } ] From 37878b62bcb6880819a72014de51e7c80ec37420 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Thu, 1 May 2025 23:26:55 -0700 Subject: [PATCH 032/113] added activity dao feed --- curate.config.json | 70 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/curate.config.json b/curate.config.json index 68d4204a..4615b108 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1616,6 +1616,76 @@ } } }, + { + "id": "activity", + "name": "ActivityDAO", + "description": "Activity based events for crypto.", + "moderation": { + "approvers": { + "twitter": ["plugrel", "potlock_intern", "russlive215"] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@activitydao" + } + } + ] + } + } + }, { "id": "africa", "name": "Web3Fusion", From c294a02fb1765e7287ac2b0799b7c341b741e839 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Sun, 4 May 2025 00:24:05 -0700 Subject: [PATCH 033/113] added network state news feed --- curate.config.json | 58 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 4615b108..f8f5a5ca 100644 --- a/curate.config.json +++ b/curate.config.json @@ -848,6 +848,7 @@ "shanhaiwoo", "potlock_", "plugrel", + "russlive215", "potlock_intern", "SocialLayer_im" ] @@ -855,7 +856,62 @@ }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@networkstate_news" + } + } + ] } } }, From 26106886d6850684c3b8e30d56797b60646a13d9 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Mon, 5 May 2025 10:16:47 -0700 Subject: [PATCH 034/113] added vietnam channel --- curate.config.json | 70 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/curate.config.json b/curate.config.json index f8f5a5ca..0386cb2b 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1347,6 +1347,76 @@ } } }, + { + "id": "vietnam", + "name": "RAK DAO News", + "description": "Vietnam crypto ecosystem.", + "moderation": { + "approvers": { + "twitter": ["cuongdc_real","KURODENJIRO" ,"potlock_intern", "plugrel"] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "šŸ‡»šŸ‡³: *[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@tintuccoinhangngay" + } + } + ] + } + } + }, { "id": "uae", "name": "RAK DAO News", From 3fcc8d6af1f1aef3b942ecf2e3a07d354350b361 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Wed, 7 May 2025 07:01:06 -0700 Subject: [PATCH 035/113] added cryptofolio india feed --- curate.config.json | 70 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/curate.config.json b/curate.config.json index 0386cb2b..56c45e8a 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1347,6 +1347,76 @@ } } }, + { + "id": "india", + "name": "Crypto India", + "description": "India's crypto ecosystem.", + "moderation": { + "approvers": { + "twitter": ["potlock_","fiatisabubble" ,"potlock_intern", "plugrel"] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "šŸ‡®šŸ‡³: *[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@CryptoFolioIN" + } + } + ] + } + } + }, { "id": "vietnam", "name": "RAK DAO News", From 7a339b861b0384e3af39ab92b944e6e7bacfff02 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Thu, 8 May 2025 21:41:48 -0700 Subject: [PATCH 036/113] trying to configure nft feed and fix vietnam title --- curate.config.json | 72 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 56c45e8a..0cee83b8 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1417,9 +1417,79 @@ } } }, + { + "id": "nft", + "name": "NFT News", + "description": "Chain agnostic NFT news, product updates, thought leadership, regulatory changes, and more.", + "moderation": { + "approvers": { + "twitter": ["potlock_","genadrop" ,"potlock_intern","elliot_braem", "curatedotfun", "plugrel"] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@genadrop/1266" + } + } + ] + } + } + }, { "id": "vietnam", - "name": "RAK DAO News", + "name": "Vietnam Crypto News", "description": "Vietnam crypto ecosystem.", "moderation": { "approvers": { From 3bcefecfa12ea196ebb982bcd6dfbceb6a22f9a4 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 9 May 2025 11:56:57 -0500 Subject: [PATCH 037/113] fmt --- curate.config.json | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/curate.config.json b/curate.config.json index 0cee83b8..e47772ca 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1353,7 +1353,7 @@ "description": "India's crypto ecosystem.", "moderation": { "approvers": { - "twitter": ["potlock_","fiatisabubble" ,"potlock_intern", "plugrel"] + "twitter": ["potlock_", "fiatisabubble", "potlock_intern", "plugrel"] } }, "outputs": { @@ -1417,13 +1417,20 @@ } } }, - { + { "id": "nft", "name": "NFT News", "description": "Chain agnostic NFT news, product updates, thought leadership, regulatory changes, and more.", "moderation": { "approvers": { - "twitter": ["potlock_","genadrop" ,"potlock_intern","elliot_braem", "curatedotfun", "plugrel"] + "twitter": [ + "potlock_", + "genadrop", + "potlock_intern", + "elliot_braem", + "curatedotfun", + "plugrel" + ] } }, "outputs": { @@ -1493,7 +1500,12 @@ "description": "Vietnam crypto ecosystem.", "moderation": { "approvers": { - "twitter": ["cuongdc_real","KURODENJIRO" ,"potlock_intern", "plugrel"] + "twitter": [ + "cuongdc_real", + "KURODENJIRO", + "potlock_intern", + "plugrel" + ] } }, "outputs": { From d707066785669e3faa3e6902c4f689a0189df027 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Fri, 9 May 2025 21:37:15 -0700 Subject: [PATCH 038/113] added public goods feed --- curate.config.json | 60 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index e47772ca..8e1b50a3 100644 --- a/curate.config.json +++ b/curate.config.json @@ -612,6 +612,9 @@ "approvers": { "twitter": [ "plugrel", + "Giveth", + "sovereignsignal", + "thegrifft", "owocki", "TheDevanshMehta", "niddhi", @@ -624,7 +627,62 @@ }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@publicgoodsfm" + } + } + ] } } }, From cb091bf6957c6b89efeed437b77ba453360aead1 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 12 May 2025 08:54:34 -0500 Subject: [PATCH 039/113] wip --- .clinerules | 18 + Dockerfile | 1 - backend/package.json | 1 + backend/pnpm-lock.yaml | 12 + backend/src/app.ts | 30 +- backend/src/routes/api/index.ts | 4 +- backend/src/routes/api/recap.ts | 313 ++++++++ backend/src/routes/api/trigger.ts | 47 ++ .../db/migrations/0002_brown_satana.sql | 27 + .../db/migrations/meta/0002_snapshot.json | 734 ++++++++++++++++++ .../services/db/migrations/meta/_journal.json | 7 + backend/src/services/db/queries.ts | 18 +- .../db/repositories/feed.repository.ts | 286 ++++++- backend/src/services/db/schema.ts | 56 +- backend/src/services/db/transaction.ts | 14 +- .../services/plugins/sources/twitter/index.ts | 133 ---- .../services/scheduler/scheduler.service.ts | 420 ++++++++++ .../submissions/submission.service.ts | 7 +- backend/src/services/twitter/queries.ts | 2 +- backend/src/services/twitter/schema.ts | 19 - backend/src/types/app.ts | 4 + backend/src/types/config.ts | 9 +- backend/src/types/recap.ts | 63 ++ backend/test/curate.config.test.json | 140 ++-- backend/test/setup/seed-test.ts | 104 ++- backend/test/setup/seed.sql | 7 + .../scheduler/scheduler.service.test.ts | 455 +++++++++++ frontend/src/components/FeedList.tsx | 2 +- frontend/src/components/RecapManager.tsx | 437 +++++++++++ frontend/src/components/Settings.tsx | 29 +- frontend/src/lib/recap.ts | 195 +++++ frontend/src/types/recap.ts | 31 + package.json | 2 +- pnpm-lock.yaml | 69 +- 34 files changed, 3399 insertions(+), 297 deletions(-) create mode 100644 backend/src/routes/api/recap.ts create mode 100644 backend/src/routes/api/trigger.ts create mode 100644 backend/src/services/db/migrations/0002_brown_satana.sql create mode 100644 backend/src/services/db/migrations/meta/0002_snapshot.json delete mode 100644 backend/src/services/plugins/sources/twitter/index.ts create mode 100644 backend/src/services/scheduler/scheduler.service.ts delete mode 100644 backend/src/services/twitter/schema.ts create mode 100644 backend/src/types/recap.ts create mode 100644 backend/test/unit/services/scheduler/scheduler.service.test.ts create mode 100644 frontend/src/components/RecapManager.tsx create mode 100644 frontend/src/lib/recap.ts create mode 100644 frontend/src/types/recap.ts diff --git a/.clinerules b/.clinerules index 77f82188..a9d47c95 100644 --- a/.clinerules +++ b/.clinerules @@ -78,6 +78,14 @@ 4. DistributionService → Distributor-specific transforms 5. Distribution to configured channels +### Recap Flow +1. Scheduler service creates jobs based on feed configuration +2. External scheduler triggers recap job via HTTP endpoint +3. Recap job fetches approved submissions since last run +4. ProcessorService applies batch transformations +5. Distribution to configured channels +6. Update last successful completion timestamp + ### Plugin System 1. PluginService loads plugins at runtime via module federation 2. Plugins register with appropriate service @@ -89,9 +97,19 @@ 2. Transaction support with retry logic 3. Error handling and connection management 4. Type-safe queries with Drizzle ORM +5. Repository pattern for domain-specific operations +6. State tracking for external scheduled jobs ## Current Focus Areas +### Recap Scheduling System +- Implementing reliable recap generation for feeds +- Using external scheduler service for job management +- Tracking job state in the database for resilience +- Supporting both cron expressions and interval-based schedules +- Providing UI for managing recap configurations +- Handling process restarts and maintaining job consistency + ### Comprehensive Error Handling - Implementing granular error types across the application - Developing consistent error recovery mechanisms diff --git a/Dockerfile b/Dockerfile index 2ac3e0ce..b2bfbe23 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,7 +48,6 @@ COPY --from=builder --chown=app:app /app/backend/package.json ./backend/package. COPY --from=builder --chown=app:app /app/backend/drizzle.config.ts ./backend/drizzle.config.ts COPY --from=builder --chown=app:app /app/backend/src/services/db/migrations ./backend/src/services/db/migrations COPY --from=builder --chown=app:app /app/backend/src/services/db/schema.ts ./backend/src/services/db/schema.ts -COPY --from=builder --chown=app:app /app/backend/src/services/twitter/schema.ts ./backend/src/services/twitter/schema.ts COPY --from=builder --chown=app:app /app/package.json ./ COPY --from=builder --chown=app:app /app/pnpm-lock.yaml ./ COPY --from=builder --chown=app:app /app/pnpm-workspace.yaml ./pnpm-workspace.yaml diff --git a/backend/package.json b/backend/package.json index 41c60fb6..1f5dd0a5 100644 --- a/backend/package.json +++ b/backend/package.json @@ -43,6 +43,7 @@ "zod": "^3.22.4" }, "dependencies": { + "@crosspost/scheduler-sdk": "^0.1.1", "@hono/node-server": "^1.8.2", "@hono/zod-openapi": "^0.9.5", "@hono/zod-validator": "^0.1.11", diff --git a/backend/pnpm-lock.yaml b/backend/pnpm-lock.yaml index d47e4329..52ff044b 100644 --- a/backend/pnpm-lock.yaml +++ b/backend/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@crosspost/scheduler-sdk': + specifier: ^0.1.1 + version: 0.1.1 '@hono/node-server': specifier: ^1.8.2 version: 1.14.0(hono@4.7.5) @@ -113,6 +116,9 @@ packages: peerDependencies: zod: ^3.20.2 + '@crosspost/scheduler-sdk@0.1.1': + resolution: {integrity: sha512-Gx49VVk7KJfht3cti2/B51sor0r2pAAJjNmyQ9/m+ScMdfnJ/SOpaJ2D+KXWjxO/41mXKeSb/h0p2VDvWAusYA==} + '@curatedotfun/types@0.0.5': resolution: {integrity: sha512-thb89PXZHEA2BkVvRbA6b2imiglNDVzPOrdUZswF7q/tsnxGoOCwg7B1u6Y3YrajF7IdWto+TzfNnXUSadjWrA==} @@ -2970,6 +2976,12 @@ snapshots: openapi3-ts: 4.4.0 zod: 3.24.2 + '@crosspost/scheduler-sdk@0.1.1': + dependencies: + axios: 1.8.4 + transitivePeerDependencies: + - debug + '@curatedotfun/types@0.0.5': {} '@discoveryjs/json-ext@0.5.7': {} diff --git a/backend/src/app.ts b/backend/src/app.ts index 64579872..e32b1ecc 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -1,13 +1,15 @@ +import { SchedulerClient } from "@crosspost/scheduler-sdk"; import { cors } from "hono/cors"; import { secureHeaders } from "hono/secure-headers"; import path from "path"; -import { apiRoutes } from "./routes/api"; import { mockTwitterService } from "./routes/api/test"; import { configureStaticRoutes, staticRoutes } from "./routes/static"; import { ConfigService, isProduction } from "./services/config/config.service"; +import { feedRepository } from "./services/db/repositories"; import { DistributionService } from "./services/distribution/distribution.service"; import { PluginService } from "./services/plugins/plugin.service"; import { ProcessorService } from "./services/processor/processor.service"; +import { SchedulerService } from "./services/scheduler/scheduler.service"; import { SubmissionService } from "./services/submissions/submission.service"; import { TransformationService } from "./services/transformation/transformation.service"; import { TwitterService } from "./services/twitter/client"; @@ -57,12 +59,35 @@ export async function createApp(): Promise { submissionService.initialize(); } + // Initialize scheduler service + // const schedulerClient = new SchedulerClient({ + // baseUrl: process.env.SCHEDULER_BASE_URL || "http://localhost:3001", + // headers: { + // Authorization: `Bearer ${process.env.SCHEDULER_API_TOKEN || ""}`, + // }, + // }); + + // const backendUrl = process.env.CURATE_BACKEND_URL || "http://localhost:3000"; + // const schedulerService = new SchedulerService( + // feedRepository, + // processorService, + // schedulerClient, + // backendUrl, + // ); + + // Initialize scheduler on startup (non-blocking) + // schedulerService.initialize().catch((err) => { + // console.error("Failed to initialize scheduler service:", err); + // }); + const context: AppContext = { twitterService, submissionService, distributionService, processorService, configService, + // schedulerService, + feedRepository, }; // Create Hono app @@ -99,9 +124,6 @@ export async function createApp(): Promise { // import { logger } from "hono/logger"; // if (!isProduction) app.use("*", logger()); - // Mount API routes - app.route("/api", apiRoutes); - // Configure static routes for production if (isProduction) { const publicDir = path.join(__dirname, "public"); diff --git a/backend/src/routes/api/index.ts b/backend/src/routes/api/index.ts index 17eb5f92..17f357ab 100644 --- a/backend/src/routes/api/index.ts +++ b/backend/src/routes/api/index.ts @@ -4,9 +4,10 @@ import configRoutes from "./config"; import feedRoutes from "./feed"; import leaderboardRoutes from "./leaderboard"; import pluginRoutes from "./plugin"; -import submissionRoutes from "./submission"; import { statsRoutes } from "./stats"; +import submissionRoutes from "./submission"; import { testRoutes } from "./test"; +import triggerRoutes from "./trigger"; import twitterRoutes from "./twitter"; // Create main API router @@ -26,3 +27,4 @@ apiRoutes.route("/config", configRoutes); apiRoutes.route("/plugins", pluginRoutes); apiRoutes.route("/leaderboard", leaderboardRoutes); apiRoutes.route("/stats", statsRoutes); +apiRoutes.route("/trigger", triggerRoutes); diff --git a/backend/src/routes/api/recap.ts b/backend/src/routes/api/recap.ts new file mode 100644 index 00000000..82d7e5d7 --- /dev/null +++ b/backend/src/routes/api/recap.ts @@ -0,0 +1,313 @@ +// import { Hono } from "hono"; +// import { zValidator } from "@hono/zod-validator"; +// import { z } from "zod"; +// import { AppContext } from "../../types/app"; +// import { RecapConfig } from "../../types/recap"; +// import { logger } from "../../utils/logger"; + +// // Create a router for recap API endpoints +// export const recapRouter = new Hono<{ Variables: { context: AppContext } }>(); + +// // Schema for validating recap configuration +// const recapConfigSchema = z.object({ +// id: z.string().min(1), +// name: z.string().min(1), +// enabled: z.boolean(), +// schedule: z +// .string() +// .regex( +// /^(@every|(?:\d+ [\d\*\/,-]+.*)|(?:[a-z]+:\d+))$/, +// "invalid schedule", +// ), +// timezone: z +// .string() +// .optional() +// .refine((tz) => !tz || Intl.supportedValuesOf("timeZone").includes(tz), { +// message: "invalid timezone", +// }), +// transform: z +// .array( +// z.object({ +// plugin: z.string(), +// config: z.record(z.any()), +// }), +// ) +// .optional(), +// batchTransform: z +// .array( +// z.object({ +// plugin: z.string(), +// config: z.record(z.any()), +// }), +// ) +// .optional(), +// distribute: z +// .array( +// z.object({ +// plugin: z.string(), +// config: z.record(z.string()), +// transform: z +// .array( +// z.object({ +// plugin: z.string(), +// config: z.record(z.any()), +// }), +// ) +// .optional(), +// }), +// ) +// .optional(), +// }); + +// // GET /api/feed/:feedId/recap +// // Get all recap configurations for a feed +// recapRouter.get("/:feedId/recap", async (c) => { +// const { feedId } = c.req.param(); +// const { feedRepository } = c.get("context"); + +// try { +// const feedConfig = await feedRepository.getFeedConfig(feedId); +// if (!feedConfig) { +// return c.json({ error: "Feed not found" }, 404); +// } + +// // Get recap states to include status information +// const recapStates = await feedRepository.getAllRecapStatesForFeed(feedId); + +// // Combine recap configs with their states +// const recaps = feedConfig.outputs?.recap ?? []; +// const recapsWithState = recaps.map((recap) => { +// const state = recapStates.find((s) => s.recapId === recap.id); +// return { +// ...recap, +// state: state +// ? { +// lastSuccessfulCompletion: state.lastSuccessfulCompletion, +// lastRunError: state.lastRunError, +// } +// : null, +// }; +// }); + +// return c.json({ recaps: recapsWithState }); +// } catch (error) { +// logger.error(`Error getting recap configs for feed ${feedId}:`, error); +// return c.json({ error: "Failed to get recap configurations" }, 500); +// } +// }); + +// // GET /api/feed/:feedId/recap/:recapIndex +// // Get a specific recap configuration +// recapRouter.get("/:feedId/recap/:recapIndex", async (c) => { +// const { feedId, recapIndex } = c.req.param(); +// const recapIdx = parseInt(recapIndex, 10); +// const { feedRepository } = c.get("context"); + +// if (isNaN(recapIdx) || recapIdx < 0) { +// return c.json({ error: "Invalid recap index" }, 400); +// } + +// try { +// const feedConfig = await feedRepository.getFeedConfig(feedId); +// if (!feedConfig) { +// return c.json({ error: "Feed not found" }, 404); +// } + +// const recaps = feedConfig.outputs.recap || []; +// if (recapIdx >= recaps.length) { +// return c.json({ error: "Recap configuration not found" }, 404); +// } + +// // Get recap state +// const recapId = recaps[recapIdx].id; +// const state = await feedRepository.getRecapState(feedId, recapId); + +// return c.json({ +// recap: { +// ...recaps[recapIdx], +// state: state +// ? { +// lastSuccessfulCompletion: state.lastSuccessfulCompletion, +// lastRunError: state.lastRunError, +// } +// : null, +// }, +// }); +// } catch (error) { +// logger.error( +// `Error getting recap config ${recapIdx} for feed ${feedId}:`, +// error, +// ); +// return c.json({ error: "Failed to get recap configuration" }, 500); +// } +// }); + +// // POST /api/feed/:feedId/recap +// // Add a new recap configuration +// recapRouter.post( +// "/:feedId/recap", +// zValidator("json", recapConfigSchema), +// async (c) => { +// const { feedId } = c.req.param(); +// const recapConfig = c.req.valid("json"); +// const { feedRepository, schedulerService } = c.get("context"); + +// try { +// const feedConfig = await feedRepository.getFeedConfig(feedId); +// if (!feedConfig) { +// return c.json({ error: "Feed not found" }, 404); +// } + +// // Initialize recap array if it doesn't exist +// if (!feedConfig.outputs.recap) { +// feedConfig.outputs.recap = []; +// } + +// // Add the new recap config +// feedConfig.outputs.recap.push(recapConfig); + +// // Update feed config +// await feedRepository.updateFeedConfig(feedId, feedConfig); + +// // Sync schedules to create the new job if enabled +// await schedulerService.syncFeedSchedules(feedId); + +// return c.json({ +// success: true, +// recapIndex: feedConfig.outputs.recap.length - 1, +// }); +// } catch (error) { +// logger.error(`Error adding recap config for feed ${feedId}:`, error); +// return c.json({ error: "Failed to add recap configuration" }, 500); +// } +// }, +// ); + +// // PUT /api/feed/:feedId/recap/:recapIndex +// // Update a specific recap configuration +// recapRouter.put( +// "/:feedId/recap/:recapIndex", +// zValidator("json", recapConfigSchema), +// async (c) => { +// const { feedId, recapIndex } = c.req.param(); +// const recapIdx = parseInt(recapIndex, 10); +// const recapConfig = c.req.valid("json"); +// const { feedRepository, schedulerService } = c.get("context"); + +// if (isNaN(recapIdx) || recapIdx < 0) { +// return c.json({ error: "Invalid recap index" }, 400); +// } + +// try { +// const feedConfig = await feedRepository.getFeedConfig(feedId); +// if (!feedConfig) { +// return c.json({ error: "Feed not found" }, 404); +// } + +// // Initialize recap array if it doesn't exist +// if (!feedConfig.outputs.recap) { +// feedConfig.outputs.recap = []; +// } + +// // Check if recap exists +// if (recapIdx >= feedConfig.outputs.recap.length) { +// return c.json({ error: "Recap configuration not found" }, 404); +// } + +// // Update the recap config +// feedConfig.outputs.recap[recapIdx] = recapConfig; + +// // Update feed config +// await feedRepository.updateFeedConfig(feedId, feedConfig); + +// // Sync schedules to update the job +// await schedulerService.syncFeedSchedules(feedId); + +// return c.json({ success: true }); +// } catch (error) { +// logger.error( +// `Error updating recap config ${recapIdx} for feed ${feedId}:`, +// error, +// ); +// return c.json({ error: "Failed to update recap configuration" }, 500); +// } +// }, +// ); + +// // DELETE /api/feed/:feedId/recap/:recapIndex +// // Delete a specific recap configuration +// recapRouter.delete("/:feedId/recap/:recapIndex", async (c) => { +// const { feedId, recapIndex } = c.req.param(); +// const recapIdx = parseInt(recapIndex, 10); +// const { feedRepository, schedulerService } = c.get("context"); + +// if (isNaN(recapIdx) || recapIdx < 0) { +// return c.json({ error: "Invalid recap index" }, 400); +// } + +// try { +// const feedConfig = await feedRepository.getFeedConfig(feedId); +// if (!feedConfig) { +// return c.json({ error: "Feed not found" }, 404); +// } + +// // Check if recap exists +// if ( +// !feedConfig.outputs.recap || +// recapIdx >= feedConfig.outputs.recap.length +// ) { +// return c.json({ error: "Recap configuration not found" }, 404); +// } + +// // Remove the recap config +// feedConfig.outputs.recap.splice(recapIdx, 1); + +// // Update feed config +// await feedRepository.updateFeedConfig(feedId, feedConfig); + +// // Sync schedules to delete the job +// await schedulerService.syncFeedSchedules(feedId); + +// return c.json({ success: true }); +// } catch (error) { +// logger.error( +// `Error deleting recap config ${recapIdx} for feed ${feedId}:`, +// error, +// ); +// return c.json({ error: "Failed to delete recap configuration" }, 500); +// } +// }); + +// // POST /api/feed/:feedId/recap/:recapIndex/run +// // Manually trigger a recap job +// recapRouter.post("/:feedId/recap/:recapIndex/run", async (c) => { +// const { feedId, recapIndex } = c.req.param(); +// const recapIdx = parseInt(recapIndex, 10); +// const { schedulerService, feedRepository } = c.get("context"); + +// if (isNaN(recapIdx) || recapIdx < 0) { +// return c.json({ error: "Invalid recap index" }, 400); +// } + +// try { +// const feedConfig = await feedRepository.getFeedConfig(feedId); +// if (!feedConfig) { +// return c.json({ error: "Feed not found" }, 404); +// } + +// const recaps = feedConfig.outputs.recap || []; +// if (recapIdx >= recaps.length) { +// return c.json({ error: "Recap configuration not found" }, 404); +// } + +// const recapId = recaps[recapIdx].id; +// await schedulerService.runRecapJob(feedId, recapId); +// return c.json({ success: true }); +// } catch (error) { +// logger.error( +// `Error running recap job ${recapIdx} for feed ${feedId}:`, +// error, +// ); +// return c.json({ error: "Failed to run recap job" }, 500); +// } +// }); diff --git a/backend/src/routes/api/trigger.ts b/backend/src/routes/api/trigger.ts new file mode 100644 index 00000000..7dbe3712 --- /dev/null +++ b/backend/src/routes/api/trigger.ts @@ -0,0 +1,47 @@ +import { zValidator } from "@hono/zod-validator"; +import { Hono } from "hono"; +import { z } from "zod"; +import { logger } from "../../utils/logger"; + +// Define validation schema for the recap job payload +const recapJobSchema = z.object({ + feedId: z.string(), + recapId: z.string(), +}); + +// Create a router for internal API endpoints +export const triggerRoutes = new Hono(); + +// TODO: Middleware to validate API token +// internalRouter.use(async (c, next) => { +// const apiToken = c.req.header("X-API-Token"); +// const expectedToken = process.env.INTERNAL_API_TOKEN; + +// if (!expectedToken || apiToken !== expectedToken) { +// logger.warn("Unauthorized access attempt to internal API"); +// return c.json({ error: "Unauthorized" }, 401); +// } + +// await next(); +// }); + +// POST /api/trigger/recap +// Endpoint for the scheduler to trigger recap jobs +triggerRoutes.post("/recap", zValidator("json", recapJobSchema), async (c) => { + const { feedId, recapId } = c.req.valid("json"); + + logger.info(`Received request to run recap: ${feedId}/${recapId}`); + + try { + // TODO: need to handle schedulerService injection + // await schedulerService.runRecapJob(feedId, recapId); + return c.json({ success: true }); + } catch (error) { + logger.error(`Error running recap job: ${feedId}/${recapId}`, error); + + const errorMessage = error instanceof Error ? error.message : String(error); + return c.json({ error: errorMessage }, 500); + } +}); + +export default triggerRoutes; diff --git a/backend/src/services/db/migrations/0002_brown_satana.sql b/backend/src/services/db/migrations/0002_brown_satana.sql new file mode 100644 index 00000000..c8d9b408 --- /dev/null +++ b/backend/src/services/db/migrations/0002_brown_satana.sql @@ -0,0 +1,27 @@ +CREATE TABLE "feed_recaps_state" ( + "id" serial PRIMARY KEY NOT NULL, + "feed_id" text NOT NULL, + "recap_id" text NOT NULL, + "external_job_id" text, + "last_successful_completion" timestamp, + "last_run_error" text, + "created_at" timestamp DEFAULT now() NOT NULL, + "updated_at" timestamp DEFAULT now(), + CONSTRAINT "feed_recaps_state_external_job_id_unique" UNIQUE("external_job_id") +); +--> statement-breakpoint +-- First add the column without NOT NULL constraint +ALTER TABLE "feeds" ADD COLUMN "config" jsonb; +--> statement-breakpoint +-- Initialize the config column with data from existing columns +UPDATE "feeds" SET "config" = jsonb_build_object( + 'id', "id", + 'name', "name", + 'description', "description" +); +--> statement-breakpoint +-- Now add the NOT NULL constraint +ALTER TABLE "feeds" ALTER COLUMN "config" SET NOT NULL; +--> statement-breakpoint +ALTER TABLE "feed_recaps_state" ADD CONSTRAINT "feed_recaps_state_feed_id_feeds_id_fk" FOREIGN KEY ("feed_id") REFERENCES "public"."feeds"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +CREATE UNIQUE INDEX "feed_recap_id_idx" ON "feed_recaps_state" USING btree ("feed_id","recap_id"); diff --git a/backend/src/services/db/migrations/meta/0002_snapshot.json b/backend/src/services/db/migrations/meta/0002_snapshot.json new file mode 100644 index 00000000..aba38b3e --- /dev/null +++ b/backend/src/services/db/migrations/meta/0002_snapshot.json @@ -0,0 +1,734 @@ +{ + "id": "1228fc99-5ab9-4ba9-bd0f-7d26c338efbb", + "prevId": "1fcb2de0-e4d9-470b-b1e0-945aac184a2b", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.feed_plugins": { + "name": "feed_plugins", + "schema": "", + "columns": { + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "plugin_id": { + "name": "plugin_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "config": { + "name": "config", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "feed_plugins_feed_idx": { + "name": "feed_plugins_feed_idx", + "columns": [ + { + "expression": "feed_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "feed_plugins_plugin_idx": { + "name": "feed_plugins_plugin_idx", + "columns": [ + { + "expression": "plugin_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feed_plugins_feed_id_feeds_id_fk": { + "name": "feed_plugins_feed_id_feeds_id_fk", + "tableFrom": "feed_plugins", + "tableTo": "feeds", + "columnsFrom": ["feed_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feed_plugins_feed_id_plugin_id_pk": { + "name": "feed_plugins_feed_id_plugin_id_pk", + "columns": ["feed_id", "plugin_id"] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.feed_recaps_state": { + "name": "feed_recaps_state", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "recap_id": { + "name": "recap_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "external_job_id": { + "name": "external_job_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "last_successful_completion": { + "name": "last_successful_completion", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "last_run_error": { + "name": "last_run_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "feed_recap_id_idx": { + "name": "feed_recap_id_idx", + "columns": [ + { + "expression": "feed_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "recap_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feed_recaps_state_feed_id_feeds_id_fk": { + "name": "feed_recaps_state_feed_id_feeds_id_fk", + "tableFrom": "feed_recaps_state", + "tableTo": "feeds", + "columnsFrom": ["feed_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "feed_recaps_state_external_job_id_unique": { + "name": "feed_recaps_state_external_job_id_unique", + "nullsNotDistinct": false, + "columns": ["external_job_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.feeds": { + "name": "feeds", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "config": { + "name": "config", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.moderation_history": { + "name": "moderation_history", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "tweet_id": { + "name": "tweet_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "admin_id": { + "name": "admin_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "note": { + "name": "note", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "moderation_history_tweet_idx": { + "name": "moderation_history_tweet_idx", + "columns": [ + { + "expression": "tweet_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "moderation_history_admin_idx": { + "name": "moderation_history_admin_idx", + "columns": [ + { + "expression": "admin_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "moderation_history_feed_idx": { + "name": "moderation_history_feed_idx", + "columns": [ + { + "expression": "feed_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "moderation_history_tweet_id_submissions_tweet_id_fk": { + "name": "moderation_history_tweet_id_submissions_tweet_id_fk", + "tableFrom": "moderation_history", + "tableTo": "submissions", + "columnsFrom": ["tweet_id"], + "columnsTo": ["tweet_id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "moderation_history_feed_id_feeds_id_fk": { + "name": "moderation_history_feed_id_feeds_id_fk", + "tableFrom": "moderation_history", + "tableTo": "feeds", + "columnsFrom": ["feed_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.submission_counts": { + "name": "submission_counts", + "schema": "", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "count": { + "name": "count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "last_reset_date": { + "name": "last_reset_date", + "type": "date", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "submission_counts_date_idx": { + "name": "submission_counts_date_idx", + "columns": [ + { + "expression": "last_reset_date", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.submission_feeds": { + "name": "submission_feeds", + "schema": "", + "columns": { + "submission_id": { + "name": "submission_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "feed_id": { + "name": "feed_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + }, + "moderation_response_tweet_id": { + "name": "moderation_response_tweet_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "submission_feeds_feed_idx": { + "name": "submission_feeds_feed_idx", + "columns": [ + { + "expression": "feed_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "submission_feeds_submission_id_submissions_tweet_id_fk": { + "name": "submission_feeds_submission_id_submissions_tweet_id_fk", + "tableFrom": "submission_feeds", + "tableTo": "submissions", + "columnsFrom": ["submission_id"], + "columnsTo": ["tweet_id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "submission_feeds_feed_id_feeds_id_fk": { + "name": "submission_feeds_feed_id_feeds_id_fk", + "tableFrom": "submission_feeds", + "tableTo": "feeds", + "columnsFrom": ["feed_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "submission_feeds_submission_id_feed_id_pk": { + "name": "submission_feeds_submission_id_feed_id_pk", + "columns": ["submission_id", "feed_id"] + } + }, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.submissions": { + "name": "submissions", + "schema": "", + "columns": { + "tweet_id": { + "name": "tweet_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "curator_id": { + "name": "curator_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "curator_username": { + "name": "curator_username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "curator_tweet_id": { + "name": "curator_tweet_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "curator_notes": { + "name": "curator_notes", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "submitted_at": { + "name": "submitted_at", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": { + "submissions_user_id_idx": { + "name": "submissions_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "submissions_submitted_at_idx": { + "name": "submissions_submitted_at_idx", + "columns": [ + { + "expression": "submitted_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.twitter_cache": { + "name": "twitter_cache", + "schema": "", + "columns": { + "key": { + "name": "key", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.twitter_cookies": { + "name": "twitter_cookies", + "schema": "", + "columns": { + "username": { + "name": "username", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "cookies": { + "name": "cookies", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/backend/src/services/db/migrations/meta/_journal.json b/backend/src/services/db/migrations/meta/_journal.json index 50e2a104..06c61616 100644 --- a/backend/src/services/db/migrations/meta/_journal.json +++ b/backend/src/services/db/migrations/meta/_journal.json @@ -15,6 +15,13 @@ "when": 1744050920872, "tag": "0001_fixed_hulk", "breakpoints": true + }, + { + "idx": 2, + "version": "7", + "when": 1746378850416, + "tag": "0002_brown_satana", + "breakpoints": true } ] } diff --git a/backend/src/services/db/queries.ts b/backend/src/services/db/queries.ts index 87eceda8..415983c6 100644 --- a/backend/src/services/db/queries.ts +++ b/backend/src/services/db/queries.ts @@ -8,6 +8,7 @@ import { SubmissionStatus, SubmissionWithFeedData, } from "../../types/twitter"; +import { FeedConfig } from "../../types/config"; import { feeds, moderationHistory, @@ -18,24 +19,27 @@ import { export async function upsertFeeds( db: NodePgDatabase, - feedsToUpsert: { id: string; name: string; description?: string }[], + feedsToUpsert: FeedConfig[], ): Promise { await db.transaction(async (tx) => { - for (const feed of feedsToUpsert) { + for (const feedConfig of feedsToUpsert) { await tx .insert(feeds) .values({ - id: feed.id, - name: feed.name, - description: feed.description, + id: feedConfig.id, + config: feedConfig, + name: feedConfig.name, + description: feedConfig.description, createdAt: new Date(), updatedAt: new Date(), }) .onConflictDoUpdate({ target: feeds.id, set: { - name: feed.name, - description: feed.description, + config: feedConfig, + name: feedConfig.name, + description: feedConfig.description, + updatedAt: new Date(), }, }) .execute(); diff --git a/backend/src/services/db/repositories/feed.repository.ts b/backend/src/services/db/repositories/feed.repository.ts index ded82555..d35d9fbb 100644 --- a/backend/src/services/db/repositories/feed.repository.ts +++ b/backend/src/services/db/repositories/feed.repository.ts @@ -1,4 +1,6 @@ -import { drizzle } from "drizzle-orm/node-postgres"; +import { and, desc, eq, sql } from "drizzle-orm"; +import { FeedConfig } from "../../../types/config"; +import { RecapState } from "../../../types/recap"; import { Submission, SubmissionFeed, @@ -6,6 +8,7 @@ import { } from "../../../types/twitter"; import { logger } from "../../../utils/logger"; import * as queries from "../queries"; +import { feedRecapsState, feeds } from "../schema"; import { executeOperation, executeTransaction, @@ -13,17 +16,287 @@ import { } from "../transaction"; /** - * Repository for feed-related database operations. + * Represents an approved submission for recap processing + */ +export interface ApprovedSubmission { + submissionId: string; + content: string; + username: string; + submittedAt: string; + // Add other fields as needed +} + +/** + * Repository for feed-related database operations */ export class FeedRepository { + /** + * Get a feed's configuration by ID + */ + async getFeedConfig(feedId: string): Promise { + return executeOperation(async (db) => { + const result = await db + .select({ + config: feeds.config, + }) + .from(feeds) + .where(eq(feeds.id, feedId)) + .limit(1); + + return result.length > 0 ? result[0].config : null; + }); + } + + /** + * Get all feed configurations + */ + async getAllFeedConfigs(): Promise { + return executeOperation(async (db) => { + const result = await db + .select({ + config: feeds.config, + }) + .from(feeds); + + return result.map((row) => row.config); + }); + } + + /** + * Update a feed's configuration + */ + async updateFeedConfig(feedId: string, config: FeedConfig): Promise { + await executeOperation(async (db) => { + await db + .update(feeds) + .set({ + config, + name: config.name, + description: config.description, + updatedAt: new Date(), + }) + .where(eq(feeds.id, feedId)); + }, true); // isWrite = true + } + + /** + * Get a recap state by feed ID and recap ID + */ + async getRecapState( + feedId: string, + recapId: string, + ): Promise { + return executeOperation(async (db) => { + const result = await db + .select() + .from(feedRecapsState) + .where( + and( + eq(feedRecapsState.feedId, feedId), + eq(feedRecapsState.recapId, recapId), + ), + ) + .limit(1); + + return result.length > 0 ? result[0] : null; + }); + } + + /** + * Get all recap states for a feed + */ + async getAllRecapStatesForFeed(feedId: string): Promise { + return executeOperation(async (db) => { + return db + .select() + .from(feedRecapsState) + .where(eq(feedRecapsState.feedId, feedId)); + }); + } + + /** + * Create or update a recap state + */ + async upsertRecapState(stateData: { + feedId: string; + recapId: string; + externalJobId: string; + lastSuccessfulCompletion: Date | null; + lastRunError: string | null; + }): Promise { + return executeTransaction(async (db) => { + // Check if state exists + const existing = await db + .select() + .from(feedRecapsState) + .where( + and( + eq(feedRecapsState.feedId, stateData.feedId), + eq(feedRecapsState.recapId, stateData.recapId), + ), + ) + .limit(1); + + const now = new Date(); + + if (existing.length > 0) { + // Update existing state + const updated = await db + .update(feedRecapsState) + .set({ + externalJobId: stateData.externalJobId, + lastSuccessfulCompletion: stateData.lastSuccessfulCompletion, + lastRunError: stateData.lastRunError, + updatedAt: now, + }) + .where(eq(feedRecapsState.id, existing[0].id)) + .returning(); + + return updated[0]; + } else { + // Create new state + const inserted = await db + .insert(feedRecapsState) + .values({ + feedId: stateData.feedId, + recapId: stateData.recapId, + externalJobId: stateData.externalJobId, + lastSuccessfulCompletion: stateData.lastSuccessfulCompletion, + lastRunError: stateData.lastRunError, + createdAt: now, + updatedAt: now, + }) + .returning(); + + return inserted[0]; + } + }, true); // isWrite = true + } + + /** + * Delete a recap state + */ + async deleteRecapState(feedId: string, recapId: string): Promise { + await executeOperation(async (db) => { + await db + .delete(feedRecapsState) + .where( + and( + eq(feedRecapsState.feedId, feedId), + eq(feedRecapsState.recapId, recapId), + ), + ); + }, true); // isWrite = true + } + + /** + * Delete all recap states for a feed + */ + async deleteRecapStatesForFeed(feedId: string): Promise { + await executeOperation(async (db) => { + await db + .delete(feedRecapsState) + .where(eq(feedRecapsState.feedId, feedId)); + }, true); // isWrite = true + } + + /** + * Update the last successful completion timestamp for a recap + */ + async updateRecapCompletion( + feedId: string, + recapId: string, + timestamp: Date, + ): Promise { + await executeOperation(async (db) => { + await db + .update(feedRecapsState) + .set({ + lastSuccessfulCompletion: timestamp, + lastRunError: null, // Clear any previous error + updatedAt: new Date(), + }) + .where( + and( + eq(feedRecapsState.feedId, feedId), + eq(feedRecapsState.recapId, recapId), + ), + ); + }, true); // isWrite = true + } + + /** + * Update the error message for a recap + */ + async updateRecapError( + feedId: string, + recapId: string, + errorMsg: string, + ): Promise { + await executeOperation(async (db) => { + await db + .update(feedRecapsState) + .set({ + lastRunError: errorMsg, + updatedAt: new Date(), + }) + .where( + and( + eq(feedRecapsState.feedId, feedId), + eq(feedRecapsState.recapId, recapId), + ), + ); + }, true); // isWrite = true + } + + /** + * Get approved submissions since a specific date for a feed + */ + async getApprovedSubmissionsSince( + feedId: string, + since: Date | null, + limit: number = 100, + ): Promise { + return executeOperation(async (db) => { + // If no since date is provided, use a default lookback period (e.g., 7 days) + const effectiveSince = + since || new Date(Date.now() - 7 * 24 * 60 * 60 * 1000); + + try { + const results = await db + .select({ + submissionId: sql`submissions.tweet_id`, + content: sql`submissions.content`, + username: sql`submissions.username`, + submittedAt: sql`submissions.submitted_at`, + }) + .from(sql`submissions`) + .innerJoin( + sql`submission_feeds`, + sql`submissions.tweet_id = submission_feeds.submission_id`, + ) + .where( + sql`submission_feeds.feed_id = ${feedId} AND + submission_feeds.status = 'approved' AND + submissions.submitted_at >= ${effectiveSince.toISOString()}`, + ) + .orderBy(desc(sql`submissions.submitted_at`)) + .limit(limit); + + return results as ApprovedSubmission[]; + } catch (error) { + logger.error("Error fetching approved submissions:", error); + return []; + } + }); + } + /** * Upserts feeds in the database. * * @param feeds Array of feeds to upsert */ - async upsertFeeds( - feeds: { id: string; name: string; description?: string }[], - ): Promise { + async upsertFeeds(feeds: FeedConfig[]): Promise { return withDatabaseErrorHandling( async () => { await executeOperation(async (db) => { @@ -144,8 +417,7 @@ export class FeedRepository { ): Promise { return withDatabaseErrorHandling( async () => { - return await executeTransaction(async (client) => { - const db = drizzle(client); + return await executeTransaction(async (db) => { await queries.updateSubmissionFeedStatus( db, submissionId, diff --git a/backend/src/services/db/schema.ts b/backend/src/services/db/schema.ts index 285347dd..df21e195 100644 --- a/backend/src/services/db/schema.ts +++ b/backend/src/services/db/schema.ts @@ -1,16 +1,17 @@ import { + date, index, integer, + jsonb, primaryKey, + serial, pgTable as table, text, timestamp, - serial, - date, + uniqueIndex } from "drizzle-orm/pg-core"; -// From exports/plugins -export * from "../twitter/schema"; +import { FeedConfig } from "../../types/config"; // Reusable timestamp columns const timestamps = { @@ -28,14 +29,45 @@ export type SubmissionStatus = (typeof SubmissionStatus)[keyof typeof SubmissionStatus]; // Feeds Table -// Builds according to feeds in curate.config.json +// Stores the entire feed configuration as JSONB export const feeds = table("feeds", { id: text("id").primaryKey(), // (hashtag) + // Store the entire configuration as JSONB + config: jsonb("config").$type().notNull(), + // Keep these fields for backward compatibility and quick lookups name: text("name").notNull(), description: text("description"), ...timestamps, }); +// Feed Recaps State Table +// Tracks the state of each recap job +export const feedRecapsState = table( + "feed_recaps_state", + { + id: serial("id").primaryKey(), + feedId: text("feed_id") + .notNull() + .references(() => feeds.id, { onDelete: "cascade" }), + // Unique ID of the recap configuration + recapId: text("recap_id").notNull(), + // Unique ID provided by the external scheduler service for this specific job + externalJobId: text("external_job_id").unique(), + // Last time the curate backend successfully processed this recap + lastSuccessfulCompletion: timestamp("last_successful_completion"), + // Error message if the last run failed in the curate backend + lastRunError: text("last_run_error"), + ...timestamps, + }, + (table) => ({ + // Ensure only one state record per feed/recap ID combination + feedRecapIdIdx: uniqueIndex("feed_recap_id_idx").on( + table.feedId, + table.recapId, + ), + }), +); + export const submissions = table( "submissions", { @@ -127,3 +159,17 @@ export const feedPlugins = table( primaryKey({ columns: [table.feedId, table.pluginId] }), // Ensure one config per plugin per feed ], ); + +// will not be needed after Masa +export const twitterCookies = table("twitter_cookies", { + username: text("username").primaryKey(), + cookies: text("cookies").notNull(), // JSON string of TwitterCookie[] + ...timestamps, +}); + +// done differently after Masa +export const twitterCache = table("twitter_cache", { + key: text("key").primaryKey(), // e.g., "last_tweet_id" + value: text("value").notNull(), + ...timestamps, +}); diff --git a/backend/src/services/db/transaction.ts b/backend/src/services/db/transaction.ts index 082daabb..47c5a2a6 100644 --- a/backend/src/services/db/transaction.ts +++ b/backend/src/services/db/transaction.ts @@ -1,5 +1,5 @@ import { PoolClient } from "pg"; -import { NodePgDatabase } from "drizzle-orm/node-postgres"; +import { drizzle, NodePgDatabase } from "drizzle-orm/node-postgres"; import { logger } from "../../utils/logger"; import { executeWithRetry } from "./utils"; import { dbConnection } from "./connection"; @@ -24,16 +24,24 @@ export async function executeOperation( /** * Executes a transaction with proper error handling and retries. * @param operations Function that performs operations within the transaction + * @param isWrite Whether this is a write operation (uses write pool) */ export async function executeTransaction( - operations: (client: PoolClient) => Promise, + operations: (db: NodePgDatabase) => Promise, + isWrite: boolean = true, ): Promise { await dbConnection.ensureConnection(); const client = await dbConnection.getWritePool().connect(); try { await client.query("BEGIN"); - const result = await operations(client); + + // Create a Drizzle instance for this transaction + const db = drizzle(client); + + // Execute the operations + const result = await operations(db); + await client.query("COMMIT"); return result; } catch (error) { diff --git a/backend/src/services/plugins/sources/twitter/index.ts b/backend/src/services/plugins/sources/twitter/index.ts deleted file mode 100644 index 9334e93d..00000000 --- a/backend/src/services/plugins/sources/twitter/index.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { TwitterService } from "../../../twitter/client"; -import { logger } from "../../../../utils/logger"; -import { PluginEndpoint } from "services/plugins/plugin.service"; - -interface TwitterConfig extends Record { - username: string; - password: string; - email: string; - twoFactorSecret?: string; -} - -/** - * Twitter source plugin that monitors Twitter for mentions and submissions - */ -export class TwitterSourcePlugin { - name = "twitter-source"; - version = "0.0.1"; - type = "source" as const; - private twitterService: TwitterService | null = null; - private isMonitoring = false; - private monitoringInterval: ReturnType | null = null; - - async initialize(config: TwitterConfig): Promise { - this.twitterService = new TwitterService({ - username: config.username, - password: config.password, - email: config.email, - twoFactorSecret: config.twoFactorSecret, - }); - - await this.twitterService.initialize(); - } - - async shutdown(): Promise { - if (this.twitterService) { - await this.twitterService.stop(); - this.twitterService = null; - } - if (this.monitoringInterval) { - clearInterval(this.monitoringInterval); - this.monitoringInterval = null; - } - this.isMonitoring = false; - } - - async startMonitoring(): Promise { - if (!this.twitterService) { - throw new Error("Twitter service not initialized"); - } - - if (this.isMonitoring) { - return; - } - - this.isMonitoring = true; - await this.checkMentions(); - - // Check mentions every 5 minutes - this.monitoringInterval = setInterval( - () => { - this.checkMentions().catch((error) => { - logger.error("Error checking mentions:", error); - }); - }, - 5 * 60 * 1000, - ); - } - - async stopMonitoring(): Promise { - if (this.monitoringInterval) { - clearInterval(this.monitoringInterval); - this.monitoringInterval = null; - } - this.isMonitoring = false; - } - - getLastProcessedId(): string | null { - if (!this.twitterService) { - throw new Error("Twitter service not initialized"); - } - return this.twitterService.getLastCheckedTweetId(); - } - - async setLastProcessedId(id: string): Promise { - if (!this.twitterService) { - throw new Error("Twitter service not initialized"); - } - await this.twitterService.setLastCheckedTweetId(id); - } - - private async checkMentions(): Promise { - if (!this.twitterService) { - throw new Error("Twitter service not initialized"); - } - // Implementation will be added when we refactor the submission service - } - - getEndpoints(): PluginEndpoint[] { - return [ - { - path: "/last-tweet-id", - method: "GET", - handler: async () => { - if (!this.twitterService) { - throw new Error("Twitter service not available"); - } - const lastTweetId = this.twitterService.getLastCheckedTweetId(); - return { lastTweetId }; - }, - }, - { - path: "/last-tweet-id", - method: "POST", - handler: async ({ body }: { body: { tweetId: string } }) => { - if (!this.twitterService) { - throw new Error("Twitter service not available"); - } - if ( - !body?.tweetId || - typeof body.tweetId !== "string" || - !body.tweetId.match(/^\d+$/) - ) { - throw new Error("Invalid tweetId format"); - } - this.twitterService.setLastCheckedTweetId(body.tweetId); - return { success: true }; - }, - }, - ]; - } -} - -export default TwitterSourcePlugin; diff --git a/backend/src/services/scheduler/scheduler.service.ts b/backend/src/services/scheduler/scheduler.service.ts new file mode 100644 index 00000000..91d53e27 --- /dev/null +++ b/backend/src/services/scheduler/scheduler.service.ts @@ -0,0 +1,420 @@ +import { + SchedulerClient, + JobType, + ScheduleType, + IntervalType, + JobNotFoundError, + JobStatus, +} from "@crosspost/scheduler-sdk"; +import { FeedRepository } from "../db/repositories/feed.repository"; +import { ProcessorService } from "../processor/processor.service"; +import { logger } from "../../utils/logger"; +import { RecapConfig, RecapState } from "../../types/recap"; + +/** + * Configuration for a scheduled job + */ +interface ScheduleConfig { + schedule_type: ScheduleType; + cron_expression?: string; + interval?: IntervalType; + interval_value?: number; +} + +/** + * Service for managing scheduled recap jobs + */ +export class SchedulerService { + constructor( + private feedRepository: FeedRepository, + private processorService: ProcessorService, + private schedulerClient: SchedulerClient, + private backendUrl: string, + ) {} + + /** + * Initialize the scheduler service + * Syncs all feed schedules on startup + */ + async initialize(): Promise { + logger.info("Initializing scheduler service"); + + try { + // Get all feed configs + const feedConfigs = await this.feedRepository.getAllFeedConfigs(); + + // Sync schedules for each feed + for (const feedConfig of feedConfigs) { + await this.syncFeedSchedules(feedConfig.id); + } + + logger.info("Scheduler service initialized successfully"); + } catch (error) { + logger.error("Failed to initialize scheduler service:", error); + throw error; + } + } + + /** + * Synchronize recap schedules for a feed + * Creates, updates, or deletes jobs based on the feed configuration + */ + async syncFeedSchedules(feedId: string): Promise { + logger.info(`Syncing schedules for feed: ${feedId}`); + + try { + // Get feed config + const feedConfig = await this.feedRepository.getFeedConfig(feedId); + if (!feedConfig) { + logger.warn(`Feed not found: ${feedId}`); + return; + } + + // Get all existing recap states for this feed + const existingStates = + await this.feedRepository.getAllRecapStatesForFeed(feedId); + + // Process each recap config + const recaps = feedConfig.outputs.recap || []; + for (const recapConfig of recaps) { + await this.syncRecapJob(feedId, recapConfig, existingStates); + } + + // Clean up any state records for recaps that no longer exist + for (const state of existingStates) { + // Check if this state record corresponds to a recap that still exists + const recapStillExists = recaps.some( + (recap) => recap.id === state.recapId, + ); + + // If the recap no longer exists, clean it up + if (!recapStillExists) { + logger.info( + `Cleaning up state for removed recap: ${feedId}/${state.recapId}`, + ); + + // Delete the external job if it exists + if (state.externalJobId) { + try { + await this.schedulerClient.deleteJob(state.externalJobId); + logger.info(`Deleted external job: ${state.externalJobId}`); + } catch (error) { + if (error instanceof JobNotFoundError) { + logger.warn( + `Job not found, already deleted: ${state.externalJobId}`, + ); + } else { + logger.error( + `Failed to delete job: ${state.externalJobId}`, + error, + ); + } + } + } + + // Delete the state record + await this.feedRepository.deleteRecapState(feedId, state.recapId); + } + } + + logger.info(`Successfully synced schedules for feed: ${feedId}`); + } catch (error) { + logger.error(`Failed to sync schedules for feed: ${feedId}`, error); + throw error; + } + } + + /** + * Synchronize a single recap job + */ + private async syncRecapJob( + feedId: string, + recapConfig: RecapConfig, + existingStates: RecapState[], + ): Promise { + // Find existing state for this recap by ID + const existingState = existingStates.find( + (state) => state.recapId === recapConfig.id, + ); + + // Job name must be unique and consistent + const jobName = `curate-recap-${feedId}-${recapConfig.id}`; + + // Payload for the job + const payload = { feedId, recapId: recapConfig.id }; + + // Target URL for the job + const target = `${this.backendUrl}/api/trigger/recap`; + + // Parse schedule + const scheduleConfig = this.parseSchedule(recapConfig.schedule); + + if (recapConfig.enabled) { + // Recap is enabled, create or update job + if (existingState?.externalJobId) { + // Update existing job + try { + logger.info(`Updating job for recap: ${feedId}/${recapConfig.id}`); + + const updatedJob = await this.schedulerClient.updateJob( + existingState.externalJobId, + { + ...scheduleConfig, + payload, + target, + }, + ); + + if (!updatedJob || !updatedJob.id) { + throw new Error( + `Failed to update job: ${existingState.externalJobId} - No job ID returned`, + ); + } + + // Update state record + await this.feedRepository.upsertRecapState({ + feedId, + recapId: recapConfig.id, + externalJobId: updatedJob.id, + lastSuccessfulCompletion: existingState.lastSuccessfulCompletion, + lastRunError: existingState.lastRunError, + }); + + logger.info(`Successfully updated job: ${updatedJob.id}`); + } catch (error) { + if (error instanceof JobNotFoundError) { + logger.warn( + `Job not found, creating new one: ${existingState.externalJobId}`, + ); + await this.createNewJob( + feedId, + recapConfig, + jobName, + target, + payload, + scheduleConfig, + existingState || null, + ); + } else { + logger.error( + `Failed to update job: ${existingState.externalJobId}`, + error, + ); + throw error; + } + } + } else { + // Create new job + await this.createNewJob( + feedId, + recapConfig, + jobName, + target, + payload, + scheduleConfig, + existingState || null, + ); + } + } else if (existingState?.externalJobId) { + // Recap is disabled but job exists, delete it + try { + logger.info( + `Deleting job for disabled recap: ${feedId}/${recapConfig.id}`, + ); + + await this.schedulerClient.deleteJob(existingState.externalJobId); + await this.feedRepository.deleteRecapState(feedId, recapConfig.id); + + logger.info(`Successfully deleted job: ${existingState.externalJobId}`); + } catch (error) { + if (error instanceof JobNotFoundError) { + logger.warn( + `Job not found, already deleted: ${existingState.externalJobId}`, + ); + await this.feedRepository.deleteRecapState(feedId, recapConfig.id); + } else { + logger.error( + `Failed to delete job: ${existingState.externalJobId}`, + error, + ); + throw error; + } + } + } + } + + /** + * Create a new job for a recap + */ + private async createNewJob( + feedId: string, + recapConfig: RecapConfig, + jobName: string, + target: string, + payload: { feedId: string; recapId: string }, + scheduleConfig: ScheduleConfig, + existingState: RecapState | null, + ): Promise { + try { + logger.info(`Creating new job for recap: ${feedId}/${recapConfig.id}`); + + const newJob = await this.schedulerClient.createJob({ + name: jobName, + type: JobType.HTTP, + status: JobStatus.ACTIVE, + target, + payload, + ...scheduleConfig, + }); + + if (!newJob || !newJob.id) { + throw new Error( + `Failed to create job for recap: ${feedId}/${recapConfig.id} - No job ID returned`, + ); + } + + // Update state record + await this.feedRepository.upsertRecapState({ + feedId, + recapId: recapConfig.id, + externalJobId: newJob.id, + lastSuccessfulCompletion: + existingState?.lastSuccessfulCompletion ?? null, + lastRunError: existingState?.lastRunError ?? null, + }); + + logger.info(`Successfully created job: ${newJob.id}`); + } catch (error) { + logger.error( + `Failed to create job for recap: ${feedId}/${recapConfig.id}`, + error, + ); + throw error; + } + } + + /** + * Parse a schedule string into scheduler SDK config + * Supports cron expressions and interval specifications + */ + private parseSchedule(schedule: string): ScheduleConfig { + // Check if it's a cron expression + if (schedule.includes(" ") && schedule.split(" ").length >= 5) { + return { + schedule_type: ScheduleType.CRON, + cron_expression: schedule, + }; + } + + // Check if it's an interval specification (e.g., "day:1") + const intervalMatch = schedule.match(/^([a-z]+):(\d+)$/i); + if (intervalMatch) { + const [, intervalType, intervalValue] = intervalMatch; + + // Map interval type to SDK enum + let mappedIntervalType: IntervalType; + switch (intervalType.toLowerCase()) { + case "minute": + mappedIntervalType = IntervalType.MINUTE; + break; + case "hour": + mappedIntervalType = IntervalType.HOUR; + break; + case "day": + mappedIntervalType = IntervalType.DAY; + break; + case "week": + mappedIntervalType = IntervalType.WEEK; + break; + case "month": + mappedIntervalType = IntervalType.MONTH; + break; + case "year": + mappedIntervalType = IntervalType.YEAR; + break; + default: + throw new Error(`Unsupported interval type: ${intervalType}`); + } + + return { + schedule_type: ScheduleType.RECURRING, + interval: mappedIntervalType, + interval_value: parseInt(intervalValue, 10), + }; + } + + // Default to treating it as a cron expression + return { + schedule_type: ScheduleType.CRON, + cron_expression: schedule, + }; + } + + /** + * Run a recap job + * This is called by the internal API endpoint when a job is triggered + */ + async runRecapJob(feedId: string, recapId: string): Promise { + logger.info(`Running recap job: ${feedId}/${recapId}`); + + try { + // Get feed config + const feedConfig = await this.feedRepository.getFeedConfig(feedId); + if (!feedConfig) { + throw new Error(`Feed not found: ${feedId}`); + } + + // Get recap config + const recaps = feedConfig.outputs.recap || []; + const recapConfig = recaps.find((recap) => recap.id === recapId); + + if (!recapConfig) { + throw new Error(`Recap config not found: ${feedId}/${recapId}`); + } + + // Get recap state + const recapState = await this.feedRepository.getRecapState( + feedId, + recapId, + ); + + // Get approved submissions since last successful completion + const submissions = await this.feedRepository.getApprovedSubmissionsSince( + feedId, + recapState?.lastSuccessfulCompletion || null, + ); + + if (submissions.length === 0) { + logger.info(`No new submissions for recap: ${feedId}/${recapId}`); + // Still update the completion timestamp to avoid processing the same time period again + await this.feedRepository.updateRecapCompletion( + feedId, + recapId, + new Date(), + ); + return; + } + + // Process the submissions + await this.processorService.processBatch(submissions, recapConfig); + + // Update the last successful completion timestamp + await this.feedRepository.updateRecapCompletion( + feedId, + recapId, + new Date(), + ); + + logger.info(`Successfully ran recap job: ${feedId}/${recapId}`); + } catch (error) { + logger.error(`Failed to run recap job: ${feedId}/${recapId}`, error); + + // Update the error message + const errorMessage = + error instanceof Error ? error.message : String(error); + await this.feedRepository.updateRecapError(feedId, recapId, errorMessage); + + throw error; + } + } +} diff --git a/backend/src/services/submissions/submission.service.ts b/backend/src/services/submissions/submission.service.ts index b49fd66e..ba86141d 100644 --- a/backend/src/services/submissions/submission.service.ts +++ b/backend/src/services/submissions/submission.service.ts @@ -82,12 +82,7 @@ export class SubmissionService { private async initializeFeeds(): Promise { try { - const feedsToUpsert = this.config.feeds.map((feed) => ({ - id: feed.id, - name: feed.name, - description: feed.description, - })); - await feedRepository.upsertFeeds(feedsToUpsert); + await feedRepository.upsertFeeds(this.config.feeds); } catch (error) { logger.error("Failed to initialize feeds:", error); throw error; diff --git a/backend/src/services/twitter/queries.ts b/backend/src/services/twitter/queries.ts index 20511176..2bd10963 100644 --- a/backend/src/services/twitter/queries.ts +++ b/backend/src/services/twitter/queries.ts @@ -1,6 +1,6 @@ import { eq } from "drizzle-orm"; import { NodePgDatabase } from "drizzle-orm/node-postgres"; -import { twitterCache, twitterCookies } from "./schema"; +import { twitterCache, twitterCookies } from "../db/schema"; // Twitter Cookie Management export async function getTwitterCookies( diff --git a/backend/src/services/twitter/schema.ts b/backend/src/services/twitter/schema.ts deleted file mode 100644 index b25d5982..00000000 --- a/backend/src/services/twitter/schema.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { pgTable as table, text, timestamp } from "drizzle-orm/pg-core"; - -// Reusable timestamp columns -const timestamps = { - createdAt: timestamp("created_at").notNull().defaultNow(), - updatedAt: timestamp("updated_at").defaultNow(), -}; - -export const twitterCookies = table("twitter_cookies", { - username: text("username").primaryKey(), - cookies: text("cookies").notNull(), // JSON string of TwitterCookie[] - ...timestamps, -}); - -export const twitterCache = table("twitter_cache", { - key: text("key").primaryKey(), // e.g., "last_tweet_id" - value: text("value").notNull(), - ...timestamps, -}); diff --git a/backend/src/types/app.ts b/backend/src/types/app.ts index b6dc475a..05ed0d37 100644 --- a/backend/src/types/app.ts +++ b/backend/src/types/app.ts @@ -4,6 +4,8 @@ import { DistributionService } from "../services/distribution/distribution.servi import { ProcessorService } from "../services/processor/processor.service"; import { SubmissionService } from "../services/submissions/submission.service"; import { TwitterService } from "../services/twitter/client"; +import { FeedRepository } from "../services/db/repositories/feed.repository"; +import { SchedulerService } from "../services/scheduler/scheduler.service"; /** * Application context shared across routes @@ -14,6 +16,8 @@ export interface AppContext { distributionService: DistributionService | null; processorService: ProcessorService | null; configService: ConfigService; + // schedulerService: SchedulerService; + feedRepository: FeedRepository; } /** diff --git a/backend/src/types/config.ts b/backend/src/types/config.ts index 66796d67..3d8ac92c 100644 --- a/backend/src/types/config.ts +++ b/backend/src/types/config.ts @@ -36,12 +36,7 @@ export interface StreamConfig { distribute?: DistributorConfig[]; } -export interface RecapConfig { - enabled: boolean; - schedule: string; - transform?: TransformConfig[]; // Global transforms for recap - distribute: DistributorConfig[]; -} +import { RecapConfig } from "./recap"; export type PluginsConfig = Record; @@ -52,7 +47,7 @@ export interface FeedConfig { moderation: ModerationConfig; outputs: { stream?: StreamConfig; - recap?: RecapConfig; + recap?: RecapConfig[]; }; } diff --git a/backend/src/types/recap.ts b/backend/src/types/recap.ts new file mode 100644 index 00000000..c8874ac9 --- /dev/null +++ b/backend/src/types/recap.ts @@ -0,0 +1,63 @@ +import { DistributorConfig, TransformConfig } from "./config"; + +/** + * Configuration for a recap job + */ +export interface RecapConfig { + /** Unique identifier for this recap configuration */ + id: string; + + /** Unique name for this recap configuration */ + name: string; + + /** Whether this recap is enabled */ + enabled: boolean; + + /** + * Schedule for the recap + * Can be a cron expression (e.g., "0 0 * * 0") or + * an interval specification (e.g., "day:1") + */ + schedule: string; + + /** Timezone for the schedule (e.g., "UTC", "America/New_York") */ + timezone?: string; + + /** Transformations to apply to the collected content */ + transform?: TransformConfig[]; + + /** Batch transformations to apply to the collected results */ + batchTransform?: TransformConfig[]; + + /** Distribution configurations */ + distribute?: DistributorConfig[]; +} + +/** + * State of a recap job + */ +export interface RecapState { + /** Internal ID for this state record */ + id: number; + + /** Feed ID this recap belongs to */ + feedId: string; + + /** Unique ID of the recap configuration */ + recapId: string; + + /** External job ID from the scheduler service */ + externalJobId: string | null; + + /** Last time this recap was successfully processed */ + lastSuccessfulCompletion: Date | null; + + /** Error message if the last run failed */ + lastRunError: string | null; + + /** Creation timestamp */ + createdAt: Date; + + /** Last update timestamp */ + updatedAt: Date | null; +} diff --git a/backend/test/curate.config.test.json b/backend/test/curate.config.test.json index ebc350af..a8d00ec7 100644 --- a/backend/test/curate.config.test.json +++ b/backend/test/curate.config.test.json @@ -191,56 +191,104 @@ } ] }, - "recap": { - "enabled": true, - "schedule": "*/5 * * * *", - "transform": [ - { - "plugin": "@curatedotfun/ai-transform", - "config": { - "prompt": "Create a daily summary of these posts", - "schema": { - "summary": { - "type": "string", - "description": "A high-level overview of the day's content (2-3 paragraphs)" - }, - "highlights": { - "type": "string", - "description": "5-7 key highlights from individual posts, one per line" - }, - "trends": { - "type": "string", - "description": "2-3 emerging trends or patterns noticed" - }, - "recommendations": { - "type": "string", - "description": "3-4 actionable suggestions for readers" - }, - "engagement": { - "type": "string", - "description": "Analysis of which posts performed best and why" + "recap": [ + { + "id": "edge-recap-1", + "enabled": true, + "schedule": "* * * * *", + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}" } - }, - "outputFormat": "json" + } + }, + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "šŸ”„ {{content}}\n\n{{#notes}}šŸ“ {{.}}{{/notes}}\n\nšŸ‘¤ {{author}}\n\nšŸ”— {{source}}" + } } - }, - { - "plugin": "@curatedotfun/simple-transform", - "config": { - "template": "šŸ“… Daily Edge Cases Recap\n\n{{summary}}\n\n🌟 Highlights:\n{{highlights}}\n\nšŸ“ˆ Trends:\n{{trends}}\n\nšŸ’” Recommendations:\n{{recommendations}}\n\nšŸ“Š Engagement Insights:\n{{engagement}}" + ], + "distribute": [ + { + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@test_curation" + } } - } - ], - "distribute": [ - { - "plugin": "@curatedotfun/telegram", - "config": { - "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "@test_curation" + ] + }, + { + "id": "edge-recap-ai", + "enabled": true, + "schedule": "0 0 * * *", + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Create a structured summary of this content", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "A catchy headline summarizing the content (max 80 chars)" + }, + "summary": { + "type": "string", + "description": "A concise summary of the content and curator notes (max 280 chars)" + }, + "keyPoints": { + "type": "string", + "description": "3-5 bullet points highlighting main ideas, one per line" + }, + "category": { + "type": "string", + "description": "The inferred topic category (e.g., DeFi, NFTs, Layer2)" + }, + "sentiment": { + "type": "string", + "description": "The overall sentiment (positive, neutral, or negative)" + } + }, + "outputFormat": "json" + } + }, + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "šŸ“¢ {{title}}\n\n{{summary}}\n\nšŸŽÆ Key Points:\n{{keyPoints}}\n\nšŸ·ļø {{category}} ({{sentiment}})\n\nšŸ”— {{source}}" + } } - } - ] - } + ], + "distribute": [ + { + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@test_curation" + } + } + ] + } + ] } } ] diff --git a/backend/test/setup/seed-test.ts b/backend/test/setup/seed-test.ts index a711b38f..b7f198a9 100644 --- a/backend/test/setup/seed-test.ts +++ b/backend/test/setup/seed-test.ts @@ -29,6 +29,7 @@ async function main() { TRUNCATE TABLE submission_counts CASCADE; TRUNCATE TABLE twitter_cookies CASCADE; TRUNCATE TABLE twitter_cache CASCADE; + TRUNCATE TABLE feed_recaps_state CASCADE; `); console.log("Existing data cleared. Inserting test data..."); @@ -39,6 +40,34 @@ async function main() { id: "test-feed-1", name: "Test Feed 1", description: "A test feed for testing", + config: { + id: "test-feed-1", + name: "Test Feed 1", + description: "A test feed for testing", + moderation: { + approvers: { + twitter: ["moderator-1"], + }, + }, + outputs: { + stream: { + enabled: true, + transform: [], + distribute: [], + }, + recap: [ + { + id: "daily-recap", + name: "Daily Recap", + enabled: true, + schedule: "0 0 * * *", + timezone: "UTC", + transform: [], + distribute: [], + }, + ], + }, + }, createdAt: new Date(), updatedAt: new Date(), }, @@ -46,6 +75,34 @@ async function main() { id: "test-feed-2", name: "Test Feed 2", description: "Another test feed for testing", + config: { + id: "test-feed-2", + name: "Test Feed 2", + description: "Another test feed for testing", + moderation: { + approvers: { + twitter: ["moderator-2"], + }, + }, + outputs: { + stream: { + enabled: true, + transform: [], + distribute: [], + }, + recap: [ + { + id: "weekly-recap", + name: "Weekly Recap", + enabled: true, + schedule: "0 0 * * 0", + timezone: "UTC", + transform: [], + distribute: [], + }, + ], + }, + }, createdAt: new Date(), updatedAt: new Date(), }, @@ -53,6 +110,23 @@ async function main() { id: "test-feed-3", name: "Test Feed 3", description: "Yet another test feed for testing", + config: { + id: "test-feed-3", + name: "Test Feed 3", + description: "Yet another test feed for testing", + moderation: { + approvers: { + twitter: ["moderator-3"], + }, + }, + outputs: { + stream: { + enabled: true, + transform: [], + distribute: [], + }, + }, + }, createdAt: new Date(), updatedAt: new Date(), }, @@ -182,21 +256,45 @@ async function main() { { userId: "user-1", count: 1, - lastResetDate: new Date(), + lastResetDate: new Date().toISOString().split("T")[0], createdAt: new Date(), updatedAt: new Date(), }, { userId: "user-2", count: 1, - lastResetDate: new Date(), + lastResetDate: new Date().toISOString().split("T")[0], createdAt: new Date(), updatedAt: new Date(), }, { userId: "user-3", count: 1, - lastResetDate: new Date(), + lastResetDate: new Date().toISOString().split("T")[0], + createdAt: new Date(), + updatedAt: new Date(), + }, + ]); + + // Insert test feed_recaps_state + await db.insert(schema.feedRecapsState).values([ + { + feedId: "test-feed-1", + recapId: "daily-recap", + recapConfigIndex: 0, + externalJobId: "job-1", + lastSuccessfulCompletion: new Date(), + lastRunError: null, + createdAt: new Date(), + updatedAt: new Date(), + }, + { + feedId: "test-feed-2", + recapId: "weekly-recap", + recapConfigIndex: 0, + externalJobId: "job-2", + lastSuccessfulCompletion: null, + lastRunError: "Failed to generate recap", createdAt: new Date(), updatedAt: new Date(), }, diff --git a/backend/test/setup/seed.sql b/backend/test/setup/seed.sql index b991fb05..7508090c 100644 --- a/backend/test/setup/seed.sql +++ b/backend/test/setup/seed.sql @@ -10,6 +10,7 @@ TRUNCATE TABLE feed_plugins CASCADE; TRUNCATE TABLE submission_counts CASCADE; TRUNCATE TABLE twitter_cookies CASCADE; TRUNCATE TABLE twitter_cache CASCADE; +TRUNCATE TABLE feed_recaps_state CASCADE; -- Insert test feeds INSERT INTO feeds (id, name, description, created_at, updated_at) @@ -51,3 +52,9 @@ VALUES ('user-1', 1, CURRENT_DATE, NOW(), NOW()), ('user-2', 1, CURRENT_DATE, NOW(), NOW()), ('user-3', 1, CURRENT_DATE, NOW(), NOW()); + +-- Insert test feed_recaps_state +INSERT INTO feed_recaps_state (feed_id, recap_id, recap_config_index, external_job_id, last_successful_completion, last_run_error, created_at, updated_at) +VALUES + ('test-feed-1', 'daily-recap', 0, 'job-1', NOW(), NULL, NOW(), NOW()), + ('test-feed-2', 'weekly-recap', 0, 'job-2', NULL, 'Failed to generate recap', NOW(), NOW()); diff --git a/backend/test/unit/services/scheduler/scheduler.service.test.ts b/backend/test/unit/services/scheduler/scheduler.service.test.ts new file mode 100644 index 00000000..0938217f --- /dev/null +++ b/backend/test/unit/services/scheduler/scheduler.service.test.ts @@ -0,0 +1,455 @@ +import { JobType, ScheduleType } from "@crosspost/scheduler-sdk"; +import { beforeEach, describe, expect, mock, spyOn, test } from "bun:test"; +import { SchedulerService } from "../../../../src/services/scheduler/scheduler.service"; +import { FeedConfig } from "../../../../src/types/config"; +import { RecapState } from "../../../../src/types/recap"; + +// Test fixtures +const createSampleFeedConfig = (overrides = {}): FeedConfig => ({ + id: "test-feed", + name: "Test Feed", + description: "Test feed for unit tests", + moderation: { + approvers: { + twitter: ["test_approver"], + }, + }, + outputs: { + stream: { + enabled: true, + transform: [], + distribute: [], + }, + recap: [ + { + id: "daily-recap-1", + name: "Daily Recap", + enabled: true, + schedule: "0 0 * * *", // Daily at midnight + timezone: "UTC", + transform: [], + distribute: [], + }, + ], + }, + ...overrides, +}); + +const createRecapState = (overrides = {}): RecapState => ({ + id: 1, + feedId: "test-feed", + recapId: "daily-recap-1", + recapConfigIndex: 0, + externalJobId: "existing-job-123", + lastSuccessfulCompletion: null, + lastRunError: null, + createdAt: new Date(), + updatedAt: new Date(), + ...overrides, +}); + +// Test factory for creating a test context with fresh mocks for each test +const createTestContext = () => { + // Mock the FeedRepository + const mockFeedRepository = { + getFeedConfig: mock(async (feedId: string) => null), + getAllFeedConfigs: mock(async () => []), + updateFeedConfig: mock(async (feedId: string, config: FeedConfig) => {}), + getRecapState: mock(async (feedId: string, recapId: string) => null), + upsertRecapState: mock(async (stateData: any) => stateData), + deleteRecapState: mock(async (feedId: string, recapId: string) => {}), + deleteRecapStatesForFeed: mock(async (feedId: string) => {}), + getAllRecapStatesForFeed: mock(async (feedId: string) => []), + getApprovedSubmissionsSince: mock( + async (feedId: string, since: Date | null, limit?: number) => [], + ), + updateRecapCompletion: mock( + async (feedId: string, recapId: string, timestamp: Date) => {}, + ), + updateRecapError: mock( + async (feedId: string, recapId: string, errorMsg: string) => {}, + ), + }; + + // Mock the ProcessorService + const mockProcessorService = { + process: mock(async (content: any, config: any) => {}), + processBatch: mock(async (items: any[], config: any) => {}), + }; + + // Mock the SchedulerClient + const mockCreateJob = mock(async (job: any) => ({ id: "job-123", ...job })); + const mockUpdateJob = mock(async (id: string, job: any) => ({ id, ...job })); + const mockDeleteJob = mock(async (id: string) => id); + const mockCreateJobIfNotExists = mock(async (job: any) => ({ + id: "job-123", + ...job, + })); + + const mockSchedulerClient = { + createJob: mockCreateJob, + updateJob: mockUpdateJob, + deleteJob: mockDeleteJob, + createJobIfNotExists: mockCreateJobIfNotExists, + }; + + // Create a new instance of the service + const schedulerService = new SchedulerService( + mockFeedRepository as any, + mockProcessorService as any, + mockSchedulerClient as any, + "http://localhost:3000", // Mock CURATE_BACKEND_URL + ); + + return { + schedulerService, + mockFeedRepository, + mockProcessorService, + mockSchedulerClient, + mockCreateJob, + mockUpdateJob, + mockDeleteJob, + mockCreateJobIfNotExists, + }; +}; + +describe("SchedulerService", () => { + describe("initialize", () => { + test("should sync schedules for all feeds", async () => { + // Arrange + const { schedulerService, mockFeedRepository } = createTestContext(); + + const feeds = [ + createSampleFeedConfig(), + createSampleFeedConfig({ id: "another-feed", name: "Another Feed" }), + ]; + + mockFeedRepository.getAllFeedConfigs.mockImplementation( + async () => feeds, + ); + const syncSpy = spyOn( + schedulerService, + "syncFeedSchedules", + ).mockImplementation(async () => {}); + + // Act + await schedulerService.initialize(); + + // Assert + expect(syncSpy).toHaveBeenCalledTimes(2); + expect(syncSpy).toHaveBeenCalledWith("test-feed"); + expect(syncSpy).toHaveBeenCalledWith("another-feed"); + }); + }); + + describe("syncFeedSchedules", () => { + describe("when creating new jobs", () => { + test("should create a new job when recap is enabled and no existing state", async () => { + // Arrange + const { + schedulerService, + mockFeedRepository, + mockCreateJobIfNotExists, + } = createTestContext(); + + const feedConfig = createSampleFeedConfig(); + mockFeedRepository.getFeedConfig.mockImplementation( + async () => feedConfig, + ); + mockFeedRepository.getRecapState.mockImplementation(async () => null); + mockFeedRepository.getAllRecapStatesForFeed.mockImplementation( + async () => [], + ); + + // Act + await schedulerService.syncFeedSchedules("test-feed"); + + // Assert + expect(mockCreateJobIfNotExists).toHaveBeenCalledTimes(1); + expect(mockCreateJobIfNotExists).toHaveBeenCalledWith( + expect.objectContaining({ + name: "curate-recap-test-feed-daily-recap-1", + type: JobType.HTTP, + target: "http://localhost:3000/api/internal/run-recap", + payload: { feedId: "test-feed", recapId: "daily-recap-1" }, + schedule_type: ScheduleType.CRON, + cron_expression: "0 0 * * *", + }), + ); + expect(mockFeedRepository.upsertRecapState).toHaveBeenCalledTimes(1); + expect(mockFeedRepository.upsertRecapState).toHaveBeenCalledWith( + expect.objectContaining({ + feedId: "test-feed", + recapId: "daily-recap-1", + externalJobId: "job-123", + }), + ); + }); + }); + + describe("when updating existing jobs", () => { + test("should update an existing job when recap is enabled and state exists", async () => { + // Arrange + const { schedulerService, mockFeedRepository, mockUpdateJob } = + createTestContext(); + + const feedConfig = createSampleFeedConfig(); + const existingState = createRecapState(); + + mockFeedRepository.getFeedConfig.mockImplementation( + async () => feedConfig, + ); + mockFeedRepository.getRecapState.mockImplementation( + async () => existingState, + ); + mockFeedRepository.getAllRecapStatesForFeed.mockImplementation( + async () => [existingState], + ); + + // Act + await schedulerService.syncFeedSchedules("test-feed"); + + // Assert + expect(mockUpdateJob).toHaveBeenCalledTimes(1); + expect(mockUpdateJob).toHaveBeenCalledWith( + "existing-job-123", + expect.objectContaining({ + schedule_type: ScheduleType.CRON, + cron_expression: "0 0 * * *", + payload: { feedId: "test-feed", recapId: "daily-recap-1" }, + }), + ); + expect(mockFeedRepository.upsertRecapState).toHaveBeenCalledTimes(1); + }); + }); + + describe("when deleting jobs", () => { + test("should delete a job when recap is disabled but state exists", async () => { + // Arrange + const { schedulerService, mockFeedRepository, mockDeleteJob } = + createTestContext(); + + // Create a feed config with disabled recap + const disabledRecapConfig = createSampleFeedConfig(); + if (disabledRecapConfig.outputs.recap) { + disabledRecapConfig.outputs.recap[0].enabled = false; + } + + const existingState = createRecapState(); + + mockFeedRepository.getFeedConfig.mockImplementation( + async () => disabledRecapConfig, + ); + mockFeedRepository.getAllRecapStatesForFeed.mockImplementation( + async () => [existingState], + ); + + // Act + await schedulerService.syncFeedSchedules("test-feed"); + + // Assert + expect(mockDeleteJob).toHaveBeenCalledTimes(1); + expect(mockDeleteJob).toHaveBeenCalledWith("existing-job-123"); + expect(mockFeedRepository.deleteRecapState).toHaveBeenCalledTimes(1); + expect(mockFeedRepository.deleteRecapState).toHaveBeenCalledWith( + "test-feed", + "daily-recap-1", + ); + }); + }); + + describe("when handling multiple recaps", () => { + test("should handle multiple recaps in a feed correctly", async () => { + // Arrange + const { + schedulerService, + mockFeedRepository, + mockUpdateJob, + mockCreateJobIfNotExists, + mockDeleteJob, + } = createTestContext(); + + // Create a feed config with multiple recaps + const multiRecapConfig = createSampleFeedConfig(); + if (multiRecapConfig.outputs.recap) { + multiRecapConfig.outputs.recap.push({ + id: "weekly-recap-1", + name: "Weekly Recap", + enabled: true, + schedule: "0 0 * * 0", // Weekly on Sunday + timezone: "UTC", + transform: [], + distribute: [], + }); + } + + const existingState = createRecapState(); + + mockFeedRepository.getFeedConfig.mockImplementation( + async () => multiRecapConfig, + ); + mockFeedRepository.getRecapState.mockImplementation( + async (feedId, recapId) => { + if (recapId === "daily-recap-1") { + return existingState; + } + return null; // No existing state for the second recap + }, + ); + mockFeedRepository.getAllRecapStatesForFeed.mockImplementation( + async () => [existingState], + ); + + // Act + await schedulerService.syncFeedSchedules("test-feed"); + + // Assert + expect(mockUpdateJob).toHaveBeenCalledTimes(1); + expect(mockUpdateJob).toHaveBeenCalledWith( + "existing-job-123", + expect.objectContaining({ + payload: { feedId: "test-feed", recapId: "daily-recap-1" }, + }), + ); + + expect(mockCreateJobIfNotExists).toHaveBeenCalledTimes(1); + expect(mockCreateJobIfNotExists).toHaveBeenCalledWith( + expect.objectContaining({ + name: "curate-recap-test-feed-weekly-recap-1", + payload: { feedId: "test-feed", recapId: "weekly-recap-1" }, + }), + ); + + expect(mockDeleteJob).not.toHaveBeenCalled(); + expect(mockFeedRepository.upsertRecapState).toHaveBeenCalledTimes(2); + }); + }); + + describe("when cleaning up removed recaps", () => { + test("should clean up state records for removed recaps", async () => { + // Arrange + const { + schedulerService, + mockFeedRepository, + mockUpdateJob, + mockDeleteJob, + } = createTestContext(); + + const feedConfig = createSampleFeedConfig(); + const existingState = createRecapState(); + const removedState = createRecapState({ + id: 2, + recapId: "removed-recap", + recapConfigIndex: 1, + externalJobId: "old-job-456", + }); + + mockFeedRepository.getFeedConfig.mockImplementation( + async () => feedConfig, + ); + mockFeedRepository.getRecapState.mockImplementation( + async (feedId, recapId) => { + if (recapId === "daily-recap-1") { + return existingState; + } + return null; + }, + ); + + // Return both existing and removed states + mockFeedRepository.getAllRecapStatesForFeed.mockImplementation( + async () => [existingState, removedState], + ); + + // Act + await schedulerService.syncFeedSchedules("test-feed"); + + // Assert + expect(mockUpdateJob).toHaveBeenCalledTimes(1); + expect(mockUpdateJob).toHaveBeenCalledWith( + "existing-job-123", + expect.anything(), + ); + + expect(mockDeleteJob).toHaveBeenCalledTimes(1); + expect(mockDeleteJob).toHaveBeenCalledWith("old-job-456"); + + expect(mockFeedRepository.deleteRecapState).toHaveBeenCalledTimes(1); + expect(mockFeedRepository.deleteRecapState).toHaveBeenCalledWith( + "test-feed", + "removed-recap", + ); + }); + }); + }); + + describe("runRecapJob", () => { + test("should process submissions and update completion timestamp on success", async () => { + // Arrange + const { schedulerService, mockFeedRepository, mockProcessorService } = + createTestContext(); + + const feedConfig = createSampleFeedConfig(); + const submissions = [{ id: "submission-1" }, { id: "submission-2" }]; + + mockFeedRepository.getFeedConfig.mockImplementation( + async () => feedConfig, + ); + mockFeedRepository.getApprovedSubmissionsSince.mockImplementation( + async () => submissions, + ); + + // Act + await schedulerService.runRecapJob("test-feed", "daily-recap-1"); + + // Assert + expect(mockProcessorService.processBatch).toHaveBeenCalledTimes(1); + expect(mockProcessorService.processBatch).toHaveBeenCalledWith( + submissions, + expect.objectContaining({ + transform: [], + distribute: [], + }), + ); + expect(mockFeedRepository.updateRecapCompletion).toHaveBeenCalledTimes(1); + expect(mockFeedRepository.updateRecapError).not.toHaveBeenCalled(); + }); + + test("should update error message on failure", async () => { + // Arrange + const { schedulerService, mockFeedRepository, mockProcessorService } = + createTestContext(); + + const feedConfig = createSampleFeedConfig(); + const submissions = [{ id: "submission-1" }, { id: "submission-2" }]; + + mockFeedRepository.getFeedConfig.mockImplementation( + async () => feedConfig, + ); + mockFeedRepository.getApprovedSubmissionsSince.mockImplementation( + async () => submissions, + ); + + mockProcessorService.processBatch.mockImplementation(async () => { + throw new Error("Processing failed"); + }); + + // Act + try { + await schedulerService.runRecapJob("test-feed", "daily-recap-1"); + } catch (error) { + // Ignore the error - we expect it to be caught by the service + } + + // Assert + expect(mockProcessorService.processBatch).toHaveBeenCalledTimes(1); + expect(mockFeedRepository.updateRecapCompletion).not.toHaveBeenCalled(); + expect(mockFeedRepository.updateRecapError).toHaveBeenCalledTimes(1); + expect(mockFeedRepository.updateRecapError).toHaveBeenCalledWith( + "test-feed", + "daily-recap-1", + "Processing failed", + ); + }); + }); +}); diff --git a/frontend/src/components/FeedList.tsx b/frontend/src/components/FeedList.tsx index dbaff658..29aaa57f 100644 --- a/frontend/src/components/FeedList.tsx +++ b/frontend/src/components/FeedList.tsx @@ -7,7 +7,7 @@ const FeedList = ({ selectedFeedId }: { selectedFeedId?: string }) => { const { data: feeds = [] } = useQuery({ queryKey: ["feeds"], queryFn: async () => { - const response = await fetch("/api/feeds"); + const response = await fetch("/api/feeds"); // TODO: standardize to /feed, remove the /feeds route in routes if (!response.ok) { throw new Error("Failed to fetch feeds"); } diff --git a/frontend/src/components/RecapManager.tsx b/frontend/src/components/RecapManager.tsx new file mode 100644 index 00000000..6620d38d --- /dev/null +++ b/frontend/src/components/RecapManager.tsx @@ -0,0 +1,437 @@ +import { useState } from "react"; +import { + useRecaps, + useAddRecap, + useUpdateRecap, + useDeleteRecap, + useRunRecap, + RecapWithState, +} from "../lib/recap"; +import { RecapConfig } from "../types/recap"; + +interface RecapManagerProps { + feedId: string; +} + +export default function RecapManager({ feedId }: RecapManagerProps) { + const { data: recapsData, isLoading, error } = useRecaps(feedId); + const [isAddingRecap, setIsAddingRecap] = useState(false); + const [editingRecapIndex, setEditingRecapIndex] = useState( + null, + ); + const [formError, setFormError] = useState(null); + const [formSuccess, setFormSuccess] = useState(null); + + // Default empty recap config + const emptyRecapConfig: RecapConfig = { + name: "", + enabled: true, + schedule: "0 0 * * *", // Daily at midnight + timezone: "UTC", + transform: [], + distribute: [], + }; + + // Form state + const [recapForm, setRecapForm] = useState(emptyRecapConfig); + + // Mutations + const addRecap = useAddRecap(feedId); + const updateRecap = useUpdateRecap( + feedId, + editingRecapIndex !== null ? editingRecapIndex : 0, + ); + const deleteRecap = useDeleteRecap( + feedId, + editingRecapIndex !== null ? editingRecapIndex : 0, + ); + const runRecap = useRunRecap( + feedId, + editingRecapIndex !== null ? editingRecapIndex : 0, + ); + + // Start adding a new recap + const handleAddRecap = () => { + setRecapForm(emptyRecapConfig); + setIsAddingRecap(true); + setEditingRecapIndex(null); + setFormError(null); + setFormSuccess(null); + }; + + // Start editing an existing recap + const handleEditRecap = (recap: RecapWithState, index: number) => { + setRecapForm({ + name: recap.name, + enabled: recap.enabled, + schedule: recap.schedule, + timezone: recap.timezone, + transform: recap.transform || [], + batchTransform: recap.batchTransform || [], + distribute: recap.distribute || [], + }); + setIsAddingRecap(false); + setEditingRecapIndex(index); + setFormError(null); + setFormSuccess(null); + }; + + // Cancel form + const handleCancelForm = () => { + setIsAddingRecap(false); + setEditingRecapIndex(null); + setFormError(null); + setFormSuccess(null); + }; + + // Handle form input changes + const handleInputChange = ( + e: React.ChangeEvent< + HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement + >, + ) => { + const { name, value, type } = e.target; + + // Validate schedule if that's the field being changed + if (name === "schedule") { + try { + // Basic validation for cron format or interval format + if ( + !( + /^(\*|[0-9]+)(\s+(\*|[0-9]+)){4}$/.test(value) || // Cron format + /^(minute|hour|day):[0-9]+$/.test(value) // Interval format + ) + ) { + setFormError( + "Invalid schedule format. Use cron expression or interval (e.g., day:1)", + ); + // Still update the form value to show what the user typed + } else { + setFormError(null); + } + } catch (err) { + setFormError("Invalid schedule format"); + } + } + + setRecapForm((prev) => ({ + ...prev, + [name]: + type === "checkbox" ? (e.target as HTMLInputElement).checked : value, + })); + }; + + // Submit form + const handleSubmitForm = async (e: React.FormEvent) => { + e.preventDefault(); + setFormError(null); + setFormSuccess(null); + + try { + if (isAddingRecap) { + await addRecap.mutateAsync(recapForm); + setFormSuccess("Recap configuration added successfully!"); + setIsAddingRecap(false); + } else if (editingRecapIndex !== null) { + await updateRecap.mutateAsync(recapForm); + setFormSuccess("Recap configuration updated successfully!"); + } + } catch (err) { + setFormError(err instanceof Error ? err.message : "An error occurred"); + } + }; + + // Delete a recap + const handleDeleteRecap = async (index: number) => { + if ( + !window.confirm( + "Are you sure you want to delete this recap configuration?", + ) + ) { + return; + } + + setFormError(null); + setFormSuccess(null); + setEditingRecapIndex(index); + + try { + await deleteRecap.mutateAsync(); + setFormSuccess("Recap configuration deleted successfully!"); + setEditingRecapIndex(null); + } catch (err) { + setFormError(err instanceof Error ? err.message : "An error occurred"); + } + }; + + // Run a recap manually + const handleRunRecap = async (index: number) => { + setFormError(null); + setFormSuccess(null); + setEditingRecapIndex(index); + + try { + await runRecap.mutateAsync(); + setFormSuccess("Recap job triggered successfully!"); + } catch (err) { + setFormError(err instanceof Error ? err.message : "An error occurred"); + } + }; + + // Format date for display + const formatDate = (dateString?: string) => { + if (!dateString) return "Never"; + return new Date(dateString).toLocaleString(); + }; + + if (isLoading) { + return
Loading recap configurations...
; + } + + if (error) { + return ( +
+ Error:{" "} + {error instanceof Error + ? error.message + : "Failed to load recap configurations"} +
+ ); + } + + const recaps = recapsData?.recaps || []; + + return ( +
+
+

Recap Configurations

+ +
+ + {formError && ( +
+ {formError} +
+ )} + + {formSuccess && ( +
+ {formSuccess} +
+ )} + + {/* Recap Form */} + {(isAddingRecap || editingRecapIndex !== null) && ( +
+

+ {isAddingRecap ? "Add New Recap" : "Edit Recap"} +

+
+
+ + +
+ +
+ + +
+ +
+ + +

+ Cron expression (e.g., "0 0 * * *" for daily at midnight) or + interval (e.g., "day:1" for daily) +

+
+ +
+ + +

+ e.g., "UTC", "America/New_York", "Europe/London" +

+
+ +
+ + +
+
+
+ )} + + {/* Recap List */} + {recaps.length === 0 ? ( +
+ No recap configurations found. Click "Add Recap" to create one. +
+ ) : ( +
+ {recaps.map((recap, index) => ( +
+
+
+

{recap.name}

+
+ + {recap.enabled ? "Enabled" : "Disabled"} + +
+
+
+ + + +
+
+ +
+
Schedule:
+
{recap.schedule}
+ +
Timezone:
+
{recap.timezone || "UTC"}
+ +
Last Run:
+
{formatDate(recap.state?.lastSuccessfulCompletion)}
+ + {recap.state?.lastRunError && ( + <> +
+ Last Error: +
+
+ {recap.state.lastRunError} +
+ + )} +
+ +
+
Configuration:
+
+
+                    {JSON.stringify(
+                      {
+                        transform: recap.transform,
+                        batchTransform: recap.batchTransform,
+                        distribute: recap.distribute,
+                      },
+                      null,
+                      2,
+                    )}
+                  
+
+
+
+ ))} +
+ )} +
+ ); +} diff --git a/frontend/src/components/Settings.tsx b/frontend/src/components/Settings.tsx index 41f69507..aa9e07d9 100644 --- a/frontend/src/components/Settings.tsx +++ b/frontend/src/components/Settings.tsx @@ -4,6 +4,7 @@ import { useGetLastTweetId, useUpdateLastTweetId, } from "../lib/api"; +import RecapManager from "./RecapManager"; export default function Settings() { const { data: config } = useAppConfig(); @@ -143,30 +144,10 @@ export default function Settings() { )} - {/* Recap Plugins */} - {feed.outputs.recap?.enabled && ( -
-

Recap Plugins:

-
- {feed.outputs.recap.transform && ( -
- Transform: - - {feed.outputs.recap.transform.plugin} - -
- )} - {feed.outputs.recap.distribute?.map((dist, idx) => ( -
- - Distribute:{" "} - - {dist.plugin} -
- ))} -
-
- )} + {/* Recap Manager */} +
+ +
))} diff --git a/frontend/src/lib/recap.ts b/frontend/src/lib/recap.ts new file mode 100644 index 00000000..650440ca --- /dev/null +++ b/frontend/src/lib/recap.ts @@ -0,0 +1,195 @@ +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { RecapConfig } from "../types/recap"; + +// Type for recap with state information +export interface RecapWithState extends RecapConfig { + state?: { + lastSuccessfulCompletion?: string; + lastRunError?: string; + } | null; +} + +// Response type for getting all recaps +export interface GetRecapsResponse { + recaps: RecapWithState[]; +} + +// Response type for getting a single recap +export interface GetRecapResponse { + recap: RecapWithState; +} + +/** + * Hook to fetch all recap configurations for a feed + */ +export function useRecaps(feedId: string) { + return useQuery({ + queryKey: ["recaps", feedId], + queryFn: async () => { + const response = await fetch(`/api/feed/${feedId}/recap`); + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error( + errorData.error || "Failed to fetch recap configurations", + ); + } + return response.json(); + }, + }); +} + +/** + * Hook to fetch a specific recap configuration + */ +export function useRecap(feedId: string, recapIndex: number) { + return useQuery({ + queryKey: ["recap", feedId, recapIndex], + queryFn: async () => { + const response = await fetch(`/api/feed/${feedId}/recap/${recapIndex}`); + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error( + errorData.error || "Failed to fetch recap configuration", + ); + } + return response.json(); + }, + }); +} + +/** + * Hook to add a new recap configuration + */ +export function useAddRecap(feedId: string) { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async (recapConfig: RecapConfig) => { + const response = await fetch(`/api/feed/${feedId}/recap`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(recapConfig), + }); + + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error(errorData.error || "Failed to add recap configuration"); + } + + return response.json(); + }, + onSuccess: () => { + // Invalidate the recaps query to refetch the data + queryClient.invalidateQueries({ queryKey: ["recaps", feedId] }); + // Also invalidate the feed config since it contains the recap configs + queryClient.invalidateQueries({ queryKey: ["feed", feedId] }); + queryClient.invalidateQueries({ queryKey: ["app-config"] }); + }, + }); +} + +/** + * Hook to update a recap configuration + */ +export function useUpdateRecap(feedId: string, recapIndex: number) { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async (recapConfig: RecapConfig) => { + const response = await fetch(`/api/feed/${feedId}/recap/${recapIndex}`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(recapConfig), + }); + + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error( + errorData.error || "Failed to update recap configuration", + ); + } + + return response.json(); + }, + onSuccess: () => { + // Invalidate the recaps query to refetch the data + queryClient.invalidateQueries({ queryKey: ["recaps", feedId] }); + // Invalidate the specific recap query + queryClient.invalidateQueries({ + queryKey: ["recap", feedId, recapIndex], + }); + // Also invalidate the feed config since it contains the recap configs + queryClient.invalidateQueries({ queryKey: ["feed", feedId] }); + queryClient.invalidateQueries({ queryKey: ["app-config"] }); + }, + }); +} + +/** + * Hook to delete a recap configuration + */ +export function useDeleteRecap(feedId: string, recapIndex: number) { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async () => { + const response = await fetch(`/api/feed/${feedId}/recap/${recapIndex}`, { + method: "DELETE", + }); + + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error( + errorData.error || "Failed to delete recap configuration", + ); + } + + return response.json(); + }, + onSuccess: () => { + // Invalidate the recaps query to refetch the data + queryClient.invalidateQueries({ queryKey: ["recaps", feedId] }); + // Also invalidate the feed config since it contains the recap configs + queryClient.invalidateQueries({ queryKey: ["feed", feedId] }); + queryClient.invalidateQueries({ queryKey: ["app-config"] }); + }, + }); +} + +/** + * Hook to manually trigger a recap job + */ +export function useRunRecap(feedId: string, recapIndex: number) { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async () => { + const response = await fetch( + `/api/feed/${feedId}/recap/${recapIndex}/run`, + { + method: "POST", + }, + ); + + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error(errorData.error || "Failed to run recap job"); + } + + return response.json(); + }, + onSuccess: () => { + // After a short delay, invalidate the recap query to show updated state + setTimeout(() => { + queryClient.invalidateQueries({ + queryKey: ["recap", feedId, recapIndex], + }); + queryClient.invalidateQueries({ queryKey: ["recaps", feedId] }); + }, 2000); + }, + }); +} diff --git a/frontend/src/types/recap.ts b/frontend/src/types/recap.ts new file mode 100644 index 00000000..950d92c6 --- /dev/null +++ b/frontend/src/types/recap.ts @@ -0,0 +1,31 @@ +import { DistributorConfig, TransformConfig } from "./config"; + +/** + * Configuration for a recap job + */ +export interface RecapConfig { + /** Unique name for this recap configuration */ + name: string; + + /** Whether this recap is enabled */ + enabled: boolean; + + /** + * Schedule for the recap + * Can be a cron expression (e.g., "0 0 * * 0") or + * an interval specification (e.g., "day:1") + */ + schedule: string; + + /** Timezone for the schedule (e.g., "UTC", "America/New_York") */ + timezone?: string; + + /** Transformations to apply to the collected content */ + transform?: TransformConfig[]; + + /** Batch transformations to apply to the collected results */ + batchTransform?: TransformConfig[]; + + /** Distribution configurations */ + distribute?: DistributorConfig[]; +} diff --git a/package.json b/package.json index f0d1156e..cd12d72e 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "prettier": "^3.3.3", "turbo": "latest" }, - "packageManager": "pnpm@10.8.0+sha512.0e82714d1b5b43c74610193cb20734897c1d00de89d0e18420aebc5977fa13d780a9cb05734624e81ebd81cc876cd464794850641c48b9544326b5622ca29971", + "packageManager": "pnpm@10.10.0", "private": true, "scripts": { "dev": "./scripts/dev.sh", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 35a352c9..be77a466 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,13 @@ importers: version: 3.5.3 turbo: specifier: latest - version: 2.5.0 + version: 2.5.3 backend: dependencies: + '@crosspost/scheduler-sdk': + specifier: ^0.1.1 + version: 0.1.1 '@hono/node-server': specifier: ^1.8.2 version: 1.14.0(hono@4.7.6) @@ -334,6 +337,9 @@ packages: '@bundled-es-modules/tough-cookie@0.1.6': resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} + '@crosspost/scheduler-sdk@0.1.1': + resolution: {integrity: sha512-Gx49VVk7KJfht3cti2/B51sor0r2pAAJjNmyQ9/m+ScMdfnJ/SOpaJ2D+KXWjxO/41mXKeSb/h0p2VDvWAusYA==} + '@curatedotfun/types@0.0.5': resolution: {integrity: sha512-thb89PXZHEA2BkVvRbA6b2imiglNDVzPOrdUZswF7q/tsnxGoOCwg7B1u6Y3YrajF7IdWto+TzfNnXUSadjWrA==} @@ -3347,6 +3353,7 @@ packages: node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -4180,38 +4187,38 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - turbo-darwin-64@2.5.0: - resolution: {integrity: sha512-fP1hhI9zY8hv0idym3hAaXdPi80TLovmGmgZFocVAykFtOxF+GlfIgM/l4iLAV9ObIO4SUXPVWHeBZQQ+Hpjag==} + turbo-darwin-64@2.5.3: + resolution: {integrity: sha512-YSItEVBUIvAGPUDpAB9etEmSqZI3T6BHrkBkeSErvICXn3dfqXUfeLx35LfptLDEbrzFUdwYFNmt8QXOwe9yaw==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.0: - resolution: {integrity: sha512-p9sYq7kXH7qeJwIQE86cOWv/xNqvow846l6c/qWc26Ib1ci5W7V0sI5thsrP3eH+VA0d+SHalTKg5SQXgNQBWA==} + turbo-darwin-arm64@2.5.3: + resolution: {integrity: sha512-5PefrwHd42UiZX7YA9m1LPW6x9YJBDErXmsegCkVp+GjmWrADfEOxpFrGQNonH3ZMj77WZB2PVE5Aw3gA+IOhg==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.0: - resolution: {integrity: sha512-1iEln2GWiF3iPPPS1HQJT6ZCFXynJPd89gs9SkggH2EJsj3eRUSVMmMC8y6d7bBbhBFsiGGazwFIYrI12zs6uQ==} + turbo-linux-64@2.5.3: + resolution: {integrity: sha512-M9xigFgawn5ofTmRzvjjLj3Lqc05O8VHKuOlWNUlnHPUltFquyEeSkpQNkE/vpPdOR14AzxqHbhhxtfS4qvb1w==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.0: - resolution: {integrity: sha512-bKBcbvuQHmsX116KcxHJuAcppiiBOfivOObh2O5aXNER6mce7YDDQJy00xQQNp1DhEfcSV2uOsvb3O3nN2cbcA==} + turbo-linux-arm64@2.5.3: + resolution: {integrity: sha512-auJRbYZ8SGJVqvzTikpg1bsRAsiI9Tk0/SDkA5Xgg0GdiHDH/BOzv1ZjDE2mjmlrO/obr19Dw+39OlMhwLffrw==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.0: - resolution: {integrity: sha512-9BCo8oQ7BO7J0K913Czbc3tw8QwLqn2nTe4E47k6aVYkM12ASTScweXPTuaPFP5iYXAT6z5Dsniw704Ixa5eGg==} + turbo-windows-64@2.5.3: + resolution: {integrity: sha512-arLQYohuHtIEKkmQSCU9vtrKUg+/1TTstWB9VYRSsz+khvg81eX6LYHtXJfH/dK7Ho6ck+JaEh5G+QrE1jEmCQ==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.0: - resolution: {integrity: sha512-OUHCV+ueXa3UzfZ4co/ueIHgeq9B2K48pZwIxKSm5VaLVuv8M13MhM7unukW09g++dpdrrE1w4IOVgxKZ0/exg==} + turbo-windows-arm64@2.5.3: + resolution: {integrity: sha512-3JPn66HAynJ0gtr6H+hjY4VHpu1RPKcEwGATvGUTmLmYSYBQieVlnGDRMMoYN066YfyPqnNGCfhYbXfH92Cm0g==} cpu: [arm64] os: [win32] - turbo@2.5.0: - resolution: {integrity: sha512-PvSRruOsitjy6qdqwIIyolv99+fEn57gP6gn4zhsHTEcCYgXPhv6BAxzAjleS8XKpo+Y582vTTA9nuqYDmbRuA==} + turbo@2.5.3: + resolution: {integrity: sha512-iHuaNcq5GZZnr3XDZNuu2LSyCzAOPwDuo5Qt+q64DfsTP1i3T2bKfxJhni2ZQxsvAoxRbuUK5QetJki4qc5aYA==} hasBin: true twitter-api-v2@1.22.0: @@ -4677,6 +4684,12 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 + '@crosspost/scheduler-sdk@0.1.1': + dependencies: + axios: 1.8.4 + transitivePeerDependencies: + - debug + '@curatedotfun/types@0.0.5': {} '@discoveryjs/json-ext@0.5.7': {} @@ -8482,32 +8495,32 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - turbo-darwin-64@2.5.0: + turbo-darwin-64@2.5.3: optional: true - turbo-darwin-arm64@2.5.0: + turbo-darwin-arm64@2.5.3: optional: true - turbo-linux-64@2.5.0: + turbo-linux-64@2.5.3: optional: true - turbo-linux-arm64@2.5.0: + turbo-linux-arm64@2.5.3: optional: true - turbo-windows-64@2.5.0: + turbo-windows-64@2.5.3: optional: true - turbo-windows-arm64@2.5.0: + turbo-windows-arm64@2.5.3: optional: true - turbo@2.5.0: + turbo@2.5.3: optionalDependencies: - turbo-darwin-64: 2.5.0 - turbo-darwin-arm64: 2.5.0 - turbo-linux-64: 2.5.0 - turbo-linux-arm64: 2.5.0 - turbo-windows-64: 2.5.0 - turbo-windows-arm64: 2.5.0 + turbo-darwin-64: 2.5.3 + turbo-darwin-arm64: 2.5.3 + turbo-linux-64: 2.5.3 + turbo-linux-arm64: 2.5.3 + turbo-windows-64: 2.5.3 + turbo-windows-arm64: 2.5.3 twitter-api-v2@1.22.0: {} From febe110ca44b6f19f765878ca8ea97394fce2667 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 12 May 2025 09:04:07 -0500 Subject: [PATCH 040/113] mount routes --- backend/src/app.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/backend/src/app.ts b/backend/src/app.ts index e32b1ecc..00d7ab3a 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -1,7 +1,7 @@ -import { SchedulerClient } from "@crosspost/scheduler-sdk"; import { cors } from "hono/cors"; import { secureHeaders } from "hono/secure-headers"; import path from "path"; +import { apiRoutes } from "./routes/api"; // Import the aggregated API routes import { mockTwitterService } from "./routes/api/test"; import { configureStaticRoutes, staticRoutes } from "./routes/static"; import { ConfigService, isProduction } from "./services/config/config.service"; @@ -9,7 +9,6 @@ import { feedRepository } from "./services/db/repositories"; import { DistributionService } from "./services/distribution/distribution.service"; import { PluginService } from "./services/plugins/plugin.service"; import { ProcessorService } from "./services/processor/processor.service"; -import { SchedulerService } from "./services/scheduler/scheduler.service"; import { SubmissionService } from "./services/submissions/submission.service"; import { TransformationService } from "./services/transformation/transformation.service"; import { TwitterService } from "./services/twitter/client"; @@ -49,10 +48,10 @@ export async function createApp(): Promise { const submissionService = twitterService ? new SubmissionService( - twitterService, - processorService, - configService.getConfig(), - ) + twitterService, + processorService, + configService.getConfig(), + ) : null; if (submissionService) { @@ -124,6 +123,10 @@ export async function createApp(): Promise { // import { logger } from "hono/logger"; // if (!isProduction) app.use("*", logger()); + + // Mount API routes + app.route("/api", apiRoutes); + // Configure static routes for production if (isProduction) { const publicDir = path.join(__dirname, "public"); From 2a1de86a8679d83c04a08f48c079bd8469b2f6ef Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 12 May 2025 09:04:26 -0500 Subject: [PATCH 041/113] fmt --- backend/src/app.ts | 9 ++++----- backend/src/services/db/schema.ts | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/backend/src/app.ts b/backend/src/app.ts index 00d7ab3a..f7a24905 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -48,10 +48,10 @@ export async function createApp(): Promise { const submissionService = twitterService ? new SubmissionService( - twitterService, - processorService, - configService.getConfig(), - ) + twitterService, + processorService, + configService.getConfig(), + ) : null; if (submissionService) { @@ -123,7 +123,6 @@ export async function createApp(): Promise { // import { logger } from "hono/logger"; // if (!isProduction) app.use("*", logger()); - // Mount API routes app.route("/api", apiRoutes); diff --git a/backend/src/services/db/schema.ts b/backend/src/services/db/schema.ts index df21e195..2fc4d64b 100644 --- a/backend/src/services/db/schema.ts +++ b/backend/src/services/db/schema.ts @@ -8,7 +8,7 @@ import { pgTable as table, text, timestamp, - uniqueIndex + uniqueIndex, } from "drizzle-orm/pg-core"; import { FeedConfig } from "../../types/config"; From b8901eb1295c152c044c3025a9f6aa74e949f719 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Mon, 12 May 2025 09:46:59 -0500 Subject: [PATCH 042/113] fix timerange queries --- backend/src/services/db/queries.ts | 47 ++++++++++++++++++------------ 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/backend/src/services/db/queries.ts b/backend/src/services/db/queries.ts index 415983c6..0b77e7c0 100644 --- a/backend/src/services/db/queries.ts +++ b/backend/src/services/db/queries.ts @@ -700,33 +700,42 @@ export async function getLeaderboard( db: NodePgDatabase, timeRange: string = "all", ): Promise { - // Use PostgreSQL's date functions for more efficient filtering - let dateCondition; + let startDate: Date | null = null; + const now = new Date(); switch (timeRange) { case "month": - // First day of current month using PostgreSQL's date_trunc - dateCondition = sql`AND s.created_at >= date_trunc('month', CURRENT_DATE)`; + startDate = new Date( + Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 1), + ); break; case "week": - // Start of current week (Sunday) using PostgreSQL's date_trunc - dateCondition = sql`AND s.created_at >= date_trunc('week', CURRENT_DATE)`; + startDate = new Date(now); + const dayOfWeek = startDate.getUTCDay(); // 0 = Sunday, 1 = Monday, etc. + const diff = startDate.getUTCDate() - dayOfWeek; + startDate.setUTCDate(diff); + startDate.setUTCHours(0, 0, 0, 0); break; case "today": - // Start of today using PostgreSQL's date_trunc - dateCondition = sql`AND s.created_at >= date_trunc('day', CURRENT_DATE)`; + startDate = new Date( + Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()), + ); break; - default: - // No date filter for "all" - dateCondition = sql``; + default: // "all" + startDate = null; break; } + // Build the date filter SQL fragment conditionally + const dateFilterSql = startDate + ? sql`AND s.created_at >= ${startDate}` + : sql``; + // Use a single query with Common Table Expressions (CTEs) for better performance const result = await db.execute(sql` WITH feed_totals AS ( -- Get total submissions per feed - SELECT + SELECT feed_id AS feedid, COUNT(DISTINCT submission_id) AS totalcount FROM @@ -746,9 +755,9 @@ export async function getLeaderboard( submissions s LEFT JOIN moderation_history mh ON s.tweet_id = mh.tweet_id - WHERE - 1=1 ${dateCondition} - GROUP BY + WHERE + s.curator_id IS NOT NULL ${dateFilterSql} + GROUP BY s.curator_id, s.curator_username ), curator_feeds AS ( @@ -762,11 +771,11 @@ export async function getLeaderboard( submission_feeds sf JOIN submissions s ON sf.submission_id = s.tweet_id - JOIN + JOIN feed_totals ft ON sf.feed_id = ft.feedid - WHERE - 1=1 ${dateCondition} - GROUP BY + WHERE + s.curator_id IS NOT NULL ${dateFilterSql} + GROUP BY s.curator_id, sf.feed_id, ft.totalcount ) -- Combine all data with JSON aggregation From fd1b5f25a68a98d644788ed0baa00cc88c5a689d Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Tue, 13 May 2025 21:39:16 -0700 Subject: [PATCH 043/113] added aptos news --- curate.config.json | 57 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 8e1b50a3..418514b0 100644 --- a/curate.config.json +++ b/curate.config.json @@ -2726,7 +2726,62 @@ }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@sudodotfun" + } + } + ] } } }, From 2b57a453b16e002f2f03de274d03daa6cf787123 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Wed, 14 May 2025 03:02:57 -0700 Subject: [PATCH 044/113] configured giveth galaxy --- curate.config.json | 79 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/curate.config.json b/curate.config.json index 418514b0..a9d79e87 100644 --- a/curate.config.json +++ b/curate.config.json @@ -603,6 +603,85 @@ "enabled": false } } + }, + { + "id": "giveth", + "name": "Giveth Galaxy", + "description": "eveyrthing happening in Giveth + General Magic Ecosystem", + "moderation": { + "approvers": { + "twitter": [ + "plugrel", + "Giveth", + "thegrifft", + "Pairwisevote", + "theqacc", + "retropgf", + "anamarie_com", + "Generalmagicio" + ] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@giveth_news" + } + } + ] + } + } }, { "id": "publicgoods", From 4657266f4551e49f4a964d1d478da9444d4f8e8d Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Mon, 19 May 2025 06:06:27 -0700 Subject: [PATCH 045/113] added shitzu feed, raw dogged transofmration, need to change because their sue case --- curate.config.json | 74 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index a9d79e87..40359eee 100644 --- a/curate.config.json +++ b/curate.config.json @@ -604,7 +604,7 @@ } } }, - { + { "id": "giveth", "name": "Giveth Galaxy", "description": "eveyrthing happening in Giveth + General Magic Ecosystem", @@ -683,6 +683,78 @@ } } }, + { + "id": "shitzu", + "name": "Shitzu boost", + "description": "Submissions for shitzu community", + "moderation": { + "approvers": { + "twitter": [ + "plugrel", + "ShitzuCommunity", + "shitzuonnear", + "marior_dev", + "travbori" + ] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Concisely explain the submission and, relevant details from the curator and curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{summary}}](<{{source}}>)*\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@shitzufeed" + } + } + ] + } + } + }, { "id": "publicgoods", "name": "Public Goods FM", From 8c42c4d3f9220c7096ef9ce209d1677eb150d4b0 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Mon, 19 May 2025 06:16:18 -0700 Subject: [PATCH 046/113] trying to fix shitzu --- curate.config.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 40359eee..6db52f07 100644 --- a/curate.config.json +++ b/curate.config.json @@ -720,6 +720,10 @@ "prompt": "Concisely explain the submission and, relevant details from the curator and curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", "apiKey": "{OPENROUTER_API_KEY}", "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content describe content and who posted content" + }, "summary": { "type": "string", "description": "Summary of content influenced by curator notes" @@ -741,7 +745,7 @@ { "plugin": "@curatedotfun/simple-transform", "config": { - "template": "*[{{summary}}](<{{source}}>)*\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" } } ], From 728348879e239e34bc5cfa5359057581f7078f08 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Wed, 21 May 2025 04:03:55 -0700 Subject: [PATCH 047/113] Update curate.config.json --- curate.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 6db52f07..dab9799a 100644 --- a/curate.config.json +++ b/curate.config.json @@ -2043,7 +2043,7 @@ "description": "Everything Afrobeats from new music, festival, events, clubs, dances and more!", "moderation": { "approvers": { - "twitter": ["plugrel", "potlock_intern", "youngfreshdao"] + "twitter": ["plugrel", "potlock_intern", "israel_igboze" ,"youngfreshdao"] } }, "outputs": { From 8b8e69a1ff0d5c9d358b08c31dc8dfb302d7ece1 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Wed, 21 May 2025 09:04:40 -0700 Subject: [PATCH 048/113] added open social telegam with mim as approver --- curate.config.json | 59 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/curate.config.json b/curate.config.json index dab9799a..593c6ebb 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1036,12 +1036,67 @@ "description": "Decentralized social, Social FI product updates, news, traction, thought leadership.", "moderation": { "approvers": { - "twitter": ["elliot_braem", "potlock_", "plugrel", "potlock_intern"] + "twitter": ["elliot_braem", "potlock_", "plugrel", "mimionchain", "potlock_intern"] } }, "outputs": { "stream": { - "enabled": false + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@open_social" + } + } + ] } } }, From 054291b57c142b91cbb8cda2b7a7fb58b25687aa Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Wed, 21 May 2025 12:12:55 -0500 Subject: [PATCH 049/113] fmt --- curate.config.json | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/curate.config.json b/curate.config.json index 593c6ebb..daabfa71 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1036,7 +1036,13 @@ "description": "Decentralized social, Social FI product updates, news, traction, thought leadership.", "moderation": { "approvers": { - "twitter": ["elliot_braem", "potlock_", "plugrel", "mimionchain", "potlock_intern"] + "twitter": [ + "elliot_braem", + "potlock_", + "plugrel", + "mimionchain", + "potlock_intern" + ] } }, "outputs": { @@ -2098,7 +2104,12 @@ "description": "Everything Afrobeats from new music, festival, events, clubs, dances and more!", "moderation": { "approvers": { - "twitter": ["plugrel", "potlock_intern", "israel_igboze" ,"youngfreshdao"] + "twitter": [ + "plugrel", + "potlock_intern", + "israel_igboze", + "youngfreshdao" + ] } }, "outputs": { From 085a9b0036e40c87f6e816f828a4521b4a359055 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 23 May 2025 12:21:32 -0500 Subject: [PATCH 050/113] Add lukso, xpostbounty1, and afrobeats rss (#163) * adjust config * update config, add lukso xpost boutny and afrobeats rss --- curate.config.json | 186 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) diff --git a/curate.config.json b/curate.config.json index daabfa71..89c73e40 100644 --- a/curate.config.json +++ b/curate.config.json @@ -2168,6 +2168,40 @@ "botToken": "{TELEGRAM_BOT_TOKEN}", "channelId": "@afrobeats_party" } + }, + { + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "title": "{{title}}", + "content": "

{{title}}

{{summary}}

", + "description": "{{summary}}", + "link": "{{source}}", + "publishedAt": "{{createdAt}}", + "author": { + "name": "{{username}}", + "link": "https://x.com/{{author}}" + }, + "categories": ["afrobeats", "{{tags}}"], + "source": { + "url": "{{source}}", + "title": "twitter" + } + } + } + } + ], + "plugin": "@curatedotfun/rss", + "config": { + "serviceUrl": "https://afrobeats-rss.up.railway.app", + "apiSecret": "{AFROBEATS_RSS_API_SECRET}", + "feedConfig": { + "title": "Afrobeats", + "description": "Everything Afrobeats from new music, festival, events, clubs, dances and more!" + } + } } ] } @@ -3718,6 +3752,158 @@ ] } } + }, + { + "id": "xpostbounty1", + "name": "XPOST Bounty 1", + "description": "Curated submissions for the XPOST Bounty 1", + "moderation": { + "approvers": { + "twitter": ["plugrel", "potlock", "potlock_intern", "elliot_braem"] + } + }, + "outputs": { + "stream": { + "enabled": false, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}", + "createdAt": "{{createdAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise climate news flash, highlighting key environmental impacts, policy developments, or sustainability efforts. Incorporate relevant details from the curator's notes while maintaining a neutral, third-person tone. Mention the author if relevant, or focus on the core climate-related information.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@open_crosspost" + } + } + ] + } + } + }, + { + "id": "lukso", + "name": "Lukso Underground", + "description": "Everything about the blockchain built for social, culture, and creators.", + "moderation": { + "approvers": { + "twitter": [ + "plugrel", + "potlock", + "potlock_intern", + "JordyDutch", + "Ethalorian", + "feindura", + "jon8wan", + "LUKSO", + "ERC725Account" + ] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}", + "createdAt": "{{createdAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise climate news flash, highlighting key environmental impacts, policy developments, or sustainability efforts. Incorporate relevant details from the curator's notes while maintaining a neutral, third-person tone. Mention the author if relevant, or focus on the core climate-related information.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@lukso_underground" + } + } + ] + } + } } ] } From 4e87eae2bba9171b89fdc892fd51a4340985c9d9 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 23 May 2025 16:23:34 -0500 Subject: [PATCH 051/113] xpost --- curate.config.json | 81 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 13 deletions(-) diff --git a/curate.config.json b/curate.config.json index 89c73e40..14938f3c 100644 --- a/curate.config.json +++ b/curate.config.json @@ -3782,23 +3782,16 @@ { "plugin": "@curatedotfun/ai-transform", "config": { - "prompt": "Summarize the content into a concise climate news flash, highlighting key environmental impacts, policy developments, or sustainability efforts. Incorporate relevant details from the curator's notes while maintaining a neutral, third-person tone. Mention the author if relevant, or focus on the core climate-related information.", + "prompt": "The provided content is a submission to our bounty and should be adhere to one of the tracks: 1. a walkthrough on how to create a Potlock campaign (tag with POTLOCK), 2. a walkthrough on how to curate for Curatedotfun (tag with CURATEDOTFUN). Then you should also assess the bit of content you can read (you will only be provided the first message of a thread), and give a short, <100 character review of the content. Grading on quality of content (uniqueness, thoroughness) and grammar, accuracy (well written, truth to actual). You will not have enough context to give an educated review, but you can give an initial feedback. Short succinct.", "apiKey": "{OPENROUTER_API_KEY}", "schema": { - "title": { + "track": { "type": "string", - "description": "Title derived from summary of content" + "description": "Track enum determined from the content, either POTLOCK or CURATEDOTFUN" }, - "summary": { + "review": { "type": "string", - "description": "Summary of content influenced by curator notes" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Relevant tags for the content" + "description": "A short (<100 chars) review, depending on the content's quality" } } } @@ -3810,7 +3803,7 @@ { "plugin": "@curatedotfun/simple-transform", "config": { - "template": "*[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + "template": "*{{track}} submitted by [@{{author}}](https://x.com/{{author}})*\n\n{{content}}...\n\n[{{view full}}](<{{source}}>)*\n\nAI SHORT REVIEW: {{review}}\n\n" } } ], @@ -3819,6 +3812,68 @@ "botToken": "{TELEGRAM_BOT_TOKEN}", "channelId": "@open_crosspost" } + }, + { + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "Name": "{{author}} submission", + "author": "{{author}}", + "link": "{{source}}", + "category": "{{track}}", + "review": "{{review}}" + } + } + } + ], + "plugin": "@curatedotfun/notion", + "config": { + "token": "{XPOSTBOUNTY1_NOTION_TOKEN}", + "databaseId": "1fcabb02c52c80728d10d01813acaab8", + "fields": { + "Name": "title", + "author": "rich_text", + "link": "rich_text", + "category": "rich_text", + "review": "rich_text" + } + } + }, + { + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "title": "{{title}}", + "content": "

[{{track}}] Submission: {{author}}

{{content}}

", + "description": "{{content}}", + "link": "{{source}}", + "publishedAt": "{{createdAt}}", + "author": { + "name": "{{username}}", + "link": "https://x.com/{{author}}" + }, + "categories": ["xpostbounty1", "{{track}}", "{{tags}}"], + "source": { + "url": "{{source}}", + "title": "twitter" + } + } + } + } + ], + "plugin": "@curatedotfun/rss", + "config": { + "serviceUrl": "https://xpostbounty1.up.railway.app/rss.xml", + "apiSecret": "{XPOSTBOUNTY1_RSS_API_SECRET}", + "feedConfig": { + "title": "XPOST Bounty 1", + "description": "Curated submissions for the XPOST Bounty 1" + } + } } ] } From 46f7895290782fa4235b49adbe0e9b947ae45302 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 23 May 2025 16:33:07 -0500 Subject: [PATCH 052/113] fix link --- curate.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 14938f3c..dcf4331d 100644 --- a/curate.config.json +++ b/curate.config.json @@ -3867,7 +3867,7 @@ ], "plugin": "@curatedotfun/rss", "config": { - "serviceUrl": "https://xpostbounty1.up.railway.app/rss.xml", + "serviceUrl": "https://xpostbounty1-rss.up.railway.app/", "apiSecret": "{XPOSTBOUNTY1_RSS_API_SECRET}", "feedConfig": { "title": "XPOST Bounty 1", From 009247df3cf849c1791e0d00932a32a5048fb72f Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Mon, 26 May 2025 05:17:43 -0700 Subject: [PATCH 053/113] added pakistan feed and add seef to a bunch of feeds --- curate.config.json | 79 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index dcf4331d..a51236e8 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1768,6 +1768,82 @@ } } }, + { + "id": "pakistan", + "name": "Pakistan Crypto News", + "description": "Pakistan crypto ecosystem by PakiDAO.", + "moderation": { + "approvers": { + "twitter": [ + "chiefseif4327", + "potlock_", + "potlock_intern", + "0xAmerican", + "plugrel" + ] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}" + } + } + }, + { + "plugin": "@curatedotfun/ai-transform", + "config": { + "prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone. Mention the author if relevant, or simply convey the information. When processing social media-style content, convert @mentions into markdown links in the format: [@username](https://x.com/username). Ensure all mentions are accurately linked and preserve their original intent.", + "apiKey": "{OPENROUTER_API_KEY}", + "schema": { + "title": { + "type": "string", + "description": "Title derived from summary of content" + }, + "summary": { + "type": "string", + "description": "Summary of content influenced by curator notes" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant tags for the content" + } + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "šŸ‡µšŸ‡°: *[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@pakidao" + } + } + ] + } + } + }, { "id": "vietnam", "name": "Vietnam Crypto News", @@ -3333,6 +3409,7 @@ "stablewatchHQ", "potlock_", "plugrel", + "0xAmerican", "potlock_intern", "Piotr_Saczuk" ] @@ -3500,7 +3577,7 @@ "description": "News about Bitcoin, Bitcoin devs, scaling, integrations, adoptions.", "moderation": { "approvers": { - "twitter": ["Blaze0x1", "plugrel", "potlock_intern", "aescobarindo"] + "twitter": ["Blaze0x1", "chiefseif4327", "0xAmerican", "plugrel", "potlock_intern", "aescobarindo"] } }, "outputs": { From 46424209103b9132028fe806d2097c656e88be98 Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Wed, 28 May 2025 00:03:08 -0700 Subject: [PATCH 054/113] Update curate.config.json to do nft club in feed --- curate.config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index a51236e8..5be361a8 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1699,6 +1699,7 @@ "approvers": { "twitter": [ "potlock_", + "NearNft", "genadrop", "potlock_intern", "elliot_braem", @@ -1761,7 +1762,7 @@ "plugin": "@curatedotfun/telegram", "config": { "botToken": "{TELEGRAM_BOT_TOKEN}", - "channelId": "@genadrop/1266" + "channelId": "@nftclubgroup" } } ] From 297f798b88237bc647f8cbe2af260300c8836224 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Fri, 30 May 2025 10:00:50 -0500 Subject: [PATCH 055/113] vietnam rss --- curate.config.json | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 5be361a8..0c36cca6 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1915,6 +1915,40 @@ "botToken": "{TELEGRAM_BOT_TOKEN}", "channelId": "@tintuccoinhangngay" } + }, + { + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "title": "{{title}}", + "content": "

{{title}}

{{summary}}

", + "description": "{{summary}}", + "link": "{{source}}", + "publishedAt": "{{createdAt}}", + "author": { + "name": "{{username}}", + "link": "https://x.com/{{author}}" + }, + "categories": ["vietnam", "{{tags}}"], + "source": { + "url": "{{source}}", + "title": "twitter" + } + } + } + } + ], + "plugin": "@curatedotfun/rss", + "config": { + "serviceUrl": "https://vietnam-rss.up.railway.app", + "apiSecret": "{VIETNAM_RSS_API_SECRET}", + "feedConfig": { + "title": "Vietnam Crypto News", + "description": "Vietnam crypto ecosystem." + } + } } ] } @@ -3578,7 +3612,14 @@ "description": "News about Bitcoin, Bitcoin devs, scaling, integrations, adoptions.", "moderation": { "approvers": { - "twitter": ["Blaze0x1", "chiefseif4327", "0xAmerican", "plugrel", "potlock_intern", "aescobarindo"] + "twitter": [ + "Blaze0x1", + "chiefseif4327", + "0xAmerican", + "plugrel", + "potlock_intern", + "aescobarindo" + ] } }, "outputs": { From 1d722edf14fea22cb7b7431133eb030a43a9abdb Mon Sep 17 00:00:00 2001 From: codingshot <45281667+codingshot@users.noreply.github.com> Date: Sat, 31 May 2025 08:37:17 -0700 Subject: [PATCH 056/113] Updated vietnam feed with pho dao news not sure if transofrmation is correct --- curate.config.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/curate.config.json b/curate.config.json index 0c36cca6..103f2bf9 100644 --- a/curate.config.json +++ b/curate.config.json @@ -1916,6 +1916,21 @@ "channelId": "@tintuccoinhangngay" } }, + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "šŸ‡»šŸ‡³: *[{{title}}](<{{source}}>)*\n\n{{summary}}\n\nšŸ‘¤ Source [@{{author}}](https://x.com/{{author}})" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "@phodao_news" + } + }, { "transform": [ { From ad6e9301292026ecdc61971d58d0eb40a7ec1066 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Sat, 31 May 2025 12:59:55 -0500 Subject: [PATCH 057/113] africa rss --- curate.config.json | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/curate.config.json b/curate.config.json index 103f2bf9..6661a520 100644 --- a/curate.config.json +++ b/curate.config.json @@ -2474,6 +2474,40 @@ "botToken": "{TELEGRAM_BOT_TOKEN}", "channelId": "@webfsn" } + }, + { + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "title": "{{title}}", + "content": "

{{title}}

{{summary}}

", + "description": "{{summary}}", + "link": "{{source}}", + "publishedAt": "{{createdAt}}", + "author": { + "name": "{{username}}", + "link": "https://x.com/{{author}}" + }, + "categories": ["africa", "{{tags}}"], + "source": { + "url": "{{source}}", + "title": "twitter" + } + } + } + } + ], + "plugin": "@curatedotfun/rss", + "config": { + "serviceUrl": "https://africa-rss.up.railway.app", + "apiSecret": "{AFRICA_RSS_API_SECRET}", + "feedConfig": { + "title": "Web3Fusion", + "description": "The main news source for everything crypto in Africa" + } + } } ] } From 9d0b28d5d455d7d3f653c0da52db76fb13f0999b Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Wed, 4 Jun 2025 19:39:15 -0500 Subject: [PATCH 058/113] adds fffirehose feed --- curate.config.json | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/curate.config.json b/curate.config.json index 6661a520..23145615 100644 --- a/curate.config.json +++ b/curate.config.json @@ -4127,6 +4127,54 @@ ] } } + }, + { + "id": "fffirehose", + "name": "Focus the Firehose Hackathon", + "description": "$10K+ in bounties for creators who can shoot, cut, and ship.", + "moderation": { + "approvers": { + "twitter": ["elliot_braem"] + } + }, + "outputs": { + "stream": { + "enabled": true, + "transform": [ + { + "plugin": "@curatedotfun/object-transform", + "config": { + "mappings": { + "source": "https://x.com/{{username}}/status/{{tweetId}}", + "content": "{{content}}", + "author": "{{username}}", + "notes": "{{curator.notes}}", + "submittedAt": "{{submittedAt}}", + "createdAt": "{{createdAt}}" + } + } + } + ], + "distribute": [ + { + "transform": [ + { + "plugin": "@curatedotfun/simple-transform", + "config": { + "template": "*[Announcement from @{{author}}](<{{source}}>)*\n\n{{content}}" + } + } + ], + "plugin": "@curatedotfun/telegram", + "config": { + "botToken": "{TELEGRAM_BOT_TOKEN}", + "channelId": "-1002519270409", + "messageThreadId": "176" + } + } + ] + } + } } ] } From 20d27255fea186af154c43efb1c495588ad3e589 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Wed, 4 Jun 2025 19:51:13 -0500 Subject: [PATCH 059/113] better error --- backend/src/services/distribution/distribution.service.ts | 4 ++-- curate.config.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/services/distribution/distribution.service.ts b/backend/src/services/distribution/distribution.service.ts index 37cddd70..e998bca0 100644 --- a/backend/src/services/distribution/distribution.service.ts +++ b/backend/src/services/distribution/distribution.service.ts @@ -40,10 +40,10 @@ export class DistributionService { } } catch (error) { // Log but don't crash on plugin errors - logger.error(`Error distributing content with plugin ${pluginName}:`, { + logger.error({ error, pluginName, - }); + }, `Error distributing content with plugin ${pluginName}:`); // Only throw if it's not a plugin error (system error) if (!(error instanceof PluginError)) { diff --git a/curate.config.json b/curate.config.json index 23145615..369b297a 100644 --- a/curate.config.json +++ b/curate.config.json @@ -4169,7 +4169,7 @@ "config": { "botToken": "{TELEGRAM_BOT_TOKEN}", "channelId": "-1002519270409", - "messageThreadId": "176" + "messageThreadId": "179" } } ] From 8a8757abc5513cd1fa1c63504c92595f4f713440 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Wed, 4 Jun 2025 20:14:38 -0500 Subject: [PATCH 060/113] correct thread --- curate.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curate.config.json b/curate.config.json index 369b297a..0e56882a 100644 --- a/curate.config.json +++ b/curate.config.json @@ -4169,7 +4169,7 @@ "config": { "botToken": "{TELEGRAM_BOT_TOKEN}", "channelId": "-1002519270409", - "messageThreadId": "179" + "messageThreadId": "59" } } ] From 76736f924af84f62c2965a95d3956deb131d9549 Mon Sep 17 00:00:00 2001 From: Elliot Braem Date: Tue, 10 Jun 2025 10:14:59 -0500 Subject: [PATCH 061/113] Staging (#116) * Get basic working (#109) * Get basic working * adds rss feeds * added stablewatch founder and stablecoin intern from messaria as approvers on stablecoins feed * fixes to config for grants, sui, and telegram channels (#102) * add query param for selective processing (#103) * adds query param to process * add query param for processing * simplify * add tags * Feat: implement frontend leaderboard (#93) * feat: implement frontend leaderboard * feat: implement a leaderboard in frontend * feat: implemented leaderboard * fix: rebuild implement leaderboard * fix: prettier * fix: prettier * fix: reimplement frontend leaderboard * fix: implement frontend leaderboard * approval rate * sets approval rate and hides curator --------- Co-authored-by: Elliot Braem * remove tailwind-scrollbar * added bob to desci feed * Get basic working * set .env.example * nitpicks --------- Co-authored-by: Elliot Braem Co-authored-by: codingshot <45281667+codingshot@users.noreply.github.com> Co-authored-by: Elliot Braem Co-authored-by: Louis <112561517+louisdevzz@users.noreply.github.com> * fix polyfills * Explore Page (#108) * Explore Page - commit-1 * Explore Page - commit-2 * explore page - commit-3 * explore page - commit - 4 * explore page - commit - prettier * explore page responsiveness + code Rabbit Comments * code Rabbit Comments resolved * css updates * css changes 2 * header update + mobile responsive * conflicts resolved * Rebase and changes * Fix fmt * Header + Explore Page Style (#113) * Explore Page - commit-1 * Explore Page - commit-2 * explore page - commit-3 * explore page - commit - 4 * explore page - commit - prettier * explore page responsiveness + code Rabbit Comments * code Rabbit Comments resolved * css updates * css changes 2 * header update + mobile responsive * conflicts resolved * Rebase and changes * Fix fmt * Header Updates + Web3Auth getUserInfo + Explore Page changes * fmt * coderabbit comments resolved * Profile page (#120) * Update the FE to have the profile page (header and tabs init) * Move tabs to it's own component * Add stats and top badges to overview * Finish the overview tab * Update overview page and init content page * feat(profile-page): add Content and My Feed tags * feat(profile-page): finish profile page static UI * refactor: fmt * [FEATURE] Create Feed Page - DRAFT (#121) * Curate Engine Step 1 * content-progress-configuration step-1 * Curation Settings Part 2 and 3 * CodeRabbit Comments Resolved + Mobile Responsive * Responsiveness: empty State, JSON check --------- Co-authored-by: Elliot Braem * update to main * fmt * Feat/submissions page (#127) * Submissions Page + Feed Page + Mobile Responsiveness * fixes * craete-feed authenticated user condition * fmt * remove sqlite --------- Co-authored-by: Elliot Braem * Feed Page Tabs (#130) * set tanstack routes (#132) * [Task]: Add connect button to feed page (#131) * feat: Add connect button to feed page * fix: recommit * added back to stablecoins feed since stablewatch forked their own * fix packages, update pg, and ignore cloudflare sockets * fmt --------- Co-authored-by: ethnclark Co-authored-by: codingshot <45281667+codingshot@users.noreply.github.com> Co-authored-by: Elliot Braem * uses prod data * Update changes to latest staging * Revert "Update changes to latest staging" This reverts commit cd1290817f9f4876d39ea2f9270807c382db8b05. * Fix Sort By Oldest (#136) * fix: Sort By Oldest * fix: Sort By Oldest * fix: Fix RecentSubmissions Sort Order Update * fix: All feed should be hidden, remove double title --------- Co-authored-by: vohuunhan1310@gmail.com * UI fixes (#138) * UI fixes * fmt --------- Co-authored-by: Elliot Braem * Fix: Leaderboard improvements (#140) * fix: Leaderboard improvements * fix: fmt * reorganize * remove unused * rename * clean up * fmt --------- Co-authored-by: Elliot Braem * clean up * wallet wip * todo * auth flow, wip * types clean up * fix types * login modal wip * modals * controller, service, successful create account * clean with data, metadata, and pattern, validation, and json schema * add migration doc * add activity and delete user * fix migration * add seed remote method * fix naming * fix script call * file extension * remove build schema * proper build time * fix Dockerfile * rsbuild * Standard Header Component + Responsivenss Fixes (#146) * Standard Header Component + Responsivenss Fixes * fmt * rename Hero --------- Co-authored-by: Elliot Braem * fix broken link * don't distribute on staging * fix path * env log * comment out * railway env * fix: Profile adjustments (#153) * fix: Leaderboard improvements * fix: fmt * fix: Profile adjustments * fix: resolve conversation * Login Modal Fixes (#154) * Login Modal Fixes * Resolve Comments * container * container fixes --------- Co-authored-by: Elliot Braem * organize * fmt * update feeds (#156) * Leaderboard width fixes * feat: save profile image to pinata (#158) * feat(fe): save profile image to pinata * fix: fix comment * Feat Integrate NEAR Solana, Ethereum wallet selection (#159) * fix: Leaderboard improvements * fix: fmt * fix: Profile adjustments * fix: resolve conversation * feat: Integrate NEAR wallet selection * fix: run fmt * fix: add function create accesstokenpayload use wallet selector near * fix: resolve conversation * Feed Submission + Feed Review Page (#160) * Feed Review Page and Feed Creation * fmt * coderabbit comments resolved * comments resolved * comments resolved * reset routeTree * minor fixes (#164) * minor fixes * fmt * remove node-compile-cache * reuse user menu * header clean up * remove how it works * clean up * set submissions at root route * fmt * clean * create is coming soon * clean up * user link * Adds caddyfile and frontend clean up (#165) * removes serve static from backend * fmt * fix build * adds caddyfile * clean up submission feed * pnpm lock * fix turbo * fix build * db migration * without time zone * cleans up submission list * Adds shared-db, types package, initial migration (#166) * init * upgrade tsconfigs * shared-db build * shared-db wip * transfer getAllSubmissions * hooked up * moves to shared-db * fmt * update dockerfile * monorepo * working build * migration service * turbo * install pnpm * temp proxy * no include request headers * clean up * proper path * renaming * fmt * update caddyfile * different strategy * use route * fix BACKEND to API * ignore temp * temp remove * back to orig * turn on auto https * disable * route block * clean up * configure host * favicon * add staging domain * http: * set domain adn host * correct bash * matching host * Adds edit feed and image upload (#168) * adds page * image upload and edit feed * update pnpm lock * CSR * vercel json * move * temp disable auth * set image * fix query * submisison service running * Migrates submission service, is running (#169) * init * wip * clean up * feed list clean up * break up functions * fix config path * adds plugins route and integrates with plugin service * remote curate.config.json * plugins table * adds plugin pages * set type * fix feed types * plguin errors * env injection * fix queries * fix migration * fix migration * fix migration * redo migration * decouples moderation * fix status * fix feeds * hide moderation actions --------- Co-authored-by: Zeeshan Ahmad Co-authored-by: codingshot <45281667+codingshot@users.noreply.github.com> Co-authored-by: Louis <112561517+louisdevzz@users.noreply.github.com> Co-authored-by: Muhammad Saad Iqbal Co-authored-by: ethnclark Co-authored-by: dungpt82 <69756171+dungpt99@users.noreply.github.com> --- .github/workflows/deployment.yml | 3 +- .github/workflows/near-rewards.yml | 10 +- .github/workflows/publish.yml | 31 + .github/workflows/test.yml | 4 +- .gitignore | 3 +- .vscode/settings.json | 16 + Dockerfile | 69 - README.md | 23 +- {backend => apps/api}/.env.example | 1 + {backend => apps/api}/.env.test | 0 apps/api/Dockerfile | 70 + {backend => apps/api}/LICENSE | 0 {backend => apps/api}/README.md | 29 +- {backend => apps/api}/package.json | 42 +- apps/api/pnpm-lock.yaml | 8281 +++++++++++++++++ .../public/schemas/userProfile.v1.schema.json | 41 + {backend => apps/api}/rspack.config.js | 22 +- {backend => apps/api}/scripts/dev-server.js | 0 apps/api/scripts/generate-json-schemas.ts | 40 + .../__test__/mocks/twitter-service.mock.ts | 0 apps/api/src/app.ts | 54 + apps/api/src/db/index.ts | 10 + apps/api/src/env.ts | 32 + apps/api/src/index.ts | 148 + apps/api/src/routes/api/activity.ts | 362 + apps/api/src/routes/api/config.ts | 6 + apps/api/src/routes/api/feeds.ts | 145 + apps/api/src/routes/api/index.ts | 38 + apps/api/src/routes/api/leaderboard.ts | 21 + apps/api/src/routes/api/moderation.ts | 107 + apps/api/src/routes/api/plugins.ts | 141 + {backend => apps/api}/src/routes/api/recap.ts | 0 apps/api/src/routes/api/stats.ts | 41 + apps/api/src/routes/api/submission.ts | 279 + {backend => apps/api}/src/routes/api/test.ts | 6 +- .../api}/src/routes/api/trigger.ts | 3 +- .../api}/src/routes/api/twitter.ts | 11 +- apps/api/src/routes/api/upload.ts | 36 + apps/api/src/routes/api/users.ts | 185 + apps/api/src/services/activity.service.ts | 286 + apps/api/src/services/config.service.ts | 11 + apps/api/src/services/distribution.service.ts | 90 + apps/api/src/services/feed.service.ts | 173 + .../services/interfaces/activity.interface.ts | 117 + .../interfaces/background-task.interface.ts | 6 + .../interfaces/base-service.interface.ts | 5 + .../src/services/interfaces/user.interface.ts | 45 + apps/api/src/services/moderation.service.ts | 203 + .../api/src/services}/plugin.service.ts | 330 +- .../api/src/services}/processor.service.ts | 45 +- apps/api/src/services/scheduler.service.ts | 420 + apps/api/src/services/submission.service.ts | 347 + .../src/services}/transformation.service.ts | 69 +- .../api}/src/services/twitter/client.ts | 18 +- .../api}/src/services/twitter/queries.ts | 0 apps/api/src/services/users.service.ts | 285 + apps/api/src/types/app.ts | 15 + {backend => apps/api}/src/types/config.ts | 19 +- apps/api/src/types/errors.ts | 222 + {backend => apps/api}/src/types/recap.ts | 0 apps/api/src/types/twitter.ts | 16 + apps/api/src/types/zod/userProfile.ts | 20 + apps/api/src/utils/auth.ts | 251 + {backend => apps/api}/src/utils/config.ts | 2 +- apps/api/src/utils/error.ts | 100 + {backend => apps/api}/src/utils/logger.ts | 0 apps/api/src/utils/plugin.ts | 245 + {backend => apps/api}/src/utils/sanitize.ts | 0 apps/api/src/utils/service-provider.ts | 211 + .../api/src/validation/activity.validation.ts | 131 + apps/api/src/validation/config.validation.ts | 60 + apps/api/src/validation/feed.validation.ts | 34 + apps/api/src/validation/users.validation.ts | 26 + {backend => apps/api}/test/README.md | 3 +- .../api}/test/component/approval-flow.test.ts | 0 .../test/component/submission-flow.test.ts | 2 +- .../api}/test/curate.config.test.json | 0 .../api}/test/e2e/full-flow.test.ts | 2 +- .../api}/test/integration/database.test.ts | 0 {backend => apps/api}/test/setup/seed-test.ts | 0 {backend => apps/api}/test/setup/seed.sql | 0 .../api}/test/unit/sanitize.test.ts | 0 .../scheduler/scheduler.service.test.ts | 0 .../api}/test/utils/test-client.ts | 0 {backend => apps/api}/test/utils/test-data.ts | 0 .../api}/test/utils/test-helpers.ts | 0 .../api}/test/utils/test-server.ts | 0 apps/api/tsconfig.json | 32 + apps/app/.env.example | 3 + {frontend => apps/app}/.gitignore | 2 + {frontend => apps/app}/README.md | 35 +- apps/app/components.json | 21 + {frontend => apps/app}/eslint.config.js | 0 {frontend => apps/app}/index.html | 18 +- apps/app/package.json | 94 + {frontend => apps/app}/postcss.config.js | 0 .../app}/public/apple-touch-icon.png | Bin .../app}/public/curatedotfunicon1.png | Bin .../public/curatedotfuntransparenticon.png | Bin .../app}/public/favicon-96x96.png | Bin {frontend => apps/app}/public/favicon.ico | Bin {frontend => apps/app}/public/favicon.svg | 0 .../app}/public/fonts/LondrinaSolid-NNS.ttf | Bin apps/app/public/grid.png | Bin 0 -> 5026 bytes apps/app/public/icons/novice-badge.png | Bin 0 -> 5602 bytes .../app}/public/icons/star-bronze.svg | 0 .../app}/public/icons/star-gold.svg | 0 .../app}/public/icons/star-silver.svg | 0 ...1aeb55a83a97a139b53b47327bdcc0f02d6022.png | 4 + apps/app/public/images/curate-coins.png | Bin 0 -> 68499 bytes apps/app/public/images/feed-image.png | Bin 0 -> 9196 bytes apps/app/public/images/metamask.png | Bin 0 -> 5469 bytes apps/app/public/images/near-week.png | Bin 0 -> 32987 bytes apps/app/public/images/near.png | Bin 0 -> 6180 bytes apps/app/public/images/overview-bg.png | Bin 0 -> 1648111 bytes apps/app/public/images/solana.jpeg | Bin 0 -> 5471 bytes apps/app/public/images/solana.png | Bin 0 -> 708 bytes apps/app/public/images/web3-plug.png | Bin 0 -> 247545 bytes .../app}/public/site.webmanifest | 2 +- .../app}/public/web-app-manifest-192x192.png | Bin .../app}/public/web-app-manifest-512x512.png | Bin {frontend => apps/app}/rsbuild.config.ts | 22 +- {frontend => apps/app}/src/App.css | 0 apps/app/src/App.tsx | 37 + apps/app/src/components/AuthModals.tsx | 25 + apps/app/src/components/AvatarProfile.tsx | 220 + .../src/components/BasicInformationForm.tsx | 189 + apps/app/src/components/Container.tsx | 9 + apps/app/src/components/ContentApprovers.tsx | 183 + apps/app/src/components/ContentProgress.tsx | 174 + .../app/src/components/CreateAccountModal.tsx | 223 + .../src/components/CreateNearAccountModal.tsx | 170 + apps/app/src/components/CurationFormSteps.tsx | 208 + .../src/components/CurationSettingsForm.tsx | 82 + .../app}/src/components/DownloadButton.tsx | 0 apps/app/src/components/FeedItem.tsx | 218 + apps/app/src/components/FeedLayout.tsx | 75 + apps/app/src/components/FeedList.tsx | 51 + apps/app/src/components/FeedReviewForm.tsx | 183 + apps/app/src/components/FilterControls.tsx | 183 + apps/app/src/components/Header.tsx | 152 + apps/app/src/components/Hero.tsx | 55 + .../app}/src/components/HexagonAvatar.tsx | 0 apps/app/src/components/ImageUpload.tsx | 156 + .../app}/src/components/InfiniteFeed.tsx | 40 +- apps/app/src/components/Leaderboard.tsx | 403 + .../app}/src/components/LeaderboardModal.tsx | 0 apps/app/src/components/LoginModal.tsx | 239 + .../app}/src/components/Modal.tsx | 4 +- .../src/components/PublishIntegrations.tsx | 140 + .../app}/src/components/RecapManager.tsx | 2 +- apps/app/src/components/RecentLaunches.tsx | 128 + apps/app/src/components/Sort.tsx | 81 + apps/app/src/components/StatusFilter.tsx | 97 + .../src/components/StatusFilterButtons.tsx | 0 apps/app/src/components/SubmissionFeed.tsx | 77 + apps/app/src/components/SubmissionList.tsx | 50 + apps/app/src/components/SubmissionRules.tsx | 202 + apps/app/src/components/TopCurators.tsx | 169 + apps/app/src/components/TopFeeds.tsx | 104 + apps/app/src/components/UserMenu.tsx | 170 + apps/app/src/components/WalletLoginModal.tsx | 89 + .../content-progress/EmptyState.tsx | 28 + .../content-progress/JsonEditor.tsx | 59 + .../components/content-progress/StepItem.tsx | 47 + .../content-progress/TemplateElement.tsx | 34 + .../content-progress/VisualEditor.tsx | 69 + .../src/components/content-progress/data.ts | 72 + .../src/components/content-progress/types.ts | 22 + .../feed/settings/connected/AccountItem.tsx | 106 + .../settings/connected/ConnectPlatform.tsx | 135 + .../connected/ConnectPlatformDialog.tsx | 64 + .../settings/connected/PlatformAccount.tsx | 116 + .../connected/PlatformAccountList.tsx | 66 + .../feed/settings/connected/ProfileCard.tsx | 72 + .../src/components/profile/ProfileHeader.tsx | 110 + .../src/components/profile/ProfileTabs.tsx | 70 + .../profile/activity/ActivityTable.tsx | 224 + .../profile/activity/PaginationControls.tsx | 70 + .../src/components/profile/activity/index.tsx | 113 + .../profile/content/SmallContainer.tsx | 202 + .../src/components/profile/content/index.tsx | 239 + .../src/components/profile/my-feeds/card.tsx | 81 + .../src/components/profile/my-feeds/index.tsx | 129 + .../profile/overview/ApproverFor.tsx | 76 + .../components/profile/overview/CurateCTA.tsx | 35 + .../profile/overview/CuratorFor.tsx | 76 + .../components/profile/overview/TopBadges.tsx | 59 + .../components/profile/overview/UserStats.tsx | 71 + .../src/components/profile/overview/index.tsx | 21 + .../components/profile/points/BadgeCard.tsx | 64 + .../profile/points/PaginationControls.tsx | 70 + .../profile/points/PointsLogTable.tsx | 72 + .../profile/points/PointsOverviewCard.tsx | 60 + .../src/components/profile/points/index.tsx | 149 + .../providers/NearWalletProvider.tsx | 31 + apps/app/src/components/ui/alert.tsx | 60 + apps/app/src/components/ui/avatar.tsx | 48 + apps/app/src/components/ui/badge.tsx | 42 + apps/app/src/components/ui/button.tsx | 62 + apps/app/src/components/ui/card.tsx | 83 + apps/app/src/components/ui/checkbox.tsx | 28 + apps/app/src/components/ui/command.tsx | 153 + apps/app/src/components/ui/dialog.tsx | 120 + apps/app/src/components/ui/dropdown-menu.tsx | 202 + apps/app/src/components/ui/form.tsx | 183 + apps/app/src/components/ui/input.tsx | 22 + apps/app/src/components/ui/label.tsx | 24 + apps/app/src/components/ui/loading.tsx | 23 + apps/app/src/components/ui/pagination.tsx | 117 + apps/app/src/components/ui/popover.tsx | 31 + apps/app/src/components/ui/profile-tabs.tsx | 53 + apps/app/src/components/ui/progress.tsx | 26 + apps/app/src/components/ui/select.tsx | 160 + apps/app/src/components/ui/switch.tsx | 27 + apps/app/src/components/ui/table.tsx | 123 + apps/app/src/components/ui/tabs.tsx | 53 + apps/app/src/components/ui/textarea.tsx | 22 + apps/app/src/components/ui/toast.tsx | 128 + apps/app/src/components/ui/toaster.tsx | 56 + apps/app/src/components/ui/tooltip.tsx | 28 + apps/app/src/config/index.ts | 36 + apps/app/src/contexts/AuthContext.tsx | 55 + apps/app/src/contexts/web3auth.tsx | 417 + apps/app/src/hooks/near-method.ts | 182 + .../app/src/hooks/use-authorization-status.ts | 49 + apps/app/src/hooks/use-toast.ts | 209 + apps/app/src/hooks/use-web3-auth.ts | 12 + apps/app/src/index.css | 239 + {frontend => apps/app}/src/index.tsx | 2 +- apps/app/src/lib/api.ts | 691 ++ apps/app/src/lib/api/moderation.ts | 94 + apps/app/src/lib/api/plugin.ts | 140 + apps/app/src/lib/authentication-service.ts | 168 + apps/app/src/lib/authorization-events.ts | 55 + apps/app/src/lib/authorization-service.ts | 158 + apps/app/src/lib/config.ts | 3 + {frontend => apps/app}/src/lib/recap.ts | 12 +- apps/app/src/lib/services/pinata/client.ts | 45 + apps/app/src/lib/services/pinata/hooks.ts | 52 + {frontend => apps/app}/src/lib/twitter.ts | 9 +- apps/app/src/lib/utils.ts | 6 + apps/app/src/lib/validation/user.ts | 21 + apps/app/src/routeTree.gen.ts | 635 ++ {frontend => apps/app}/src/routes/__root.tsx | 13 +- apps/app/src/routes/_layout.tsx | 24 + apps/app/src/routes/_layout/create/feed.tsx | 20 + apps/app/src/routes/_layout/create/plugin.tsx | 203 + .../src/routes/_layout/edit/feed.$feedId.tsx | 190 + apps/app/src/routes/_layout/feed/$feedId.tsx | 148 + .../routes/_layout/feed/$feedId/curation.tsx | 22 + .../src/routes/_layout/feed/$feedId/index.tsx | 21 + .../routes/_layout/feed/$feedId/members.tsx | 9 + .../routes/_layout/feed/$feedId/points.tsx | 18 + .../routes/_layout/feed/$feedId/proposals.tsx | 18 + .../feed/$feedId/settings/connected.tsx | 56 + .../_layout/feed/$feedId/settings/index.tsx | 41 + .../src/routes/_layout/feed/$feedId/token.tsx | 18 + apps/app/src/routes/_layout/index.tsx | 129 + apps/app/src/routes/_layout/leaderboard.tsx | 48 + .../src/routes/_layout/plugin/$pluginId.tsx | 180 + apps/app/src/routes/_layout/plugin/index.tsx | 78 + apps/app/src/routes/_layout/profile/_root.tsx | 9 + apps/app/src/routes/_layout/profile/index.tsx | 48 + apps/app/src/store/auth-store.ts | 23 + apps/app/src/store/feed-creation-store.ts | 97 + apps/app/src/store/platformAccountsStore.ts | 248 + apps/app/src/types/config.ts | 1 + apps/app/src/types/plugin.ts | 1 + {frontend => apps/app}/src/types/recap.ts | 0 apps/app/src/types/twitter.ts | 1 + apps/app/src/types/web3auth.ts | 82 + apps/app/src/utils/datetime.ts | 67 + apps/app/src/utils/ipfs.ts | 16 + apps/app/src/utils/string.ts | 3 + {frontend => apps/app}/tailwind.config.js | 4 +- {frontend => apps/app}/tsconfig.app.json | 10 +- {frontend => apps/app}/tsconfig.json | 8 +- {frontend => apps/app}/tsconfig.node.json | 0 apps/app/vercel.json | 13 + apps/gateway/Caddyfile | 63 + apps/gateway/Dockerfile | 13 + apps/gateway/README.md | 8 + apps/gateway/entrypoint.sh | 11 + backend/drizzle.config.ts | 10 - backend/pnpm-lock.yaml | 5805 ------------ backend/scripts/POSTGRES.md | 100 - backend/scripts/migrate-sqlite-to-postgres.js | 255 - backend/src/app.ts | 137 - backend/src/index.ts | 172 - backend/src/routes/api/config.ts | 69 - backend/src/routes/api/feed.ts | 140 - backend/src/routes/api/index.ts | 30 - backend/src/routes/api/leaderboard.ts | 17 - backend/src/routes/api/plugin.ts | 16 - backend/src/routes/api/stats.ts | 43 - backend/src/routes/api/submission.ts | 103 - backend/src/routes/static.ts | 202 - backend/src/services/config/config.service.ts | 98 - backend/src/services/db/connection.ts | 311 - backend/src/services/db/index.ts | 13 - .../services/db/migrations/meta/_journal.json | 27 - backend/src/services/db/queries.ts | 909 -- .../db/repositories/feed.repository.ts | 439 - backend/src/services/db/repositories/index.ts | 4 - .../db/repositories/leaderboard.repository.ts | 29 - .../db/repositories/submission.repository.ts | 205 - .../db/repositories/twitter.repository.ts | 152 - backend/src/services/db/schema.ts | 175 - backend/src/services/db/transaction.ts | 124 - backend/src/services/db/types.ts | 60 - .../distribution/distribution.service.ts | 58 - .../services/scheduler/scheduler.service.ts | 420 - .../submissions/submission.service.ts | 551 -- backend/src/types/api.ts | 23 - backend/src/types/app.ts | 49 - backend/src/types/bun-test.d.ts | 54 - backend/src/types/errors.ts | 58 - backend/src/utils/error.ts | 49 - backend/src/utils/plugin.ts | 95 - .../unit/repositories/feed.repository.test.ts | 261 - .../leaderboard.repository.test.ts | 123 - .../submission.repository.test.ts | 437 - .../repositories/twitter.repository.test.ts | 252 - backend/tsconfig.json | 22 - bun.lock | 87 + curate.config.json | 4180 --------- docker-compose.yml | 20 +- frontend/package.json | 49 - frontend/src/App.tsx | 22 - frontend/src/components/FeedHeader.tsx | 43 - frontend/src/components/FeedItem.tsx | 382 - frontend/src/components/FeedList.tsx | 58 - frontend/src/components/Header.tsx | 91 - frontend/src/components/HowItWorks.tsx | 45 - frontend/src/components/Layout.tsx | 98 - frontend/src/components/LayoutCustom.tsx | 49 - frontend/src/components/LeaderBoard.tsx | 376 - frontend/src/components/Settings.tsx | 157 - frontend/src/components/SubmissionList.tsx | 64 - frontend/src/index.css | 105 - frontend/src/lib/api.ts | 185 - frontend/src/lib/config.ts | 8 - frontend/src/routeTree.gen.ts | 216 - frontend/src/routes/feed/$feedId.tsx | 118 - frontend/src/routes/feed/index.tsx | 89 - frontend/src/routes/index.tsx | 22 - frontend/src/routes/leaderboard.tsx | 15 - frontend/src/routes/settings.tsx | 6 - frontend/src/routes/test.tsx | 187 - frontend/src/types/config.ts | 1 - frontend/src/types/plugin.ts | 1 - frontend/src/types/twitter.ts | 1 - frontend/src/utils/datetime.ts | 14 - frontend/src/vite-env.d.ts | 1 - frontend/vercel.json | 8 - kubernetes/README.md | 29 - kubernetes/k8s-deployment.yaml | 263 - kubernetes/kube-secrets.sh | 2 - memory-bank/activeContext.md | 62 +- memory-bank/productContext.md | 15 + memory-bank/progress.md | 50 +- memory-bank/projectbrief.md | 10 + memory-bank/servicePatternMigration.md | 410 + memory-bank/systemPatterns.md | 95 +- memory-bank/techContext.md | 176 +- memory-bank/testingPlan.md | 274 +- package.json | 12 +- packages/shared-db/Dockerfile | 34 + packages/shared-db/README.md | 3 + packages/shared-db/drizzle.config.ts | 17 + .../migrations/0000_parallel_magma.sql | 0 .../shared-db}/migrations/0001_fixed_hulk.sql | 0 .../migrations/0002_brown_satana.sql | 0 .../migrations/0003_melted_hellion.sql | 20 + .../shared-db/migrations/0004_slimy_talon.sql | 54 + .../shared-db/migrations/0005_many_wong.sql | 6 + .../migrations/0006_round_lockheed.sql | 16 + .../migrations/0007_sleepy_phalanx.sql | 10 + .../migrations/0008_flat_black_queen.sql | 2 + .../migrations/meta/0000_snapshot.json | 0 .../migrations/meta/0001_snapshot.json | 0 .../migrations/meta/0002_snapshot.json | 0 .../migrations/meta/0003_snapshot.json | 886 ++ .../migrations/meta/0004_snapshot.json | 1330 +++ .../migrations/meta/0005_snapshot.json | 1350 +++ .../migrations/meta/0006_snapshot.json | 1451 +++ .../migrations/meta/0007_snapshot.json | 1431 +++ .../migrations/meta/0008_snapshot.json | 1425 +++ .../shared-db/migrations/meta/_journal.json | 69 + packages/shared-db/package.json | 44 + packages/shared-db/rspack.config.js | 46 + .../shared-db}/scripts/seed-dev.ts | 2 +- packages/shared-db/scripts/seed-remote.ts | 123 + packages/shared-db/src/index.ts | 17 + .../src/repositories/activity.repository.ts | 772 ++ .../src/repositories/feed.repository.ts | 479 + .../src/repositories/feedRecap.repository.ts | 206 + .../repositories/leaderboard.repository.ts | 175 + .../src/repositories/moderation.repository.ts | 134 + .../src/repositories/plugin.repository.ts | 209 + .../src/repositories/submission.repository.ts | 489 + .../src/repositories/twitter.repository.ts | 221 + .../src/repositories/user.repository.ts | 195 + packages/shared-db/src/schema/activity.ts | 119 + packages/shared-db/src/schema/common.ts | 17 + packages/shared-db/src/schema/feeds.ts | 177 + packages/shared-db/src/schema/index.ts | 8 + packages/shared-db/src/schema/moderation.ts | 44 + packages/shared-db/src/schema/plugins.ts | 37 + packages/shared-db/src/schema/submissions.ts | 102 + packages/shared-db/src/schema/twitter.ts | 16 + packages/shared-db/src/schema/users.ts | 56 + .../db => packages/shared-db/src}/utils.ts | 45 +- packages/shared-db/src/validators.ts | 138 + packages/shared-db/tsconfig.json | 16 + packages/types/package.json | 36 + packages/types/src/config.ts | 145 + .../types/src/domain/submission.ts | 84 +- packages/types/src/dtos/activity.dto.ts | 131 + packages/types/src/index.ts | 4 + packages/types/src/plugin.ts | 265 + packages/types/tsconfig.json | 16 + packages/utils/package.json | 23 + packages/utils/src/errors.ts | 366 + packages/utils/src/index.ts | 2 + packages/utils/src/plugins/index.ts | 18 + packages/utils/tsconfig.json | 23 + pnpm-lock.yaml | 6194 ++++++++++-- pnpm-workspace.yaml | 4 +- tsconfig.json | 21 + turbo.json | 4 - 432 files changed, 47705 insertions(+), 20793 deletions(-) create mode 100644 .github/workflows/publish.yml create mode 100644 .vscode/settings.json delete mode 100644 Dockerfile rename {backend => apps/api}/.env.example (94%) rename {backend => apps/api}/.env.test (100%) create mode 100644 apps/api/Dockerfile rename {backend => apps/api}/LICENSE (100%) rename {backend => apps/api}/README.md (86%) rename {backend => apps/api}/package.json (63%) create mode 100644 apps/api/pnpm-lock.yaml create mode 100644 apps/api/public/schemas/userProfile.v1.schema.json rename {backend => apps/api}/rspack.config.js (70%) rename {backend => apps/api}/scripts/dev-server.js (100%) create mode 100644 apps/api/scripts/generate-json-schemas.ts rename {backend => apps/api}/src/__test__/mocks/twitter-service.mock.ts (100%) create mode 100644 apps/api/src/app.ts create mode 100644 apps/api/src/db/index.ts create mode 100644 apps/api/src/env.ts create mode 100644 apps/api/src/index.ts create mode 100644 apps/api/src/routes/api/activity.ts create mode 100644 apps/api/src/routes/api/config.ts create mode 100644 apps/api/src/routes/api/feeds.ts create mode 100644 apps/api/src/routes/api/index.ts create mode 100644 apps/api/src/routes/api/leaderboard.ts create mode 100644 apps/api/src/routes/api/moderation.ts create mode 100644 apps/api/src/routes/api/plugins.ts rename {backend => apps/api}/src/routes/api/recap.ts (100%) create mode 100644 apps/api/src/routes/api/stats.ts create mode 100644 apps/api/src/routes/api/submission.ts rename {backend => apps/api}/src/routes/api/test.ts (94%) rename {backend => apps/api}/src/routes/api/trigger.ts (94%) rename {backend => apps/api}/src/routes/api/twitter.ts (87%) create mode 100644 apps/api/src/routes/api/upload.ts create mode 100644 apps/api/src/routes/api/users.ts create mode 100644 apps/api/src/services/activity.service.ts create mode 100644 apps/api/src/services/config.service.ts create mode 100644 apps/api/src/services/distribution.service.ts create mode 100644 apps/api/src/services/feed.service.ts create mode 100644 apps/api/src/services/interfaces/activity.interface.ts create mode 100644 apps/api/src/services/interfaces/background-task.interface.ts create mode 100644 apps/api/src/services/interfaces/base-service.interface.ts create mode 100644 apps/api/src/services/interfaces/user.interface.ts create mode 100644 apps/api/src/services/moderation.service.ts rename {backend/src/services/plugins => apps/api/src/services}/plugin.service.ts (63%) rename {backend/src/services/processor => apps/api/src/services}/processor.service.ts (87%) create mode 100644 apps/api/src/services/scheduler.service.ts create mode 100644 apps/api/src/services/submission.service.ts rename {backend/src/services/transformation => apps/api/src/services}/transformation.service.ts (52%) rename {backend => apps/api}/src/services/twitter/client.ts (92%) rename {backend => apps/api}/src/services/twitter/queries.ts (100%) create mode 100644 apps/api/src/services/users.service.ts create mode 100644 apps/api/src/types/app.ts rename {backend => apps/api}/src/types/config.ts (74%) create mode 100644 apps/api/src/types/errors.ts rename {backend => apps/api}/src/types/recap.ts (100%) create mode 100644 apps/api/src/types/twitter.ts create mode 100644 apps/api/src/types/zod/userProfile.ts create mode 100644 apps/api/src/utils/auth.ts rename {backend => apps/api}/src/utils/config.ts (96%) create mode 100644 apps/api/src/utils/error.ts rename {backend => apps/api}/src/utils/logger.ts (100%) create mode 100644 apps/api/src/utils/plugin.ts rename {backend => apps/api}/src/utils/sanitize.ts (100%) create mode 100644 apps/api/src/utils/service-provider.ts create mode 100644 apps/api/src/validation/activity.validation.ts create mode 100644 apps/api/src/validation/config.validation.ts create mode 100644 apps/api/src/validation/feed.validation.ts create mode 100644 apps/api/src/validation/users.validation.ts rename {backend => apps/api}/test/README.md (96%) rename {backend => apps/api}/test/component/approval-flow.test.ts (100%) rename {backend => apps/api}/test/component/submission-flow.test.ts (99%) rename {backend => apps/api}/test/curate.config.test.json (100%) rename {backend => apps/api}/test/e2e/full-flow.test.ts (98%) rename {backend => apps/api}/test/integration/database.test.ts (100%) rename {backend => apps/api}/test/setup/seed-test.ts (100%) rename {backend => apps/api}/test/setup/seed.sql (100%) rename {backend => apps/api}/test/unit/sanitize.test.ts (100%) rename {backend => apps/api}/test/unit/services/scheduler/scheduler.service.test.ts (100%) rename {backend => apps/api}/test/utils/test-client.ts (100%) rename {backend => apps/api}/test/utils/test-data.ts (100%) rename {backend => apps/api}/test/utils/test-helpers.ts (100%) rename {backend => apps/api}/test/utils/test-server.ts (100%) create mode 100644 apps/api/tsconfig.json create mode 100644 apps/app/.env.example rename {frontend => apps/app}/.gitignore (90%) rename {frontend => apps/app}/README.md (72%) create mode 100644 apps/app/components.json rename {frontend => apps/app}/eslint.config.js (100%) rename {frontend => apps/app}/index.html (77%) create mode 100644 apps/app/package.json rename {frontend => apps/app}/postcss.config.js (100%) rename {frontend => apps/app}/public/apple-touch-icon.png (100%) rename {frontend => apps/app}/public/curatedotfunicon1.png (100%) rename {frontend => apps/app}/public/curatedotfuntransparenticon.png (100%) rename {frontend => apps/app}/public/favicon-96x96.png (100%) rename {frontend => apps/app}/public/favicon.ico (100%) rename {frontend => apps/app}/public/favicon.svg (100%) rename {frontend => apps/app}/public/fonts/LondrinaSolid-NNS.ttf (100%) create mode 100644 apps/app/public/grid.png create mode 100644 apps/app/public/icons/novice-badge.png rename {frontend => apps/app}/public/icons/star-bronze.svg (100%) rename {frontend => apps/app}/public/icons/star-gold.svg (100%) rename {frontend => apps/app}/public/icons/star-silver.svg (100%) create mode 100644 apps/app/public/images/ca1aeb55a83a97a139b53b47327bdcc0f02d6022.png create mode 100644 apps/app/public/images/curate-coins.png create mode 100644 apps/app/public/images/feed-image.png create mode 100644 apps/app/public/images/metamask.png create mode 100644 apps/app/public/images/near-week.png create mode 100644 apps/app/public/images/near.png create mode 100644 apps/app/public/images/overview-bg.png create mode 100644 apps/app/public/images/solana.jpeg create mode 100644 apps/app/public/images/solana.png create mode 100644 apps/app/public/images/web3-plug.png rename {frontend => apps/app}/public/site.webmanifest (99%) rename {frontend => apps/app}/public/web-app-manifest-192x192.png (100%) rename {frontend => apps/app}/public/web-app-manifest-512x512.png (100%) rename {frontend => apps/app}/rsbuild.config.ts (67%) rename {frontend => apps/app}/src/App.css (100%) create mode 100644 apps/app/src/App.tsx create mode 100644 apps/app/src/components/AuthModals.tsx create mode 100644 apps/app/src/components/AvatarProfile.tsx create mode 100644 apps/app/src/components/BasicInformationForm.tsx create mode 100644 apps/app/src/components/Container.tsx create mode 100644 apps/app/src/components/ContentApprovers.tsx create mode 100644 apps/app/src/components/ContentProgress.tsx create mode 100644 apps/app/src/components/CreateAccountModal.tsx create mode 100644 apps/app/src/components/CreateNearAccountModal.tsx create mode 100644 apps/app/src/components/CurationFormSteps.tsx create mode 100644 apps/app/src/components/CurationSettingsForm.tsx rename {frontend => apps/app}/src/components/DownloadButton.tsx (100%) create mode 100644 apps/app/src/components/FeedItem.tsx create mode 100644 apps/app/src/components/FeedLayout.tsx create mode 100644 apps/app/src/components/FeedList.tsx create mode 100644 apps/app/src/components/FeedReviewForm.tsx create mode 100644 apps/app/src/components/FilterControls.tsx create mode 100644 apps/app/src/components/Header.tsx create mode 100644 apps/app/src/components/Hero.tsx rename {frontend => apps/app}/src/components/HexagonAvatar.tsx (100%) create mode 100644 apps/app/src/components/ImageUpload.tsx rename {frontend => apps/app}/src/components/InfiniteFeed.tsx (60%) create mode 100644 apps/app/src/components/Leaderboard.tsx rename {frontend => apps/app}/src/components/LeaderboardModal.tsx (100%) create mode 100644 apps/app/src/components/LoginModal.tsx rename {frontend => apps/app}/src/components/Modal.tsx (76%) create mode 100644 apps/app/src/components/PublishIntegrations.tsx rename {frontend => apps/app}/src/components/RecapManager.tsx (99%) create mode 100644 apps/app/src/components/RecentLaunches.tsx create mode 100644 apps/app/src/components/Sort.tsx create mode 100644 apps/app/src/components/StatusFilter.tsx rename {frontend => apps/app}/src/components/StatusFilterButtons.tsx (100%) create mode 100644 apps/app/src/components/SubmissionFeed.tsx create mode 100644 apps/app/src/components/SubmissionList.tsx create mode 100644 apps/app/src/components/SubmissionRules.tsx create mode 100644 apps/app/src/components/TopCurators.tsx create mode 100644 apps/app/src/components/TopFeeds.tsx create mode 100644 apps/app/src/components/UserMenu.tsx create mode 100644 apps/app/src/components/WalletLoginModal.tsx create mode 100644 apps/app/src/components/content-progress/EmptyState.tsx create mode 100644 apps/app/src/components/content-progress/JsonEditor.tsx create mode 100644 apps/app/src/components/content-progress/StepItem.tsx create mode 100644 apps/app/src/components/content-progress/TemplateElement.tsx create mode 100644 apps/app/src/components/content-progress/VisualEditor.tsx create mode 100644 apps/app/src/components/content-progress/data.ts create mode 100644 apps/app/src/components/content-progress/types.ts create mode 100644 apps/app/src/components/feed/settings/connected/AccountItem.tsx create mode 100644 apps/app/src/components/feed/settings/connected/ConnectPlatform.tsx create mode 100644 apps/app/src/components/feed/settings/connected/ConnectPlatformDialog.tsx create mode 100644 apps/app/src/components/feed/settings/connected/PlatformAccount.tsx create mode 100644 apps/app/src/components/feed/settings/connected/PlatformAccountList.tsx create mode 100644 apps/app/src/components/feed/settings/connected/ProfileCard.tsx create mode 100644 apps/app/src/components/profile/ProfileHeader.tsx create mode 100644 apps/app/src/components/profile/ProfileTabs.tsx create mode 100644 apps/app/src/components/profile/activity/ActivityTable.tsx create mode 100644 apps/app/src/components/profile/activity/PaginationControls.tsx create mode 100644 apps/app/src/components/profile/activity/index.tsx create mode 100644 apps/app/src/components/profile/content/SmallContainer.tsx create mode 100644 apps/app/src/components/profile/content/index.tsx create mode 100644 apps/app/src/components/profile/my-feeds/card.tsx create mode 100644 apps/app/src/components/profile/my-feeds/index.tsx create mode 100644 apps/app/src/components/profile/overview/ApproverFor.tsx create mode 100644 apps/app/src/components/profile/overview/CurateCTA.tsx create mode 100644 apps/app/src/components/profile/overview/CuratorFor.tsx create mode 100644 apps/app/src/components/profile/overview/TopBadges.tsx create mode 100644 apps/app/src/components/profile/overview/UserStats.tsx create mode 100644 apps/app/src/components/profile/overview/index.tsx create mode 100644 apps/app/src/components/profile/points/BadgeCard.tsx create mode 100644 apps/app/src/components/profile/points/PaginationControls.tsx create mode 100644 apps/app/src/components/profile/points/PointsLogTable.tsx create mode 100644 apps/app/src/components/profile/points/PointsOverviewCard.tsx create mode 100644 apps/app/src/components/profile/points/index.tsx create mode 100644 apps/app/src/components/providers/NearWalletProvider.tsx create mode 100644 apps/app/src/components/ui/alert.tsx create mode 100644 apps/app/src/components/ui/avatar.tsx create mode 100644 apps/app/src/components/ui/badge.tsx create mode 100644 apps/app/src/components/ui/button.tsx create mode 100644 apps/app/src/components/ui/card.tsx create mode 100644 apps/app/src/components/ui/checkbox.tsx create mode 100644 apps/app/src/components/ui/command.tsx create mode 100644 apps/app/src/components/ui/dialog.tsx create mode 100644 apps/app/src/components/ui/dropdown-menu.tsx create mode 100644 apps/app/src/components/ui/form.tsx create mode 100644 apps/app/src/components/ui/input.tsx create mode 100644 apps/app/src/components/ui/label.tsx create mode 100644 apps/app/src/components/ui/loading.tsx create mode 100644 apps/app/src/components/ui/pagination.tsx create mode 100644 apps/app/src/components/ui/popover.tsx create mode 100644 apps/app/src/components/ui/profile-tabs.tsx create mode 100644 apps/app/src/components/ui/progress.tsx create mode 100644 apps/app/src/components/ui/select.tsx create mode 100644 apps/app/src/components/ui/switch.tsx create mode 100644 apps/app/src/components/ui/table.tsx create mode 100644 apps/app/src/components/ui/tabs.tsx create mode 100644 apps/app/src/components/ui/textarea.tsx create mode 100644 apps/app/src/components/ui/toast.tsx create mode 100644 apps/app/src/components/ui/toaster.tsx create mode 100644 apps/app/src/components/ui/tooltip.tsx create mode 100644 apps/app/src/config/index.ts create mode 100644 apps/app/src/contexts/AuthContext.tsx create mode 100644 apps/app/src/contexts/web3auth.tsx create mode 100644 apps/app/src/hooks/near-method.ts create mode 100644 apps/app/src/hooks/use-authorization-status.ts create mode 100644 apps/app/src/hooks/use-toast.ts create mode 100644 apps/app/src/hooks/use-web3-auth.ts create mode 100644 apps/app/src/index.css rename {frontend => apps/app}/src/index.tsx (89%) create mode 100644 apps/app/src/lib/api.ts create mode 100644 apps/app/src/lib/api/moderation.ts create mode 100644 apps/app/src/lib/api/plugin.ts create mode 100644 apps/app/src/lib/authentication-service.ts create mode 100644 apps/app/src/lib/authorization-events.ts create mode 100644 apps/app/src/lib/authorization-service.ts create mode 100644 apps/app/src/lib/config.ts rename {frontend => apps/app}/src/lib/recap.ts (92%) create mode 100644 apps/app/src/lib/services/pinata/client.ts create mode 100644 apps/app/src/lib/services/pinata/hooks.ts rename {frontend => apps/app}/src/lib/twitter.ts (90%) create mode 100644 apps/app/src/lib/utils.ts create mode 100644 apps/app/src/lib/validation/user.ts create mode 100644 apps/app/src/routeTree.gen.ts rename {frontend => apps/app}/src/routes/__root.tsx (63%) create mode 100644 apps/app/src/routes/_layout.tsx create mode 100644 apps/app/src/routes/_layout/create/feed.tsx create mode 100644 apps/app/src/routes/_layout/create/plugin.tsx create mode 100644 apps/app/src/routes/_layout/edit/feed.$feedId.tsx create mode 100644 apps/app/src/routes/_layout/feed/$feedId.tsx create mode 100644 apps/app/src/routes/_layout/feed/$feedId/curation.tsx create mode 100644 apps/app/src/routes/_layout/feed/$feedId/index.tsx create mode 100644 apps/app/src/routes/_layout/feed/$feedId/members.tsx create mode 100644 apps/app/src/routes/_layout/feed/$feedId/points.tsx create mode 100644 apps/app/src/routes/_layout/feed/$feedId/proposals.tsx create mode 100644 apps/app/src/routes/_layout/feed/$feedId/settings/connected.tsx create mode 100644 apps/app/src/routes/_layout/feed/$feedId/settings/index.tsx create mode 100644 apps/app/src/routes/_layout/feed/$feedId/token.tsx create mode 100644 apps/app/src/routes/_layout/index.tsx create mode 100644 apps/app/src/routes/_layout/leaderboard.tsx create mode 100644 apps/app/src/routes/_layout/plugin/$pluginId.tsx create mode 100644 apps/app/src/routes/_layout/plugin/index.tsx create mode 100644 apps/app/src/routes/_layout/profile/_root.tsx create mode 100644 apps/app/src/routes/_layout/profile/index.tsx create mode 100644 apps/app/src/store/auth-store.ts create mode 100644 apps/app/src/store/feed-creation-store.ts create mode 100644 apps/app/src/store/platformAccountsStore.ts create mode 100644 apps/app/src/types/config.ts create mode 100644 apps/app/src/types/plugin.ts rename {frontend => apps/app}/src/types/recap.ts (100%) create mode 100644 apps/app/src/types/twitter.ts create mode 100644 apps/app/src/types/web3auth.ts create mode 100644 apps/app/src/utils/datetime.ts create mode 100644 apps/app/src/utils/ipfs.ts create mode 100644 apps/app/src/utils/string.ts rename {frontend => apps/app}/tailwind.config.js (75%) rename {frontend => apps/app}/tsconfig.app.json (72%) rename {frontend => apps/app}/tsconfig.json (55%) rename {frontend => apps/app}/tsconfig.node.json (100%) create mode 100644 apps/app/vercel.json create mode 100644 apps/gateway/Caddyfile create mode 100644 apps/gateway/Dockerfile create mode 100644 apps/gateway/README.md create mode 100644 apps/gateway/entrypoint.sh delete mode 100644 backend/drizzle.config.ts delete mode 100644 backend/pnpm-lock.yaml delete mode 100644 backend/scripts/POSTGRES.md delete mode 100755 backend/scripts/migrate-sqlite-to-postgres.js delete mode 100644 backend/src/app.ts delete mode 100644 backend/src/index.ts delete mode 100644 backend/src/routes/api/config.ts delete mode 100644 backend/src/routes/api/feed.ts delete mode 100644 backend/src/routes/api/index.ts delete mode 100644 backend/src/routes/api/leaderboard.ts delete mode 100644 backend/src/routes/api/plugin.ts delete mode 100644 backend/src/routes/api/stats.ts delete mode 100644 backend/src/routes/api/submission.ts delete mode 100644 backend/src/routes/static.ts delete mode 100644 backend/src/services/config/config.service.ts delete mode 100644 backend/src/services/db/connection.ts delete mode 100644 backend/src/services/db/index.ts delete mode 100644 backend/src/services/db/migrations/meta/_journal.json delete mode 100644 backend/src/services/db/queries.ts delete mode 100644 backend/src/services/db/repositories/feed.repository.ts delete mode 100644 backend/src/services/db/repositories/index.ts delete mode 100644 backend/src/services/db/repositories/leaderboard.repository.ts delete mode 100644 backend/src/services/db/repositories/submission.repository.ts delete mode 100644 backend/src/services/db/repositories/twitter.repository.ts delete mode 100644 backend/src/services/db/schema.ts delete mode 100644 backend/src/services/db/transaction.ts delete mode 100644 backend/src/services/db/types.ts delete mode 100644 backend/src/services/distribution/distribution.service.ts delete mode 100644 backend/src/services/scheduler/scheduler.service.ts delete mode 100644 backend/src/services/submissions/submission.service.ts delete mode 100644 backend/src/types/api.ts delete mode 100644 backend/src/types/app.ts delete mode 100644 backend/src/types/bun-test.d.ts delete mode 100644 backend/src/types/errors.ts delete mode 100644 backend/src/utils/error.ts delete mode 100644 backend/src/utils/plugin.ts delete mode 100644 backend/test/unit/repositories/feed.repository.test.ts delete mode 100644 backend/test/unit/repositories/leaderboard.repository.test.ts delete mode 100644 backend/test/unit/repositories/submission.repository.test.ts delete mode 100644 backend/test/unit/repositories/twitter.repository.test.ts delete mode 100644 backend/tsconfig.json create mode 100644 bun.lock delete mode 100644 curate.config.json delete mode 100644 frontend/package.json delete mode 100644 frontend/src/App.tsx delete mode 100644 frontend/src/components/FeedHeader.tsx delete mode 100644 frontend/src/components/FeedItem.tsx delete mode 100644 frontend/src/components/FeedList.tsx delete mode 100644 frontend/src/components/Header.tsx delete mode 100644 frontend/src/components/HowItWorks.tsx delete mode 100644 frontend/src/components/Layout.tsx delete mode 100644 frontend/src/components/LayoutCustom.tsx delete mode 100644 frontend/src/components/LeaderBoard.tsx delete mode 100644 frontend/src/components/Settings.tsx delete mode 100644 frontend/src/components/SubmissionList.tsx delete mode 100644 frontend/src/index.css delete mode 100644 frontend/src/lib/api.ts delete mode 100644 frontend/src/lib/config.ts delete mode 100644 frontend/src/routeTree.gen.ts delete mode 100644 frontend/src/routes/feed/$feedId.tsx delete mode 100644 frontend/src/routes/feed/index.tsx delete mode 100644 frontend/src/routes/index.tsx delete mode 100644 frontend/src/routes/leaderboard.tsx delete mode 100644 frontend/src/routes/settings.tsx delete mode 100644 frontend/src/routes/test.tsx delete mode 100644 frontend/src/types/config.ts delete mode 100644 frontend/src/types/plugin.ts delete mode 100644 frontend/src/types/twitter.ts delete mode 100644 frontend/src/utils/datetime.ts delete mode 100644 frontend/src/vite-env.d.ts delete mode 100644 frontend/vercel.json delete mode 100644 kubernetes/README.md delete mode 100644 kubernetes/k8s-deployment.yaml delete mode 100644 kubernetes/kube-secrets.sh create mode 100644 memory-bank/servicePatternMigration.md create mode 100644 packages/shared-db/Dockerfile create mode 100644 packages/shared-db/README.md create mode 100644 packages/shared-db/drizzle.config.ts rename {backend/src/services/db => packages/shared-db}/migrations/0000_parallel_magma.sql (100%) rename {backend/src/services/db => packages/shared-db}/migrations/0001_fixed_hulk.sql (100%) rename {backend/src/services/db => packages/shared-db}/migrations/0002_brown_satana.sql (100%) create mode 100644 packages/shared-db/migrations/0003_melted_hellion.sql create mode 100644 packages/shared-db/migrations/0004_slimy_talon.sql create mode 100644 packages/shared-db/migrations/0005_many_wong.sql create mode 100644 packages/shared-db/migrations/0006_round_lockheed.sql create mode 100644 packages/shared-db/migrations/0007_sleepy_phalanx.sql create mode 100644 packages/shared-db/migrations/0008_flat_black_queen.sql rename {backend/src/services/db => packages/shared-db}/migrations/meta/0000_snapshot.json (100%) rename {backend/src/services/db => packages/shared-db}/migrations/meta/0001_snapshot.json (100%) rename {backend/src/services/db => packages/shared-db}/migrations/meta/0002_snapshot.json (100%) create mode 100644 packages/shared-db/migrations/meta/0003_snapshot.json create mode 100644 packages/shared-db/migrations/meta/0004_snapshot.json create mode 100644 packages/shared-db/migrations/meta/0005_snapshot.json create mode 100644 packages/shared-db/migrations/meta/0006_snapshot.json create mode 100644 packages/shared-db/migrations/meta/0007_snapshot.json create mode 100644 packages/shared-db/migrations/meta/0008_snapshot.json create mode 100644 packages/shared-db/migrations/meta/_journal.json create mode 100644 packages/shared-db/package.json create mode 100644 packages/shared-db/rspack.config.js rename {backend => packages/shared-db}/scripts/seed-dev.ts (97%) create mode 100644 packages/shared-db/scripts/seed-remote.ts create mode 100644 packages/shared-db/src/index.ts create mode 100644 packages/shared-db/src/repositories/activity.repository.ts create mode 100644 packages/shared-db/src/repositories/feed.repository.ts create mode 100644 packages/shared-db/src/repositories/feedRecap.repository.ts create mode 100644 packages/shared-db/src/repositories/leaderboard.repository.ts create mode 100644 packages/shared-db/src/repositories/moderation.repository.ts create mode 100644 packages/shared-db/src/repositories/plugin.repository.ts create mode 100644 packages/shared-db/src/repositories/submission.repository.ts create mode 100644 packages/shared-db/src/repositories/twitter.repository.ts create mode 100644 packages/shared-db/src/repositories/user.repository.ts create mode 100644 packages/shared-db/src/schema/activity.ts create mode 100644 packages/shared-db/src/schema/common.ts create mode 100644 packages/shared-db/src/schema/feeds.ts create mode 100644 packages/shared-db/src/schema/index.ts create mode 100644 packages/shared-db/src/schema/moderation.ts create mode 100644 packages/shared-db/src/schema/plugins.ts create mode 100644 packages/shared-db/src/schema/submissions.ts create mode 100644 packages/shared-db/src/schema/twitter.ts create mode 100644 packages/shared-db/src/schema/users.ts rename {backend/src/services/db => packages/shared-db/src}/utils.ts (70%) create mode 100644 packages/shared-db/src/validators.ts create mode 100644 packages/shared-db/tsconfig.json create mode 100644 packages/types/package.json create mode 100644 packages/types/src/config.ts rename backend/src/types/twitter.ts => packages/types/src/domain/submission.ts (50%) create mode 100644 packages/types/src/dtos/activity.dto.ts create mode 100644 packages/types/src/index.ts create mode 100644 packages/types/src/plugin.ts create mode 100644 packages/types/tsconfig.json create mode 100644 packages/utils/package.json create mode 100644 packages/utils/src/errors.ts create mode 100644 packages/utils/src/index.ts create mode 100644 packages/utils/src/plugins/index.ts create mode 100644 packages/utils/tsconfig.json create mode 100644 tsconfig.json diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 935a7690..bf52d1b1 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: - platform: [ linux/amd64 ] + platform: [linux/amd64] steps: - name: Checkout code @@ -43,4 +43,3 @@ jobs: platforms: ${{ matrix.platform }} push: true tags: ghcr.io/${{ env.REPO }}:${{ github.sha }} - diff --git a/.github/workflows/near-rewards.yml b/.github/workflows/near-rewards.yml index 75c55318..09853934 100644 --- a/.github/workflows/near-rewards.yml +++ b/.github/workflows/near-rewards.yml @@ -1,10 +1,10 @@ name: NEAR Protocol Rewards Tracking on: schedule: - - cron: '0 */12 * * *' # Every 12 hours - workflow_dispatch: # Manual trigger + - cron: "0 */12 * * *" # Every 12 hours + workflow_dispatch: # Manual trigger push: - branches: [ main ] # Start on main branch updates + branches: [main] # Start on main branch updates jobs: calculate-rewards: @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: '18' + node-version: "18" - name: Calculate Rewards env: @@ -25,4 +25,4 @@ jobs: GITHUB_REPO: ${{ github.repository }} run: | npm install -g near-protocol-rewards@latest - near-protocol-rewards calculate \ No newline at end of file + near-protocol-rewards calculate diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 00000000..3fb4d30a --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,31 @@ +# name: Release + +# on: +# push: +# branches: +# - main + +# jobs: +# release: +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v4 +# - uses: oven-sh/setup-bun@v2 +# - run: bun install +# - run: bun run build +# - name: Setup Node.js +# uses: actions/setup-node@v4 +# with: +# node-version: "lts/*" +# registry-url: 'https://registry.npmjs.org' +# - name: Publish +# env: +# NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} +# run: | +# for pkg in packages/*; do +# if [ -f "$pkg/package.json" ]; then +# cd $pkg +# npm publish --access public || true +# cd ../.. +# fi +# done diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cbb89903..5dd3a8e5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -44,13 +44,13 @@ jobs: run: pnpm install - name: Migrate and seed DB - working-directory: ./backend + working-directory: ./api env: DATABASE_URL: postgresql://postgres:postgres@localhost:5433/test run: pnpm run db:migrate - name: Seed DB - working-directory: ./backend + working-directory: ./api env: DATABASE_URL: postgresql://postgres:postgres@localhost:5433/test run: bun ./test/setup/seed-test.ts diff --git a/.gitignore b/.gitignore index 0b7ce4f6..221745a3 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ .yarn/install-state.gz /.unlighthouse **/.pnpm-store +node-compile-cache # testing /coverage @@ -50,4 +51,4 @@ package-lock.json bun.lockb # JetBrains -.idea/ +.idea/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..3a94bb42 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,16 @@ +{ + "cSpell.words": [ + "crowdsource", + "ilhagirl", + "jpollock", + "karmaticacid", + "morica", + "murica", + "oklch", + "plugrel", + "plungrel", + "POTLOCK", + "SCURATE", + "yegorgolovnia" + ] +} diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index b2bfbe23..00000000 --- a/Dockerfile +++ /dev/null @@ -1,69 +0,0 @@ -# Base stage with common dependencies -FROM node:18-alpine AS base - -# Install pnpm -RUN npm install -g pnpm turbo - -# Builder stage for pruning the monorepo -FROM base AS pruner -WORKDIR /app - -COPY . . - -# Disable telemetry and prune the monorepo to include only what's needed -RUN turbo telemetry disable -# Prune the monorepo to include only backend and frontend -RUN turbo prune --scope=@curatedotfun/backend --scope=@curatedotfun/frontend --docker - -# Builder stage for installing dependencies and building -FROM base AS builder -WORKDIR /app - -# Copy pruned package.json files and workspace config -COPY --from=pruner /app/out/json/ . -COPY --from=pruner /app/out/pnpm-lock.yaml ./pnpm-lock.yaml -COPY --from=pruner /app/turbo.json ./turbo.json -COPY --from=pruner /app/pnpm-workspace.yaml ./pnpm-workspace.yaml - -# Install dependencies using pnpm workspaces -RUN pnpm install --frozen-lockfile - -# Copy source code from pruned monorepo -COPY --from=pruner /app/out/full/ . - -# Build the application using turbo (which will respect the dependencies in turbo.json) -ENV NODE_ENV="production" -RUN pnpm run build - -# Production stage -FROM node:18-alpine AS production -WORKDIR /app - -# Create a non-root user for security -RUN addgroup -S app && adduser -S app -G app - -# Copy only the necessary files from the builder stage -COPY --from=builder --chown=app:app /app/backend/dist ./backend/dist -COPY --from=builder --chown=app:app /app/backend/package.json ./backend/package.json -COPY --from=builder --chown=app:app /app/backend/drizzle.config.ts ./backend/drizzle.config.ts -COPY --from=builder --chown=app:app /app/backend/src/services/db/migrations ./backend/src/services/db/migrations -COPY --from=builder --chown=app:app /app/backend/src/services/db/schema.ts ./backend/src/services/db/schema.ts -COPY --from=builder --chown=app:app /app/package.json ./ -COPY --from=builder --chown=app:app /app/pnpm-lock.yaml ./ -COPY --from=builder --chown=app:app /app/pnpm-workspace.yaml ./pnpm-workspace.yaml -COPY --chown=app:app curate.config.json ./ - -# Install pnpm -RUN npm install -g pnpm - -# Install only production dependencies -RUN cd backend && pnpm install --prod --frozen-lockfile - -# Use the non-root user -USER app - -# Expose the port -EXPOSE 3000 - -# Start the application -CMD ["pnpm", "run", "--dir", "backend", "start"] diff --git a/README.md b/README.md index 284d3321..d0184dce 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ graph TD Twitter["Twitter Source Plugin"] style Twitter color:black end - + %% Submission Processing subgraph Submission["Submission Processing"] SubmissionService["Submission Service"] @@ -82,7 +82,7 @@ graph TD style SubmissionService color:black style Moderation color:black end - + %% Content Processing subgraph Processing["Content Processing"] ProcessorService["Processor Service"] @@ -90,7 +90,7 @@ graph TD style ProcessorService color:black style GlobalTransform color:black end - + %% Distribution subgraph Distribution["Distribution"] DistributionService["Distribution Service"] @@ -98,7 +98,7 @@ graph TD style DistributionService color:black style DistTransform color:black end - + %% Distributor Plugins subgraph Distributors["Distributor Plugins"] Telegram["Telegram"] @@ -110,7 +110,7 @@ graph TD style Notion color:black style Supabase color:black end - + %% Flow connections Sources --> SubmissionService SubmissionService --> Moderation @@ -119,12 +119,12 @@ graph TD GlobalTransform --> DistributionService DistributionService --> DistTransform DistTransform --> Distributors - + %% Styling classDef service fill:#f9f,stroke:#333,stroke-width:2px classDef plugin fill:#bbf,stroke:#333,stroke-width:1px classDef process fill:#bfb,stroke:#333,stroke-width:1px - + class SubmissionService,ProcessorService,DistributionService service class Twitter,Telegram,RSS,Notion,Supabase plugin class Moderation,GlobalTransform,DistTransform process @@ -132,19 +132,20 @@ graph TD ### Key Components -- **[Frontend](./frontend/README.md)** +- **[Frontend](./app/README.md)** + - React-based web interface - Built with RSBuild and Tailwind CSS - Handles user interactions and submissions - - See [Frontend README](./frontend/README.md) for detailed documentation + - See [Frontend README](./app/README.md) for detailed documentation -- **[Backend](./backend/README.md)** +- **[Backend](./api/README.md)** - Node.js runtime with Hono.js framework - Plugin-based architecture with module federation - Service-oriented design with clear boundaries - Twitter bot functionality - API endpoints for frontend - - See [Backend README](./backend/README.md) for detailed documentation + - See [Backend README](./api/README.md) for detailed documentation ### Monorepo Overview diff --git a/backend/.env.example b/apps/api/.env.example similarity index 94% rename from backend/.env.example rename to apps/api/.env.example index 00f45041..728a3171 100644 --- a/backend/.env.example +++ b/apps/api/.env.example @@ -7,6 +7,7 @@ TWITTER_2FA_SECRET=your_twitter_2fa # Environment NODE_ENV=development DATABASE_URL=postgresql://postgres:postgres@postgres_dev:5432/curatedotfun # Configured in docker-compose +JWT_SECRET=your_jwt_secret # CORS Configuration ALLOWED_ORIGINS=https://example.com,https://api.example.com diff --git a/backend/.env.test b/apps/api/.env.test similarity index 100% rename from backend/.env.test rename to apps/api/.env.test diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile new file mode 100644 index 00000000..0eda951d --- /dev/null +++ b/apps/api/Dockerfile @@ -0,0 +1,70 @@ +# Base stage with common dependencies +FROM node:18-alpine AS base + +# Install pnpm and turbo +RUN npm install -g pnpm turbo + +# Pruner stage: Creates a pruned monorepo subset +FROM base AS pruner +WORKDIR /app + +# COPY the entire monorepo context. Docker build context should be the monorepo root. +COPY . . + +# Disable telemetry and prune the monorepo to include only what's needed +RUN turbo telemetry disable +# Prune for backend and its direct workspace dependencies (shared-db, types, utils) +RUN turbo prune --scope=@curatedotfun/api --scope=@curatedotfun/shared-db --scope=@curatedotfun/types --scope=@curatedotfun/utils --docker + +# Builder stage: Installs all dependencies and builds the application +FROM base AS builder +WORKDIR /app + +# Copy pruned manifests and lockfile +COPY --from=pruner /app/out/full/ . +COPY --from=pruner /app/out/json/ . +COPY --from=pruner /app/out/pnpm-lock.yaml ./pnpm-lock.yaml + +COPY --from=pruner /app/turbo.json ./turbo.json +COPY --from=pruner /app/pnpm-workspace.yaml ./pnpm-workspace.yaml +COPY --from=pruner /app/tsconfig.json ./tsconfig.json + +# Install ALL dependencies for the pruned monorepo subset (including devDependencies for build processes) +RUN pnpm install --frozen-lockfile + +# Copy the full source code of the pruned monorepo subset +COPY --from=pruner /app/out/full/ . + +# Build ONLY the backend application +ENV NODE_ENV="production" +RUN pnpm run build --filter=@curatedotfun/api + +# Production stage: Minimal image for running the backend +FROM node:18-alpine AS production +WORKDIR /app + +# Create a non-root user for security +RUN addgroup -S app && adduser -S app -G app + +# Copy the production-ready code from the builder stage. +COPY --from=builder --chown=app:app /app/apps/api ./apps/api +COPY --from=builder --chown=app:app /app/packages/shared-db ./packages/shared-db +COPY --from=builder --chown=app:app /app/packages/utils ./packages/utils + +# Copy the node_modules directory from the builder stage. +COPY --from=builder --chown=app:app /app/node_modules ./node_modules +COPY --from=builder --chown=app:app /app/package.json ./package.json +COPY --from=builder --chown=app:app /app/pnpm-lock.yaml ./pnpm-lock.yaml +COPY --from=builder --chown=app:app /app/pnpm-workspace.yaml ./pnpm-workspace.yaml + +# Use the non-root user +USER app + +# Expose the port +EXPOSE 3000 + +# Set the final working directory to the backend application's root +WORKDIR /app/apps/api + +# Start the application. +CMD ["node", "dist/main.js"] diff --git a/backend/LICENSE b/apps/api/LICENSE similarity index 100% rename from backend/LICENSE rename to apps/api/LICENSE diff --git a/backend/README.md b/apps/api/README.md similarity index 86% rename from backend/README.md rename to apps/api/README.md index bda49f30..98e7ae5e 100644 --- a/backend/README.md +++ b/apps/api/README.md @@ -5,7 +5,7 @@
-

curate.fun backend

+

api.curate.fun

Node.js/Hono.js backend service for the curate.fun platform @@ -50,7 +50,7 @@ graph TD Services --> DistributionService["Distribution Service"] Services --> ConfigService["Configuration Service"] Services --> PluginLoader["Plugin Loader Service"] - + style Server color:white style Services color:white style SubmissionService color:white @@ -173,31 +173,6 @@ Plugins can extend the platform in various ways: The plugin system provides a standardized interface with type safety and comprehensive testing support. -## Database Backup (Temporary) - -AWS has been configured inside of the container, in order to take manual back-ups to Tigris object storage. These backups can be installed and replace .db/submissions.sqlite for local development, or for testing migration scripts. - -1. SSH into container - -```bash -fly ssh console -``` - -2. Export a backup, and then gzip it - -```bash -litefs export -name db ./backups/MONTH-DAY -gzip ./backups MONTH-DAY -``` - -3. Save to S3 bucket (environment is preconfigured with S3 secrets) - -```bash -aws s3 cp ./MONTH-DAY.gz s3://curatedotfun-backups/MONTH-DAY.gz --endpoint-url https://fly.storage.tigris.dev -``` - -4. Download from Tigris, unzip, and replace .db/submissions.sqlite -

=10.0.0" } + + "@drizzle-team/brocli@0.10.2": + resolution: + { + integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==, + } + + "@esbuild-kit/core-utils@3.3.2": + resolution: + { + integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==, + } + deprecated: "Merged into tsx: https://tsx.is" + + "@esbuild-kit/esm-loader@2.6.5": + resolution: + { + integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==, + } + deprecated: "Merged into tsx: https://tsx.is" + + "@esbuild/aix-ppc64@0.19.12": + resolution: + { + integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==, + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [aix] + + "@esbuild/android-arm64@0.17.19": + resolution: + { + integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + + "@esbuild/android-arm64@0.18.20": + resolution: + { + integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + + "@esbuild/android-arm64@0.19.12": + resolution: + { + integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + + "@esbuild/android-arm@0.17.19": + resolution: + { + integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + + "@esbuild/android-arm@0.18.20": + resolution: + { + integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + + "@esbuild/android-arm@0.19.12": + resolution: + { + integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + + "@esbuild/android-x64@0.17.19": + resolution: + { + integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [android] + + "@esbuild/android-x64@0.18.20": + resolution: + { + integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [android] + + "@esbuild/android-x64@0.19.12": + resolution: + { + integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [android] + + "@esbuild/darwin-arm64@0.17.19": + resolution: + { + integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] + + "@esbuild/darwin-arm64@0.18.20": + resolution: + { + integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] + + "@esbuild/darwin-arm64@0.19.12": + resolution: + { + integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] + + "@esbuild/darwin-x64@0.17.19": + resolution: + { + integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + + "@esbuild/darwin-x64@0.18.20": + resolution: + { + integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + + "@esbuild/darwin-x64@0.19.12": + resolution: + { + integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + + "@esbuild/freebsd-arm64@0.17.19": + resolution: + { + integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + + "@esbuild/freebsd-arm64@0.18.20": + resolution: + { + integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + + "@esbuild/freebsd-arm64@0.19.12": + resolution: + { + integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + + "@esbuild/freebsd-x64@0.17.19": + resolution: + { + integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + + "@esbuild/freebsd-x64@0.18.20": + resolution: + { + integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + + "@esbuild/freebsd-x64@0.19.12": + resolution: + { + integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + + "@esbuild/linux-arm64@0.17.19": + resolution: + { + integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + + "@esbuild/linux-arm64@0.18.20": + resolution: + { + integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + + "@esbuild/linux-arm64@0.19.12": + resolution: + { + integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + + "@esbuild/linux-arm@0.17.19": + resolution: + { + integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + + "@esbuild/linux-arm@0.18.20": + resolution: + { + integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + + "@esbuild/linux-arm@0.19.12": + resolution: + { + integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + + "@esbuild/linux-ia32@0.17.19": + resolution: + { + integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + + "@esbuild/linux-ia32@0.18.20": + resolution: + { + integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + + "@esbuild/linux-ia32@0.19.12": + resolution: + { + integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + + "@esbuild/linux-loong64@0.17.19": + resolution: + { + integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==, + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + + "@esbuild/linux-loong64@0.18.20": + resolution: + { + integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + + "@esbuild/linux-loong64@0.19.12": + resolution: + { + integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==, + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + + "@esbuild/linux-mips64el@0.17.19": + resolution: + { + integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==, + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + + "@esbuild/linux-mips64el@0.18.20": + resolution: + { + integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + + "@esbuild/linux-mips64el@0.19.12": + resolution: + { + integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==, + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + + "@esbuild/linux-ppc64@0.17.19": + resolution: + { + integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==, + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + + "@esbuild/linux-ppc64@0.18.20": + resolution: + { + integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + + "@esbuild/linux-ppc64@0.19.12": + resolution: + { + integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==, + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + + "@esbuild/linux-riscv64@0.17.19": + resolution: + { + integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==, + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + + "@esbuild/linux-riscv64@0.18.20": + resolution: + { + integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + + "@esbuild/linux-riscv64@0.19.12": + resolution: + { + integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==, + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + + "@esbuild/linux-s390x@0.17.19": + resolution: + { + integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==, + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + + "@esbuild/linux-s390x@0.18.20": + resolution: + { + integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + + "@esbuild/linux-s390x@0.19.12": + resolution: + { + integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==, + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + + "@esbuild/linux-x64@0.17.19": + resolution: + { + integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + + "@esbuild/linux-x64@0.18.20": + resolution: + { + integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + + "@esbuild/linux-x64@0.19.12": + resolution: + { + integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + + "@esbuild/netbsd-x64@0.17.19": + resolution: + { + integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + + "@esbuild/netbsd-x64@0.18.20": + resolution: + { + integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + + "@esbuild/netbsd-x64@0.19.12": + resolution: + { + integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + + "@esbuild/openbsd-x64@0.17.19": + resolution: + { + integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + + "@esbuild/openbsd-x64@0.18.20": + resolution: + { + integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + + "@esbuild/openbsd-x64@0.19.12": + resolution: + { + integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + + "@esbuild/sunos-x64@0.17.19": + resolution: + { + integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + + "@esbuild/sunos-x64@0.18.20": + resolution: + { + integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + + "@esbuild/sunos-x64@0.19.12": + resolution: + { + integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + + "@esbuild/win32-arm64@0.17.19": + resolution: + { + integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + + "@esbuild/win32-arm64@0.18.20": + resolution: + { + integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + + "@esbuild/win32-arm64@0.19.12": + resolution: + { + integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + + "@esbuild/win32-ia32@0.17.19": + resolution: + { + integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + + "@esbuild/win32-ia32@0.18.20": + resolution: + { + integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + + "@esbuild/win32-ia32@0.19.12": + resolution: + { + integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + + "@esbuild/win32-x64@0.17.19": + resolution: + { + integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + + "@esbuild/win32-x64@0.18.20": + resolution: + { + integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + + "@esbuild/win32-x64@0.19.12": + resolution: + { + integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + + "@hapi/hoek@9.3.0": + resolution: + { + integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==, + } + + "@hapi/topo@5.1.0": + resolution: + { + integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==, + } + + "@hono/node-server@1.14.1": + resolution: + { + integrity: sha512-vmbuM+HPinjWzPe7FFPWMMQMsbKE9gDPhaH0FFdqbGpkT5lp++tcWDTxwBl5EgS5y6JVgIaCdjeHRfQ4XRBRjQ==, + } + engines: { node: ">=18.14.1" } + peerDependencies: + hono: ^4 + + "@hono/zod-openapi@0.9.10": + resolution: + { + integrity: sha512-v/b/z0qPxDo952gjRyhJ0n9ifbPoIluR2KmXDL20np0hj99+XvakoIHK5/T/3+hUmXlTj1Kn3TiGsSV6hwZesg==, + } + engines: { node: ">=16.0.0" } + peerDependencies: + hono: ">=3.11.3" + zod: 3.* + + "@hono/zod-validator@0.2.1": + resolution: + { + integrity: sha512-HFoxln7Q6JsE64qz2WBS28SD33UB2alp3aRKmcWnNLDzEL1BLsWfbdX6e1HIiUprHYTIXf5y7ax8eYidKUwyaA==, + } + peerDependencies: + hono: ">=3.9.0" + zod: ^3.19.1 + + "@hono/zod-validator@0.5.0": + resolution: + { + integrity: sha512-ds5bW6DCgAnNHP33E3ieSbaZFd5dkV52ZjyaXtGoR06APFrCtzAsKZxTHwOrJNBdXsi0e5wNwo5L4nVEVnJUdg==, + } + peerDependencies: + hono: ">=3.9.0" + zod: ^3.19.1 + + "@isaacs/cliui@8.0.2": + resolution: + { + integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, + } + engines: { node: ">=12" } + + "@jridgewell/gen-mapping@0.3.8": + resolution: + { + integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==, + } + engines: { node: ">=6.0.0" } + + "@jridgewell/resolve-uri@3.1.2": + resolution: + { + integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, + } + engines: { node: ">=6.0.0" } + + "@jridgewell/set-array@1.2.1": + resolution: + { + integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, + } + engines: { node: ">=6.0.0" } + + "@jridgewell/source-map@0.3.6": + resolution: + { + integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==, + } + + "@jridgewell/sourcemap-codec@1.5.0": + resolution: + { + integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==, + } + + "@jridgewell/trace-mapping@0.3.25": + resolution: + { + integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, + } + + "@jsonjoy.com/base64@1.1.2": + resolution: + { + integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==, + } + engines: { node: ">=10.0" } + peerDependencies: + tslib: "2" + + "@jsonjoy.com/json-pack@1.2.0": + resolution: + { + integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==, + } + engines: { node: ">=10.0" } + peerDependencies: + tslib: "2" + + "@jsonjoy.com/util@1.6.0": + resolution: + { + integrity: sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==, + } + engines: { node: ">=10.0" } + peerDependencies: + tslib: "2" + + "@leichtgewicht/ip-codec@2.0.5": + resolution: + { + integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==, + } + + "@modern-js/node-bundle-require@2.65.1": + resolution: + { + integrity: sha512-XpEkciVEfDbkkLUI662ZFlI9tXsUQtLXk4NRJDBGosNnk9uL2XszmC8sKsdCSLK8AYuPW2w6MTVWuJsOR0EU8A==, + } + + "@modern-js/utils@2.65.1": + resolution: + { + integrity: sha512-HrChf19F+6nALo5XPra8ycjhXGQfGi23+S7Y2FLfTKe8vaNnky8duT/XvRWpbS4pp3SQj8ryO8m/qWSsJ1Rogw==, + } + + "@module-federation/bridge-react-webpack-plugin@0.13.1": + resolution: + { + integrity: sha512-3RgGd8KcRw5vibnxWa1NUWwfb0tKwn8OvHeQ4GFKzMvDLm+QpCgQd9LeTEBP38wZgGXVtIJR3y5FPnufWswFKw==, + } + + "@module-federation/cli@0.13.1": + resolution: + { + integrity: sha512-ej7eZTVUiRMor37pkl2y3hbXwcaNvPgbZJVO+hb2c7cKBjWto7AndgR5qcKpcXXXlhbGwtnI+VrgldruKC+AqQ==, + } + engines: { node: ">=16.0.0" } + hasBin: true + + "@module-federation/data-prefetch@0.13.1": + resolution: + { + integrity: sha512-hj3R72rRyune4fb4V4OFmo1Rfa9T9u0so2Q4vt69frPc2NV2FPPJkIvHGs/geGTLOgt4nn7OH1/ukmR3wWvSuA==, + } + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + + "@module-federation/dts-plugin@0.13.1": + resolution: + { + integrity: sha512-PQMs57h9s5pCkLWZ0IyDGCcac4VZ+GgJE40pAWrOQ+/AgTC+WFyAT16M7PsRENS57Qed4wWQwgfOjS9zmfxKJA==, + } + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ">=1.0.24" + peerDependenciesMeta: + vue-tsc: + optional: true + + "@module-federation/enhanced@0.13.1": + resolution: + { + integrity: sha512-jbbk68RnvNmusGGcXNXVDJAzJOFB/hV+RVV2wWNWmBOVkDZPiWj7aFb0cJAwc9EYZbPel3QzRitZJ73+SaH1IA==, + } + hasBin: true + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ">=1.0.24" + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + + "@module-federation/error-codes@0.11.4": + resolution: + { + integrity: sha512-WugZdcNbNVTKuxuArGfnRW1R+siNgMBhad451HniyCG+SjlS0HEO9zIDuVP12l3xJsiTHgLqyutYEvunQ5O1aQ==, + } + + "@module-federation/error-codes@0.13.1": + resolution: + { + integrity: sha512-azgGDBnFRfqlivHOl96ZjlFUFlukESz2Rnnz/pINiSqoBBNjUE0fcAZP4X6jgrVITuEg90YkruZa7pW9I3m7Uw==, + } + + "@module-federation/error-codes@0.8.4": + resolution: + { + integrity: sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==, + } + + "@module-federation/inject-external-runtime-core-plugin@0.13.1": + resolution: + { + integrity: sha512-K+ltl2AqVqlsvEds1PffCMLDMlC5lvdkyMXOfcZO6u0O4dZlaTtZbT32NchY7kIEvEsj0wyYhX1i2DnsbHpUBw==, + } + peerDependencies: + "@module-federation/runtime-tools": 0.13.1 + + "@module-federation/managers@0.13.1": + resolution: + { + integrity: sha512-vQMrqSFQxjSuGgByC2wcY7zUTmVfhzCyDpnCCq0PtaozK8DcgwsEMzrAT3dbg8ifGUmse/xiRIbTmS5leKK+UQ==, + } + + "@module-federation/manifest@0.13.1": + resolution: + { + integrity: sha512-XcuFtLycoR0jQj8op+w20V5n459blNBvGXe//AwkEppQERk8SM5kQgIPvOVbZ8zGx7tl/F2HGTDVZlhDiKzIew==, + } + + "@module-federation/node@2.7.2": + resolution: + { + integrity: sha512-NRVF56J0iyWRfCbpW6+HYis2sj8BBNVp8H5jHkIM/NgZt1Ck9Nyd5BVcL/Jys8ku44v8tdDQdnlzl/BjGHp9Yg==, + } + peerDependencies: + next: "*" + react: ^16||^17||^18||^19 + react-dom: ^16||^17||^18||^19 + webpack: ^5.40.0 + peerDependenciesMeta: + next: + optional: true + react: + optional: true + react-dom: + optional: true + + "@module-federation/rspack@0.13.1": + resolution: + { + integrity: sha512-+qz8sW99SYDULajjjn4rSNaI4rogEPVOZsBvT6y0PdfpMD/wZxvh5HlV0u7+5DgWEjgrdm0cJHBHChlIbV/CMQ==, + } + peerDependencies: + "@rspack/core": ">=0.7" + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ">=1.0.24" + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + + "@module-federation/runtime-core@0.11.4": + resolution: + { + integrity: sha512-+n2fWUPj6cCeHXmChZ35RFyNONfBEcNgQ3o7KEmxOBJ6bRh1vr3AO2OPRPYr5WHcvAyjny+l/xhi+sZPNV3uOQ==, + } + + "@module-federation/runtime-core@0.13.1": + resolution: + { + integrity: sha512-TfyKfkSAentKeuvSsAItk8s5tqQSMfIRTPN2e1aoaq/kFhE+7blps719csyWSX5Lg5Es7WXKMsXHy40UgtBtuw==, + } + + "@module-federation/runtime-tools@0.13.1": + resolution: + { + integrity: sha512-GEF1pxqLc80osIMZmE8j9UKZSaTm2hX2lql8tgIH/O9yK4wnF06k6LL5Ah+wJt+oJv6Dj55ri/MoxMP4SXoPNA==, + } + + "@module-federation/runtime-tools@0.8.4": + resolution: + { + integrity: sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==, + } + + "@module-federation/runtime@0.11.4": + resolution: + { + integrity: sha512-pUfhsa3iYoXBV3CsUfBJN04Cvckj9gBbs8+sLsYiWxxU+cJYNiJpco0iKxRX1/60O+RAH8fAaNq5ilz2qc204A==, + } + + "@module-federation/runtime@0.13.1": + resolution: + { + integrity: sha512-ZHnYvBquDm49LiHfv6fgagMo/cVJneijNJzfPh6S0CJrPS2Tay1bnTXzy8VA5sdIrESagYPaskKMGIj7YfnPug==, + } + + "@module-federation/runtime@0.8.4": + resolution: + { + integrity: sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==, + } + + "@module-federation/sdk@0.11.4": + resolution: + { + integrity: sha512-23Poajva/+wye8+66NvEiL/dJDUahOjEgxljLvzmxQXi9x5hdrfJvBDIwLtzyewZ+vA5Nzpwz35sSzEOyPJUqg==, + } + + "@module-federation/sdk@0.13.1": + resolution: + { + integrity: sha512-bmf2FGQ0ymZuxYnw9bIUfhV3y6zDhaqgydEjbl4msObKMLGXZqhse2pTIIxBFpIxR1oONKX/y2FAolDCTlWKiw==, + } + + "@module-federation/sdk@0.8.4": + resolution: + { + integrity: sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==, + } + + "@module-federation/third-party-dts-extractor@0.13.1": + resolution: + { + integrity: sha512-0kWSupoC0aTxFjJZE5TVPNsoZ9kBsZhkvRxFnUW2vDYLgtvgs2dIrDlNlIXYiS/MaQCNHGyvdNepbchKQiwFaw==, + } + + "@module-federation/webpack-bundler-runtime@0.13.1": + resolution: + { + integrity: sha512-QSuSIGa09S8mthbB1L6xERqrz+AzPlHR6D7RwAzssAc+IHf40U6NiTLPzUqp9mmKDhC5Tm0EISU0ZHNeJpnpBQ==, + } + + "@module-federation/webpack-bundler-runtime@0.8.4": + resolution: + { + integrity: sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==, + } + + "@near-js/accounts@1.4.1": + resolution: + { + integrity: sha512-ni3QT9H3NdrbVVKyx56yvz93r89Dvpc/vgVtiIK2OdXjkK6jcj+UKMDRQ6F7rd9qJOInLkHZbVBtcR6j1CXLjw==, + } + + "@near-js/crypto@1.4.2": + resolution: + { + integrity: sha512-GRfchsyfWvSAPA1gI9hYhw5FH94Ac1BUo+Cmp5rSJt/V0K3xVzCWgOQxvv4R3kDnWjaXJEuAmpEEnr4Bp3FWrA==, + } + + "@near-js/keystores-browser@0.2.2": + resolution: + { + integrity: sha512-Pxqm7WGtUu6zj32vGCy9JcEDpZDSB5CCaLQDTQdF3GQyL0flyRv2I/guLAgU5FLoYxU7dJAX9mslJhPW7P2Bfw==, + } + + "@near-js/keystores-node@0.1.2": + resolution: + { + integrity: sha512-MWLvTszZOVziiasqIT/LYNhUyWqOJjDGlsthOsY6dTL4ZcXjjmhmzrbFydIIeQr+CcEl5wukTo68ORI9JrHl6g==, + } + + "@near-js/keystores@0.2.2": + resolution: + { + integrity: sha512-DLhi/3a4qJUY+wgphw2Jl4S+L0AKsUYm1mtU0WxKYV5OBwjOXvbGrXNfdkheYkfh3nHwrQgtjvtszX6LrRXLLw==, + } + + "@near-js/providers@1.0.3": + resolution: + { + integrity: sha512-VJMboL14R/+MGKnlhhE3UPXCGYvMd1PpvF9OqZ9yBbulV7QVSIdTMfY4U1NnDfmUC2S3/rhAEr+3rMrIcNS7Fg==, + } + + "@near-js/signers@0.2.2": + resolution: + { + integrity: sha512-M6ib+af9zXAPRCjH2RyIS0+RhCmd9gxzCeIkQ+I2A3zjgGiEDkBZbYso9aKj8Zh2lPKKSH7h+u8JGymMOSwgyw==, + } + + "@near-js/transactions@1.3.3": + resolution: + { + integrity: sha512-1AXD+HuxlxYQmRTLQlkVmH+RAmV3HwkAT8dyZDu+I2fK/Ec9BQHXakOJUnOBws3ihF+akQhamIBS5T0EXX/Ylw==, + } + + "@near-js/types@0.3.1": + resolution: + { + integrity: sha512-8qIA7ynAEAuVFNAQc0cqz2xRbfyJH3PaAG5J2MgPPhD18lu/tCGd6pzYg45hjhtiJJRFDRjh/FUWKS+ZiIIxUw==, + } + + "@near-js/utils@1.1.0": + resolution: + { + integrity: sha512-5XWRq7xpu8Wud9pRXe2U347KXyi0mXofedUY2DQ9TaqiZUcMIaN9xj7DbCs2v6dws3pJyYrT1KWxeNp5fSaY3w==, + } + + "@near-js/wallet-account@1.3.3": + resolution: + { + integrity: sha512-GDzg/Kz0GBYF7tQfyQQQZ3vviwV8yD+8F2lYDzsWJiqIln7R1ov0zaXN4Tii86TeS21KPn2hHAsVu3Y4txa8OQ==, + } + + "@noble/curves@1.8.1": + resolution: + { + integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==, + } + engines: { node: ^14.21.3 || >=16 } + + "@noble/hashes@1.3.3": + resolution: + { + integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==, + } + engines: { node: ">= 16" } + + "@noble/hashes@1.7.1": + resolution: + { + integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==, + } + engines: { node: ^14.21.3 || >=16 } + + "@notionhq/client@2.3.0": + resolution: + { + integrity: sha512-l7WqTCpQqC+HibkB9chghONQTYcxNQT0/rOJemBfmuKQRTu2vuV8B3yA395iKaUdDo7HI+0KvQaz9687Xskzkw==, + } + engines: { node: ">=12" } + + "@petamoriken/float16@3.9.2": + resolution: + { + integrity: sha512-VgffxawQde93xKxT3qap3OH+meZf7VaSB5Sqd4Rqc+FP5alWbpOyan/7tRbOAvynjpG3GpdtAuGU/NdhQpmrog==, + } + + "@pkgjs/parseargs@0.11.0": + resolution: + { + integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, + } + engines: { node: ">=14" } + + "@polka/url@1.0.0-next.29": + resolution: + { + integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==, + } + + "@rspack/binding-darwin-arm64@1.2.8": + resolution: + { + integrity: sha512-bDlrlroY3iMlzna/3i1gD6eRmhJW2zRyC3Ov6aR1micshVQ9RteigYZWkjZuQfyC5Z8dCcLUQJVojz+pqp0JXg==, + } + cpu: [arm64] + os: [darwin] + + "@rspack/binding-darwin-x64@1.2.8": + resolution: + { + integrity: sha512-0/qOVbMuzZ+WbtDa4TbH46R4vph/W6MHcXbrXDO+vpdTMFDVJ64DnZXT7aqvGcY+7vTCIGm0GT+6ooR4KaIX8A==, + } + cpu: [x64] + os: [darwin] + + "@rspack/binding-linux-arm64-gnu@1.2.8": + resolution: + { + integrity: sha512-En/SMl45s19iUVb1/ZDFQvFDxIjnlfk7yqV3drMWWAL5HSgksNejaTIFTO52aoohIBbmwuk5wSGcbU0G0IFiPg==, + } + cpu: [arm64] + os: [linux] + + "@rspack/binding-linux-arm64-musl@1.2.8": + resolution: + { + integrity: sha512-N1oZsXfJ9VLLcK7p1PS65cxLYQCZ7iqHW2OP6Ew2+hlz/d1hzngxgzrtZMCXFOHXDvTzVu5ff6jGS2v7+zv2tA==, + } + cpu: [arm64] + os: [linux] + + "@rspack/binding-linux-x64-gnu@1.2.8": + resolution: + { + integrity: sha512-BdPaepoLKuaVwip4QK/nGqNi1xpbCWSxiycPbKRrGqKgt/QGihxxFgiqr4EpWQVIJNIMy4nCsg4arO0+H1KWGQ==, + } + cpu: [x64] + os: [linux] + + "@rspack/binding-linux-x64-musl@1.2.8": + resolution: + { + integrity: sha512-GFv0Bod268OcXIcjeLoPlK0oz8rClEIxIRFkz+ejhbvfCwRJ+Fd+EKaaKQTBfZQujPqc0h2GctIF25nN5pFTmA==, + } + cpu: [x64] + os: [linux] + + "@rspack/binding-win32-arm64-msvc@1.2.8": + resolution: + { + integrity: sha512-aEU+uJdbvJJGrzzAsjbjrPeNbG/bcG8JoXK2kSsUB+/sWHTIkHX0AQ3oX3aV/lcLKgZWrUxLAfLoCXEnIHMEyQ==, + } + cpu: [arm64] + os: [win32] + + "@rspack/binding-win32-ia32-msvc@1.2.8": + resolution: + { + integrity: sha512-GHYzNOSoiLyG9elLTmMqADJMQzjll+co4irp5AgZ+KHG9EVq0qEHxDqDIJxZnUA15U8JDvCgo6YAo3T0BFEL0Q==, + } + cpu: [ia32] + os: [win32] + + "@rspack/binding-win32-x64-msvc@1.2.8": + resolution: + { + integrity: sha512-EigKLhKLH1kfv1e/ZgXuSKlIjkbyneJtiLbNDz7EeEVFGV1XMM6bsCea1sb2WOxsPYiOX4Q5JmR1j1KGrZS/LA==, + } + cpu: [x64] + os: [win32] + + "@rspack/binding@1.2.8": + resolution: + { + integrity: sha512-T3FMB3N9P1AbSAryfkSRJkPtmeSYs/Gj9zUZoPz1ckPEIcWZmpUOQbJylldjbw5waxtCL1haHNbi0pcSvxiaJw==, + } + + "@rspack/cli@1.2.8": + resolution: + { + integrity: sha512-xPNLJCnQt8B1j7i4T67MmVzYxJfx0c+gEhHozfVfpg/2PwuR9PBMnwo+53wJkUJk+ctJ+eMLQomDZymq4j26nA==, + } + hasBin: true + peerDependencies: + "@rspack/core": ^1.0.0-alpha || ^1.x + "@rspack/tracing": ^1.x + peerDependenciesMeta: + "@rspack/tracing": + optional: true + + "@rspack/core@1.2.8": + resolution: + { + integrity: sha512-ppj3uQQtkhgrYDLrUqb33YbpNEZCpAudpfVuOHGsvUrAnu1PijbfJJymoA5ZvUhM+HNMvPI5D1ie97TXyb0UVg==, + } + engines: { node: ">=16.0.0" } + peerDependencies: + "@rspack/tracing": ^1.x + "@swc/helpers": ">=0.5.1" + peerDependenciesMeta: + "@rspack/tracing": + optional: true + "@swc/helpers": + optional: true + + "@rspack/dev-server@1.0.10": + resolution: + { + integrity: sha512-iDsEtP0jNHRm4LJxL00QFTlOuqkdxIFxnd69h0KrFadmtxAWiDLIe4vYdZXWF74w4MezsJFx6dB2nUM/Ok8utA==, + } + engines: { node: ">= 18.12.0" } + peerDependencies: + "@rspack/core": "*" + + "@rspack/lite-tapable@1.0.1": + resolution: + { + integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==, + } + engines: { node: ">=16.0.0" } + + "@scure/base@1.2.5": + resolution: + { + integrity: sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw==, + } + + "@sideway/address@4.1.5": + resolution: + { + integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==, + } + + "@sideway/formula@3.0.1": + resolution: + { + integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==, + } + + "@sideway/pinpoint@2.0.0": + resolution: + { + integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==, + } + + "@sinclair/typebox@0.32.35": + resolution: + { + integrity: sha512-Ul3YyOTU++to8cgNkttakC0dWvpERr6RYoHO2W47DLbFvrwBDJUY31B1sImH6JZSYc4Kt4PyHtoPNu+vL2r2dA==, + } + + "@swc/helpers@0.5.13": + resolution: + { + integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==, + } + + "@types/async-retry@1.4.9": + resolution: + { + integrity: sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==, + } + + "@types/body-parser@1.19.5": + resolution: + { + integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==, + } + + "@types/bonjour@3.5.13": + resolution: + { + integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==, + } + + "@types/connect-history-api-fallback@1.5.4": + resolution: + { + integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==, + } + + "@types/connect@3.4.38": + resolution: + { + integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==, + } + + "@types/eslint-scope@3.7.7": + resolution: + { + integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==, + } + + "@types/eslint@9.6.1": + resolution: + { + integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==, + } + + "@types/estree@1.0.7": + resolution: + { + integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==, + } + + "@types/express-serve-static-core@4.19.6": + resolution: + { + integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==, + } + + "@types/express-serve-static-core@5.0.6": + resolution: + { + integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==, + } + + "@types/express@4.17.21": + resolution: + { + integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==, + } + + "@types/http-errors@2.0.4": + resolution: + { + integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==, + } + + "@types/http-proxy@1.17.16": + resolution: + { + integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==, + } + + "@types/json-schema@7.0.15": + resolution: + { + integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, + } + + "@types/lodash@4.17.16": + resolution: + { + integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==, + } + + "@types/mime@1.3.5": + resolution: + { + integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==, + } + + "@types/node-fetch@2.6.12": + resolution: + { + integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==, + } + + "@types/node-forge@1.3.11": + resolution: + { + integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==, + } + + "@types/node@22.15.17": + resolution: + { + integrity: sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==, + } + + "@types/pg@8.15.1": + resolution: + { + integrity: sha512-YKHrkGWBX5+ivzvOQ66I0fdqsQTsvxqM0AGP2i0XrVZ9DP5VA/deEbTf7VuLPGpY7fJB9uGbkZ6KjVhuHcrTkQ==, + } + + "@types/qs@6.9.18": + resolution: + { + integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==, + } + + "@types/range-parser@1.2.7": + resolution: + { + integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==, + } + + "@types/retry@0.12.0": + resolution: + { + integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==, + } + + "@types/retry@0.12.2": + resolution: + { + integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==, + } + + "@types/retry@0.12.5": + resolution: + { + integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==, + } + + "@types/semver@7.5.8": + resolution: + { + integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==, + } + + "@types/send@0.17.4": + resolution: + { + integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==, + } + + "@types/serve-index@1.9.4": + resolution: + { + integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==, + } + + "@types/serve-static@1.15.7": + resolution: + { + integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==, + } + + "@types/sockjs@0.3.36": + resolution: + { + integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==, + } + + "@types/ws@8.18.1": + resolution: + { + integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==, + } + + "@webassemblyjs/ast@1.14.1": + resolution: + { + integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==, + } + + "@webassemblyjs/floating-point-hex-parser@1.13.2": + resolution: + { + integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==, + } + + "@webassemblyjs/helper-api-error@1.13.2": + resolution: + { + integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==, + } + + "@webassemblyjs/helper-buffer@1.14.1": + resolution: + { + integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==, + } + + "@webassemblyjs/helper-numbers@1.13.2": + resolution: + { + integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==, + } + + "@webassemblyjs/helper-wasm-bytecode@1.13.2": + resolution: + { + integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==, + } + + "@webassemblyjs/helper-wasm-section@1.14.1": + resolution: + { + integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==, + } + + "@webassemblyjs/ieee754@1.13.2": + resolution: + { + integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==, + } + + "@webassemblyjs/leb128@1.13.2": + resolution: + { + integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==, + } + + "@webassemblyjs/utf8@1.13.2": + resolution: + { + integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==, + } + + "@webassemblyjs/wasm-edit@1.14.1": + resolution: + { + integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==, + } + + "@webassemblyjs/wasm-gen@1.14.1": + resolution: + { + integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==, + } + + "@webassemblyjs/wasm-opt@1.14.1": + resolution: + { + integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==, + } + + "@webassemblyjs/wasm-parser@1.14.1": + resolution: + { + integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==, + } + + "@webassemblyjs/wast-printer@1.14.1": + resolution: + { + integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==, + } + + "@xtuc/ieee754@1.2.0": + resolution: + { + integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==, + } + + "@xtuc/long@4.2.2": + resolution: + { + integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==, + } + + accepts@1.3.8: + resolution: + { + integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, + } + engines: { node: ">= 0.6" } + + acorn-walk@8.3.4: + resolution: + { + integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==, + } + engines: { node: ">=0.4.0" } + + acorn@8.14.1: + resolution: + { + integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==, + } + engines: { node: ">=0.4.0" } + hasBin: true + + adm-zip@0.5.16: + resolution: + { + integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==, + } + engines: { node: ">=12.0" } + + agent-twitter-client@0.0.16: + resolution: + { + integrity: sha512-Clgb/N2LXoGMlId6GDUaaR05eJ0PqSifM6wikl/FiQ2+3+6I2ZhZB7KRulc8R4xvYFe6h0wNWe6FZiF48r124w==, + } + + ajv-formats@2.1.1: + resolution: + { + integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==, + } + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@5.1.0: + resolution: + { + integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==, + } + peerDependencies: + ajv: ^8.8.2 + + ajv@8.17.1: + resolution: + { + integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==, + } + + ansi-colors@4.1.3: + resolution: + { + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, + } + engines: { node: ">=6" } + + ansi-html-community@0.0.8: + resolution: + { + integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==, + } + engines: { "0": node >= 0.8.0 } + hasBin: true + + ansi-regex@5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: ">=8" } + + ansi-regex@6.1.0: + resolution: + { + integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==, + } + engines: { node: ">=12" } + + ansi-styles@4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: ">=8" } + + ansi-styles@6.2.1: + resolution: + { + integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, + } + engines: { node: ">=12" } + + anymatch@3.1.3: + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, + } + engines: { node: ">= 8" } + + array-flatten@1.1.1: + resolution: + { + integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==, + } + + async-retry@1.3.3: + resolution: + { + integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==, + } + + asynckit@0.4.0: + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + } + + at-least-node@1.0.0: + resolution: + { + integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==, + } + engines: { node: ">= 4.0.0" } + + atomic-sleep@1.0.0: + resolution: + { + integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==, + } + engines: { node: ">=8.0.0" } + + axios@1.9.0: + resolution: + { + integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==, + } + + balanced-match@1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } + + batch@0.6.1: + resolution: + { + integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==, + } + + binary-extensions@2.3.0: + resolution: + { + integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, + } + engines: { node: ">=8" } + + bn.js@4.12.2: + resolution: + { + integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==, + } + + body-parser@1.20.3: + resolution: + { + integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==, + } + engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 } + + bonjour-service@1.3.0: + resolution: + { + integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==, + } + + borsh@1.0.0: + resolution: + { + integrity: sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==, + } + + brace-expansion@2.0.1: + resolution: + { + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + } + + braces@3.0.3: + resolution: + { + integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, + } + engines: { node: ">=8" } + + brorand@1.1.0: + resolution: + { + integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==, + } + + browserslist@4.24.5: + resolution: + { + integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + + btoa@1.2.1: + resolution: + { + integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==, + } + engines: { node: ">= 0.4.0" } + hasBin: true + + buffer-from@1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } + + bundle-name@4.1.0: + resolution: + { + integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==, + } + engines: { node: ">=18" } + + bytes@3.1.2: + resolution: + { + integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, + } + engines: { node: ">= 0.8" } + + cache-content-type@1.0.1: + resolution: + { + integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==, + } + engines: { node: ">= 6.0.0" } + + call-bind-apply-helpers@1.0.2: + resolution: + { + integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, + } + engines: { node: ">= 0.4" } + + call-bind@1.0.8: + resolution: + { + integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==, + } + engines: { node: ">= 0.4" } + + call-bound@1.0.4: + resolution: + { + integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, + } + engines: { node: ">= 0.4" } + + caniuse-lite@1.0.30001717: + resolution: + { + integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==, + } + + chalk@3.0.0: + resolution: + { + integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, + } + engines: { node: ">=8" } + + chalk@4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: ">=10" } + + chalk@5.4.1: + resolution: + { + integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==, + } + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + + chokidar@3.6.0: + resolution: + { + integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, + } + engines: { node: ">= 8.10.0" } + + chrome-trace-event@1.0.4: + resolution: + { + integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==, + } + engines: { node: ">=6.0" } + + cli-cursor@5.0.0: + resolution: + { + integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, + } + engines: { node: ">=18" } + + cli-spinners@2.9.2: + resolution: + { + integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, + } + engines: { node: ">=6" } + + cliui@8.0.1: + resolution: + { + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, + } + engines: { node: ">=12" } + + co@4.6.0: + resolution: + { + integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, + } + engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } + + color-convert@2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: ">=7.0.0" } + + color-name@1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } + + colorette@2.0.20: + resolution: + { + integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, + } + + combined-stream@1.0.8: + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + } + engines: { node: ">= 0.8" } + + commander@11.1.0: + resolution: + { + integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, + } + engines: { node: ">=16" } + + commander@2.20.3: + resolution: + { + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, + } + + commander@7.2.0: + resolution: + { + integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, + } + engines: { node: ">= 10" } + + compressible@2.0.18: + resolution: + { + integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, + } + engines: { node: ">= 0.6" } + + compression@1.8.0: + resolution: + { + integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==, + } + engines: { node: ">= 0.8.0" } + + concurrently@9.1.2: + resolution: + { + integrity: sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==, + } + engines: { node: ">=18" } + hasBin: true + + connect-history-api-fallback@2.0.0: + resolution: + { + integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==, + } + engines: { node: ">=0.8" } + + content-disposition@0.5.4: + resolution: + { + integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==, + } + engines: { node: ">= 0.6" } + + content-type@1.0.5: + resolution: + { + integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, + } + engines: { node: ">= 0.6" } + + cookie-signature@1.0.6: + resolution: + { + integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==, + } + + cookie@0.7.1: + resolution: + { + integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==, + } + engines: { node: ">= 0.6" } + + cookies@0.9.1: + resolution: + { + integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==, + } + engines: { node: ">= 0.8" } + + core-util-is@1.0.3: + resolution: + { + integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, + } + + cron-parser@4.9.0: + resolution: + { + integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==, + } + engines: { node: ">=12.0.0" } + + cross-spawn@7.0.6: + resolution: + { + integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, + } + engines: { node: ">= 8" } + + data-uri-to-buffer@4.0.1: + resolution: + { + integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==, + } + engines: { node: ">= 12" } + + date-format@4.0.14: + resolution: + { + integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==, + } + engines: { node: ">=4.0" } + + dateformat@4.6.3: + resolution: + { + integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==, + } + + debug@2.6.9: + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: + { + integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + + deep-equal@1.0.1: + resolution: + { + integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==, + } + + default-browser-id@5.0.0: + resolution: + { + integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==, + } + engines: { node: ">=18" } + + default-browser@5.2.1: + resolution: + { + integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==, + } + engines: { node: ">=18" } + + default-gateway@6.0.3: + resolution: + { + integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==, + } + engines: { node: ">= 10" } + + define-data-property@1.1.4: + resolution: + { + integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, + } + engines: { node: ">= 0.4" } + + define-lazy-prop@3.0.0: + resolution: + { + integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, + } + engines: { node: ">=12" } + + delayed-stream@1.0.0: + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + } + engines: { node: ">=0.4.0" } + + delegates@1.0.0: + resolution: + { + integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==, + } + + depd@1.1.2: + resolution: + { + integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==, + } + engines: { node: ">= 0.6" } + + depd@2.0.0: + resolution: + { + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, + } + engines: { node: ">= 0.8" } + + destroy@1.2.0: + resolution: + { + integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, + } + engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 } + + detect-node@2.1.0: + resolution: + { + integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==, + } + + dns-packet@5.6.1: + resolution: + { + integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==, + } + engines: { node: ">=6" } + + dotenv@16.5.0: + resolution: + { + integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==, + } + engines: { node: ">=12" } + + drizzle-kit@0.30.6: + resolution: + { + integrity: sha512-U4wWit0fyZuGuP7iNmRleQyK2V8wCuv57vf5l3MnG4z4fzNTjY/U13M8owyQ5RavqvqxBifWORaR3wIUzlN64g==, + } + hasBin: true + + drizzle-orm@0.40.1: + resolution: + { + integrity: sha512-aPNhtiJiPfm3qxz1czrnIDkfvkSdKGXYeZkpG55NPTVI186LmK2fBLMi4dsHpPHlJrZeQ92D322YFPHADBALew==, + } + peerDependencies: + "@aws-sdk/client-rds-data": ">=3" + "@cloudflare/workers-types": ">=4" + "@electric-sql/pglite": ">=0.2.0" + "@libsql/client": ">=0.10.0" + "@libsql/client-wasm": ">=0.10.0" + "@neondatabase/serverless": ">=0.10.0" + "@op-engineering/op-sqlite": ">=2" + "@opentelemetry/api": ^1.4.1 + "@planetscale/database": ">=1" + "@prisma/client": "*" + "@tidbcloud/serverless": "*" + "@types/better-sqlite3": "*" + "@types/pg": "*" + "@types/sql.js": "*" + "@vercel/postgres": ">=0.8.0" + "@xata.io/client": "*" + better-sqlite3: ">=7" + bun-types: "*" + expo-sqlite: ">=14.0.0" + gel: ">=2" + knex: "*" + kysely: "*" + mysql2: ">=2" + pg: ">=8" + postgres: ">=3" + prisma: "*" + sql.js: ">=1" + sqlite3: ">=5" + peerDependenciesMeta: + "@aws-sdk/client-rds-data": + optional: true + "@cloudflare/workers-types": + optional: true + "@electric-sql/pglite": + optional: true + "@libsql/client": + optional: true + "@libsql/client-wasm": + optional: true + "@neondatabase/serverless": + optional: true + "@op-engineering/op-sqlite": + optional: true + "@opentelemetry/api": + optional: true + "@planetscale/database": + optional: true + "@prisma/client": + optional: true + "@tidbcloud/serverless": + optional: true + "@types/better-sqlite3": + optional: true + "@types/pg": + optional: true + "@types/sql.js": + optional: true + "@vercel/postgres": + optional: true + "@xata.io/client": + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + gel: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + + drizzle-seed@0.3.1: + resolution: + { + integrity: sha512-F/0lgvfOAsqlYoHM/QAGut4xXIOXoE5VoAdv2FIl7DpGYVXlAzKuJO+IphkKUFK3Dz+rFlOsQLnMNrvoQ0cx7g==, + } + peerDependencies: + drizzle-orm: ">=0.36.4" + peerDependenciesMeta: + drizzle-orm: + optional: true + + drizzle-zod@0.7.1: + resolution: + { + integrity: sha512-nZzALOdz44/AL2U005UlmMqaQ1qe5JfanvLujiTHiiT8+vZJTBFhj3pY4Vk+L6UWyKFfNmLhk602Hn4kCTynKQ==, + } + peerDependencies: + drizzle-orm: ">=0.36.0" + zod: ">=3.0.0" + + dunder-proto@1.0.1: + resolution: + { + integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, + } + engines: { node: ">= 0.4" } + + duplexer@0.1.2: + resolution: + { + integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, + } + + eastasianwidth@0.2.0: + resolution: + { + integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, + } + + ee-first@1.1.1: + resolution: + { + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, + } + + electron-to-chromium@1.5.152: + resolution: + { + integrity: sha512-xBOfg/EBaIlVsHipHl2VdTPJRSvErNUaqW8ejTq5OlOlIYx1wOllCHsAvAIrr55jD1IYEfdR86miUEt8H5IeJg==, + } + + elliptic@6.6.1: + resolution: + { + integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==, + } + + emoji-regex@10.4.0: + resolution: + { + integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==, + } + + emoji-regex@8.0.0: + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } + + emoji-regex@9.2.2: + resolution: + { + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, + } + + encodeurl@1.0.2: + resolution: + { + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, + } + engines: { node: ">= 0.8" } + + encodeurl@2.0.0: + resolution: + { + integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==, + } + engines: { node: ">= 0.8" } + + encoding@0.1.13: + resolution: + { + integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==, + } + + end-of-stream@1.4.4: + resolution: + { + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, + } + + enhanced-resolve@5.18.1: + resolution: + { + integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==, + } + engines: { node: ">=10.13.0" } + + env-paths@3.0.0: + resolution: + { + integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + es-define-property@1.0.1: + resolution: + { + integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, + } + engines: { node: ">= 0.4" } + + es-errors@1.3.0: + resolution: + { + integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, + } + engines: { node: ">= 0.4" } + + es-module-lexer@1.7.0: + resolution: + { + integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==, + } + + es-object-atoms@1.1.1: + resolution: + { + integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, + } + engines: { node: ">= 0.4" } + + es-set-tostringtag@2.1.0: + resolution: + { + integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, + } + engines: { node: ">= 0.4" } + + esbuild-register@3.6.0: + resolution: + { + integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==, + } + peerDependencies: + esbuild: ">=0.12 <1" + + esbuild@0.17.19: + resolution: + { + integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==, + } + engines: { node: ">=12" } + hasBin: true + + esbuild@0.18.20: + resolution: + { + integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==, + } + engines: { node: ">=12" } + hasBin: true + + esbuild@0.19.12: + resolution: + { + integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==, + } + engines: { node: ">=12" } + hasBin: true + + escalade@3.2.0: + resolution: + { + integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, + } + engines: { node: ">=6" } + + escape-html@1.0.3: + resolution: + { + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, + } + + eslint-scope@5.1.1: + resolution: + { + integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, + } + engines: { node: ">=8.0.0" } + + esrecurse@4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + } + engines: { node: ">=4.0" } + + estraverse@4.3.0: + resolution: + { + integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, + } + engines: { node: ">=4.0" } + + estraverse@5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + } + engines: { node: ">=4.0" } + + etag@1.8.1: + resolution: + { + integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, + } + engines: { node: ">= 0.6" } + + eventemitter3@4.0.7: + resolution: + { + integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, + } + + events@3.3.0: + resolution: + { + integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, + } + engines: { node: ">=0.8.x" } + + execa@5.1.1: + resolution: + { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, + } + engines: { node: ">=10" } + + exit-hook@4.0.0: + resolution: + { + integrity: sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==, + } + engines: { node: ">=18" } + + expand-tilde@2.0.2: + resolution: + { + integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==, + } + engines: { node: ">=0.10.0" } + + exponential-backoff@3.1.2: + resolution: + { + integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==, + } + + express@4.21.2: + resolution: + { + integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==, + } + engines: { node: ">= 0.10.0" } + + fast-copy@3.0.2: + resolution: + { + integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==, + } + + fast-deep-equal@3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } + + fast-redact@3.5.0: + resolution: + { + integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==, + } + engines: { node: ">=6" } + + fast-safe-stringify@2.1.1: + resolution: + { + integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==, + } + + fast-uri@3.0.6: + resolution: + { + integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==, + } + + faye-websocket@0.11.4: + resolution: + { + integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==, + } + engines: { node: ">=0.8.0" } + + fetch-blob@3.2.0: + resolution: + { + integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==, + } + engines: { node: ^12.20 || >= 14.13 } + + fill-range@7.1.1: + resolution: + { + integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, + } + engines: { node: ">=8" } + + finalhandler@1.3.1: + resolution: + { + integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==, + } + engines: { node: ">= 0.8" } + + find-file-up@2.0.1: + resolution: + { + integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==, + } + engines: { node: ">=8" } + + find-pkg@2.0.0: + resolution: + { + integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==, + } + engines: { node: ">=8" } + + flatted@3.3.3: + resolution: + { + integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, + } + + follow-redirects@1.15.9: + resolution: + { + integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==, + } + engines: { node: ">=4.0" } + peerDependencies: + debug: "*" + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: + { + integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==, + } + engines: { node: ">=14" } + + form-data@4.0.2: + resolution: + { + integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==, + } + engines: { node: ">= 6" } + + formdata-polyfill@4.0.10: + resolution: + { + integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==, + } + engines: { node: ">=12.20.0" } + + forwarded@0.2.0: + resolution: + { + integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==, + } + engines: { node: ">= 0.6" } + + fresh@0.5.2: + resolution: + { + integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, + } + engines: { node: ">= 0.6" } + + fs-extra@8.1.0: + resolution: + { + integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, + } + engines: { node: ">=6 <7 || >=8" } + + fs-extra@9.1.0: + resolution: + { + integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==, + } + engines: { node: ">=10" } + + fsevents@2.3.3: + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + + function-bind@1.1.2: + resolution: + { + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, + } + + gel@2.1.0: + resolution: + { + integrity: sha512-HCeRqInCt6BjbMmeghJ6BKeYwOj7WJT5Db6IWWAA3IMUUa7or7zJfTUEkUWCxiOtoXnwnm96sFK9Fr47Yh2hOA==, + } + engines: { node: ">= 18.0.0" } + hasBin: true + + generate-function@2.3.1: + resolution: + { + integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==, + } + + generate-object-property@1.2.0: + resolution: + { + integrity: sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==, + } + + get-caller-file@2.0.5: + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + } + engines: { node: 6.* || 8.* || >= 10.* } + + get-east-asian-width@1.3.0: + resolution: + { + integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==, + } + engines: { node: ">=18" } + + get-intrinsic@1.3.0: + resolution: + { + integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, + } + engines: { node: ">= 0.4" } + + get-proto@1.0.1: + resolution: + { + integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, + } + engines: { node: ">= 0.4" } + + get-stream@6.0.1: + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + } + engines: { node: ">=10" } + + get-tsconfig@4.10.0: + resolution: + { + integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==, + } + + glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: ">= 6" } + + glob-to-regexp@0.4.1: + resolution: + { + integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, + } + + glob@10.4.5: + resolution: + { + integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==, + } + hasBin: true + + global-modules@1.0.0: + resolution: + { + integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==, + } + engines: { node: ">=0.10.0" } + + global-prefix@1.0.2: + resolution: + { + integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==, + } + engines: { node: ">=0.10.0" } + + gopd@1.2.0: + resolution: + { + integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, + } + engines: { node: ">= 0.4" } + + graceful-fs@4.2.11: + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + } + + gzip-size@6.0.0: + resolution: + { + integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==, + } + engines: { node: ">=10" } + + handle-thing@2.0.1: + resolution: + { + integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==, + } + + has-flag@4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: ">=8" } + + has-property-descriptors@1.0.2: + resolution: + { + integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, + } + + has-symbols@1.1.0: + resolution: + { + integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, + } + engines: { node: ">= 0.4" } + + has-tostringtag@1.0.2: + resolution: + { + integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, + } + engines: { node: ">= 0.4" } + + hash.js@1.1.7: + resolution: + { + integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==, + } + + hasown@2.0.2: + resolution: + { + integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, + } + engines: { node: ">= 0.4" } + + headers-polyfill@3.3.0: + resolution: + { + integrity: sha512-5e57etwBpNcDc0b6KCVWEh/Ro063OxPvzVimUdM0/tsYM/T7Hfy3kknIGj78SFTOhNd8AZY41U8mOHoO4LzmIQ==, + } + + help-me@5.0.0: + resolution: + { + integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==, + } + + hmac-drbg@1.0.1: + resolution: + { + integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==, + } + + homedir-polyfill@1.0.3: + resolution: + { + integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==, + } + engines: { node: ">=0.10.0" } + + hono@4.7.9: + resolution: + { + integrity: sha512-/EsCoR5h7N4yu01TDu9GMCCJa6ZLk5ZJIWFFGNawAXmd1Tp53+Wir4xm0D2X19bbykWUlzQG0+BvPAji6p9E8Q==, + } + engines: { node: ">=16.9.0" } + + hpack.js@2.1.6: + resolution: + { + integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==, + } + + html-entities@2.6.0: + resolution: + { + integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==, + } + + http-assert@1.5.0: + resolution: + { + integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==, + } + engines: { node: ">= 0.8" } + + http-deceiver@1.2.7: + resolution: + { + integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==, + } + + http-errors@1.6.3: + resolution: + { + integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==, + } + engines: { node: ">= 0.6" } + + http-errors@1.7.2: + resolution: + { + integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==, + } + engines: { node: ">= 0.6" } + + http-errors@1.8.1: + resolution: + { + integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==, + } + engines: { node: ">= 0.6" } + + http-errors@2.0.0: + resolution: + { + integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, + } + engines: { node: ">= 0.8" } + + http-parser-js@0.5.10: + resolution: + { + integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==, + } + + http-proxy-middleware@2.0.9: + resolution: + { + integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==, + } + engines: { node: ">=12.0.0" } + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + + http-proxy@1.18.1: + resolution: + { + integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==, + } + engines: { node: ">=8.0.0" } + + human-signals@2.1.0: + resolution: + { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, + } + engines: { node: ">=10.17.0" } + + hyperdyperid@1.2.0: + resolution: + { + integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==, + } + engines: { node: ">=10.18" } + + iconv-lite@0.4.24: + resolution: + { + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, + } + engines: { node: ">=0.10.0" } + + iconv-lite@0.6.3: + resolution: + { + integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, + } + engines: { node: ">=0.10.0" } + + inherits@2.0.3: + resolution: + { + integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==, + } + + inherits@2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } + + ini@1.3.8: + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, + } + + interpret@3.1.1: + resolution: + { + integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==, + } + engines: { node: ">=10.13.0" } + + ipaddr.js@1.9.1: + resolution: + { + integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==, + } + engines: { node: ">= 0.10" } + + ipaddr.js@2.2.0: + resolution: + { + integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==, + } + engines: { node: ">= 10" } + + is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: ">=8" } + + is-core-module@2.16.1: + resolution: + { + integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==, + } + engines: { node: ">= 0.4" } + + is-docker@3.0.0: + resolution: + { + integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hasBin: true + + is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: ">=0.10.0" } + + is-fullwidth-code-point@3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: ">=8" } + + is-generator-function@1.1.0: + resolution: + { + integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==, + } + engines: { node: ">= 0.4" } + + is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: ">=0.10.0" } + + is-inside-container@1.0.0: + resolution: + { + integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, + } + engines: { node: ">=14.16" } + hasBin: true + + is-interactive@2.0.0: + resolution: + { + integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, + } + engines: { node: ">=12" } + + is-my-ip-valid@1.0.1: + resolution: + { + integrity: sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==, + } + + is-my-json-valid@2.20.6: + resolution: + { + integrity: sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==, + } + + is-network-error@1.1.0: + resolution: + { + integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==, + } + engines: { node: ">=16" } + + is-number@7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: ">=0.12.0" } + + is-plain-obj@3.0.0: + resolution: + { + integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==, + } + engines: { node: ">=10" } + + is-property@1.0.2: + resolution: + { + integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==, + } + + is-regex@1.2.1: + resolution: + { + integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==, + } + engines: { node: ">= 0.4" } + + is-stream@2.0.1: + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + } + engines: { node: ">=8" } + + is-unicode-supported@1.3.0: + resolution: + { + integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==, + } + engines: { node: ">=12" } + + is-unicode-supported@2.1.0: + resolution: + { + integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==, + } + engines: { node: ">=18" } + + is-windows@1.0.2: + resolution: + { + integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, + } + engines: { node: ">=0.10.0" } + + is-wsl@3.1.0: + resolution: + { + integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==, + } + engines: { node: ">=16" } + + isarray@1.0.0: + resolution: + { + integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, + } + + isarray@2.0.5: + resolution: + { + integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, + } + + isexe@2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } + + isexe@3.1.1: + resolution: + { + integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==, + } + engines: { node: ">=16" } + + isomorphic-rslog@0.0.6: + resolution: + { + integrity: sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==, + } + engines: { node: ">=14.17.6" } + + isomorphic-ws@5.0.0: + resolution: + { + integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==, + } + peerDependencies: + ws: "*" + + jackspeak@3.4.3: + resolution: + { + integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, + } + + jest-worker@27.5.1: + resolution: + { + integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==, + } + engines: { node: ">= 10.13.0" } + + joi@17.13.3: + resolution: + { + integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==, + } + + jose@6.0.11: + resolution: + { + integrity: sha512-QxG7EaliDARm1O1S8BGakqncGT9s25bKL1WSf6/oa17Tkqwi8D2ZNglqCF+DsYF88/rV66Q/Q2mFAy697E1DUg==, + } + + joycon@3.1.1: + resolution: + { + integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, + } + engines: { node: ">=10" } + + json-parse-even-better-errors@2.3.1: + resolution: + { + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, + } + + json-schema-traverse@1.0.0: + resolution: + { + integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, + } + + json-stable-stringify@1.3.0: + resolution: + { + integrity: sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==, + } + engines: { node: ">= 0.4" } + + json-stringify-safe@5.0.1: + resolution: + { + integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==, + } + + jsonfile@4.0.0: + resolution: + { + integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, + } + + jsonfile@6.1.0: + resolution: + { + integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, + } + + jsonify@0.0.1: + resolution: + { + integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==, + } + + jsonpointer@5.0.1: + resolution: + { + integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==, + } + engines: { node: ">=0.10.0" } + + keygrip@1.1.0: + resolution: + { + integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==, + } + engines: { node: ">= 0.6" } + + koa-compose@4.1.0: + resolution: + { + integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==, + } + + koa-convert@2.0.0: + resolution: + { + integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==, + } + engines: { node: ">= 10" } + + koa@2.16.1: + resolution: + { + integrity: sha512-umfX9d3iuSxTQP4pnzLOz0HKnPg0FaUUIKcye2lOiz3KPu1Y3M3xlz76dISdFPQs37P9eJz1wUpcTS6KDPn9fA==, + } + engines: { node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4 } + + launch-editor@2.10.0: + resolution: + { + integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==, + } + + loader-runner@4.3.0: + resolution: + { + integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==, + } + engines: { node: ">=6.11.5" } + + lodash.clonedeepwith@4.5.0: + resolution: + { + integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==, + } + + lodash@4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + } + + log-symbols@6.0.0: + resolution: + { + integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==, + } + engines: { node: ">=18" } + + log4js@6.9.1: + resolution: + { + integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==, + } + engines: { node: ">=8.0" } + + long-timeout@0.1.1: + resolution: + { + integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==, + } + + lru-cache@10.4.3: + resolution: + { + integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, + } + + lru_map@0.4.1: + resolution: + { + integrity: sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==, + } + + luxon@3.6.1: + resolution: + { + integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==, + } + engines: { node: ">=12" } + + math-intrinsics@1.1.0: + resolution: + { + integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, + } + engines: { node: ">= 0.4" } + + media-typer@0.3.0: + resolution: + { + integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==, + } + engines: { node: ">= 0.6" } + + memfs@4.17.1: + resolution: + { + integrity: sha512-thuTRd7F4m4dReCIy7vv4eNYnU6XI/tHMLSMMHLiortw/Y0QxqKtinG523U2aerzwYWGi606oBP4oMPy4+edag==, + } + engines: { node: ">= 4.0.0" } + + merge-descriptors@1.0.3: + resolution: + { + integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==, + } + + merge-stream@2.0.0: + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } + + methods@1.1.2: + resolution: + { + integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==, + } + engines: { node: ">= 0.6" } + + micromatch@4.0.8: + resolution: + { + integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, + } + engines: { node: ">=8.6" } + + mime-db@1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: ">= 0.6" } + + mime-db@1.54.0: + resolution: + { + integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==, + } + engines: { node: ">= 0.6" } + + mime-types@2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: ">= 0.6" } + + mime@1.6.0: + resolution: + { + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, + } + engines: { node: ">=4" } + hasBin: true + + mimic-fn@2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: ">=6" } + + mimic-function@5.0.1: + resolution: + { + integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==, + } + engines: { node: ">=18" } + + minimalistic-assert@1.0.1: + resolution: + { + integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==, + } + + minimalistic-crypto-utils@1.0.1: + resolution: + { + integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==, + } + + minimatch@9.0.5: + resolution: + { + integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, + } + engines: { node: ">=16 || 14 >=14.17" } + + minimist@1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + } + + minipass@7.1.2: + resolution: + { + integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==, + } + engines: { node: ">=16 || 14 >=14.17" } + + mrmime@1.0.1: + resolution: + { + integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==, + } + engines: { node: ">=10" } + + ms@2.0.0: + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, + } + + ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + + multicast-dns@7.2.5: + resolution: + { + integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==, + } + hasBin: true + + mustache@4.0.0: + resolution: + { + integrity: sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA==, + } + engines: { npm: ">=1.4.0" } + hasBin: true + + near-abi@0.2.0: + resolution: + { + integrity: sha512-kCwSf/3fraPU2zENK18sh+kKG4uKbEUEQdyWQkmW8ZofmLarObIz2+zAYjA1teDZLeMvEQew3UysnPDXgjneaA==, + } + + near-api-js@5.1.1: + resolution: + { + integrity: sha512-h23BGSKxNv8ph+zU6snicstsVK1/CTXsQz4LuGGwoRE24Hj424nSe4+/1tzoiC285Ljf60kPAqRCmsfv9etF2g==, + } + + negotiator@0.6.3: + resolution: + { + integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, + } + engines: { node: ">= 0.6" } + + negotiator@0.6.4: + resolution: + { + integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==, + } + engines: { node: ">= 0.6" } + + neo-async@2.6.2: + resolution: + { + integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==, + } + + nock@13.5.6: + resolution: + { + integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==, + } + engines: { node: ">= 10.13" } + + node-addon-api@5.1.0: + resolution: + { + integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==, + } + + node-domexception@1.0.0: + resolution: + { + integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==, + } + engines: { node: ">=10.5.0" } + deprecated: Use your platform's native DOMException instead + + node-fetch@2.6.7: + resolution: + { + integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, + } + engines: { node: 4.x || >=6.0.0 } + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@2.7.0: + resolution: + { + integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, + } + engines: { node: 4.x || >=6.0.0 } + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@3.3.2: + resolution: + { + integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + node-forge@1.3.1: + resolution: + { + integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==, + } + engines: { node: ">= 6.13.0" } + + node-gyp-build@4.8.4: + resolution: + { + integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==, + } + hasBin: true + + node-releases@2.0.19: + resolution: + { + integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, + } + + node-schedule@2.1.1: + resolution: + { + integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==, + } + engines: { node: ">=6" } + + normalize-path@3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: ">=0.10.0" } + + npm-run-path@4.0.1: + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + } + engines: { node: ">=8" } + + object-inspect@1.13.4: + resolution: + { + integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, + } + engines: { node: ">= 0.4" } + + object-keys@1.1.1: + resolution: + { + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, + } + engines: { node: ">= 0.4" } + + obuf@1.1.2: + resolution: + { + integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==, + } + + on-exit-leak-free@2.1.2: + resolution: + { + integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==, + } + engines: { node: ">=14.0.0" } + + on-finished@2.4.1: + resolution: + { + integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, + } + engines: { node: ">= 0.8" } + + on-headers@1.0.2: + resolution: + { + integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==, + } + engines: { node: ">= 0.8" } + + once@1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } + + onetime@5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: ">=6" } + + onetime@7.0.0: + resolution: + { + integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==, + } + engines: { node: ">=18" } + + only@0.0.2: + resolution: + { + integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==, + } + + open@10.1.2: + resolution: + { + integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==, + } + engines: { node: ">=18" } + + openapi3-ts@4.4.0: + resolution: + { + integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==, + } + + opener@1.5.2: + resolution: + { + integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==, + } + hasBin: true + + ora@8.2.0: + resolution: + { + integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==, + } + engines: { node: ">=18" } + + otpauth@9.4.0: + resolution: + { + integrity: sha512-fHIfzIG5RqCkK9cmV8WU+dPQr9/ebR5QOwGZn2JAr1RQF+lmAuLL2YdtdqvmBjNmgJlYk3KZ4a0XokaEhg1Jsw==, + } + + p-retry@4.6.2: + resolution: + { + integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==, + } + engines: { node: ">=8" } + + p-retry@6.2.1: + resolution: + { + integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==, + } + engines: { node: ">=16.17" } + + package-json-from-dist@1.0.1: + resolution: + { + integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==, + } + + parse-passwd@1.0.0: + resolution: + { + integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==, + } + engines: { node: ">=0.10.0" } + + parseurl@1.3.3: + resolution: + { + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, + } + engines: { node: ">= 0.8" } + + path-key@3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: ">=8" } + + path-parse@1.0.7: + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } + + path-scurry@1.11.1: + resolution: + { + integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, + } + engines: { node: ">=16 || 14 >=14.18" } + + path-to-regexp@0.1.12: + resolution: + { + integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==, + } + + pg-cloudflare@1.2.5: + resolution: + { + integrity: sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==, + } + + pg-connection-string@2.9.0: + resolution: + { + integrity: sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==, + } + + pg-int8@1.0.1: + resolution: + { + integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==, + } + engines: { node: ">=4.0.0" } + + pg-numeric@1.0.2: + resolution: + { + integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==, + } + engines: { node: ">=4" } + + pg-pool@3.10.0: + resolution: + { + integrity: sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==, + } + peerDependencies: + pg: ">=8.0" + + pg-protocol@1.10.0: + resolution: + { + integrity: sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==, + } + + pg-types@2.2.0: + resolution: + { + integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==, + } + engines: { node: ">=4" } + + pg-types@4.0.2: + resolution: + { + integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==, + } + engines: { node: ">=10" } + + pg@8.16.0: + resolution: + { + integrity: sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==, + } + engines: { node: ">= 8.0.0" } + peerDependencies: + pg-native: ">=3.0.1" + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: + { + integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==, + } + + picocolors@1.1.1: + resolution: + { + integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, + } + + picomatch@2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: ">=8.6" } + + pino-abstract-transport@2.0.0: + resolution: + { + integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==, + } + + pino-pretty@13.0.0: + resolution: + { + integrity: sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==, + } + hasBin: true + + pino-std-serializers@7.0.0: + resolution: + { + integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==, + } + + pino@9.6.0: + resolution: + { + integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==, + } + hasBin: true + + postgres-array@2.0.0: + resolution: + { + integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==, + } + engines: { node: ">=4" } + + postgres-array@3.0.4: + resolution: + { + integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==, + } + engines: { node: ">=12" } + + postgres-bytea@1.0.0: + resolution: + { + integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==, + } + engines: { node: ">=0.10.0" } + + postgres-bytea@3.0.0: + resolution: + { + integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==, + } + engines: { node: ">= 6" } + + postgres-date@1.0.7: + resolution: + { + integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==, + } + engines: { node: ">=0.10.0" } + + postgres-date@2.1.0: + resolution: + { + integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==, + } + engines: { node: ">=12" } + + postgres-interval@1.2.0: + resolution: + { + integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==, + } + engines: { node: ">=0.10.0" } + + postgres-interval@3.0.0: + resolution: + { + integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==, + } + engines: { node: ">=12" } + + postgres-range@1.1.4: + resolution: + { + integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==, + } + + process-nextick-args@2.0.1: + resolution: + { + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, + } + + process-warning@4.0.1: + resolution: + { + integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==, + } + + propagate@2.0.1: + resolution: + { + integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==, + } + engines: { node: ">= 8" } + + proxy-addr@2.0.7: + resolution: + { + integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==, + } + engines: { node: ">= 0.10" } + + proxy-from-env@1.1.0: + resolution: + { + integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, + } + + psl@1.15.0: + resolution: + { + integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==, + } + + pump@3.0.2: + resolution: + { + integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==, + } + + punycode@2.3.1: + resolution: + { + integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, + } + engines: { node: ">=6" } + + pure-rand@6.1.0: + resolution: + { + integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==, + } + + qs@6.13.0: + resolution: + { + integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==, + } + engines: { node: ">=0.6" } + + querystringify@2.2.0: + resolution: + { + integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, + } + + quick-format-unescaped@4.0.4: + resolution: + { + integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==, + } + + rambda@9.4.2: + resolution: + { + integrity: sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==, + } + + randombytes@2.1.0: + resolution: + { + integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, + } + + range-parser@1.2.1: + resolution: + { + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, + } + engines: { node: ">= 0.6" } + + raw-body@2.5.2: + resolution: + { + integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==, + } + engines: { node: ">= 0.8" } + + react-dom@19.1.0: + resolution: + { + integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==, + } + peerDependencies: + react: ^19.1.0 + + react@19.1.0: + resolution: + { + integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==, + } + engines: { node: ">=0.10.0" } + + readable-stream@2.3.8: + resolution: + { + integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, + } + + readable-stream@3.6.2: + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, + } + engines: { node: ">= 6" } + + readdirp@3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: ">=8.10.0" } + + real-require@0.2.0: + resolution: + { + integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==, + } + engines: { node: ">= 12.13.0" } + + rechoir@0.8.0: + resolution: + { + integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==, + } + engines: { node: ">= 10.13.0" } + + require-directory@2.1.1: + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + } + engines: { node: ">=0.10.0" } + + require-from-string@2.0.2: + resolution: + { + integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, + } + engines: { node: ">=0.10.0" } + + requires-port@1.0.0: + resolution: + { + integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, + } + + resolve-dir@1.0.1: + resolution: + { + integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==, + } + engines: { node: ">=0.10.0" } + + resolve-pkg-maps@1.0.0: + resolution: + { + integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, + } + + resolve@1.22.10: + resolution: + { + integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==, + } + engines: { node: ">= 0.4" } + hasBin: true + + resolve@1.22.8: + resolution: + { + integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, + } + hasBin: true + + restore-cursor@5.1.0: + resolution: + { + integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==, + } + engines: { node: ">=18" } + + retry@0.13.1: + resolution: + { + integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==, + } + engines: { node: ">= 4" } + + rfdc@1.4.1: + resolution: + { + integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==, + } + + rimraf@5.0.10: + resolution: + { + integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==, + } + hasBin: true + + rslog@1.2.3: + resolution: + { + integrity: sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==, + } + engines: { node: ">=14.17.6" } + + run-applescript@7.0.0: + resolution: + { + integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==, + } + engines: { node: ">=18" } + + rxjs@7.8.2: + resolution: + { + integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==, + } + + safe-buffer@5.1.2: + resolution: + { + integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, + } + + safe-buffer@5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } + + safe-regex-test@1.1.0: + resolution: + { + integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==, + } + engines: { node: ">= 0.4" } + + safe-stable-stringify@2.5.0: + resolution: + { + integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==, + } + engines: { node: ">=10" } + + safer-buffer@2.1.2: + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + } + + scheduler@0.26.0: + resolution: + { + integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==, + } + + schema-utils@4.3.2: + resolution: + { + integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==, + } + engines: { node: ">= 10.13.0" } + + secp256k1@5.0.1: + resolution: + { + integrity: sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==, + } + engines: { node: ">=18.0.0" } + + secure-json-parse@2.7.0: + resolution: + { + integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==, + } + + select-hose@2.0.0: + resolution: + { + integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==, + } + + selfsigned@2.4.1: + resolution: + { + integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==, + } + engines: { node: ">=10" } + + semver@7.6.3: + resolution: + { + integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, + } + engines: { node: ">=10" } + hasBin: true + + semver@7.7.2: + resolution: + { + integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==, + } + engines: { node: ">=10" } + hasBin: true + + send@0.19.0: + resolution: + { + integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==, + } + engines: { node: ">= 0.8.0" } + + serialize-javascript@6.0.2: + resolution: + { + integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==, + } + + serve-index@1.9.1: + resolution: + { + integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==, + } + engines: { node: ">= 0.8.0" } + + serve-static@1.16.2: + resolution: + { + integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==, + } + engines: { node: ">= 0.8.0" } + + set-cookie-parser@2.7.1: + resolution: + { + integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==, + } + + set-function-length@1.2.2: + resolution: + { + integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, + } + engines: { node: ">= 0.4" } + + setprototypeof@1.1.0: + resolution: + { + integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==, + } + + setprototypeof@1.1.1: + resolution: + { + integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==, + } + + setprototypeof@1.2.0: + resolution: + { + integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, + } + + shebang-command@2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: ">=8" } + + shebang-regex@3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: ">=8" } + + shell-quote@1.8.2: + resolution: + { + integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==, + } + engines: { node: ">= 0.4" } + + side-channel-list@1.0.0: + resolution: + { + integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==, + } + engines: { node: ">= 0.4" } + + side-channel-map@1.0.1: + resolution: + { + integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, + } + engines: { node: ">= 0.4" } + + side-channel-weakmap@1.0.2: + resolution: + { + integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, + } + engines: { node: ">= 0.4" } + + side-channel@1.1.0: + resolution: + { + integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==, + } + engines: { node: ">= 0.4" } + + signal-exit@3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } + + signal-exit@4.1.0: + resolution: + { + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, + } + engines: { node: ">=14" } + + sirv@1.0.19: + resolution: + { + integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==, + } + engines: { node: ">= 10" } + + sockjs@0.3.24: + resolution: + { + integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==, + } + + sonic-boom@4.2.0: + resolution: + { + integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==, + } + + sorted-array-functions@1.3.0: + resolution: + { + integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==, + } + + source-map-support@0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } + + source-map@0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: ">=0.10.0" } + + spdy-transport@3.0.0: + resolution: + { + integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==, + } + + spdy@4.0.2: + resolution: + { + integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==, + } + engines: { node: ">=6.0.0" } + + split2@4.2.0: + resolution: + { + integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==, + } + engines: { node: ">= 10.x" } + + statuses@1.5.0: + resolution: + { + integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, + } + engines: { node: ">= 0.6" } + + statuses@2.0.1: + resolution: + { + integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, + } + engines: { node: ">= 0.8" } + + stdin-discarder@0.2.2: + resolution: + { + integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==, + } + engines: { node: ">=18" } + + streamroller@3.1.5: + resolution: + { + integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==, + } + engines: { node: ">=8.0" } + + string-width@4.2.3: + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + } + engines: { node: ">=8" } + + string-width@5.1.2: + resolution: + { + integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, + } + engines: { node: ">=12" } + + string-width@7.2.0: + resolution: + { + integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, + } + engines: { node: ">=18" } + + string_decoder@1.1.1: + resolution: + { + integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, + } + + string_decoder@1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + } + + strip-ansi@6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: ">=8" } + + strip-ansi@7.1.0: + resolution: + { + integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, + } + engines: { node: ">=12" } + + strip-final-newline@2.0.0: + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, + } + engines: { node: ">=6" } + + strip-json-comments@3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + } + engines: { node: ">=8" } + + supports-color@7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: ">=8" } + + supports-color@8.1.1: + resolution: + { + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, + } + engines: { node: ">=10" } + + supports-preserve-symlinks-flag@1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: ">= 0.4" } + + tapable@2.2.1: + resolution: + { + integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, + } + engines: { node: ">=6" } + + terser-webpack-plugin@5.3.14: + resolution: + { + integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==, + } + engines: { node: ">= 10.13.0" } + peerDependencies: + "@swc/core": "*" + esbuild: "*" + uglify-js: "*" + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.39.0: + resolution: + { + integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==, + } + engines: { node: ">=10" } + hasBin: true + + thingies@1.21.0: + resolution: + { + integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==, + } + engines: { node: ">=10.18" } + peerDependencies: + tslib: ^2 + + thread-stream@3.1.0: + resolution: + { + integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==, + } + + thunky@1.1.0: + resolution: + { + integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==, + } + + to-regex-range@5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: ">=8.0" } + + toidentifier@1.0.0: + resolution: + { + integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==, + } + engines: { node: ">=0.6" } + + toidentifier@1.0.1: + resolution: + { + integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, + } + engines: { node: ">=0.6" } + + totalist@1.1.0: + resolution: + { + integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==, + } + engines: { node: ">=6" } + + tough-cookie@4.1.4: + resolution: + { + integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==, + } + engines: { node: ">=6" } + + tr46@0.0.3: + resolution: + { + integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, + } + + tree-dump@1.0.2: + resolution: + { + integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==, + } + engines: { node: ">=10.0" } + peerDependencies: + tslib: "2" + + tree-kill@1.2.2: + resolution: + { + integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, + } + hasBin: true + + tslib@2.8.1: + resolution: + { + integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, + } + + tsscmp@1.0.6: + resolution: + { + integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==, + } + engines: { node: ">=0.6.x" } + + twitter-api-v2@1.23.2: + resolution: + { + integrity: sha512-m0CGXmfGwUhWBOOTVCIXIoSEXwGCQV3Es9yraCwUxaVrjJT2CQcqDrQsQTpBhtiAvVL2HS1cCEGsotNjfX9log==, + } + + type-is@1.6.18: + resolution: + { + integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==, + } + engines: { node: ">= 0.6" } + + typescript@5.8.3: + resolution: + { + integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==, + } + engines: { node: ">=14.17" } + hasBin: true + + undici-types@6.21.0: + resolution: + { + integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==, + } + + universalify@0.1.2: + resolution: + { + integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, + } + engines: { node: ">= 4.0.0" } + + universalify@0.2.0: + resolution: + { + integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, + } + engines: { node: ">= 4.0.0" } + + universalify@2.0.1: + resolution: + { + integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, + } + engines: { node: ">= 10.0.0" } + + unpipe@1.0.0: + resolution: + { + integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, + } + engines: { node: ">= 0.8" } + + upath@2.0.1: + resolution: + { + integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==, + } + engines: { node: ">=4" } + + update-browserslist-db@1.1.3: + resolution: + { + integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==, + } + hasBin: true + peerDependencies: + browserslist: ">= 4.21.0" + + url-parse@1.5.10: + resolution: + { + integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, + } + + util-deprecate@1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + } + + utils-merge@1.0.1: + resolution: + { + integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, + } + engines: { node: ">= 0.4.0" } + + uuid@8.3.2: + resolution: + { + integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, + } + hasBin: true + + vary@1.1.2: + resolution: + { + integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, + } + engines: { node: ">= 0.8" } + + wait-on@8.0.3: + resolution: + { + integrity: sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==, + } + engines: { node: ">=12.0.0" } + hasBin: true + + watchpack@2.4.2: + resolution: + { + integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==, + } + engines: { node: ">=10.13.0" } + + wbuf@1.7.3: + resolution: + { + integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==, + } + + web-streams-polyfill@3.3.3: + resolution: + { + integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==, + } + engines: { node: ">= 8" } + + webidl-conversions@3.0.1: + resolution: + { + integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, + } + + webpack-bundle-analyzer@4.6.1: + resolution: + { + integrity: sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw==, + } + engines: { node: ">= 10.13.0" } + hasBin: true + + webpack-dev-middleware@7.4.2: + resolution: + { + integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==, + } + engines: { node: ">= 18.12.0" } + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-dev-server@5.0.4: + resolution: + { + integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==, + } + engines: { node: ">= 18.12.0" } + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: "*" + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-sources@3.2.3: + resolution: + { + integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==, + } + engines: { node: ">=10.13.0" } + + webpack@5.99.8: + resolution: + { + integrity: sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==, + } + engines: { node: ">=10.13.0" } + hasBin: true + peerDependencies: + webpack-cli: "*" + peerDependenciesMeta: + webpack-cli: + optional: true + + websocket-driver@0.7.4: + resolution: + { + integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==, + } + engines: { node: ">=0.8.0" } + + websocket-extensions@0.1.4: + resolution: + { + integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==, + } + engines: { node: ">=0.8.0" } + + whatwg-url@5.0.0: + resolution: + { + integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, + } + + which@1.3.1: + resolution: + { + integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, + } + hasBin: true + + which@2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: ">= 8" } + hasBin: true + + which@4.0.0: + resolution: + { + integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==, + } + engines: { node: ^16.13.0 || >=18.0.0 } + hasBin: true + + wrap-ansi@7.0.0: + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: ">=10" } + + wrap-ansi@8.1.0: + resolution: + { + integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, + } + engines: { node: ">=12" } + + wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + + ws@7.5.10: + resolution: + { + integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==, + } + engines: { node: ">=8.3.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: + { + integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==, + } + engines: { node: ">=10.0.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.2: + resolution: + { + integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==, + } + engines: { node: ">=10.0.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xtend@4.0.2: + resolution: + { + integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, + } + engines: { node: ">=0.4" } + + y18n@5.0.8: + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + } + engines: { node: ">=10" } + + yaml@2.7.1: + resolution: + { + integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==, + } + engines: { node: ">= 14" } + hasBin: true + + yargs-parser@21.1.1: + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + } + engines: { node: ">=12" } + + yargs@17.7.2: + resolution: + { + integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, + } + engines: { node: ">=12" } + + ylru@1.4.0: + resolution: + { + integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==, + } + engines: { node: ">= 4.0.0" } + + zod-to-json-schema@3.24.5: + resolution: + { + integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==, + } + peerDependencies: + zod: ^3.24.1 + + zod@3.24.4: + resolution: + { + integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==, + } + +snapshots: + "@asteasolutions/zod-to-openapi@5.5.0(zod@3.24.4)": + dependencies: + openapi3-ts: 4.4.0 + zod: 3.24.4 + + "@crosspost/scheduler-sdk@0.1.1": + dependencies: + axios: 1.9.0 + transitivePeerDependencies: + - debug + + "@curatedotfun/types@0.0.5": {} + + "@discoveryjs/json-ext@0.5.7": {} + + "@drizzle-team/brocli@0.10.2": {} + + "@esbuild-kit/core-utils@3.3.2": + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + + "@esbuild-kit/esm-loader@2.6.5": + dependencies: + "@esbuild-kit/core-utils": 3.3.2 + get-tsconfig: 4.10.0 + + "@esbuild/aix-ppc64@0.19.12": + optional: true + + "@esbuild/android-arm64@0.17.19": + optional: true + + "@esbuild/android-arm64@0.18.20": + optional: true + + "@esbuild/android-arm64@0.19.12": + optional: true + + "@esbuild/android-arm@0.17.19": + optional: true + + "@esbuild/android-arm@0.18.20": + optional: true + + "@esbuild/android-arm@0.19.12": + optional: true + + "@esbuild/android-x64@0.17.19": + optional: true + + "@esbuild/android-x64@0.18.20": + optional: true + + "@esbuild/android-x64@0.19.12": + optional: true + + "@esbuild/darwin-arm64@0.17.19": + optional: true + + "@esbuild/darwin-arm64@0.18.20": + optional: true + + "@esbuild/darwin-arm64@0.19.12": + optional: true + + "@esbuild/darwin-x64@0.17.19": + optional: true + + "@esbuild/darwin-x64@0.18.20": + optional: true + + "@esbuild/darwin-x64@0.19.12": + optional: true + + "@esbuild/freebsd-arm64@0.17.19": + optional: true + + "@esbuild/freebsd-arm64@0.18.20": + optional: true + + "@esbuild/freebsd-arm64@0.19.12": + optional: true + + "@esbuild/freebsd-x64@0.17.19": + optional: true + + "@esbuild/freebsd-x64@0.18.20": + optional: true + + "@esbuild/freebsd-x64@0.19.12": + optional: true + + "@esbuild/linux-arm64@0.17.19": + optional: true + + "@esbuild/linux-arm64@0.18.20": + optional: true + + "@esbuild/linux-arm64@0.19.12": + optional: true + + "@esbuild/linux-arm@0.17.19": + optional: true + + "@esbuild/linux-arm@0.18.20": + optional: true + + "@esbuild/linux-arm@0.19.12": + optional: true + + "@esbuild/linux-ia32@0.17.19": + optional: true + + "@esbuild/linux-ia32@0.18.20": + optional: true + + "@esbuild/linux-ia32@0.19.12": + optional: true + + "@esbuild/linux-loong64@0.17.19": + optional: true + + "@esbuild/linux-loong64@0.18.20": + optional: true + + "@esbuild/linux-loong64@0.19.12": + optional: true + + "@esbuild/linux-mips64el@0.17.19": + optional: true + + "@esbuild/linux-mips64el@0.18.20": + optional: true + + "@esbuild/linux-mips64el@0.19.12": + optional: true + + "@esbuild/linux-ppc64@0.17.19": + optional: true + + "@esbuild/linux-ppc64@0.18.20": + optional: true + + "@esbuild/linux-ppc64@0.19.12": + optional: true + + "@esbuild/linux-riscv64@0.17.19": + optional: true + + "@esbuild/linux-riscv64@0.18.20": + optional: true + + "@esbuild/linux-riscv64@0.19.12": + optional: true + + "@esbuild/linux-s390x@0.17.19": + optional: true + + "@esbuild/linux-s390x@0.18.20": + optional: true + + "@esbuild/linux-s390x@0.19.12": + optional: true + + "@esbuild/linux-x64@0.17.19": + optional: true + + "@esbuild/linux-x64@0.18.20": + optional: true + + "@esbuild/linux-x64@0.19.12": + optional: true + + "@esbuild/netbsd-x64@0.17.19": + optional: true + + "@esbuild/netbsd-x64@0.18.20": + optional: true + + "@esbuild/netbsd-x64@0.19.12": + optional: true + + "@esbuild/openbsd-x64@0.17.19": + optional: true + + "@esbuild/openbsd-x64@0.18.20": + optional: true + + "@esbuild/openbsd-x64@0.19.12": + optional: true + + "@esbuild/sunos-x64@0.17.19": + optional: true + + "@esbuild/sunos-x64@0.18.20": + optional: true + + "@esbuild/sunos-x64@0.19.12": + optional: true + + "@esbuild/win32-arm64@0.17.19": + optional: true + + "@esbuild/win32-arm64@0.18.20": + optional: true + + "@esbuild/win32-arm64@0.19.12": + optional: true + + "@esbuild/win32-ia32@0.17.19": + optional: true + + "@esbuild/win32-ia32@0.18.20": + optional: true + + "@esbuild/win32-ia32@0.19.12": + optional: true + + "@esbuild/win32-x64@0.17.19": + optional: true + + "@esbuild/win32-x64@0.18.20": + optional: true + + "@esbuild/win32-x64@0.19.12": + optional: true + + "@hapi/hoek@9.3.0": {} + + "@hapi/topo@5.1.0": + dependencies: + "@hapi/hoek": 9.3.0 + + "@hono/node-server@1.14.1(hono@4.7.9)": + dependencies: + hono: 4.7.9 + + "@hono/zod-openapi@0.9.10(hono@4.7.9)(zod@3.24.4)": + dependencies: + "@asteasolutions/zod-to-openapi": 5.5.0(zod@3.24.4) + "@hono/zod-validator": 0.2.1(hono@4.7.9)(zod@3.24.4) + hono: 4.7.9 + zod: 3.24.4 + + "@hono/zod-validator@0.2.1(hono@4.7.9)(zod@3.24.4)": + dependencies: + hono: 4.7.9 + zod: 3.24.4 + + "@hono/zod-validator@0.5.0(hono@4.7.9)(zod@3.24.4)": + dependencies: + hono: 4.7.9 + zod: 3.24.4 + + "@isaacs/cliui@8.0.2": + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + "@jridgewell/gen-mapping@0.3.8": + dependencies: + "@jridgewell/set-array": 1.2.1 + "@jridgewell/sourcemap-codec": 1.5.0 + "@jridgewell/trace-mapping": 0.3.25 + + "@jridgewell/resolve-uri@3.1.2": {} + + "@jridgewell/set-array@1.2.1": {} + + "@jridgewell/source-map@0.3.6": + dependencies: + "@jridgewell/gen-mapping": 0.3.8 + "@jridgewell/trace-mapping": 0.3.25 + + "@jridgewell/sourcemap-codec@1.5.0": {} + + "@jridgewell/trace-mapping@0.3.25": + dependencies: + "@jridgewell/resolve-uri": 3.1.2 + "@jridgewell/sourcemap-codec": 1.5.0 + + "@jsonjoy.com/base64@1.1.2(tslib@2.8.1)": + dependencies: + tslib: 2.8.1 + + "@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)": + dependencies: + "@jsonjoy.com/base64": 1.1.2(tslib@2.8.1) + "@jsonjoy.com/util": 1.6.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 1.21.0(tslib@2.8.1) + tslib: 2.8.1 + + "@jsonjoy.com/util@1.6.0(tslib@2.8.1)": + dependencies: + tslib: 2.8.1 + + "@leichtgewicht/ip-codec@2.0.5": {} + + "@modern-js/node-bundle-require@2.65.1": + dependencies: + "@modern-js/utils": 2.65.1 + "@swc/helpers": 0.5.13 + esbuild: 0.17.19 + + "@modern-js/utils@2.65.1": + dependencies: + "@swc/helpers": 0.5.13 + caniuse-lite: 1.0.30001717 + lodash: 4.17.21 + rslog: 1.2.3 + + "@module-federation/bridge-react-webpack-plugin@0.13.1": + dependencies: + "@module-federation/sdk": 0.13.1 + "@types/semver": 7.5.8 + semver: 7.6.3 + + "@module-federation/cli@0.13.1(typescript@5.8.3)": + dependencies: + "@modern-js/node-bundle-require": 2.65.1 + "@module-federation/dts-plugin": 0.13.1(typescript@5.8.3) + "@module-federation/sdk": 0.13.1 + chalk: 3.0.0 + commander: 11.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + "@module-federation/data-prefetch@0.13.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)": + dependencies: + "@module-federation/runtime": 0.13.1 + "@module-federation/sdk": 0.13.1 + fs-extra: 9.1.0 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + "@module-federation/dts-plugin@0.13.1(typescript@5.8.3)": + dependencies: + "@module-federation/error-codes": 0.13.1 + "@module-federation/managers": 0.13.1 + "@module-federation/sdk": 0.13.1 + "@module-federation/third-party-dts-extractor": 0.13.1 + adm-zip: 0.5.16 + ansi-colors: 4.1.3 + axios: 1.9.0 + chalk: 3.0.0 + fs-extra: 9.1.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + koa: 2.16.1 + lodash.clonedeepwith: 4.5.0 + log4js: 6.9.1 + node-schedule: 2.1.1 + rambda: 9.4.2 + typescript: 5.8.3 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + "@module-federation/enhanced@0.13.1(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.19.12))": + dependencies: + "@module-federation/bridge-react-webpack-plugin": 0.13.1 + "@module-federation/cli": 0.13.1(typescript@5.8.3) + "@module-federation/data-prefetch": 0.13.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + "@module-federation/dts-plugin": 0.13.1(typescript@5.8.3) + "@module-federation/error-codes": 0.13.1 + "@module-federation/inject-external-runtime-core-plugin": 0.13.1(@module-federation/runtime-tools@0.13.1) + "@module-federation/managers": 0.13.1 + "@module-federation/manifest": 0.13.1(typescript@5.8.3) + "@module-federation/rspack": 0.13.1(@rspack/core@1.2.8(@swc/helpers@0.5.13))(typescript@5.8.3) + "@module-federation/runtime-tools": 0.13.1 + "@module-federation/sdk": 0.13.1 + btoa: 1.2.1 + schema-utils: 4.3.2 + upath: 2.0.1 + optionalDependencies: + typescript: 5.8.3 + webpack: 5.99.8(esbuild@0.19.12) + transitivePeerDependencies: + - "@rspack/core" + - bufferutil + - debug + - react + - react-dom + - supports-color + - utf-8-validate + + "@module-federation/error-codes@0.11.4": {} + + "@module-federation/error-codes@0.13.1": {} + + "@module-federation/error-codes@0.8.4": {} + + "@module-federation/inject-external-runtime-core-plugin@0.13.1(@module-federation/runtime-tools@0.13.1)": + dependencies: + "@module-federation/runtime-tools": 0.13.1 + + "@module-federation/managers@0.13.1": + dependencies: + "@module-federation/sdk": 0.13.1 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + + "@module-federation/manifest@0.13.1(typescript@5.8.3)": + dependencies: + "@module-federation/dts-plugin": 0.13.1(typescript@5.8.3) + "@module-federation/managers": 0.13.1 + "@module-federation/sdk": 0.13.1 + chalk: 3.0.0 + find-pkg: 2.0.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + "@module-federation/node@2.7.2(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.19.12))": + dependencies: + "@module-federation/enhanced": 0.13.1(@rspack/core@1.2.8(@swc/helpers@0.5.13))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.19.12)) + "@module-federation/runtime": 0.13.1 + "@module-federation/sdk": 0.13.1 + btoa: 1.2.1 + encoding: 0.1.13 + node-fetch: 2.7.0(encoding@0.1.13) + webpack: 5.99.8(esbuild@0.19.12) + optionalDependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + transitivePeerDependencies: + - "@rspack/core" + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + "@module-federation/rspack@0.13.1(@rspack/core@1.2.8(@swc/helpers@0.5.13))(typescript@5.8.3)": + dependencies: + "@module-federation/bridge-react-webpack-plugin": 0.13.1 + "@module-federation/dts-plugin": 0.13.1(typescript@5.8.3) + "@module-federation/inject-external-runtime-core-plugin": 0.13.1(@module-federation/runtime-tools@0.13.1) + "@module-federation/managers": 0.13.1 + "@module-federation/manifest": 0.13.1(typescript@5.8.3) + "@module-federation/runtime-tools": 0.13.1 + "@module-federation/sdk": 0.13.1 + "@rspack/core": 1.2.8(@swc/helpers@0.5.13) + btoa: 1.2.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + "@module-federation/runtime-core@0.11.4": + dependencies: + "@module-federation/error-codes": 0.11.4 + "@module-federation/sdk": 0.11.4 + + "@module-federation/runtime-core@0.13.1": + dependencies: + "@module-federation/error-codes": 0.13.1 + "@module-federation/sdk": 0.13.1 + + "@module-federation/runtime-tools@0.13.1": + dependencies: + "@module-federation/runtime": 0.13.1 + "@module-federation/webpack-bundler-runtime": 0.13.1 + + "@module-federation/runtime-tools@0.8.4": + dependencies: + "@module-federation/runtime": 0.8.4 + "@module-federation/webpack-bundler-runtime": 0.8.4 + + "@module-federation/runtime@0.11.4": + dependencies: + "@module-federation/error-codes": 0.11.4 + "@module-federation/runtime-core": 0.11.4 + "@module-federation/sdk": 0.11.4 + + "@module-federation/runtime@0.13.1": + dependencies: + "@module-federation/error-codes": 0.13.1 + "@module-federation/runtime-core": 0.13.1 + "@module-federation/sdk": 0.13.1 + + "@module-federation/runtime@0.8.4": + dependencies: + "@module-federation/error-codes": 0.8.4 + "@module-federation/sdk": 0.8.4 + + "@module-federation/sdk@0.11.4": {} + + "@module-federation/sdk@0.13.1": {} + + "@module-federation/sdk@0.8.4": + dependencies: + isomorphic-rslog: 0.0.6 + + "@module-federation/third-party-dts-extractor@0.13.1": + dependencies: + find-pkg: 2.0.0 + fs-extra: 9.1.0 + resolve: 1.22.8 + + "@module-federation/webpack-bundler-runtime@0.13.1": + dependencies: + "@module-federation/runtime": 0.13.1 + "@module-federation/sdk": 0.13.1 + + "@module-federation/webpack-bundler-runtime@0.8.4": + dependencies: + "@module-federation/runtime": 0.8.4 + "@module-federation/sdk": 0.8.4 + + "@near-js/accounts@1.4.1(encoding@0.1.13)": + dependencies: + "@near-js/crypto": 1.4.2 + "@near-js/providers": 1.0.3(encoding@0.1.13) + "@near-js/signers": 0.2.2 + "@near-js/transactions": 1.3.3 + "@near-js/types": 0.3.1 + "@near-js/utils": 1.1.0 + "@noble/hashes": 1.7.1 + borsh: 1.0.0 + depd: 2.0.0 + is-my-json-valid: 2.20.6 + lru_map: 0.4.1 + near-abi: 0.2.0 + transitivePeerDependencies: + - encoding + + "@near-js/crypto@1.4.2": + dependencies: + "@near-js/types": 0.3.1 + "@near-js/utils": 1.1.0 + "@noble/curves": 1.8.1 + borsh: 1.0.0 + randombytes: 2.1.0 + secp256k1: 5.0.1 + + "@near-js/keystores-browser@0.2.2": + dependencies: + "@near-js/crypto": 1.4.2 + "@near-js/keystores": 0.2.2 + + "@near-js/keystores-node@0.1.2": + dependencies: + "@near-js/crypto": 1.4.2 + "@near-js/keystores": 0.2.2 + + "@near-js/keystores@0.2.2": + dependencies: + "@near-js/crypto": 1.4.2 + "@near-js/types": 0.3.1 + + "@near-js/providers@1.0.3(encoding@0.1.13)": + dependencies: + "@near-js/transactions": 1.3.3 + "@near-js/types": 0.3.1 + "@near-js/utils": 1.1.0 + borsh: 1.0.0 + exponential-backoff: 3.1.2 + optionalDependencies: + node-fetch: 2.6.7(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + "@near-js/signers@0.2.2": + dependencies: + "@near-js/crypto": 1.4.2 + "@near-js/keystores": 0.2.2 + "@noble/hashes": 1.3.3 + + "@near-js/transactions@1.3.3": + dependencies: + "@near-js/crypto": 1.4.2 + "@near-js/signers": 0.2.2 + "@near-js/types": 0.3.1 + "@near-js/utils": 1.1.0 + "@noble/hashes": 1.7.1 + borsh: 1.0.0 + + "@near-js/types@0.3.1": {} + + "@near-js/utils@1.1.0": + dependencies: + "@near-js/types": 0.3.1 + "@scure/base": 1.2.5 + depd: 2.0.0 + mustache: 4.0.0 + + "@near-js/wallet-account@1.3.3(encoding@0.1.13)": + dependencies: + "@near-js/accounts": 1.4.1(encoding@0.1.13) + "@near-js/crypto": 1.4.2 + "@near-js/keystores": 0.2.2 + "@near-js/providers": 1.0.3(encoding@0.1.13) + "@near-js/signers": 0.2.2 + "@near-js/transactions": 1.3.3 + "@near-js/types": 0.3.1 + "@near-js/utils": 1.1.0 + borsh: 1.0.0 + transitivePeerDependencies: + - encoding + + "@noble/curves@1.8.1": + dependencies: + "@noble/hashes": 1.7.1 + + "@noble/hashes@1.3.3": {} + + "@noble/hashes@1.7.1": {} + + "@notionhq/client@2.3.0(encoding@0.1.13)": + dependencies: + "@types/node-fetch": 2.6.12 + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + "@petamoriken/float16@3.9.2": {} + + "@pkgjs/parseargs@0.11.0": + optional: true + + "@polka/url@1.0.0-next.29": {} + + "@rspack/binding-darwin-arm64@1.2.8": + optional: true + + "@rspack/binding-darwin-x64@1.2.8": + optional: true + + "@rspack/binding-linux-arm64-gnu@1.2.8": + optional: true + + "@rspack/binding-linux-arm64-musl@1.2.8": + optional: true + + "@rspack/binding-linux-x64-gnu@1.2.8": + optional: true + + "@rspack/binding-linux-x64-musl@1.2.8": + optional: true + + "@rspack/binding-win32-arm64-msvc@1.2.8": + optional: true + + "@rspack/binding-win32-ia32-msvc@1.2.8": + optional: true + + "@rspack/binding-win32-x64-msvc@1.2.8": + optional: true + + "@rspack/binding@1.2.8": + optionalDependencies: + "@rspack/binding-darwin-arm64": 1.2.8 + "@rspack/binding-darwin-x64": 1.2.8 + "@rspack/binding-linux-arm64-gnu": 1.2.8 + "@rspack/binding-linux-arm64-musl": 1.2.8 + "@rspack/binding-linux-x64-gnu": 1.2.8 + "@rspack/binding-linux-x64-musl": 1.2.8 + "@rspack/binding-win32-arm64-msvc": 1.2.8 + "@rspack/binding-win32-ia32-msvc": 1.2.8 + "@rspack/binding-win32-x64-msvc": 1.2.8 + + "@rspack/cli@1.2.8(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.99.8(esbuild@0.19.12))": + dependencies: + "@discoveryjs/json-ext": 0.5.7 + "@rspack/core": 1.2.8(@swc/helpers@0.5.13) + "@rspack/dev-server": 1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.99.8(esbuild@0.19.12)) + colorette: 2.0.20 + exit-hook: 4.0.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack-bundle-analyzer: 4.6.1 + yargs: 17.7.2 + transitivePeerDependencies: + - "@types/express" + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + - webpack-cli + + "@rspack/core@1.2.8(@swc/helpers@0.5.13)": + dependencies: + "@module-federation/runtime-tools": 0.8.4 + "@rspack/binding": 1.2.8 + "@rspack/lite-tapable": 1.0.1 + caniuse-lite: 1.0.30001717 + optionalDependencies: + "@swc/helpers": 0.5.13 + + "@rspack/dev-server@1.0.10(@rspack/core@1.2.8(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack@5.99.8(esbuild@0.19.12))": + dependencies: + "@rspack/core": 1.2.8(@swc/helpers@0.5.13) + chokidar: 3.6.0 + connect-history-api-fallback: 2.0.0 + express: 4.21.2 + http-proxy-middleware: 2.0.9(@types/express@4.17.21) + mime-types: 2.1.35 + p-retry: 4.6.2 + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.19.12)) + webpack-dev-server: 5.0.4(webpack@5.99.8(esbuild@0.19.12)) + ws: 8.18.2 + transitivePeerDependencies: + - "@types/express" + - bufferutil + - debug + - supports-color + - utf-8-validate + - webpack + - webpack-cli + + "@rspack/lite-tapable@1.0.1": {} + + "@scure/base@1.2.5": {} + + "@sideway/address@4.1.5": + dependencies: + "@hapi/hoek": 9.3.0 + + "@sideway/formula@3.0.1": {} + + "@sideway/pinpoint@2.0.0": {} + + "@sinclair/typebox@0.32.35": {} + + "@swc/helpers@0.5.13": + dependencies: + tslib: 2.8.1 + + "@types/async-retry@1.4.9": + dependencies: + "@types/retry": 0.12.5 + + "@types/body-parser@1.19.5": + dependencies: + "@types/connect": 3.4.38 + "@types/node": 22.15.17 + + "@types/bonjour@3.5.13": + dependencies: + "@types/node": 22.15.17 + + "@types/connect-history-api-fallback@1.5.4": + dependencies: + "@types/express-serve-static-core": 5.0.6 + "@types/node": 22.15.17 + + "@types/connect@3.4.38": + dependencies: + "@types/node": 22.15.17 + + "@types/eslint-scope@3.7.7": + dependencies: + "@types/eslint": 9.6.1 + "@types/estree": 1.0.7 + + "@types/eslint@9.6.1": + dependencies: + "@types/estree": 1.0.7 + "@types/json-schema": 7.0.15 + + "@types/estree@1.0.7": {} + + "@types/express-serve-static-core@4.19.6": + dependencies: + "@types/node": 22.15.17 + "@types/qs": 6.9.18 + "@types/range-parser": 1.2.7 + "@types/send": 0.17.4 + + "@types/express-serve-static-core@5.0.6": + dependencies: + "@types/node": 22.15.17 + "@types/qs": 6.9.18 + "@types/range-parser": 1.2.7 + "@types/send": 0.17.4 + + "@types/express@4.17.21": + dependencies: + "@types/body-parser": 1.19.5 + "@types/express-serve-static-core": 4.19.6 + "@types/qs": 6.9.18 + "@types/serve-static": 1.15.7 + + "@types/http-errors@2.0.4": {} + + "@types/http-proxy@1.17.16": + dependencies: + "@types/node": 22.15.17 + + "@types/json-schema@7.0.15": {} + + "@types/lodash@4.17.16": {} + + "@types/mime@1.3.5": {} + + "@types/node-fetch@2.6.12": + dependencies: + "@types/node": 22.15.17 + form-data: 4.0.2 + + "@types/node-forge@1.3.11": + dependencies: + "@types/node": 22.15.17 + + "@types/node@22.15.17": + dependencies: + undici-types: 6.21.0 + + "@types/pg@8.15.1": + dependencies: + "@types/node": 22.15.17 + pg-protocol: 1.10.0 + pg-types: 4.0.2 + + "@types/qs@6.9.18": {} + + "@types/range-parser@1.2.7": {} + + "@types/retry@0.12.0": {} + + "@types/retry@0.12.2": {} + + "@types/retry@0.12.5": {} + + "@types/semver@7.5.8": {} + + "@types/send@0.17.4": + dependencies: + "@types/mime": 1.3.5 + "@types/node": 22.15.17 + + "@types/serve-index@1.9.4": + dependencies: + "@types/express": 4.17.21 + + "@types/serve-static@1.15.7": + dependencies: + "@types/http-errors": 2.0.4 + "@types/node": 22.15.17 + "@types/send": 0.17.4 + + "@types/sockjs@0.3.36": + dependencies: + "@types/node": 22.15.17 + + "@types/ws@8.18.1": + dependencies: + "@types/node": 22.15.17 + + "@webassemblyjs/ast@1.14.1": + dependencies: + "@webassemblyjs/helper-numbers": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + + "@webassemblyjs/floating-point-hex-parser@1.13.2": {} + + "@webassemblyjs/helper-api-error@1.13.2": {} + + "@webassemblyjs/helper-buffer@1.14.1": {} + + "@webassemblyjs/helper-numbers@1.13.2": + dependencies: + "@webassemblyjs/floating-point-hex-parser": 1.13.2 + "@webassemblyjs/helper-api-error": 1.13.2 + "@xtuc/long": 4.2.2 + + "@webassemblyjs/helper-wasm-bytecode@1.13.2": {} + + "@webassemblyjs/helper-wasm-section@1.14.1": + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/wasm-gen": 1.14.1 + + "@webassemblyjs/ieee754@1.13.2": + dependencies: + "@xtuc/ieee754": 1.2.0 + + "@webassemblyjs/leb128@1.13.2": + dependencies: + "@xtuc/long": 4.2.2 + + "@webassemblyjs/utf8@1.13.2": {} + + "@webassemblyjs/wasm-edit@1.14.1": + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/helper-wasm-section": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-opt": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + "@webassemblyjs/wast-printer": 1.14.1 + + "@webassemblyjs/wasm-gen@1.14.1": + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 + + "@webassemblyjs/wasm-opt@1.14.1": + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + + "@webassemblyjs/wasm-parser@1.14.1": + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-api-error": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 + + "@webassemblyjs/wast-printer@1.14.1": + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@xtuc/long": 4.2.2 + + "@xtuc/ieee754@1.2.0": {} + + "@xtuc/long@4.2.2": {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + adm-zip@0.5.16: {} + + agent-twitter-client@0.0.16: + dependencies: + "@sinclair/typebox": 0.32.35 + headers-polyfill: 3.3.0 + json-stable-stringify: 1.3.0 + node-fetch: 3.3.2 + otpauth: 9.4.0 + set-cookie-parser: 2.7.1 + tough-cookie: 4.1.4 + tslib: 2.8.1 + twitter-api-v2: 1.23.2 + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-colors@4.1.3: {} + + ansi-html-community@0.0.8: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + array-flatten@1.1.1: {} + + async-retry@1.3.3: + dependencies: + retry: 0.13.1 + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + atomic-sleep@1.0.0: {} + + axios@1.9.0: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + batch@0.6.1: {} + + binary-extensions@2.3.0: {} + + bn.js@4.12.2: {} + + body-parser@1.20.3: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bonjour-service@1.3.0: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + borsh@1.0.0: {} + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001717 + electron-to-chromium: 1.5.152 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + + btoa@1.2.1: {} + + buffer-from@1.1.2: {} + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + + bytes@3.1.2: {} + + cache-content-type@1.0.1: + dependencies: + mime-types: 2.1.35 + ylru: 1.4.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + caniuse-lite@1.0.30001717: {} + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chrome-trace-event@1.0.4: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@11.1.0: {} + + commander@2.20.3: {} + + commander@7.2.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.0: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.0.2 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concurrently@9.1.2: + dependencies: + chalk: 4.1.2 + lodash: 4.17.21 + rxjs: 7.8.2 + shell-quote: 1.8.2 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + + connect-history-api-fallback@2.0.0: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} + + cookies@0.9.1: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + + core-util-is@1.0.3: {} + + cron-parser@4.9.0: + dependencies: + luxon: 3.6.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + data-uri-to-buffer@4.0.1: {} + + date-format@4.0.14: {} + + dateformat@4.6.3: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + deep-equal@1.0.1: {} + + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@3.0.0: {} + + delayed-stream@1.0.0: {} + + delegates@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + destroy@1.2.0: {} + + detect-node@2.1.0: {} + + dns-packet@5.6.1: + dependencies: + "@leichtgewicht/ip-codec": 2.0.5 + + dotenv@16.5.0: {} + + drizzle-kit@0.30.6: + dependencies: + "@drizzle-team/brocli": 0.10.2 + "@esbuild-kit/esm-loader": 2.6.5 + esbuild: 0.19.12 + esbuild-register: 3.6.0(esbuild@0.19.12) + gel: 2.1.0 + transitivePeerDependencies: + - supports-color + + drizzle-orm@0.40.1(@types/pg@8.15.1)(gel@2.1.0)(pg@8.16.0): + optionalDependencies: + "@types/pg": 8.15.1 + gel: 2.1.0 + pg: 8.16.0 + + drizzle-seed@0.3.1(drizzle-orm@0.40.1(@types/pg@8.15.1)(gel@2.1.0)(pg@8.16.0)): + dependencies: + pure-rand: 6.1.0 + optionalDependencies: + drizzle-orm: 0.40.1(@types/pg@8.15.1)(gel@2.1.0)(pg@8.16.0) + + drizzle-zod@0.7.1(drizzle-orm@0.40.1(@types/pg@8.15.1)(gel@2.1.0)(pg@8.16.0))(zod@3.24.4): + dependencies: + drizzle-orm: 0.40.1(@types/pg@8.15.1)(gel@2.1.0)(pg@8.16.0) + zod: 3.24.4 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.152: {} + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + env-paths@3.0.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild-register@3.6.0(esbuild@0.19.12): + dependencies: + debug: 4.4.0 + esbuild: 0.19.12 + transitivePeerDependencies: + - supports-color + + esbuild@0.17.19: + optionalDependencies: + "@esbuild/android-arm": 0.17.19 + "@esbuild/android-arm64": 0.17.19 + "@esbuild/android-x64": 0.17.19 + "@esbuild/darwin-arm64": 0.17.19 + "@esbuild/darwin-x64": 0.17.19 + "@esbuild/freebsd-arm64": 0.17.19 + "@esbuild/freebsd-x64": 0.17.19 + "@esbuild/linux-arm": 0.17.19 + "@esbuild/linux-arm64": 0.17.19 + "@esbuild/linux-ia32": 0.17.19 + "@esbuild/linux-loong64": 0.17.19 + "@esbuild/linux-mips64el": 0.17.19 + "@esbuild/linux-ppc64": 0.17.19 + "@esbuild/linux-riscv64": 0.17.19 + "@esbuild/linux-s390x": 0.17.19 + "@esbuild/linux-x64": 0.17.19 + "@esbuild/netbsd-x64": 0.17.19 + "@esbuild/openbsd-x64": 0.17.19 + "@esbuild/sunos-x64": 0.17.19 + "@esbuild/win32-arm64": 0.17.19 + "@esbuild/win32-ia32": 0.17.19 + "@esbuild/win32-x64": 0.17.19 + + esbuild@0.18.20: + optionalDependencies: + "@esbuild/android-arm": 0.18.20 + "@esbuild/android-arm64": 0.18.20 + "@esbuild/android-x64": 0.18.20 + "@esbuild/darwin-arm64": 0.18.20 + "@esbuild/darwin-x64": 0.18.20 + "@esbuild/freebsd-arm64": 0.18.20 + "@esbuild/freebsd-x64": 0.18.20 + "@esbuild/linux-arm": 0.18.20 + "@esbuild/linux-arm64": 0.18.20 + "@esbuild/linux-ia32": 0.18.20 + "@esbuild/linux-loong64": 0.18.20 + "@esbuild/linux-mips64el": 0.18.20 + "@esbuild/linux-ppc64": 0.18.20 + "@esbuild/linux-riscv64": 0.18.20 + "@esbuild/linux-s390x": 0.18.20 + "@esbuild/linux-x64": 0.18.20 + "@esbuild/netbsd-x64": 0.18.20 + "@esbuild/openbsd-x64": 0.18.20 + "@esbuild/sunos-x64": 0.18.20 + "@esbuild/win32-arm64": 0.18.20 + "@esbuild/win32-ia32": 0.18.20 + "@esbuild/win32-x64": 0.18.20 + + esbuild@0.19.12: + optionalDependencies: + "@esbuild/aix-ppc64": 0.19.12 + "@esbuild/android-arm": 0.19.12 + "@esbuild/android-arm64": 0.19.12 + "@esbuild/android-x64": 0.19.12 + "@esbuild/darwin-arm64": 0.19.12 + "@esbuild/darwin-x64": 0.19.12 + "@esbuild/freebsd-arm64": 0.19.12 + "@esbuild/freebsd-x64": 0.19.12 + "@esbuild/linux-arm": 0.19.12 + "@esbuild/linux-arm64": 0.19.12 + "@esbuild/linux-ia32": 0.19.12 + "@esbuild/linux-loong64": 0.19.12 + "@esbuild/linux-mips64el": 0.19.12 + "@esbuild/linux-ppc64": 0.19.12 + "@esbuild/linux-riscv64": 0.19.12 + "@esbuild/linux-s390x": 0.19.12 + "@esbuild/linux-x64": 0.19.12 + "@esbuild/netbsd-x64": 0.19.12 + "@esbuild/openbsd-x64": 0.19.12 + "@esbuild/sunos-x64": 0.19.12 + "@esbuild/win32-arm64": 0.19.12 + "@esbuild/win32-ia32": 0.19.12 + "@esbuild/win32-x64": 0.19.12 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit-hook@4.0.0: {} + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + exponential-backoff@3.1.2: {} + + express@4.21.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-copy@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-redact@3.5.0: {} + + fast-safe-stringify@2.1.1: {} + + fast-uri@3.0.6: {} + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-file-up@2.0.1: + dependencies: + resolve-dir: 1.0.1 + + find-pkg@2.0.0: + dependencies: + find-file-up: 2.0.1 + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + forwarded@0.2.0: {} + + fresh@0.5.2: {} + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gel@2.1.0: + dependencies: + "@petamoriken/float16": 3.9.2 + debug: 4.4.0 + env-paths: 3.0.0 + semver: 7.7.2 + shell-quote: 1.8.2 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + + generate-function@2.3.1: + dependencies: + is-property: 1.0.2 + + generate-object-property@1.2.0: + dependencies: + is-property: 1.0.2 + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + handle-thing@2.0.1: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + headers-polyfill@3.3.0: {} + + help-me@5.0.0: {} + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hono@4.7.9: {} + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + html-entities@2.6.0: {} + + http-assert@1.5.0: + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + + http-deceiver@1.2.7: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@1.7.2: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-parser-js@0.5.10: {} + + http-proxy-middleware@2.0.9(@types/express@4.17.21): + dependencies: + "@types/http-proxy": 1.17.16 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + optionalDependencies: + "@types/express": 4.17.21 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + human-signals@2.1.0: {} + + hyperdyperid@1.2.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + interpret@3.1.1: {} + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.2.0: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@2.0.0: {} + + is-my-ip-valid@1.0.1: {} + + is-my-json-valid@2.20.6: + dependencies: + generate-function: 2.3.1 + generate-object-property: 1.2.0 + is-my-ip-valid: 1.0.1 + jsonpointer: 5.0.1 + xtend: 4.0.2 + + is-network-error@1.1.0: {} + + is-number@7.0.0: {} + + is-plain-obj@3.0.0: {} + + is-property@1.0.2: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-stream@2.0.1: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + + is-windows@1.0.2: {} + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isexe@3.1.1: {} + + isomorphic-rslog@0.0.6: {} + + isomorphic-ws@5.0.0(ws@8.18.0): + dependencies: + ws: 8.18.0 + + jackspeak@3.4.3: + dependencies: + "@isaacs/cliui": 8.0.2 + optionalDependencies: + "@pkgjs/parseargs": 0.11.0 + + jest-worker@27.5.1: + dependencies: + "@types/node": 22.15.17 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + joi@17.13.3: + dependencies: + "@hapi/hoek": 9.3.0 + "@hapi/topo": 5.1.0 + "@sideway/address": 4.1.5 + "@sideway/formula": 3.0.1 + "@sideway/pinpoint": 2.0.0 + + jose@6.0.11: {} + + joycon@3.1.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify@1.3.0: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + isarray: 2.0.5 + jsonify: 0.0.1 + object-keys: 1.1.1 + + json-stringify-safe@5.0.1: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonify@0.0.1: {} + + jsonpointer@5.0.1: {} + + keygrip@1.1.0: + dependencies: + tsscmp: 1.0.6 + + koa-compose@4.1.0: {} + + koa-convert@2.0.0: + dependencies: + co: 4.6.0 + koa-compose: 4.1.0 + + koa@2.16.1: + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + debug: 4.4.0 + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.1.0 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + launch-editor@2.10.0: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.8.2 + + loader-runner@4.3.0: {} + + lodash.clonedeepwith@4.5.0: {} + + lodash@4.17.21: {} + + log-symbols@6.0.0: + dependencies: + chalk: 5.4.1 + is-unicode-supported: 1.3.0 + + log4js@6.9.1: + dependencies: + date-format: 4.0.14 + debug: 4.4.0 + flatted: 3.3.3 + rfdc: 1.4.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + + long-timeout@0.1.1: {} + + lru-cache@10.4.3: {} + + lru_map@0.4.1: {} + + luxon@3.6.1: {} + + math-intrinsics@1.1.0: {} + + media-typer@0.3.0: {} + + memfs@4.17.1: + dependencies: + "@jsonjoy.com/json-pack": 1.2.0(tslib@2.8.1) + "@jsonjoy.com/util": 1.6.0(tslib@2.8.1) + tree-dump: 1.0.2(tslib@2.8.1) + tslib: 2.8.1 + + merge-descriptors@1.0.3: {} + + merge-stream@2.0.0: {} + + methods@1.1.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mrmime@1.0.1: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + mustache@4.0.0: {} + + near-abi@0.2.0: + dependencies: + "@types/json-schema": 7.0.15 + + near-api-js@5.1.1(encoding@0.1.13): + dependencies: + "@near-js/accounts": 1.4.1(encoding@0.1.13) + "@near-js/crypto": 1.4.2 + "@near-js/keystores": 0.2.2 + "@near-js/keystores-browser": 0.2.2 + "@near-js/keystores-node": 0.1.2 + "@near-js/providers": 1.0.3(encoding@0.1.13) + "@near-js/signers": 0.2.2 + "@near-js/transactions": 1.3.3 + "@near-js/types": 0.3.1 + "@near-js/utils": 1.1.0 + "@near-js/wallet-account": 1.3.3(encoding@0.1.13) + "@noble/curves": 1.8.1 + borsh: 1.0.0 + depd: 2.0.0 + http-errors: 1.7.2 + near-abi: 0.2.0 + node-fetch: 2.6.7(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + + nock@13.5.6: + dependencies: + debug: 4.4.0 + json-stringify-safe: 5.0.1 + propagate: 2.0.1 + transitivePeerDependencies: + - supports-color + + node-addon-api@5.1.0: {} + + node-domexception@1.0.0: {} + + node-fetch@2.6.7(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-forge@1.3.1: {} + + node-gyp-build@4.8.4: {} + + node-releases@2.0.19: {} + + node-schedule@2.1.1: + dependencies: + cron-parser: 4.9.0 + long-timeout: 0.1.1 + sorted-array-functions: 1.3.0 + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + obuf@1.1.2: {} + + on-exit-leak-free@2.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + only@0.0.2: {} + + open@10.1.2: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + + openapi3-ts@4.4.0: + dependencies: + yaml: 2.7.1 + + opener@1.5.2: {} + + ora@8.2.0: + dependencies: + chalk: 5.4.1 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + otpauth@9.4.0: + dependencies: + "@noble/hashes": 1.7.1 + + p-retry@4.6.2: + dependencies: + "@types/retry": 0.12.0 + retry: 0.13.1 + + p-retry@6.2.1: + dependencies: + "@types/retry": 0.12.2 + is-network-error: 1.1.0 + retry: 0.13.1 + + package-json-from-dist@1.0.1: {} + + parse-passwd@1.0.0: {} + + parseurl@1.3.3: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@0.1.12: {} + + pg-cloudflare@1.2.5: + optional: true + + pg-connection-string@2.9.0: {} + + pg-int8@1.0.1: {} + + pg-numeric@1.0.2: {} + + pg-pool@3.10.0(pg@8.16.0): + dependencies: + pg: 8.16.0 + + pg-protocol@1.10.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg-types@4.0.2: + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.4 + postgres-bytea: 3.0.0 + postgres-date: 2.1.0 + postgres-interval: 3.0.0 + postgres-range: 1.1.4 + + pg@8.16.0: + dependencies: + pg-connection-string: 2.9.0 + pg-pool: 3.10.0(pg@8.16.0) + pg-protocol: 1.10.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.2.5 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-pretty@13.0.0: + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pump: 3.0.2 + secure-json-parse: 2.7.0 + sonic-boom: 4.2.0 + strip-json-comments: 3.1.1 + + pino-std-serializers@7.0.0: {} + + pino@9.6.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.0.0 + process-warning: 4.0.1 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 + + postgres-array@2.0.0: {} + + postgres-array@3.0.4: {} + + postgres-bytea@1.0.0: {} + + postgres-bytea@3.0.0: + dependencies: + obuf: 1.1.2 + + postgres-date@1.0.7: {} + + postgres-date@2.1.0: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + postgres-interval@3.0.0: {} + + postgres-range@1.1.4: {} + + process-nextick-args@2.0.1: {} + + process-warning@4.0.1: {} + + propagate@2.0.1: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + querystringify@2.2.0: {} + + quick-format-unescaped@4.0.4: {} + + rambda@9.4.2: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-dom@19.1.0(react@19.1.0): + dependencies: + react: 19.1.0 + scheduler: 0.26.0 + + react@19.1.0: {} + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + real-require@0.2.0: {} + + rechoir@0.8.0: + dependencies: + resolve: 1.22.10 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@1.22.8: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + retry@0.13.1: {} + + rfdc@1.4.1: {} + + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + + rslog@1.2.3: {} + + run-applescript@7.0.0: {} + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + scheduler@0.26.0: {} + + schema-utils@4.3.2: + dependencies: + "@types/json-schema": 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + secp256k1@5.0.1: + dependencies: + elliptic: 6.6.1 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.4 + + secure-json-parse@2.7.0: {} + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + "@types/node-forge": 1.3.11 + node-forge: 1.3.1 + + semver@7.6.3: {} + + semver@7.7.2: {} + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + set-cookie-parser@2.7.1: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + setprototypeof@1.1.0: {} + + setprototypeof@1.1.1: {} + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.2: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@1.0.19: + dependencies: + "@polka/url": 1.0.0-next.29 + mrmime: 1.0.1 + totalist: 1.1.0 + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + sonic-boom@4.2.0: + dependencies: + atomic-sleep: 1.0.0 + + sorted-array-functions@1.3.0: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + spdy-transport@3.0.0: + dependencies: + debug: 4.4.0 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.4.0 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + split2@4.2.0: {} + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + stdin-discarder@0.2.2: {} + + streamroller@3.1.5: + dependencies: + date-format: 4.0.14 + debug: 4.4.0 + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tapable@2.2.1: {} + + terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.99.8(esbuild@0.19.12)): + dependencies: + "@jridgewell/trace-mapping": 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.39.0 + webpack: 5.99.8(esbuild@0.19.12) + optionalDependencies: + esbuild: 0.19.12 + + terser@5.39.0: + dependencies: + "@jridgewell/source-map": 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + thingies@1.21.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + + thunky@1.1.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.0: {} + + toidentifier@1.0.1: {} + + totalist@1.1.0: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + + tree-dump@1.0.2(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + + tree-kill@1.2.2: {} + + tslib@2.8.1: {} + + tsscmp@1.0.6: {} + + twitter-api-v2@1.23.2: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typescript@5.8.3: {} + + undici-types@6.21.0: {} + + universalify@0.1.2: {} + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + upath@2.0.1: {} + + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + uuid@8.3.2: {} + + vary@1.1.2: {} + + wait-on@8.0.3: + dependencies: + axios: 1.9.0 + joi: 17.13.3 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - debug + + watchpack@2.4.2: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + web-streams-polyfill@3.3.3: {} + + webidl-conversions@3.0.1: {} + + webpack-bundle-analyzer@4.6.1: + dependencies: + acorn: 8.14.1 + acorn-walk: 8.3.4 + chalk: 4.1.2 + commander: 7.2.0 + gzip-size: 6.0.0 + lodash: 4.17.21 + opener: 1.5.2 + sirv: 1.0.19 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-dev-middleware@7.4.2(webpack@5.99.8(esbuild@0.19.12)): + dependencies: + colorette: 2.0.20 + memfs: 4.17.1 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.3.2 + optionalDependencies: + webpack: 5.99.8(esbuild@0.19.12) + + webpack-dev-server@5.0.4(webpack@5.99.8(esbuild@0.19.12)): + dependencies: + "@types/bonjour": 3.5.13 + "@types/connect-history-api-fallback": 1.5.4 + "@types/express": 4.17.21 + "@types/serve-index": 1.9.4 + "@types/serve-static": 1.15.7 + "@types/sockjs": 0.3.36 + "@types/ws": 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.0 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.21.2 + graceful-fs: 4.2.11 + html-entities: 2.6.0 + http-proxy-middleware: 2.0.9(@types/express@4.17.21) + ipaddr.js: 2.2.0 + launch-editor: 2.10.0 + open: 10.1.2 + p-retry: 6.2.1 + rimraf: 5.0.10 + schema-utils: 4.3.2 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.19.12)) + ws: 8.18.2 + optionalDependencies: + webpack: 5.99.8(esbuild@0.19.12) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-sources@3.2.3: {} + + webpack@5.99.8(esbuild@0.19.12): + dependencies: + "@types/eslint-scope": 3.7.7 + "@types/estree": 1.0.7 + "@types/json-schema": 7.0.15 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/wasm-edit": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + acorn: 8.14.1 + browserslist: 4.24.5 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.99.8(esbuild@0.19.12)) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - "@swc/core" + - esbuild + - uglify-js + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.10 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@4.0.0: + dependencies: + isexe: 3.1.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@7.5.10: {} + + ws@8.18.0: {} + + ws@8.18.2: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yaml@2.7.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + ylru@1.4.0: {} + + zod-to-json-schema@3.24.5(zod@3.24.4): + dependencies: + zod: 3.24.4 + + zod@3.24.4: {} diff --git a/apps/api/public/schemas/userProfile.v1.schema.json b/apps/api/public/schemas/userProfile.v1.schema.json new file mode 100644 index 00000000..d54c4fff --- /dev/null +++ b/apps/api/public/schemas/userProfile.v1.schema.json @@ -0,0 +1,41 @@ +{ + "$ref": "#/definitions/userProfile.v1", + "definitions": { + "userProfile.v1": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "image": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri" + }, + "ipfs_cid": { + "type": "string" + } + }, + "additionalProperties": false + }, + "backgroundImage": { + "$ref": "#/definitions/userProfile.v1/properties/image" + }, + "linktree": { + "type": "object", + "additionalProperties": { + "type": "string", + "format": "uri" + } + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} diff --git a/backend/rspack.config.js b/apps/api/rspack.config.js similarity index 70% rename from backend/rspack.config.js rename to apps/api/rspack.config.js index f0881437..9e70f988 100644 --- a/backend/rspack.config.js +++ b/apps/api/rspack.config.js @@ -16,12 +16,13 @@ module.exports = { }, output: { path: path.resolve(__dirname, "dist"), + filename: "main.js", clean: true, }, module: { rules: [ { - test: /\.tsx?$/, + test: /\.ts?$/, use: "builtin:swc-loader", exclude: /node_modules/, }, @@ -32,17 +33,18 @@ module.exports = { ], }, resolve: { - extensions: [".tsx", ".ts", ".js"], + extensions: [".ts", ".ts", ".js"], + alias: { + services: path.resolve(__dirname, "src/services"), + utils: path.resolve(__dirname, "src/utils"), + types: path.resolve(__dirname, "src/types"), + routes: path.resolve(__dirname, "src/routes"), + validation: path.resolve(__dirname, "src/validation"), + }, }, plugins: [ - new rspack.CopyRspackPlugin({ - patterns: [ - { - from: "../frontend/dist", - to: "public", - noErrorOnMissing: true, // Don't error in development when dist doesn't exist - }, - ], + new rspack.IgnorePlugin({ + resourceRegExp: /^pg-native$|^cloudflare:sockets$/, }), // new rspack.container.ModuleFederationPlugin({ // name: "host", diff --git a/backend/scripts/dev-server.js b/apps/api/scripts/dev-server.js similarity index 100% rename from backend/scripts/dev-server.js rename to apps/api/scripts/dev-server.js diff --git a/apps/api/scripts/generate-json-schemas.ts b/apps/api/scripts/generate-json-schemas.ts new file mode 100644 index 00000000..76a48847 --- /dev/null +++ b/apps/api/scripts/generate-json-schemas.ts @@ -0,0 +1,40 @@ +import fs from "fs/promises"; +import path from "path"; +import { zodToJsonSchema } from "zod-to-json-schema"; +import { profileSchema } from "../src/types/zod/userProfile"; + +const schemasToGenerate = [ + { + // Filename will be userProfile.v1.schema.json + // The URL in metadata.type will be /schemas/userProfile.v1.schema.json + id: "userProfile.v1", + schema: profileSchema, + }, + // Add more schemas here as your application grows +]; + +// Output directory within the frontend's public assets +const outputDir = path.resolve(__dirname, "../public/schemas"); + +async function generateSchemas() { + try { + await fs.mkdir(outputDir, { recursive: true }); + console.log(`Ensured schema directory exists: ${outputDir}`); + + for (const item of schemasToGenerate) { + const jsonSchema = zodToJsonSchema(item.schema, item.id); + const outputPath = path.join(outputDir, `${item.id}.schema.json`); + await fs.writeFile(outputPath, JSON.stringify(jsonSchema, null, 2)); + console.log(`Generated JSON schema: ${outputPath}`); + console.log( + ` Accessible at public URL: /schemas/${item.id}.schema.json`, + ); + } + console.log("JSON schema generation complete."); + } catch (error) { + console.error("Error generating JSON schemas:", error); + process.exit(1); + } +} + +generateSchemas(); diff --git a/backend/src/__test__/mocks/twitter-service.mock.ts b/apps/api/src/__test__/mocks/twitter-service.mock.ts similarity index 100% rename from backend/src/__test__/mocks/twitter-service.mock.ts rename to apps/api/src/__test__/mocks/twitter-service.mock.ts diff --git a/apps/api/src/app.ts b/apps/api/src/app.ts new file mode 100644 index 00000000..74d14098 --- /dev/null +++ b/apps/api/src/app.ts @@ -0,0 +1,54 @@ +import { Hono } from "hono"; +import { cors } from "hono/cors"; +import { secureHeaders } from "hono/secure-headers"; +import { db } from "./db"; +import { apiRoutes } from "./routes/api"; +import { AppInstance, Env } from "./types/app"; +import { web3AuthJwtMiddleware } from "./utils/auth"; +import { getAllowedOrigins } from "./utils/config"; +import { errorHandler } from "./utils/error"; +import { ServiceProvider } from "./utils/service-provider"; + +const ALLOWED_ORIGINS = getAllowedOrigins(); + +export async function createApp(): Promise { + ServiceProvider.initialize(); + const sp = ServiceProvider.getInstance(); + + const app = new Hono(); + + app.onError((err, c) => { + return errorHandler(err, c); + }); + + app.use( + "*", + cors({ + origin: (origin) => { + // Check if origin is in the allowed list + if (ALLOWED_ORIGINS.includes(origin)) { + return origin; + } + // Otherwise, allow same-origin requests (frontend) + return origin; + }, + allowMethods: ["GET", "POST"], + }), + ); + + app.use("*", secureHeaders()); + + app.use("*", async (c, next) => { + c.set("db", db); + c.set("sp", sp); + await next(); + }); + + // Authentication middleware + app.use("*", web3AuthJwtMiddleware); + + // Mount API routes + app.route("/api", apiRoutes); + + return { app }; +} diff --git a/apps/api/src/db/index.ts b/apps/api/src/db/index.ts new file mode 100644 index 00000000..6aa43fc9 --- /dev/null +++ b/apps/api/src/db/index.ts @@ -0,0 +1,10 @@ +import { schema, type DB } from "@curatedotfun/shared-db"; +import { drizzle } from "drizzle-orm/node-postgres"; +import { Pool } from "pg"; + +const pool = new Pool({ + connectionString: process.env.DATABASE_URL!, +}); +const db: DB = drizzle(pool, { schema }); + +export { db, pool }; diff --git a/apps/api/src/env.ts b/apps/api/src/env.ts new file mode 100644 index 00000000..c06c2285 --- /dev/null +++ b/apps/api/src/env.ts @@ -0,0 +1,32 @@ +import { createEnv } from "@t3-oss/env-core"; +import { z } from "zod"; + +export const env = createEnv({ + server: { + OPENROUTER_API_KEY: z.string().optional(), + CRYPTOGRANTWIRE_NOTION_TOKEN: z.string().optional(), + GRANTS_RSS_API_SECRET: z.string().optional(), + TELEGRAM_BOT_TOKEN: z.string().optional(), + ETHEREUM_RSS_API_SECRET: z.string().optional(), + NEAR_RSS_API_SECRET: z.string().optional(), + DESCI_RSS_API_SECRET: z.string().optional(), + SOLANA_RSS_API_SECRET: z.string().optional(), + EIGEN_RSS_API_SECRET: z.string().optional(), + ABSTRACTION_RSS_API_SECRET: z.string().optional(), + VIETNAM_RSS_API_SECRET: z.string().optional(), + USA_RSS_API_SECRET: z.string().optional(), + SHIPPOST_NEAR_SOCIAL_KEY: z.string().optional(), + SHIPPOST_RSS_API_SECRET: z.string().optional(), + SUI_RSS_API_SECRET: z.string().optional(), + STABLECOINS_RSS_API_SECRET: z.string().optional(), + CLIMATE_RSS_API_SECRET: z.string().optional(), + XPOSTBOUNTY1_NOTION_TOKEN: z.string().optional(), + XPOSTBOUNTY1_RSS_API_SECRET: z.string().optional(), + AFROBEATS_RSS_API_SECRET: z.string().optional(), + AFRICA_RSS_API_SECRET: z.string().optional(), + }, + + runtimeEnv: process.env, + + emptyStringAsUndefined: true, +}); diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts new file mode 100644 index 00000000..ef66a235 --- /dev/null +++ b/apps/api/src/index.ts @@ -0,0 +1,148 @@ +import { loadEnvConfig } from "./utils/config"; + +loadEnvConfig(); + +import { serve } from "@hono/node-server"; +import { createApp } from "./app"; +import { pool } from "./db"; +import { + cleanup, + createHighlightBox, + createSection, + logger, +} from "./utils/logger"; +import { ServiceProvider } from "./utils/service-provider"; + +const PORT = Number(process.env.PORT) || 3000; + +async function startServer() { + try { + createSection("⚔ STARTING SERVER ⚔"); + + const { app } = await createApp(); + const sp = ServiceProvider.getInstance(); + + await sp.init(); + + app.get("/health", (c) => { + const health = { + status: "OK", + timestamp: new Date().toISOString(), + }; + return c.json(health); + }); + + // Start the server + const server = serve({ + fetch: app.fetch, + port: PORT, + }); + + // Create a multi-line message for the highlight box + const serverMessage = [ + `šŸš€ SERVER RUNNING šŸš€`, + ``, + `šŸ“” Available at:`, + `http://localhost:${PORT}`, + ``, + `✨ Ready and accepting connections`, + ].join("\n"); + + createHighlightBox(serverMessage); + + createSection("SERVICES"); + + // Start all background task services + const backgroundServices = sp.getBackgroundTaskServices(); + if (backgroundServices.length > 0) { + logger.info( + `Starting ${backgroundServices.length} background task service(s)...`, + ); + for (const bgService of backgroundServices) { + bgService + .start() + .catch((err) => + logger.error( + `Error starting background service: ${err.message}`, + err, + ), + ); + } + } else { + logger.info("No background task services configured to start."); + } + + // Graceful shutdown handler + const gracefulShutdown = async (signal: string) => { + createSection("šŸ›‘ SHUTTING DOWN šŸ›‘"); + logger.info(`Graceful shutdown initiated (${signal})`); + + try { + // Wait for server to close + await new Promise((resolve, reject) => { + server.close((err) => (err ? reject(err) : resolve())); + }); + logger.info("HTTP server closed"); + + const shutdownPromises = []; + + // Stop all background task services + const bgServicesToStop = sp.getBackgroundTaskServices(); // Get fresh list in case it changed + if (bgServicesToStop.length > 0) { + logger.info( + `Stopping ${bgServicesToStop.length} background task service(s)...`, + ); + for (const bgService of bgServicesToStop) { + shutdownPromises.push( + bgService + .stop() + .catch((err) => + logger.error( + `Error stopping background service: ${err.message}`, + err, + ), + ), + ); + } + } + + const distributionService = sp.getDistributionService(); + if ( + distributionService && + typeof distributionService.shutdown === "function" + ) { + shutdownPromises.push( + distributionService + .shutdown() + .then(() => logger.info("Distribution service stopped")), + ); + } + + // Database pool + shutdownPromises.push( + pool + .end() + .then(() => logger.info("Database connection pool closed.")), + ); + + await Promise.all(shutdownPromises); + + logger.info("Shutdown complete"); + process.exit(0); + } catch (error) { + logger.error("Error during shutdown:", error); + process.exit(1); + } + }; + + // Handle manual shutdown (Ctrl+C) and SIGTERM + process.once("SIGINT", () => gracefulShutdown("SIGINT")); + process.once("SIGTERM", () => gracefulShutdown("SIGTERM")); + } catch (error) { + logger.error(`Error during startup: ${error}`); + cleanup(); + process.exit(1); + } +} + +startServer(); diff --git a/apps/api/src/routes/api/activity.ts b/apps/api/src/routes/api/activity.ts new file mode 100644 index 00000000..6a2cc4a9 --- /dev/null +++ b/apps/api/src/routes/api/activity.ts @@ -0,0 +1,362 @@ +import { zValidator } from "@hono/zod-validator"; +import { Hono } from "hono"; +import { ContentfulStatusCode } from "hono/utils/http-status"; +import { z } from "zod"; +import { Env } from "../../types/app"; +import { ActivityServiceError } from "../../types/errors"; +import { ServiceProvider } from "../../utils/service-provider"; +import { + activityQueryOptionsSchema, + leaderboardQueryOptionsSchema, +} from "../../validation/activity.validation"; + +const activityRoutes = new Hono(); + +/** + * GET /api/activity/leaderboard + * Get the leaderboard + */ +activityRoutes.get( + "/leaderboard", + zValidator( + "query", + z.object({ + time_range: z.enum(["day", "week", "month", "year", "all"]).optional(), + feed_id: z.string().optional(), + limit: z.string().transform(Number).optional(), + }), + ), + async (c) => { + try { + const query = c.req.valid("query"); + const options = leaderboardQueryOptionsSchema.parse({ + time_range: query.time_range, + feed_id: query.feed_id, + limit: query.limit, + }); + + // Get the activity service from the service provider + const activityService = + ServiceProvider.getInstance().getActivityService(); + const leaderboard = + await activityService.getUserRankingLeaderboard(options); + + return c.json({ leaderboard }); + } catch (error) { + console.error("Error in activityRoutes.get('/leaderboard'):", error); + + if (error instanceof ActivityServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json( + { error: "Failed to fetch leaderboard" }, + error instanceof Error && error.name === "ValidationError" ? 400 : 500, + ); + } + }, +); + +/** + * GET /api/activity/stats + * Get global activity statistics + */ +activityRoutes.get("/stats", async (c) => { + try { + // Get the activity service from the service provider + const activityService = ServiceProvider.getInstance().getActivityService(); + const stats = await activityService.getGlobalStats(); + + return c.json({ stats }); + } catch (error) { + console.error("Error in activityRoutes.get('/stats'):", error); + + if (error instanceof ActivityServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json({ error: "Failed to fetch global stats" }, 500); + } +}); + +/** + * GET /api/activity/user/me + * Get activity log for the authenticated user + */ +activityRoutes.get("/user/me", async (c) => { + const jwtPayload = c.get("jwtPayload"); + const authProviderId = jwtPayload?.authProviderId; + + if (!authProviderId) { + return c.json( + { error: "Unauthorized: Missing or invalid authentication token" }, + 401, + ); + } + + try { + // Get services from the service provider + const serviceProvider = ServiceProvider.getInstance(); + const userService = serviceProvider.getUserService(); + const activityService = serviceProvider.getActivityService(); + + // Get the user from the auth provider ID + const user = await userService.findUserByAuthProviderId(authProviderId); + + if (!user) { + return c.json({ error: "User profile not found" }, 404); + } + + // Get the user's activities + const activities = await activityService.getUserActivities(user.id); + + return c.json({ activities }); + } catch (error) { + console.error("Error in activityRoutes.get('/user/me'):", error); + + if (error instanceof ActivityServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json({ error: "Failed to fetch user activities" }, 500); + } +}); + +/** + * GET /api/activity/user/:userId + * Get activity log for a specific user + */ +activityRoutes.get( + "/user/:userId", + zValidator( + "param", + z.object({ + userId: z.string().transform(Number), + }), + ), + zValidator( + "query", + z.object({ + limit: z.string().transform(Number).optional(), + offset: z.string().transform(Number).optional(), + types: z.string().optional(), + feed_id: z.string().optional(), + from_date: z.string().optional(), + to_date: z.string().optional(), + }), + ), + async (c) => { + try { + const { userId } = c.req.valid("param"); + const query = c.req.valid("query"); + + // Parse types if provided + let types; + if (query.types) { + types = query.types.split(","); + } + + const options = activityQueryOptionsSchema.parse({ + limit: query.limit, + offset: query.offset, + types, + feed_id: query.feed_id, + from_date: query.from_date, + to_date: query.to_date, + }); + + // Get the activity service from the service provider + const activityService = + ServiceProvider.getInstance().getActivityService(); + const activities = await activityService.getUserActivities( + userId, + options, + ); + + return c.json({ activities }); + } catch (error) { + console.error("Error in activityRoutes.get('/user/:userId'):", error); + + if (error instanceof ActivityServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json( + { error: "Failed to fetch user activities" }, + error instanceof Error && error.name === "ValidationError" ? 400 : 500, + ); + } + }, +); + +/** + * GET /api/activity/feeds/curated-by/me + * Get feeds curated by the authenticated user + */ +activityRoutes.get("/feeds/curated-by/me", async (c) => { + const jwtPayload = c.get("jwtPayload"); + const authProviderId = jwtPayload?.authProviderId; + + if (!authProviderId) { + return c.json( + { error: "Unauthorized: Missing or invalid authentication token" }, + 401, + ); + } + + try { + // Get services from the service provider + const serviceProvider = ServiceProvider.getInstance(); + const userService = serviceProvider.getUserService(); + const activityService = serviceProvider.getActivityService(); + + // Get the user from the auth provider ID + const user = await userService.findUserByAuthProviderId(authProviderId); + + if (!user) { + return c.json({ error: "User profile not found" }, 404); + } + + // Get the feeds curated by the user + const feeds = await activityService.getFeedsCuratedByUser(user.id); + + return c.json({ feeds }); + } catch (error) { + console.error( + "Error in activityRoutes.get('/feeds/curated-by/me'):", + error, + ); + + if (error instanceof ActivityServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json({ error: "Failed to fetch curated feeds" }, 500); + } +}); + +/** + * GET /api/activity/feeds/approved-by/me + * Get feeds approved by the authenticated user + */ +activityRoutes.get("/feeds/approved-by/me", async (c) => { + const jwtPayload = c.get("jwtPayload"); + const authProviderId = jwtPayload?.authProviderId; + + if (!authProviderId) { + return c.json( + { error: "Unauthorized: Missing or invalid authentication token" }, + 401, + ); + } + + try { + // Get services from the service provider + const serviceProvider = ServiceProvider.getInstance(); + const userService = serviceProvider.getUserService(); + const activityService = serviceProvider.getActivityService(); + + // Get the user from the auth provider ID + const user = await userService.findUserByAuthProviderId(authProviderId); + + if (!user) { + return c.json({ error: "User profile not found" }, 404); + } + + // Get the feeds approved by the user + const feeds = await activityService.getFeedsApprovedByUser(user.id); + + return c.json({ feeds }); + } catch (error) { + console.error( + "Error in activityRoutes.get('/feeds/approved-by/me'):", + error, + ); + + if (error instanceof ActivityServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json({ error: "Failed to fetch approved feeds" }, 500); + } +}); + +/** + * GET /api/activity/feeds/:feedId/my-rank + * Get the user's rank for a specific feed + */ +activityRoutes.get( + "/feeds/:feedId/my-rank", + zValidator( + "param", + z.object({ + feedId: z.string(), + }), + ), + async (c) => { + const jwtPayload = c.get("jwtPayload"); + const authProviderId = jwtPayload?.authProviderId; + + if (!authProviderId) { + return c.json( + { error: "Unauthorized: Missing or invalid authentication token" }, + 401, + ); + } + + try { + const { feedId } = c.req.valid("param"); + + // Get services from the service provider + const serviceProvider = ServiceProvider.getInstance(); + const userService = serviceProvider.getUserService(); + const activityService = serviceProvider.getActivityService(); + + // Get the user from the auth provider ID + const user = await userService.findUserByAuthProviderId(authProviderId); + + if (!user) { + return c.json({ error: "User profile not found" }, 404); + } + + // Get the user's rank for the feed + const ranks = await activityService.getUserFeedRanks(user.id, feedId); + + return c.json({ ranks }); + } catch (error) { + console.error( + "Error in activityRoutes.get('/feeds/:feedId/my-rank'):", + error, + ); + + if (error instanceof ActivityServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json({ error: "Failed to fetch user feed ranks" }, 500); + } + }, +); + +export { activityRoutes }; diff --git a/apps/api/src/routes/api/config.ts b/apps/api/src/routes/api/config.ts new file mode 100644 index 00000000..272e7644 --- /dev/null +++ b/apps/api/src/routes/api/config.ts @@ -0,0 +1,6 @@ +import { Hono } from "hono"; +import { Env } from "types/app"; + +const configRoutes = new Hono(); + +export { configRoutes }; diff --git a/apps/api/src/routes/api/feeds.ts b/apps/api/src/routes/api/feeds.ts new file mode 100644 index 00000000..2b241183 --- /dev/null +++ b/apps/api/src/routes/api/feeds.ts @@ -0,0 +1,145 @@ +import { Hono } from "hono"; +import { Env } from "../../types/app"; +import { badRequest } from "../../utils/error"; +import { logger } from "../../utils/logger"; +import { insertFeedSchema, updateFeedSchema } from "@curatedotfun/shared-db"; + +const feedsRoutes = new Hono(); + +/** + * Get all feeds + */ +feedsRoutes.get("/", async (c) => { + const sp = c.get("sp"); + const feedService = sp.getFeedService(); + try { + const feeds = await feedService.getAllFeeds(); + return c.json(feeds); + } catch (error) { + logger.error("Error fetching all feeds:", error); + return c.json({ error: "Failed to fetch feeds" }, 500); + } +}); + +/** + * Create a new feed + */ +feedsRoutes.post("/", async (c) => { + const body = await c.req.json(); + const validationResult = insertFeedSchema.safeParse(body); + + if (!validationResult.success) { + return badRequest(c, "Invalid feed data", validationResult.error.flatten()); + } + + const sp = c.get("sp"); + const feedService = sp.getFeedService(); + try { + const newFeed = await feedService.createFeed(validationResult.data); + return c.json(newFeed, 201); + } catch (error) { + logger.error("Error creating feed:", error); + return c.json({ error: "Failed to create feed" }, 500); + } +}); + +/** + * Get a specific feed by its ID + */ +feedsRoutes.get("/:feedId", async (c) => { + const feedId = c.req.param("feedId"); + const sp = c.get("sp"); + const feedService = sp.getFeedService(); + try { + const feed = await feedService.getFeedById(feedId); + if (!feed) { + return c.notFound(); + } + return c.json(feed); + } catch (error) { + logger.error(`Error fetching feed ${feedId}:`, error); + return c.json({ error: "Failed to fetch feed" }, 500); + } +}); + +/** + * Update an existing feed + */ +feedsRoutes.put("/:feedId", async (c) => { + const feedId = c.req.param("feedId"); + const body = await c.req.json(); + const validationResult = updateFeedSchema.safeParse(body); + + if (!validationResult.success) { + return badRequest(c, "Invalid feed data", validationResult.error.flatten()); + } + + const sp = c.get("sp"); + const feedService = sp.getFeedService(); + try { + const updatedFeed = await feedService.updateFeed( + feedId, + validationResult.data, + ); + if (!updatedFeed) { + return c.notFound(); + } + return c.json(updatedFeed); + } catch (error) { + logger.error(`Error updating feed ${feedId}:`, error); + return c.json({ error: "Failed to update feed" }, 500); + } +}); + +/** + * Process approved submissions for a feed + * Optional query parameter: distributors - comma-separated list of distributor plugins to use + * Example: /api/feeds/solana/process?distributors=@curatedotfun/rss + */ +feedsRoutes.post("/:feedId/process", async (c) => { + const sp = c.get("sp"); + const feedService = sp.getFeedService(); + + const feedId = c.req.param("feedId"); + const distributorsParam = c.req.query("distributors"); + + try { + const result = await feedService.processFeed(feedId, distributorsParam); + return c.json(result); + } catch (error: any) { + logger.error(`Error processing feed ${feedId}:`, error); + // FeedService.processFeed might throw specific errors (e.g., NotFoundError) + // For now, a generic 500, but could be more specific based on error type + if (error.message && error.message.startsWith("Feed not found")) { + return c.json({ error: error.message }, 404); + } + if ( + error.message && + error.message.startsWith("Feed configuration not found") + ) { + return c.json({ error: error.message }, 404); // Or 500 if it's an internal config issue + } + return c.json({ error: "Failed to process feed" }, 500); + } +}); + +/** + * Delete a specific feed by its ID + */ +feedsRoutes.delete("/:feedId", async (c) => { + const feedId = c.req.param("feedId"); + const sp = c.get("sp"); + const feedService = sp.getFeedService(); + try { + const result = await feedService.deleteFeed(feedId); + if (!result) { + return c.notFound(); + } + return c.json({ message: "Feed deleted successfully" }, 200); + } catch (error) { + logger.error(`Error deleting feed ${feedId}:`, error); + return c.json({ error: "Failed to delete feed" }, 500); + } +}); + +export { feedsRoutes }; diff --git a/apps/api/src/routes/api/index.ts b/apps/api/src/routes/api/index.ts new file mode 100644 index 00000000..6fde926d --- /dev/null +++ b/apps/api/src/routes/api/index.ts @@ -0,0 +1,38 @@ +import { Hono } from "hono"; +import { isProduction } from "../../services/config.service"; +import { configRoutes } from "./config"; +import { feedsRoutes } from "./feeds"; +import { leaderboardRoutes } from "./leaderboard"; +import { statsRoutes } from "./stats"; +import { submissionRoutes } from "./submission"; +import { testRoutes } from "./test"; +import { triggerRoutes } from "./trigger"; +import { twitterRoutes } from "./twitter"; +import { Env } from "types/app"; +import { usersRoutes } from "./users"; +import { activityRoutes } from "./activity"; +import { uploadRoutes } from "./upload"; +import { pluginsRoutes } from "./plugins"; +import { moderationRoutes } from "./moderation"; + +// Create main API router +export const apiRoutes = new Hono(); + +// Test routes in development +if (!isProduction) { + apiRoutes.route("/test", testRoutes); +} + +// Mount sub-routers +apiRoutes.route("/twitter", twitterRoutes); +apiRoutes.route("/submissions", submissionRoutes); +apiRoutes.route("/feeds", feedsRoutes); +apiRoutes.route("/config", configRoutes); +apiRoutes.route("/plugins", pluginsRoutes); +apiRoutes.route("/leaderboard", leaderboardRoutes); +apiRoutes.route("/stats", statsRoutes); +apiRoutes.route("/trigger", triggerRoutes); +apiRoutes.route("/users", usersRoutes); +apiRoutes.route("/activity", activityRoutes); +apiRoutes.route("/upload", uploadRoutes); +apiRoutes.route("/moderate", moderationRoutes); diff --git a/apps/api/src/routes/api/leaderboard.ts b/apps/api/src/routes/api/leaderboard.ts new file mode 100644 index 00000000..69d6ff78 --- /dev/null +++ b/apps/api/src/routes/api/leaderboard.ts @@ -0,0 +1,21 @@ +import { LeaderboardRepository } from "@curatedotfun/shared-db"; +import { Hono } from "hono"; +import { Env } from "types/app"; + +// TODO: depreciate and combine with activity routes +const leaderboardRoutes = new Hono(); + +/** + * Get the leaderboard data + * @param timeRange - Optional time range filter: "all", "month", "week", "today" + */ +leaderboardRoutes.get("/", async (c) => { + const db = c.get("db"); + const leaderboardRepository = new LeaderboardRepository(db); + const timeRange = c.req.query("timeRange") || "all"; + const leaderboard = + await leaderboardRepository.getCuratorStatsLeaderboard(timeRange); + return c.json(leaderboard); +}); + +export { leaderboardRoutes }; diff --git a/apps/api/src/routes/api/moderation.ts b/apps/api/src/routes/api/moderation.ts new file mode 100644 index 00000000..d2934bbb --- /dev/null +++ b/apps/api/src/routes/api/moderation.ts @@ -0,0 +1,107 @@ +import { Hono } from "hono"; +import { zValidator } from "@hono/zod-validator"; +import { z } from "zod"; +import { ModerationService } from "../../services/moderation.service"; +import { Env } from "../../types/app"; + +const createModerationSchema = z.object({ + submissionId: z.string().min(1), + feedId: z.string().min(1), + adminId: z.string().min(1), // TODO: real user + action: z.enum(["approve", "reject"]), + note: z.string().optional().nullable(), + timestamp: z + .string() + .datetime() + .optional() + .transform((val) => (val ? new Date(val) : undefined)), +}); + +export const moderationRoutes = new Hono(); + +// Create a new moderation action +moderationRoutes.post( + "/", + zValidator("json", createModerationSchema), + async (c) => { + const payload = c.req.valid("json"); + const sp = c.var.sp; + const moderationService = + sp.getService("moderationService"); + + try { + await moderationService.createModerationAction(payload); + return c.json( + { message: "Moderation action created successfully." }, + 201, + ); + } catch (error: any) { + return c.json( + { error: error.message || "Failed to create moderation action" }, + 500, + ); + } + }, +); + +// Get a specific moderation entry by its ID +moderationRoutes.get("/:id", async (c) => { + const id = parseInt(c.req.param("id"), 10); + if (isNaN(id)) { + return c.json({ error: "Invalid moderation ID" }, 400); + } + const sp = c.var.sp; + const moderationService = + sp.getService("moderationService"); + try { + const moderation = await moderationService.getModerationById(id); + if (!moderation) { + return c.json({ error: "Moderation entry not found" }, 404); + } + return c.json(moderation); + } catch (error: any) { + return c.json( + { error: error.message || "Failed to get moderation entry" }, + 500, + ); + } +}); + +// Get all moderation entries for a submission +moderationRoutes.get("/submission/:submissionId", async (c) => { + const submissionId = c.req.param("submissionId"); + const sp = c.var.sp; + const moderationService = + sp.getService("moderationService"); + try { + const moderations = + await moderationService.getModerationsForSubmission(submissionId); + return c.json(moderations); + } catch (error: any) { + return c.json( + { error: error.message || "Failed to get moderation entries" }, + 500, + ); + } +}); + +// Get all moderation entries for a specific submission within a feed +moderationRoutes.get("/submission/:submissionId/feed/:feedId", async (c) => { + const submissionId = c.req.param("submissionId"); + const feedId = c.req.param("feedId"); + const sp = c.var.sp; + const moderationService = + sp.getService("moderationService"); + try { + const moderations = await moderationService.getModerationsForSubmissionFeed( + submissionId, + feedId, + ); + return c.json(moderations); + } catch (error: any) { + return c.json( + { error: error.message || "Failed to get moderation entries" }, + 500, + ); + } +}); diff --git a/apps/api/src/routes/api/plugins.ts b/apps/api/src/routes/api/plugins.ts new file mode 100644 index 00000000..fdd5b4f5 --- /dev/null +++ b/apps/api/src/routes/api/plugins.ts @@ -0,0 +1,141 @@ +import { + InsertPlugin, + insertPluginSchema, + PluginRepository, + selectPluginSchema, + updatePluginSchema, +} from "@curatedotfun/shared-db"; +import { zValidator } from "@hono/zod-validator"; +import { Hono } from "hono"; +import { HTTPException } from "hono/http-exception"; +import { z } from "zod"; +import { db } from "../../db"; +import { Env } from "../../types/app"; + +const pluginsRoutes = new Hono(); +const pluginRepository = new PluginRepository(db); + +// --- Register a new Plugin --- +pluginsRoutes.post( + "/", + zValidator( + "json", + insertPluginSchema.omit({ id: true, createdAt: true, updatedAt: true }), + ), + async (c) => { + const pluginData = c.req.valid("json"); + + try { + const newPlugin = await pluginRepository.createPlugin(pluginData); + return c.json(newPlugin, 201); + } catch (error: any) { + console.error("Error registering plugin:", { error, pluginData }); + if (error.code === "PLUGIN_ALREADY_EXISTS") { + throw new HTTPException(409, { message: error.message }); + } + throw new HTTPException(500, { message: "Failed to register plugin" }); + } + }, +); + +// --- Get a specific Plugin by ID --- +pluginsRoutes.get( + "/:pluginId", + zValidator("param", z.object({ pluginId: z.string().uuid() })), + async (c) => { + const { pluginId } = c.req.valid("param"); + const plugin = await pluginRepository.getPlugin(pluginId); + + if (!plugin) { + throw new HTTPException(404, { message: "Plugin not found" }); + } + return c.json(plugin); + }, +); + +// --- List Plugins (filter by type and name) --- +pluginsRoutes.get( + "/", + zValidator( + "query", + z.object({ + type: selectPluginSchema.shape.type.optional(), + name: z.string().optional(), + }), + ), + async (c) => { + const { type, name } = c.req.valid("query"); + + const filters: any = {}; + if (type) filters.type = type; + if (name) filters.name = name; + + const result = await pluginRepository.listPlugins(filters); + return c.json(result); + }, +); + +// --- Update a Plugin (e.g., entryPoint, schemaDefinition) --- +pluginsRoutes.patch( + "/:pluginId", + zValidator("param", z.object({ pluginId: z.string().uuid() })), + zValidator( + "json", + updatePluginSchema.partial().omit({ + id: true, + createdAt: true, + name: true, + repoUrl: true, + }), + ), + async (c) => { + const { pluginId } = c.req.valid("param"); + const updateData = c.req.valid("json"); + + if (Object.keys(updateData).length === 0) { + throw new HTTPException(400, { message: "No update data provided" }); + } + + const updatedPlugin = await pluginRepository.updatePlugin( + pluginId, + updateData, + ); + + if (!updatedPlugin) { + throw new HTTPException(404, { + message: "Plugin not found or failed to update", + }); + } + return c.json(updatedPlugin); + }, +); + +// --- Delete a Plugin --- +pluginsRoutes.delete( + "/:pluginId", + zValidator("param", z.object({ pluginId: z.string().uuid() })), + async (c) => { + const { pluginId } = c.req.valid("param"); + + const deletedPlugin = await pluginRepository.deletePlugin(pluginId); + + if (!deletedPlugin) { + throw new HTTPException(404, { + message: "Plugin not found or failed to delete", + }); + } + return c.json({ + message: "Plugin deleted successfully", + plugin: deletedPlugin, + }); + }, +); + +pluginsRoutes.post("/reload", async (c) => { + const sp = c.get("sp"); + const pluginService = sp.getPluginService(); + await pluginService.reloadAllPlugins(); + return c.json({ success: true }); +}); + +export { pluginsRoutes }; diff --git a/backend/src/routes/api/recap.ts b/apps/api/src/routes/api/recap.ts similarity index 100% rename from backend/src/routes/api/recap.ts rename to apps/api/src/routes/api/recap.ts diff --git a/apps/api/src/routes/api/stats.ts b/apps/api/src/routes/api/stats.ts new file mode 100644 index 00000000..8141f6e7 --- /dev/null +++ b/apps/api/src/routes/api/stats.ts @@ -0,0 +1,41 @@ +import { SubmissionRepository } from "@curatedotfun/shared-db"; +import { Hono } from "hono"; +import { Env } from "types/app"; +import { ServiceProvider } from "../../utils/service-provider"; + +export const statsRoutes = new Hono(); + +/** + * Get platform statistics (used by landing page) + */ +statsRoutes.get("/", async (c) => { + const db = c.get("db"); + const submissionRepository = new SubmissionRepository(db); + // Get posts count from database + const postsCount = await submissionRepository.getPostsCount(); + + // Get curators count from database + const curatorsCount = await submissionRepository.getCuratorsCount(); + + // Get other stats from config + const feedService = ServiceProvider.getInstance().getFeedService(); + const allFeeds = await feedService.getAllFeeds(); // TODO: Optimize query (get count) + const feedsCount = allFeeds.length; + + // Count total distributions from all feeds' distribute arrays + let distributionsCount = 0; + allFeeds.forEach((feed) => { + const { config } = feed; + // Count stream distributions if enabled + if (config.outputs.stream?.enabled && config.outputs.stream.distribute) { + distributionsCount += config.outputs.stream.distribute.length; + } + }); + + return c.json({ + postsCount, + feedsCount, + curatorsCount, + distributionsCount, + }); +}); diff --git a/apps/api/src/routes/api/submission.ts b/apps/api/src/routes/api/submission.ts new file mode 100644 index 00000000..c45b4327 --- /dev/null +++ b/apps/api/src/routes/api/submission.ts @@ -0,0 +1,279 @@ +import { + SubmissionRepository, + FeedRepository, + PaginatedResponse, + RichSubmission, +} from "@curatedotfun/shared-db"; +import { + Submission as DomainSubmission, + FeedContextSubmission, + SubmissionStatus as DomainSubmissionStatus, + SubmissionStatusEnum as DomainSubmissionStatusEnum, + Moderation as DomainModeration, + SubmissionFeed as DomainSubmissionFeed, +} from "@curatedotfun/types"; +import { zValidator } from "@hono/zod-validator"; +import { Hono } from "hono"; +import { z } from "zod"; +import { Env } from "../../types/app"; + +const submissionRoutes = new Hono(); + +/** + * Get all submissions with optional status filtering and pagination + */ +submissionRoutes.get( + "/", + zValidator( + "query", + z.object({ + page: z.coerce.number().int().min(0).optional(), + limit: z.coerce.number().int().min(1).max(100).optional(), + status: z.enum(["pending", "approved", "rejected"]).optional(), + sortOrder: z.enum(["newest", "oldest"]).optional().default("newest"), + q: z.string().optional(), + }), + ), + async (c) => { + const db = c.get("db"); + const submissionRepository = new SubmissionRepository(db); + const { page, limit, status, sortOrder, q } = c.req.valid("query"); + + const repoResult: PaginatedResponse = + await submissionRepository.getAllSubmissions( + status, + sortOrder, + q, + page, + limit, + ); + + const domainItems: DomainSubmission[] = repoResult.items.map((rs) => { + let overallStatus: DomainSubmissionStatus = + DomainSubmissionStatusEnum.PENDING; + if (rs.moderationHistory && rs.moderationHistory.length > 0) { + // Prefer direct moderation history for overall status if available + const approvedAction = rs.moderationHistory.find( + (mh) => mh.action === "approve", + ); + const rejectedAction = rs.moderationHistory.find( + (mh) => mh.action === "reject", + ); + + if (approvedAction) overallStatus = DomainSubmissionStatusEnum.APPROVED; + else if (rejectedAction) + overallStatus = DomainSubmissionStatusEnum.REJECTED; + // If only pending or other actions, it remains PENDING by default + } else if (rs.feeds && rs.feeds.length > 0) { + // Fallback to feed statuses if no direct moderation history + if (rs.feeds.some((f) => f.status === "approved")) { + overallStatus = DomainSubmissionStatusEnum.APPROVED; + } else if (rs.feeds.every((f) => f.status === "rejected")) { + overallStatus = DomainSubmissionStatusEnum.REJECTED; + } + // If feeds are all pending, it remains PENDING + } + + return { + tweetId: rs.tweetId, + userId: rs.userId, + username: rs.username, + curatorId: rs.curatorId!, + curatorUsername: rs.curatorUsername!, + content: rs.content, + curatorNotes: rs.curatorNotes, + curatorTweetId: rs.curatorTweetId!, + createdAt: rs.createdAt, + submittedAt: rs.submittedAt, + updatedAt: rs.updatedAt, + moderationHistory: rs.moderationHistory.map( + (mh) => + ({ + adminId: mh.adminId, + action: mh.action as "approve" | "reject", // Assuming action is always one of these for DomainModeration + timestamp: mh.createdAt, + tweetId: mh.tweetId, + feedId: mh.feedId, + note: mh.note, + moderationTweetId: mh.moderationTweetId!, + }) as DomainModeration, + ), + feeds: rs.feeds.map( + (sf) => + ({ + submissionId: sf.submissionId, + feedId: sf.feedId, + status: sf.status as DomainSubmissionStatus, + moderationResponseTweetId: sf.moderationResponseTweetId, + createdAt: sf.createdAt, + updatedAt: sf.updatedAt, + }) as DomainSubmissionFeed, + ), + status: overallStatus, + }; + }); + + const response: PaginatedResponse = { + items: domainItems, + pagination: repoResult.pagination, + }; + + return c.json(response); + }, +); + +/** + * Get a specific submission by ID + */ +submissionRoutes.get("/single/:submissionId", async (c) => { + const db = c.get("db"); + const submissionRepository = new SubmissionRepository(db); + const submissionId = c.req.param("submissionId"); + const richSubmission = await submissionRepository.getSubmission(submissionId); + + if (!richSubmission) { + return c.notFound(); + } + + let overallStatusSingle: DomainSubmissionStatus = + DomainSubmissionStatusEnum.PENDING; + if ( + richSubmission.moderationHistory && + richSubmission.moderationHistory.length > 0 + ) { + const approvedAction = richSubmission.moderationHistory.find( + (mh) => mh.action === "approve", + ); + const rejectedAction = richSubmission.moderationHistory.find( + (mh) => mh.action === "reject", + ); + + if (approvedAction) + overallStatusSingle = DomainSubmissionStatusEnum.APPROVED; + else if (rejectedAction) + overallStatusSingle = DomainSubmissionStatusEnum.REJECTED; + } else if (richSubmission.feeds && richSubmission.feeds.length > 0) { + if (richSubmission.feeds.some((f) => f.status === "approved")) { + overallStatusSingle = DomainSubmissionStatusEnum.APPROVED; + } else if (richSubmission.feeds.every((f) => f.status === "rejected")) { + overallStatusSingle = DomainSubmissionStatusEnum.REJECTED; + } + } + + const domainSubmission: DomainSubmission = { + tweetId: richSubmission.tweetId, + userId: richSubmission.userId, + username: richSubmission.username, + curatorId: richSubmission.curatorId!, + curatorUsername: richSubmission.curatorUsername!, + content: richSubmission.content, + curatorNotes: richSubmission.curatorNotes, + curatorTweetId: richSubmission.curatorTweetId!, + createdAt: richSubmission.createdAt, + submittedAt: richSubmission.submittedAt, + updatedAt: richSubmission.updatedAt, + moderationHistory: richSubmission.moderationHistory.map( + (mh) => + ({ + adminId: mh.adminId, + action: mh.action as "approve" | "reject", + timestamp: mh.createdAt, + tweetId: mh.tweetId, + feedId: mh.feedId, + note: mh.note, + moderationTweetId: mh.moderationTweetId!, + }) as DomainModeration, + ), + feeds: richSubmission.feeds.map( + (sf) => + ({ + submissionId: sf.submissionId, + feedId: sf.feedId, + status: sf.status as DomainSubmissionStatus, + moderationResponseTweetId: sf.moderationResponseTweetId, + createdAt: sf.createdAt, + updatedAt: sf.updatedAt, + }) as DomainSubmissionFeed, + ), + status: overallStatusSingle, + }; + + return c.json(domainSubmission); +}); + +/** + * Get submissions for a specific feed + */ +submissionRoutes.get( + "/feed/:feedId", + zValidator( + "query", + z.object({ + page: z.coerce.number().int().min(0).optional(), + limit: z.coerce.number().int().min(1).max(100).optional(), + status: z.enum(["pending", "approved", "rejected"]).optional(), + sortOrder: z.enum(["newest", "oldest"]).optional().default("newest"), + q: z.string().optional(), + }), + ), + async (c) => { + const db = c.get("db"); + const feedRepository = new FeedRepository(db); + const feedIdParam = c.req.param("feedId"); + const { page, limit, status, sortOrder, q } = c.req.valid("query"); + + const repoResult: PaginatedResponse = + await feedRepository.getSubmissionsByFeed( + feedIdParam, + status, + sortOrder, + q, + page, + limit, + ); + + const domainItems: FeedContextSubmission[] = repoResult.items.map((rs) => { + const specificFeedLink = rs.feeds.find((f) => f.feedId === feedIdParam); + + const statusInFeed: DomainSubmissionStatus = specificFeedLink + ? (specificFeedLink.status as DomainSubmissionStatus) + : DomainSubmissionStatusEnum.PENDING; + + return { + tweetId: rs.tweetId, + userId: rs.userId, + username: rs.username, + curatorId: rs.curatorId!, + curatorUsername: rs.curatorUsername!, + content: rs.content, + curatorNotes: rs.curatorNotes, + curatorTweetId: rs.curatorTweetId!, + createdAt: rs.createdAt, + submittedAt: rs.submittedAt, + updatedAt: rs.updatedAt, + status: statusInFeed, + moderationHistory: rs.moderationHistory.map( + (mh) => + ({ + adminId: mh.adminId, + action: mh.action as "approve" | "reject", + timestamp: mh.createdAt, + tweetId: mh.tweetId, + feedId: mh.feedId, + note: mh.note, + moderationTweetId: mh.moderationTweetId!, + }) as DomainModeration, + ), + }; + }); + + const response: PaginatedResponse = { + items: domainItems, + pagination: repoResult.pagination, + }; + + return c.json(response); + }, +); + +export { submissionRoutes }; diff --git a/backend/src/routes/api/test.ts b/apps/api/src/routes/api/test.ts similarity index 94% rename from backend/src/routes/api/test.ts rename to apps/api/src/routes/api/test.ts index 1bce23fa..744989d2 100644 --- a/backend/src/routes/api/test.ts +++ b/apps/api/src/routes/api/test.ts @@ -1,8 +1,9 @@ import { MockTwitterService } from "../../__test__/mocks/twitter-service.mock"; import { zValidator } from "@hono/zod-validator"; import { Tweet } from "agent-twitter-client"; +import { Hono } from "hono"; +import { Env } from "types/app"; import { z } from "zod"; -import { HonoApp } from "../../types/app"; // Create a single mock instance to maintain state const mockTwitterService = new MockTwitterService(); @@ -31,8 +32,7 @@ const createTweet = ( }; }; -// Create test routes -const testRoutes = HonoApp(); +const testRoutes = new Hono(); // Guard middleware for development only testRoutes.use("*", async (c, next) => { diff --git a/backend/src/routes/api/trigger.ts b/apps/api/src/routes/api/trigger.ts similarity index 94% rename from backend/src/routes/api/trigger.ts rename to apps/api/src/routes/api/trigger.ts index 7dbe3712..281cb604 100644 --- a/backend/src/routes/api/trigger.ts +++ b/apps/api/src/routes/api/trigger.ts @@ -2,6 +2,7 @@ import { zValidator } from "@hono/zod-validator"; import { Hono } from "hono"; import { z } from "zod"; import { logger } from "../../utils/logger"; +import { Env } from "types/app"; // Define validation schema for the recap job payload const recapJobSchema = z.object({ @@ -10,7 +11,7 @@ const recapJobSchema = z.object({ }); // Create a router for internal API endpoints -export const triggerRoutes = new Hono(); +export const triggerRoutes = new Hono(); // TODO: Middleware to validate API token // internalRouter.use(async (c, next) => { diff --git a/backend/src/routes/api/twitter.ts b/apps/api/src/routes/api/twitter.ts similarity index 87% rename from backend/src/routes/api/twitter.ts rename to apps/api/src/routes/api/twitter.ts index bf660b70..a1244e92 100644 --- a/backend/src/routes/api/twitter.ts +++ b/apps/api/src/routes/api/twitter.ts @@ -1,16 +1,17 @@ import { zValidator } from "@hono/zod-validator"; +import { Hono } from "hono"; import { z } from "zod"; -import { HonoApp } from "../../types/app"; +import { Env } from "../../types/app"; import { serviceUnavailable } from "../../utils/error"; import { logger } from "../../utils/logger"; // Create Twitter routes -const router = HonoApp(); +const twitterRoutes = new Hono(); /** * Get the last checked tweet ID */ -router.get("/last-tweet-id", (c) => { +twitterRoutes.get("/last-tweet-id", (c) => { const context = c.get("context"); if (!context.twitterService) { @@ -32,7 +33,7 @@ router.get("/last-tweet-id", (c) => { /** * Set the last checked tweet ID */ -router.post( +twitterRoutes.post( "/last-tweet-id", zValidator( "json", @@ -61,4 +62,4 @@ router.post( }, ); -export default router; +export { twitterRoutes }; diff --git a/apps/api/src/routes/api/upload.ts b/apps/api/src/routes/api/upload.ts new file mode 100644 index 00000000..8232aaac --- /dev/null +++ b/apps/api/src/routes/api/upload.ts @@ -0,0 +1,36 @@ +import { Hono } from "hono"; +import { PinataSDK } from "pinata-web3"; + +const IPFS_GATEWAY_URL = "potlock.mypinata.cloud"; + +export const sdk = new PinataSDK({ + pinataJwt: process.env.PINATA_JWT, + pinataGateway: IPFS_GATEWAY_URL, +}); + +const uploadRoutes = new Hono(); + +// Pinata Auth Key +uploadRoutes.get("/get-auth-key", async (c) => { + try { + const uuid = crypto.randomUUID(); + + const keyData = await sdk.keys.create({ + keyName: uuid.toString(), + maxUses: 1, + permissions: { endpoints: { pinning: { pinFileToIPFS: true } } }, + }); + + return c.json(keyData, 200); + } catch (error) { + console.error("Failed to create Pinata API key:", error); + const errorMessage = + error instanceof Error ? error.message : "An unexpected error occurred"; + return c.json( + { error: "Failed to create API key", details: errorMessage }, + 500, + ); + } +}); + +export { uploadRoutes }; diff --git a/apps/api/src/routes/api/users.ts b/apps/api/src/routes/api/users.ts new file mode 100644 index 00000000..127db170 --- /dev/null +++ b/apps/api/src/routes/api/users.ts @@ -0,0 +1,185 @@ +import { zValidator } from "@hono/zod-validator"; +import { Hono } from "hono"; +import { ContentfulStatusCode } from "hono/utils/http-status"; +import { InsertUserData } from "../../services/users.service"; +import { Env } from "../../types/app"; +import { + NearAccountError, + NotFoundError, + UserServiceError, +} from "../../types/errors"; +import { ServiceProvider } from "../../utils/service-provider"; +import { + insertUserSchema, + updateUserSchema, +} from "../../validation/users.validation"; + +const usersRoutes = new Hono(); + +// --- GET /api/users/me --- +usersRoutes.get("/me", async (c) => { + const jwtPayload = c.get("jwtPayload"); + const authProviderId = jwtPayload?.authProviderId; + + if (!authProviderId) { + return c.json( + { error: "Unauthorized: Missing or invalid authentication token" }, + 401, + ); + } + + try { + const userService = ServiceProvider.getInstance().getUserService(); + const user = await userService.findUserByAuthProviderId(authProviderId); + + if (!user) { + return c.json({ error: "User profile not found" }, 404); + } + + return c.json({ profile: user }); + } catch (error) { + console.error("Error in usersRoutes.get('/me'):", error); + return c.json({ error: "Failed to fetch user profile" }, 500); + } +}); + +// --- POST /api/users --- +usersRoutes.post("/", zValidator("json", insertUserSchema), async (c) => { + const createUserData = c.req.valid("json"); + const jwtPayload = c.get("jwtPayload"); + const authProviderId = jwtPayload?.authProviderId; + + if (!authProviderId) { + return c.json( + { error: "Unauthorized: Missing or invalid authentication token" }, + 401, + ); + } + + try { + const userService = ServiceProvider.getInstance().getUserService(); + + const newUser = await userService.createUser({ + auth_provider_id: authProviderId, + ...createUserData, + } as InsertUserData); + + return c.json({ profile: newUser }, 201); + } catch (error: any) { + console.error("Error in usersRoutes.post('/'):", error); + + if (error instanceof NearAccountError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + if (error instanceof UserServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json({ error: "Failed to create user profile" }, 500); + } +}); + +// --- PUT /api/users/me --- +usersRoutes.put("/me", zValidator("json", updateUserSchema), async (c) => { + const updateData = c.req.valid("json"); + const jwtPayload = c.get("jwtPayload"); + const authProviderId = jwtPayload?.authProviderId; + + if (!authProviderId) { + return c.json( + { error: "Unauthorized: Missing or invalid authentication token" }, + 401, + ); + } + + try { + const userService = ServiceProvider.getInstance().getUserService(); + const updatedUser = await userService.updateUser( + authProviderId, + updateData, + ); + + if (!updatedUser) { + return c.json({ error: "User profile not found" }, 404); + } + + return c.json({ profile: updatedUser }); + } catch (error) { + console.error("Error in usersRoutes.put('/me'):", error); + + if (error instanceof NotFoundError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + if (error instanceof UserServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json({ error: "Failed to update user profile" }, 500); + } +}); + +// --- DELETE /api/users/me --- +usersRoutes.delete("/me", async (c) => { + const jwtPayload = c.get("jwtPayload"); + const authProviderId = jwtPayload?.authProviderId; + + if (!authProviderId) { + return c.json( + { error: "Unauthorized: Missing or invalid authentication token" }, + 401, + ); + } + + try { + const userService = ServiceProvider.getInstance().getUserService(); + const success = await userService.deleteUser(authProviderId); + + if (success) { + return c.json({ message: "User profile deleted successfully" }, 200); + } else { + // This case should ideally be handled by NotFoundError thrown from the service + return c.json({ error: "Failed to delete user profile" }, 500); + } + } catch (error: any) { + console.error("Error in usersRoutes.delete('/me'):", error); + + if (error instanceof NotFoundError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + if (error instanceof NearAccountError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + if (error instanceof UserServiceError) { + return c.json( + { error: error.message }, + error.statusCode as ContentfulStatusCode, + ); + } + + return c.json({ error: "Failed to delete user profile" }, 500); + } +}); + +export { usersRoutes }; diff --git a/apps/api/src/services/activity.service.ts b/apps/api/src/services/activity.service.ts new file mode 100644 index 00000000..3084b7b6 --- /dev/null +++ b/apps/api/src/services/activity.service.ts @@ -0,0 +1,286 @@ +import { + ActivityRepository, + DB, + InsertActivity, + LeaderboardRepository, + queries, + SelectActivity, + selectActivitySchema, + SelectFeedUserStats, + selectFeedUserStatsSchema, + SelectUserStats, + selectUserStatsSchema, + UpdateFeedUserStats, + UpdateUserStats, +} from "@curatedotfun/shared-db"; +import { + ActivityQueryOptionsSchema, + GlobalStatsSchema, + LeaderboardQueryOptionsSchema, + UserRankingLeaderboardEntrySchema, + type ActivityQueryOptions, + type GlobalStats, + type LeaderboardQueryOptions, + type UserRankingLeaderboardEntry, +} from "@curatedotfun/types"; +import { ActivityServiceError } from "@curatedotfun/utils"; +import { Logger } from "pino"; +import { IBaseService } from "./interfaces/base-service.interface"; + +export class ActivityService implements IBaseService { + public readonly logger: Logger; + + constructor( + private activityRepository: ActivityRepository, + private leaderboardRepository: LeaderboardRepository, + private db: DB, + logger: Logger, + ) { + this.logger = logger; + } + + /** + * Create a new activity entry + */ + async createActivity(data: InsertActivity): Promise { + try { + const result = await this.db.transaction(async (tx) => { + return this.activityRepository.createActivity(data, tx); + }); + return selectActivitySchema.parse(result); + } catch (error) { + throw new ActivityServiceError( + `Failed to create activity: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Get activities for a specific user + */ + async getUserActivities( + userId: number, + options?: ActivityQueryOptions, + ): Promise { + try { + const validatedOptions = options + ? ActivityQueryOptionsSchema.parse(options) + : {}; + const activities = await this.activityRepository.getUserActivities( + userId, + validatedOptions, + ); + + return activities.map((activity: any) => + selectActivitySchema.parse(activity), + ); + } catch (error) { + throw new ActivityServiceError( + `Failed to get user activities: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Get the user ranking leaderboard. + */ + async getUserRankingLeaderboard( + options?: LeaderboardQueryOptions, + ): Promise { + try { + const validatedOptions = options + ? LeaderboardQueryOptionsSchema.parse(options) + : {}; + const rawLeaderboardData = + await this.activityRepository.getUserRankingLeaderboard( + validatedOptions, + ); + // Assuming rawLeaderboardData is an array of objects that need to be parsed + return rawLeaderboardData.map((entry) => + UserRankingLeaderboardEntrySchema.parse(entry), + ); + } catch (error) { + throw new ActivityServiceError( + `Failed to get user ranking leaderboard: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Get global statistics + */ + async getGlobalStats(): Promise { + try { + const rawStats = await this.activityRepository.getGlobalStats(); + return GlobalStatsSchema.parse(rawStats); + } catch (error) { + throw new ActivityServiceError( + `Failed to get global stats: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Get user statistics + */ + async getUserStats(userId: number): Promise { + // Use SelectUserStats + try { + const stats = await this.activityRepository.getUserStats(userId); + + if (!stats) { + return null; + } + + return selectUserStatsSchema.parse(stats); // Use selectUserStatsSchema from db/types + } catch (error) { + throw new ActivityServiceError( + `Failed to get user stats: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Update user statistics + */ + async updateUserStats( + userId: number, + data: UpdateUserStats, + ): Promise { + try { + const result = await this.db.transaction(async (tx) => { + return this.activityRepository.updateUserStats(userId, data, tx); + }); + return selectUserStatsSchema.parse(result); + } catch (error) { + throw new ActivityServiceError( + `Failed to update user stats: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Get feed-specific user statistics + */ + async getFeedUserStats( + userId: number, + feedId: string, + ): Promise { + // Use SelectFeedUserStats + try { + const stats = await this.activityRepository.getFeedUserStats( + userId, + feedId, + ); + + if (!stats) { + return null; + } + + return selectFeedUserStatsSchema.parse(stats); // Use selectFeedUserStatsSchema from db/types + } catch (error) { + throw new ActivityServiceError( + `Failed to get feed user stats: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Update feed-specific user statistics + */ + async updateFeedUserStats( + userId: number, + feedId: string, + data: UpdateFeedUserStats, + ): Promise { + try { + const result = await this.db.transaction(async (tx) => { + return this.activityRepository.updateFeedUserStats( + userId, + feedId, + data, + tx, + ); + }); + return selectFeedUserStatsSchema.parse(result); + } catch (error) { + throw new ActivityServiceError( + `Failed to update feed user stats: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Get the curator statistics leaderboard. + */ + async getCuratorStatsLeaderboard( + timeRange: string = "all", + ): Promise { + try { + return await this.leaderboardRepository.getCuratorStatsLeaderboard( + timeRange, + ); + } catch (error) { + throw new ActivityServiceError( + `Failed to get curator stats leaderboard: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Get feeds that a user has curated for + */ + async getFeedsCuratedByUser(userId: number): Promise { + try { + return await this.activityRepository.getFeedsCuratedByUser(userId); + } catch (error) { + throw new ActivityServiceError( + `Failed to get feeds curated by user: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Get feeds that a user is an approver for + */ + async getFeedsApprovedByUser(userId: number): Promise { + try { + return await this.activityRepository.getFeedsApprovedByUser(userId); + } catch (error) { + throw new ActivityServiceError( + `Failed to get feeds approved by user: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } + + /** + * Get a user's rank for a specific feed + */ + async getUserFeedRanks( + userId: number, + feedId: string, + ): Promise<{ + curatorRank: number | null; + approverRank: number | null; + }> { + try { + return await this.activityRepository.getUserFeedRanks(userId, feedId); + } catch (error) { + throw new ActivityServiceError( + `Failed to get user feed ranks: ${error instanceof Error ? error.message : String(error)}`, + { cause: error instanceof Error ? error : undefined }, + ); + } + } +} diff --git a/apps/api/src/services/config.service.ts b/apps/api/src/services/config.service.ts new file mode 100644 index 00000000..e31197e0 --- /dev/null +++ b/apps/api/src/services/config.service.ts @@ -0,0 +1,11 @@ +export const isProduction = process.env.NODE_ENV === "production"; +export const isTest = process.env.NODE_ENV === "test"; +export const isStaging = process.env.RAILWAY_ENVIRONMENT_NAME === "staging"; + +console.log( + "Using environment: ", + process.env.RAILWAY_ENVIRONMENT_NAME ?? process.env.NODE_ENV, +); +export class ConfigService { + public constructor() {} +} diff --git a/apps/api/src/services/distribution.service.ts b/apps/api/src/services/distribution.service.ts new file mode 100644 index 00000000..2c0c01fb --- /dev/null +++ b/apps/api/src/services/distribution.service.ts @@ -0,0 +1,90 @@ +import { DistributorConfig, RichSubmission } from "@curatedotfun/shared-db"; +import type { ActionArgs } from "@curatedotfun/types"; +import { PluginError, PluginErrorCode } from "@curatedotfun/utils"; +import type { Logger } from "pino"; +import { isStaging } from "./config.service"; +import { logPluginError } from "../utils/error"; +import { sanitizeJson } from "../utils/sanitize"; +import type { IBaseService } from "./interfaces/base-service.interface"; +import { PluginService } from "./plugin.service"; + +export class DistributionService implements IBaseService { + public readonly logger: Logger; + + constructor( + private pluginService: PluginService, + logger: Logger, + ) { + this.logger = logger; + } + + async distributeContent( + distributor: DistributorConfig, + input: T, + ): Promise { + const sanitizedInput = sanitizeJson(input) as T; + + const { plugin: pluginName, config: pluginConfig } = distributor; + try { + const plugin = await this.pluginService.getPlugin<"distributor", T>( + pluginName, + { + type: "distributor", + config: pluginConfig || {}, + }, + ); + + try { + const args: ActionArgs> = { + input: sanitizedInput, + config: pluginConfig, + }; + if (!isStaging) { + await plugin.distribute(args); + } + } catch (error) { + const pluginError = new PluginError( + error instanceof Error ? error.message : "Distribution failed", + { + pluginName, + operation: "distribute", + attempt: 1, + }, + PluginErrorCode.PLUGIN_INTERNAL_ERROR, + false, // Not retryable by default + { + cause: error instanceof Error ? error : undefined, + details: { isStaging }, + }, + ); + logPluginError(pluginError, this.logger); + throw pluginError; + } + } catch (error) { + if (error instanceof PluginError) { + throw error; + } + + const pluginError = new PluginError( + "Plugin system error", + { + pluginName, + operation: "system", + attempt: 1, + }, + PluginErrorCode.PLUGIN_INTERNAL_ERROR, + false, + { + cause: error instanceof Error ? error : undefined, + details: { isStaging }, + }, + ); + logPluginError(pluginError, this.logger); + throw pluginError; + } + } + + async shutdown(): Promise { + await this.pluginService.cleanup(); + } +} diff --git a/apps/api/src/services/feed.service.ts b/apps/api/src/services/feed.service.ts new file mode 100644 index 00000000..59c3dd30 --- /dev/null +++ b/apps/api/src/services/feed.service.ts @@ -0,0 +1,173 @@ +import { + DistributorConfig, + FeedRepository, + InsertFeed, + RichSubmission, + StreamConfig, + submissionStatusZodEnum, + UpdateFeed, + type DB, +} from "@curatedotfun/shared-db"; +import { Logger } from "pino"; +import { IBaseService } from "./interfaces/base-service.interface"; +import { ProcessorService } from "./processor.service"; + +export class FeedService implements IBaseService { + public readonly logger: Logger; + + constructor( + private feedRepository: FeedRepository, + private processorService: ProcessorService, + private db: DB, + logger: Logger, + ) { + this.logger = logger; + } + + async getAllFeeds() { + return this.feedRepository.getAllFeeds(); + } + + async createFeed(data: InsertFeed) { + return this.db.transaction(async (tx) => { + return this.feedRepository.createFeed(data, tx); + }); + } + + async getFeedById(feedId: string) { + return this.feedRepository.getFeedById(feedId); + } + + async updateFeed(feedId: string, data: UpdateFeed) { + return this.db.transaction(async (tx) => { + return this.feedRepository.updateFeed(feedId, data, tx); + }); + } + + async deleteFeed(feedId: string) { + return this.db.transaction(async (tx) => { + const result = await this.feedRepository.deleteFeed(feedId, tx); + if (result === 0) { + this.logger.warn( + { feedId }, + "FeedService: deleteFeed - Feed not found or not deleted", + ); + return 0; + } + return result; + }); + } + + // This is a core method + // In order to process a feed, you must be the feed owner + // this will be called by trigger/ + async processFeed(feedId: string, distributorsParam?: string) { + const feed = await this.feedRepository.getFeedById(feedId); + if (!feed) { + this.logger.error( + { feedId }, + "FeedService: processFeed - Feed not found", + ); + throw new Error(`Feed not found: ${feedId}`); // Or a custom NotFoundError + } + + const feedConfig = await this.feedRepository.getFeedConfig(feedId); // Get config from DB + if (!feedConfig) { + this.logger.error( + { feedId }, + "FeedService: processFeed - Feed configuration not found in database", + ); + throw new Error(`Feed configuration not found for feedId: ${feedId}`); + } + + const approvedSubmissions: RichSubmission[] = + await this.feedRepository.getAllSubmissionsByFeed( + feedId, + submissionStatusZodEnum.Enum.approved, + ); + + if (approvedSubmissions.length === 0) { + this.logger.info( + { feedId }, + "FeedService: processFeed - No approved submissions to process.", + ); + return { processed: 0, distributors: [] }; + } + + let processedCount = 0; + const usedDistributors = new Set(); + + for (const submission of approvedSubmissions) { + try { + if ( + !feedConfig.outputs?.stream?.distribute || + feedConfig.outputs.stream.distribute.length === 0 + ) { + this.logger.info( + { submissionId: submission.tweetId, feedId }, + "FeedService: processFeed - No stream output or no distributors configured for this feed.", + ); + continue; + } + + const streamConfig: StreamConfig = { ...feedConfig.outputs.stream }; + + if (!distributorsParam) { + streamConfig.distribute?.forEach((d: DistributorConfig) => + usedDistributors.add(d.plugin), + ); + } else { + const requestedDistributors = distributorsParam + .split(",") + .map((d) => d.trim()); + const availableDistributors = + streamConfig.distribute?.map((d) => d.plugin) || []; + const validDistributors = requestedDistributors.filter((d) => + availableDistributors.includes(d), + ); + const invalidDistributors = requestedDistributors.filter( + (d) => !availableDistributors.includes(d), + ); + + if (invalidDistributors.length > 0) { + this.logger.warn( + { feedId, invalidDistributors, availableDistributors }, + `Invalid distributor(s) specified for feed ${feedId}: ${invalidDistributors.join(", ")}. Available: ${availableDistributors.join(", ")}`, + ); + } + + if (validDistributors.length === 0) { + this.logger.warn( + { feedId, requestedDistributors }, + `No valid distributors specified for feed ${feedId}. Skipping distribution for submission ${submission.tweetId}.`, + ); + continue; + } else { + streamConfig.distribute = streamConfig.distribute?.filter( + (d: DistributorConfig) => validDistributors.includes(d.plugin), + ); + validDistributors.forEach((d) => usedDistributors.add(d)); + this.logger.info( + { submissionId: submission.tweetId, feedId, validDistributors }, + `Processing submission ${submission.tweetId} for feed ${feedId} with selected distributors: ${validDistributors.join(", ")}`, + ); + } + } + + await this.processorService.process(submission, streamConfig); + processedCount++; + } catch (error) { + this.logger.error( + { error, submissionId: submission.tweetId, feedId }, + `Error processing submission ${submission.tweetId} for feed ${feedId}`, + ); + // Decide if one error should stop all processing or just skip this one + } + } + + return { + processed: processedCount, + distributors: Array.from(usedDistributors), + }; + } +} diff --git a/apps/api/src/services/interfaces/activity.interface.ts b/apps/api/src/services/interfaces/activity.interface.ts new file mode 100644 index 00000000..424307b5 --- /dev/null +++ b/apps/api/src/services/interfaces/activity.interface.ts @@ -0,0 +1,117 @@ +import { z } from "zod"; +import { + InsertActivityData, + ActivityQueryOptions, + LeaderboardQueryOptions, + LeaderboardEntry, + GlobalStats, + UpdateUserStatsData, + SelectUserStatsData, + UpdateFeedUserStatsData, + SelectFeedUserStatsData, +} from "../../validation/activity.validation"; + +export interface IActivityService { + /** + * Create a new activity entry + * @param data Activity data to insert + * @returns The created activity + */ + createActivity(data: InsertActivityData): Promise; + + /** + * Get activities for a specific user + * @param userId The user ID to get activities for + * @param options Query options for filtering and pagination + * @returns Array of activities + */ + getUserActivities( + userId: number, + options?: ActivityQueryOptions, + ): Promise; + + /** + * Get the leaderboard based on user activity + * @param options Query options for filtering and customization + * @returns Array of leaderboard entries + */ + getLeaderboard( + options?: LeaderboardQueryOptions, + ): Promise; + + /** + * Get global statistics about content submissions and approvals + * @returns Global stats object + */ + getGlobalStats(): Promise; + + /** + * Get user statistics for a specific user + * @param userId The user ID to get stats for + * @returns User stats or null if not found + */ + getUserStats(userId: number): Promise; + + /** + * Update user statistics + * @param userId The user ID to update stats for + * @param data The stats data to update + * @returns The updated user stats + */ + updateUserStats( + userId: number, + data: UpdateUserStatsData, + ): Promise; + + /** + * Get feed-specific user statistics + * @param userId The user ID + * @param feedId The feed ID + * @returns Feed user stats or null if not found + */ + getFeedUserStats( + userId: number, + feedId: string, + ): Promise; + + /** + * Update feed-specific user statistics + * @param userId The user ID + * @param feedId The feed ID + * @param data The stats data to update + * @returns The updated feed user stats + */ + updateFeedUserStats( + userId: number, + feedId: string, + data: UpdateFeedUserStatsData, + ): Promise; + + /** + * Get feeds that a user has curated for + * @param userId The user ID + * @returns Array of feeds with curator stats + */ + getFeedsCuratedByUser(userId: number): Promise; + + /** + * Get feeds that a user is an approver for + * @param userId The user ID + * @returns Array of feeds with approver stats + */ + getFeedsApprovedByUser(userId: number): Promise; + + /** + * Get a user's rank for a specific feed + * @param userId The user ID + * @param feedId The feed ID + * @returns Object containing curator and approver ranks + */ + getUserFeedRanks( + userId: number, + feedId: string, + ): Promise<{ + curatorRank: number | null; + approverRank: number | null; + }>; +} diff --git a/apps/api/src/services/interfaces/background-task.interface.ts b/apps/api/src/services/interfaces/background-task.interface.ts new file mode 100644 index 00000000..640b5b33 --- /dev/null +++ b/apps/api/src/services/interfaces/background-task.interface.ts @@ -0,0 +1,6 @@ +import { IBaseService } from "./base-service.interface"; + +export interface IBackgroundTaskService extends IBaseService { + start(): Promise; + stop(): Promise; +} diff --git a/apps/api/src/services/interfaces/base-service.interface.ts b/apps/api/src/services/interfaces/base-service.interface.ts new file mode 100644 index 00000000..d9046748 --- /dev/null +++ b/apps/api/src/services/interfaces/base-service.interface.ts @@ -0,0 +1,5 @@ +import { Logger } from "pino"; + +export interface IBaseService { + readonly logger: Logger; +} diff --git a/apps/api/src/services/interfaces/user.interface.ts b/apps/api/src/services/interfaces/user.interface.ts new file mode 100644 index 00000000..0f2888c4 --- /dev/null +++ b/apps/api/src/services/interfaces/user.interface.ts @@ -0,0 +1,45 @@ +import { z } from "zod"; +import { + insertUserSchema, + updateUserSchema, +} from "../../validation/users.validation"; + +export type InsertUserData = z.infer & { + auth_provider_id: string; +}; + +export type UpdateUserData = z.infer; + +export interface IUserService { + /** + * Find a user by their auth provider ID + * @param auth_provider_id The auth provider ID from Web3Auth + * @returns The user if found, null otherwise + */ + findUserByAuthProviderId(auth_provider_id: string): Promise; + + /** + * Create a new user with a NEAR account + * @param data User data including NEAR public key + * @returns The created user + */ + createUser(data: InsertUserData): Promise; + + /** + * Update an existing user + * @param auth_provider_id The auth provider ID of the user to update + * @param data The user data to update + * @returns The updated user or null if not found + */ + updateUser( + auth_provider_id: string, + data: UpdateUserData, + ): Promise; + + /** + * Delete a user and their associated NEAR account + * @param auth_provider_id The auth provider ID of the user to delete + * @returns True if the user and NEAR account were deleted, false otherwise + */ + deleteUser(auth_provider_id: string): Promise; +} diff --git a/apps/api/src/services/moderation.service.ts b/apps/api/src/services/moderation.service.ts new file mode 100644 index 00000000..4266a89f --- /dev/null +++ b/apps/api/src/services/moderation.service.ts @@ -0,0 +1,203 @@ +import { + DB, + FeedRepository, + InsertModerationHistory, + ModerationRepository, + RichSubmission, + SelectSubmissionFeed, + SubmissionRepository, + SubmissionStatus, + submissionStatusZodEnum, +} from "@curatedotfun/shared-db"; +import { Logger } from "pino"; +import { FeedService } from "./feed.service"; +import { IBaseService } from "./interfaces/base-service.interface"; +import { ProcessorService } from "./processor.service"; + +export interface CreateModerationApiPayload { + submissionId: string; + feedId: string; + adminId: string; + action: "approve" | "reject"; + note?: string | null; + timestamp?: Date; +} + +export class ModerationService implements IBaseService { + public readonly logger: Logger; + + constructor( + private readonly feedRepository: FeedRepository, + private readonly moderationRepository: ModerationRepository, + private readonly submissionRepository: SubmissionRepository, + private readonly processorService: ProcessorService, + private readonly feedService: FeedService, + private readonly db: DB, + logger: Logger, + ) { + this.logger = logger.child({ service: ModerationService.name }); + } + + /** + * Creates a moderation action based on API input. + * This is the primary method the new API routes will call. + */ + public async createModerationAction( + payload: CreateModerationApiPayload, + ): Promise { + const submission = await this.submissionRepository.getSubmission( + payload.submissionId, + ); + if (!submission) { + this.logger.error( + { submissionId: payload.submissionId }, + "Submission not found for moderation action.", + ); + throw new Error(`Submission ${payload.submissionId} not found.`); + } + + const feedEntry = submission.feeds.find((f) => f.feedId === payload.feedId); + if (!feedEntry) { + this.logger.error( + { submissionId: payload.submissionId, feedId: payload.feedId }, + "SubmissionFeed entry not found for moderation action.", + ); + throw new Error( + `SubmissionFeed entry for submission ${payload.submissionId} and feed ${payload.feedId} not found.`, + ); + } + + // Prevent re-moderating if not pending (optional, based on desired logic) + // if (feedEntry.status !== submissionStatusZodEnum.Enum.pending) { + // this.logger.warn({ submissionId: payload.submissionId, feedId: payload.feedId, currentStatus: feedEntry.status }, "Submission feed entry is not pending, skipping moderation."); + // // Potentially throw an error or return a specific status + // return; + // } + + const moderationActionData: InsertModerationHistory = { + tweetId: payload.submissionId, + feedId: payload.feedId, + adminId: payload.adminId, + action: payload.action, + note: payload.note || null, + createdAt: payload.timestamp || new Date(), + }; + + await this.db.transaction(async (tx) => { + await this.moderationRepository.saveModerationAction( + moderationActionData, + tx, + ); + + if (payload.action === "approve") { + await this.updateStatusAndProcess( + submission, + feedEntry, + submissionStatusZodEnum.Enum.approved, + tx, + ); + } else if (payload.action === "reject") { + await this.updateStatusAndProcess( + submission, + feedEntry, + submissionStatusZodEnum.Enum.rejected, + tx, + ); + } + }); + + this.logger.info( + { + submissionId: payload.submissionId, + feedId: payload.feedId, + action: payload.action, + adminId: payload.adminId, + }, + "Moderation action processed successfully via API.", + ); + } + + /** + * Internal helper to update submission feed status and process if approved. + */ + private async updateStatusAndProcess( + submission: RichSubmission, + feedEntry: SelectSubmissionFeed, + newStatus: SubmissionStatus, + tx: DB, + ): Promise { + const feedFromDb = await this.feedService.getFeedById(feedEntry.feedId); + if (!feedFromDb || !feedFromDb.config) { + this.logger.error( + { submissionId: submission.tweetId, feedId: feedEntry.feedId }, + `Feed or feed configuration not found for ${newStatus}.`, + ); + throw new Error( + `Feed configuration not found for feed ${feedEntry.feedId}`, + ); + } + const feedConfig = feedFromDb.config; + + try { + await this.feedRepository.updateSubmissionFeedStatus( + submission.tweetId, + feedEntry.feedId, + newStatus, + tx, + ); + + this.logger.info( + { + submissionId: submission.tweetId, + feedId: feedEntry.feedId, + status: newStatus, + }, + `Submission status updated to ${newStatus}.`, + ); + + if ( + newStatus === submissionStatusZodEnum.Enum.approved && + feedConfig.outputs?.stream?.enabled + ) { + this.logger.info( + { submissionId: submission.tweetId, feedId: feedEntry.feedId }, + "Processing approved submission for stream.", + ); + await this.processorService.process( + submission, + feedConfig.outputs.stream, + ); + } + } catch (error) { + this.logger.error( + { + error, + submissionId: submission.tweetId, + feedId: feedEntry.feedId, + status: newStatus, + }, + `Failed to process ${newStatus} submission in ModerationService.`, + ); + throw error; + } + } + + // --- Methods for API routes to get moderation data --- + public async getModerationById(id: number) { + return this.moderationRepository.getModerationById(id); + } + + public async getModerationsForSubmission(submissionId: string) { + return this.moderationRepository.getModerationsBySubmissionId(submissionId); + } + + public async getModerationsForSubmissionFeed( + submissionId: string, + feedId: string, + ) { + return this.moderationRepository.getModerationsBySubmissionFeed( + submissionId, + feedId, + ); + } +} diff --git a/backend/src/services/plugins/plugin.service.ts b/apps/api/src/services/plugin.service.ts similarity index 63% rename from backend/src/services/plugins/plugin.service.ts rename to apps/api/src/services/plugin.service.ts index 5756ddef..212a4654 100644 --- a/backend/src/services/plugins/plugin.service.ts +++ b/apps/api/src/services/plugin.service.ts @@ -1,49 +1,37 @@ -import { performReload } from "@module-federation/node/utils"; -import { init, loadRemote } from "@module-federation/runtime"; -import { - PluginError, - PluginInitError, - PluginLoadError, -} from "../../types/errors"; - -import { +import { PluginRepository } from "@curatedotfun/shared-db"; +import type { BotPlugin, DistributorPlugin, - PluginConfig, PluginType, PluginTypeMap, + SourceItem, + SourcePlugin, TransformerPlugin, } from "@curatedotfun/types"; -import { logger } from "../../utils/logger"; -import { createPluginInstanceKey } from "../../utils/plugin"; -import { ConfigService, isProduction } from "../config/config.service"; -import { Hono } from "hono"; +import { PluginError, PluginErrorCode } from "@curatedotfun/utils"; +import { performReload } from "@module-federation/node/utils"; +import { init, loadRemote } from "@module-federation/runtime"; +import type { Logger } from "pino"; +import Mustache from "mustache"; +import { PluginConfig } from "types/config"; +import { env } from "../env"; +import { db } from "../db"; +import { logPluginError } from "../utils/error"; +import { logger } from "../utils/logger"; +import { createPluginInstanceKey } from "../utils/plugin"; +import { isProduction } from "./config.service"; +import { IBaseService } from "./interfaces/base-service.interface"; /** * Cache entry for a loaded plugin */ export interface PluginCache { instance: P & { - __config: PluginConfig< - T, - P extends BotPlugin ? C : Record - >; + __config: PluginConfig; }; lastLoaded: Date; } -export interface PluginEndpoint { - // move to types - path: string; - method: "GET" | "POST" | "PUT" | "DELETE"; - handler: (ctx: import("hono").Context) => Promise; -} - -interface PluginWithEndpoints extends BotPlugin> { - // move to types - getEndpoints?: () => PluginEndpoint[]; -} - interface RemoteConfig { name: string; entry: string; @@ -63,7 +51,7 @@ interface RemoteState { interface InstanceState { instance: PluginTypeMap>[T]; - config: PluginConfig>; + config: PluginConfig; loadedAt: Date; authFailures: number; remoteName: string; @@ -84,13 +72,10 @@ type PluginContainer< * PluginService manages the complete lifecycle of plugins including loading, * initialization, caching, endpoint registration, and cleanup. */ -export class PluginService { - private static instance: PluginService; +export class PluginService implements IBaseService { private remotes: Map = new Map(); private instances: Map> = new Map(); - private endpoints: Map = new Map(); - private app: Hono | null = null; - private configService: ConfigService; + private pluginRepository: PluginRepository; // Time in milliseconds before cached items are considered stale private readonly instanceCacheTimeout: number = 7 * 24 * 60 * 60 * 1000; // 7 days (instance of a plugin with config) @@ -100,29 +85,10 @@ export class PluginService { private readonly maxAuthFailures: number = 2; // one less than 3 to avoid locking private readonly retryDelays: number[] = [1000, 5000]; // Delays between retries in ms - private constructor() { - this.configService = ConfigService.getInstance(); - } - - /** - * Gets the singleton instance of PluginService - */ - public static getInstance(): PluginService { - if (!PluginService.instance) { - PluginService.instance = new PluginService(); - } - return PluginService.instance; - } - - /** - * Sets the Elysia app instance for endpoint registration - */ - public setApp(app: Hono) { - this.app = app; - // Register any pending endpoints - for (const [name, endpoints] of this.endpoints) { - this.registerEndpoints(name, endpoints); - } + public readonly logger: Logger; + constructor(logger: Logger) { + this.logger = logger; + this.pluginRepository = new PluginRepository(db); } /** @@ -138,21 +104,50 @@ export class PluginService { pluginConfig: { type: T; config: TConfig }, ): Promise[T]> { try { - // Get plugin metadata from app config - const pluginMeta = this.configService.getPluginByName(name); - - if (!pluginMeta) { - throw new PluginLoadError( - name, - "", - new Error(`Plugin ${name} not found in app configuration`), + // Get plugin metadata from database + const registeredPlugin = + await this.pluginRepository.getPluginByName(name); + + if (!registeredPlugin) { + const error = new PluginError( + `Plugin ${name} not found in database`, + { + pluginName: name, + operation: "load", + }, + PluginErrorCode.PLUGIN_INITIALIZATION_FAILED, + false, ); + logPluginError(error, this.logger); + throw error; } - // Create full config with URL from app config - const config: PluginConfig = { + // Validate requested type matches registered type + if (pluginConfig.type !== registeredPlugin.type) { + const error = new PluginError( + `Plugin type mismatch: requested ${pluginConfig.type}, but plugin is registered as ${registeredPlugin.type}`, + { + pluginName: name, + operation: "load", + }, + PluginErrorCode.PLUGIN_CONFIG_INVALID, + false, + { + details: { + requestedType: pluginConfig.type, + registeredType: registeredPlugin.type, + entryPoint: registeredPlugin.entryPoint, + }, + }, + ); + logPluginError(error, this.logger); + throw error; + } + + // Create full config with URL from database + const config: PluginConfig = { type: pluginConfig.type, - url: pluginMeta.url, + url: registeredPlugin.entryPoint, config: pluginConfig.config, }; @@ -163,7 +158,17 @@ export class PluginService { const instance = this.instances.get(instanceId); if (instance) { if (instance.authFailures >= this.maxAuthFailures) { - throw new PluginError(`Plugin ${name} disabled due to auth failures`); + const error = new PluginError( + `Plugin ${name} disabled due to auth failures`, + { + pluginName: name, + operation: "load", + }, + PluginErrorCode.PLUGIN_AUTHENTICATION_FAILURE, + false, + ); + logPluginError(error, this.logger); + throw error; } if (!this.isStale(instance.loadedAt, this.instanceCacheTimeout)) { @@ -209,7 +214,13 @@ export class PluginService { TOutput, TConfig >[T]; - await newInstance.initialize(config.config); + + // Hydrate config with environment variables + const stringifiedConfig = JSON.stringify(config.config); + const populatedConfigString = Mustache.render(stringifiedConfig, env); // TODO: Whitelist values + const hydratedConfig = JSON.parse(populatedConfigString) as TConfig; + + await newInstance.initialize(hydratedConfig); // // Validate instance implements required interface // if (!this.validatePluginInterface(newInstance, config.type)) { @@ -221,13 +232,6 @@ export class PluginService { // ); // } - // Register endpoints if available - if (this.app && (newInstance as PluginWithEndpoints).getEndpoints) { - const endpoints = (newInstance as PluginWithEndpoints) - .getEndpoints!(); - this.registerEndpoints(normalizedName, endpoints); - } - // Cache successful instance const instanceState: InstanceState = { instance: newInstance as PluginTypeMap< @@ -235,7 +239,7 @@ export class PluginService { unknown, Record >[T], - config: config as PluginConfig>, + config: config as PluginConfig, loadedAt: new Date(), authFailures: 0, remoteName: normalizedName, @@ -251,12 +255,18 @@ export class PluginService { instance.authFailures += 1; if (instance.authFailures >= this.maxAuthFailures) { - logger.error(`Plugin ${name} disabled due to auth failures`); - // Clean up endpoints before disabling - this.unregisterEndpoints(normalizedName); - throw new PluginError( + const error = new PluginError( `Plugin ${name} disabled after ${instance.authFailures} auth failures`, + { + pluginName: name, + operation: "load", + attempt: instance.authFailures, + }, + PluginErrorCode.PLUGIN_AUTHENTICATION_FAILURE, + false, ); + logPluginError(error, this.logger); + throw error; } } @@ -275,15 +285,33 @@ export class PluginService { // If we get here, all retries failed // Clean up failed remote - this.unregisterEndpoints(normalizedName); - throw lastError || new PluginError(`Failed to initialize plugin ${name}`); + const error = new PluginError( + lastError?.message || `Failed to initialize plugin ${name}`, + { + pluginName: name, + operation: "load", + }, + PluginErrorCode.PLUGIN_INITIALIZATION_FAILED, + false, + { cause: lastError || undefined }, + ); + logPluginError(error, this.logger); + throw error; } catch (error) { logger.error(`Plugin error: ${name}`, { error }); throw error instanceof PluginError ? error : new PluginError( `Unexpected error with plugin ${name}`, - error as Error, + { + pluginName: name, + operation: "unknown", + }, + PluginErrorCode.UNKNOWN_PLUGIN_ERROR, + false, + { + cause: error instanceof Error ? error : undefined, + }, ); } } @@ -306,11 +334,20 @@ export class PluginService { `${remote.config.name}/plugin`, ); if (!container) { - throw new PluginLoadError( - remote.config.name, - remote.config.entry, - new Error("Plugin module not found"), + const error = new PluginError( + "Plugin module not found", + { + pluginName: remote.config.name, + operation: "load", + }, + PluginErrorCode.PLUGIN_INITIALIZATION_FAILED, + false, + { + details: { entryPoint: remote.config.entry }, + }, ); + logPluginError(error, this.logger); + throw error; } // Handle both default export and direct constructor @@ -318,11 +355,20 @@ export class PluginService { typeof container === "function" ? container : container.default; if (!module || typeof module !== "function") { - throw new PluginLoadError( - remote.config.name, - remote.config.entry, - new Error("Invalid plugin format - no constructor found"), + const error = new PluginError( + "Invalid plugin format - no constructor found", + { + pluginName: remote.config.name, + operation: "load", + }, + PluginErrorCode.PLUGIN_INITIALIZATION_FAILED, + false, + { + details: { entryPoint: remote.config.entry }, + }, ); + logPluginError(error, this.logger); + throw error; } remote.module = module; @@ -336,8 +382,6 @@ export class PluginService { } catch (error) { remote.status = "failed"; remote.lastError = error as Error; - // Clean up failed remote - this.unregisterEndpoints(remote.config.name); throw error; } } @@ -356,7 +400,16 @@ export class PluginService { } catch (error) { const pluginError = new PluginError( `Failed to shutdown plugin instance ${id}`, - error as Error, + { + pluginName: state.remoteName, + operation: "shutdown", + }, + PluginErrorCode.PLUGIN_SHUTDOWN_FAILED, + false, + { + cause: error instanceof Error ? error : undefined, + details: { instanceId: id }, + }, ); errors.push(pluginError); logger.error(`Shutdown error`, { @@ -365,12 +418,9 @@ export class PluginService { }); } } - // Clean up endpoints for each instance - this.unregisterEndpoints(state.remoteName); } this.instances.clear(); - this.endpoints.clear(); this.remotes.clear(); if (errors.length > 0) { @@ -381,64 +431,6 @@ export class PluginService { } } - /** - * Registers plugin endpoints with the Elysia app - */ - private registerEndpoints(name: string, endpoints: PluginEndpoint[]): void { - if (!this.app) { - this.endpoints.set(name, endpoints); - return; - } - - // Remove any existing endpoints first - this.unregisterEndpoints(name); - - for (const endpoint of endpoints) { - const path = `/plugin/${name}${endpoint.path}`; - logger.info(`Registering endpoint: ${endpoint.method} ${path}`); - - switch (endpoint.method) { - case "GET": - this.app.get(path, endpoint.handler); - break; - case "POST": - this.app.post(path, endpoint.handler); - break; - case "PUT": - this.app.put(path, endpoint.handler); - break; - case "DELETE": - this.app.delete(path, endpoint.handler); - break; - } - } - - // Store new endpoints - this.endpoints.set(name, endpoints); - } - - /** - * Unregisters all endpoints for a plugin - */ - private unregisterEndpoints(name: string): void { - if (!this.app) { - this.endpoints.delete(name); - return; - } - - const endpoints = this.endpoints.get(name); - if (endpoints) { - for (const endpoint of endpoints) { - const path = `/plugin/${name}${endpoint.path}`; - logger.info(`Unregistering endpoint: ${endpoint.method} ${path}`); - // Note: Elysia doesn't provide a direct way to unregister routes - // The routes will be overwritten if registered again - // or cleared when the app is cleaned up - } - } - this.endpoints.delete(name); - } - /** * Validates that a plugin instance implements the required interface */ @@ -453,7 +445,13 @@ export class PluginService { ): instance is PluginTypeMap[T] { if (!instance || typeof instance !== "object") return false; if (typeof instance.initialize !== "function") return false; - if (instance.type !== type) return false; + if (instance.type !== type) { + logger.warn( + `Plugin instance type mismatch: expected ${type}, got ${instance.type}`, + { name: (instance as any)?.constructor?.name }, + ); + return false; + } switch (type) { case "distributor": @@ -467,12 +465,16 @@ export class PluginService { TOutput, TConfig >; - return ( - typeof transformer.transform === "function" && - transformer.type === "transformer" - ); + return typeof transformer.transform === "function"; + } + case "source": { + const source = instance as SourcePlugin; + return typeof source.search === "function"; } default: + // This case should ideally not be reached if PluginType is a comprehensive union + // and all cases are handled. + logger.warn(`Unknown plugin type encountered in validation: ${type}`); return false; } } diff --git a/backend/src/services/processor/processor.service.ts b/apps/api/src/services/processor.service.ts similarity index 87% rename from backend/src/services/processor/processor.service.ts rename to apps/api/src/services/processor.service.ts index 590a7000..974a59f7 100644 --- a/backend/src/services/processor/processor.service.ts +++ b/apps/api/src/services/processor.service.ts @@ -1,9 +1,15 @@ -import { DistributorConfig, TransformConfig } from "../../types/config"; -import { ProcessorError, TransformError } from "../../types/errors"; -import { DistributionService } from "../distribution/distribution.service"; -import { TransformationService } from "../transformation/transformation.service"; -import { logger } from "../../utils/logger"; -import { sanitizeJson } from "../../utils/sanitize"; +import { + DistributorConfig, + RichSubmission, + TransformConfig, +} from "@curatedotfun/shared-db"; +import { ProcessorError, TransformError } from "@curatedotfun/utils"; +import { Logger } from "pino"; +import { logger } from "../utils/logger"; +import { sanitizeJson } from "../utils/sanitize"; +import { DistributionService } from "./distribution.service"; +import { IBaseService } from "./interfaces/base-service.interface"; +import { TransformationService } from "./transformation.service"; interface ProcessConfig { enabled?: boolean; @@ -11,17 +17,22 @@ interface ProcessConfig { distribute?: DistributorConfig[]; } -export class ProcessorService { +export class ProcessorService implements IBaseService { + public readonly logger: Logger; + constructor( private transformationService: TransformationService, private distributionService: DistributionService, - ) {} + logger: Logger, + ) { + this.logger = logger; + } /** * Process content through transformation pipeline and distribute * Can be used for both individual submissions and bulk content (like recaps) */ - async process(content: any, config: ProcessConfig) { + async process(content: RichSubmission, config: ProcessConfig) { try { // Apply global transforms if any let processed = content; @@ -45,7 +56,7 @@ export class ProcessorService { } } - // 2. For each distributor, apply its transforms and distribute + // For each distributor, apply its transforms and distribute if (!config.distribute?.length) { throw new ProcessorError("unknown", "No distributors configured"); } @@ -99,11 +110,7 @@ export class ProcessorService { // If all distributors failed, throw an error if (errors.length === config.distribute.length) { - throw new ProcessorError( - "unknown", - "All distributors failed", - new AggregateError(errors), - ); + throw new ProcessorError("unknown", "All distributors failed"); } } catch (error) { // Wrap any unknown errors @@ -113,7 +120,6 @@ export class ProcessorService { throw new ProcessorError( "unknown", error instanceof Error ? error.message : "Unknown error", - error instanceof Error ? error : undefined, ); } } @@ -214,11 +220,7 @@ export class ProcessorService { // If all distributors failed, throw an error if (errors.length === config.distribute.length) { - throw new ProcessorError( - "unknown", - "All distributors failed", - new AggregateError(errors), - ); + throw new ProcessorError("unknown", "All distributors failed"); } } catch (error) { if (error instanceof ProcessorError || error instanceof TransformError) { @@ -227,7 +229,6 @@ export class ProcessorService { throw new ProcessorError( "unknown", error instanceof Error ? error.message : "Unknown error", - error instanceof Error ? error : undefined, ); } } diff --git a/apps/api/src/services/scheduler.service.ts b/apps/api/src/services/scheduler.service.ts new file mode 100644 index 00000000..15134163 --- /dev/null +++ b/apps/api/src/services/scheduler.service.ts @@ -0,0 +1,420 @@ +// import { +// SchedulerClient, +// JobType, +// ScheduleType, +// IntervalType, +// JobNotFoundError, +// JobStatus, +// } from "@crosspost/scheduler-sdk"; +// import { FeedRepository } from "./db/repositories/feed.repository"; +// import { ProcessorService } from "./processor.service"; +// import { logger } from "../utils/logger"; +// import { RecapConfig, RecapState } from "../types/recap"; + +// /** +// * Configuration for a scheduled job +// */ +// interface ScheduleConfig { +// schedule_type: ScheduleType; +// cron_expression?: string; +// interval?: IntervalType; +// interval_value?: number; +// } + +// /** +// * Service for managing scheduled recap jobs +// */ +// export class SchedulerService { +// constructor( +// private feedRepository: FeedRepository, +// private processorService: ProcessorService, +// private schedulerClient: SchedulerClient, +// private backendUrl: string, +// ) {} + +// /** +// * Initialize the scheduler service +// * Syncs all feed schedules on startup +// */ +// async initialize(): Promise { +// logger.info("Initializing scheduler service"); + +// try { +// // Get all feed configs +// const feedConfigs = await this.feedRepository.getAllFeedConfigs(); + +// // Sync schedules for each feed +// for (const feedConfig of feedConfigs) { +// await this.syncFeedSchedules(feedConfig.id); +// } + +// logger.info("Scheduler service initialized successfully"); +// } catch (error) { +// logger.error("Failed to initialize scheduler service:", error); +// throw error; +// } +// } + +// /** +// * Synchronize recap schedules for a feed +// * Creates, updates, or deletes jobs based on the feed configuration +// */ +// async syncFeedSchedules(feedId: string): Promise { +// logger.info(`Syncing schedules for feed: ${feedId}`); + +// try { +// // Get feed config +// const feedConfig = await this.feedRepository.getFeedConfig(feedId); +// if (!feedConfig) { +// logger.warn(`Feed not found: ${feedId}`); +// return; +// } + +// // Get all existing recap states for this feed +// const existingStates = +// await this.feedRepository.getAllRecapStatesForFeed(feedId); + +// // Process each recap config +// const recaps = feedConfig.outputs.recap || []; +// for (const recapConfig of recaps) { +// await this.syncRecapJob(feedId, recapConfig, existingStates); +// } + +// // Clean up any state records for recaps that no longer exist +// for (const state of existingStates) { +// // Check if this state record corresponds to a recap that still exists +// const recapStillExists = recaps.some( +// (recap) => recap.id === state.recapId, +// ); + +// // If the recap no longer exists, clean it up +// if (!recapStillExists) { +// logger.info( +// `Cleaning up state for removed recap: ${feedId}/${state.recapId}`, +// ); + +// // Delete the external job if it exists +// if (state.externalJobId) { +// try { +// await this.schedulerClient.deleteJob(state.externalJobId); +// logger.info(`Deleted external job: ${state.externalJobId}`); +// } catch (error) { +// if (error instanceof JobNotFoundError) { +// logger.warn( +// `Job not found, already deleted: ${state.externalJobId}`, +// ); +// } else { +// logger.error( +// `Failed to delete job: ${state.externalJobId}`, +// error, +// ); +// } +// } +// } + +// // Delete the state record +// await this.feedRepository.deleteRecapState(feedId, state.recapId); +// } +// } + +// logger.info(`Successfully synced schedules for feed: ${feedId}`); +// } catch (error) { +// logger.error(`Failed to sync schedules for feed: ${feedId}`, error); +// throw error; +// } +// } + +// /** +// * Synchronize a single recap job +// */ +// private async syncRecapJob( +// feedId: string, +// recapConfig: RecapConfig, +// existingStates: RecapState[], +// ): Promise { +// // Find existing state for this recap by ID +// const existingState = existingStates.find( +// (state) => state.recapId === recapConfig.id, +// ); + +// // Job name must be unique and consistent +// const jobName = `curate-recap-${feedId}-${recapConfig.id}`; + +// // Payload for the job +// const payload = { feedId, recapId: recapConfig.id }; + +// // Target URL for the job +// const target = `${this.backendUrl}/api/trigger/recap`; + +// // Parse schedule +// const scheduleConfig = this.parseSchedule(recapConfig.schedule); + +// if (recapConfig.enabled) { +// // Recap is enabled, create or update job +// if (existingState?.externalJobId) { +// // Update existing job +// try { +// logger.info(`Updating job for recap: ${feedId}/${recapConfig.id}`); + +// const updatedJob = await this.schedulerClient.updateJob( +// existingState.externalJobId, +// { +// ...scheduleConfig, +// payload, +// target, +// }, +// ); + +// if (!updatedJob || !updatedJob.id) { +// throw new Error( +// `Failed to update job: ${existingState.externalJobId} - No job ID returned`, +// ); +// } + +// // Update state record +// await this.feedRepository.upsertRecapState({ +// feedId, +// recapId: recapConfig.id, +// externalJobId: updatedJob.id, +// lastSuccessfulCompletion: existingState.lastSuccessfulCompletion, +// lastRunError: existingState.lastRunError, +// }); + +// logger.info(`Successfully updated job: ${updatedJob.id}`); +// } catch (error) { +// if (error instanceof JobNotFoundError) { +// logger.warn( +// `Job not found, creating new one: ${existingState.externalJobId}`, +// ); +// await this.createNewJob( +// feedId, +// recapConfig, +// jobName, +// target, +// payload, +// scheduleConfig, +// existingState || null, +// ); +// } else { +// logger.error( +// `Failed to update job: ${existingState.externalJobId}`, +// error, +// ); +// throw error; +// } +// } +// } else { +// // Create new job +// await this.createNewJob( +// feedId, +// recapConfig, +// jobName, +// target, +// payload, +// scheduleConfig, +// existingState || null, +// ); +// } +// } else if (existingState?.externalJobId) { +// // Recap is disabled but job exists, delete it +// try { +// logger.info( +// `Deleting job for disabled recap: ${feedId}/${recapConfig.id}`, +// ); + +// await this.schedulerClient.deleteJob(existingState.externalJobId); +// await this.feedRepository.deleteRecapState(feedId, recapConfig.id); + +// logger.info(`Successfully deleted job: ${existingState.externalJobId}`); +// } catch (error) { +// if (error instanceof JobNotFoundError) { +// logger.warn( +// `Job not found, already deleted: ${existingState.externalJobId}`, +// ); +// await this.feedRepository.deleteRecapState(feedId, recapConfig.id); +// } else { +// logger.error( +// `Failed to delete job: ${existingState.externalJobId}`, +// error, +// ); +// throw error; +// } +// } +// } +// } + +// /** +// * Create a new job for a recap +// */ +// private async createNewJob( +// feedId: string, +// recapConfig: RecapConfig, +// jobName: string, +// target: string, +// payload: { feedId: string; recapId: string }, +// scheduleConfig: ScheduleConfig, +// existingState: RecapState | null, +// ): Promise { +// try { +// logger.info(`Creating new job for recap: ${feedId}/${recapConfig.id}`); + +// const newJob = await this.schedulerClient.createJob({ +// name: jobName, +// type: JobType.HTTP, +// status: JobStatus.ACTIVE, +// target, +// payload, +// ...scheduleConfig, +// }); + +// if (!newJob || !newJob.id) { +// throw new Error( +// `Failed to create job for recap: ${feedId}/${recapConfig.id} - No job ID returned`, +// ); +// } + +// // Update state record +// await this.feedRepository.upsertRecapState({ +// feedId, +// recapId: recapConfig.id, +// externalJobId: newJob.id, +// lastSuccessfulCompletion: +// existingState?.lastSuccessfulCompletion ?? null, +// lastRunError: existingState?.lastRunError ?? null, +// }); + +// logger.info(`Successfully created job: ${newJob.id}`); +// } catch (error) { +// logger.error( +// `Failed to create job for recap: ${feedId}/${recapConfig.id}`, +// error, +// ); +// throw error; +// } +// } + +// /** +// * Parse a schedule string into scheduler SDK config +// * Supports cron expressions and interval specifications +// */ +// private parseSchedule(schedule: string): ScheduleConfig { +// // Check if it's a cron expression +// if (schedule.includes(" ") && schedule.split(" ").length >= 5) { +// return { +// schedule_type: ScheduleType.CRON, +// cron_expression: schedule, +// }; +// } + +// // Check if it's an interval specification (e.g., "day:1") +// const intervalMatch = schedule.match(/^([a-z]+):(\d+)$/i); +// if (intervalMatch) { +// const [, intervalType, intervalValue] = intervalMatch; + +// // Map interval type to SDK enum +// let mappedIntervalType: IntervalType; +// switch (intervalType.toLowerCase()) { +// case "minute": +// mappedIntervalType = IntervalType.MINUTE; +// break; +// case "hour": +// mappedIntervalType = IntervalType.HOUR; +// break; +// case "day": +// mappedIntervalType = IntervalType.DAY; +// break; +// case "week": +// mappedIntervalType = IntervalType.WEEK; +// break; +// case "month": +// mappedIntervalType = IntervalType.MONTH; +// break; +// case "year": +// mappedIntervalType = IntervalType.YEAR; +// break; +// default: +// throw new Error(`Unsupported interval type: ${intervalType}`); +// } + +// return { +// schedule_type: ScheduleType.RECURRING, +// interval: mappedIntervalType, +// interval_value: parseInt(intervalValue, 10), +// }; +// } + +// // Default to treating it as a cron expression +// return { +// schedule_type: ScheduleType.CRON, +// cron_expression: schedule, +// }; +// } + +// /** +// * Run a recap job +// * This is called by the internal API endpoint when a job is triggered +// */ +// async runRecapJob(feedId: string, recapId: string): Promise { +// logger.info(`Running recap job: ${feedId}/${recapId}`); + +// try { +// // Get feed config +// const feedConfig = await this.feedRepository.getFeedConfig(feedId); +// if (!feedConfig) { +// throw new Error(`Feed not found: ${feedId}`); +// } + +// // Get recap config +// const recaps = feedConfig.outputs.recap || []; +// const recapConfig = recaps.find((recap) => recap.id === recapId); + +// if (!recapConfig) { +// throw new Error(`Recap config not found: ${feedId}/${recapId}`); +// } + +// // Get recap state +// const recapState = await this.feedRepository.getRecapState( +// feedId, +// recapId, +// ); + +// // Get approved submissions since last successful completion +// const submissions = await this.feedRepository.getApprovedSubmissionsSince( +// feedId, +// recapState?.lastSuccessfulCompletion || null, +// ); + +// if (submissions.length === 0) { +// logger.info(`No new submissions for recap: ${feedId}/${recapId}`); +// // Still update the completion timestamp to avoid processing the same time period again +// await this.feedRepository.updateRecapCompletion( +// feedId, +// recapId, +// new Date(), +// ); +// return; +// } + +// // Process the submissions +// await this.processorService.processBatch(submissions, recapConfig); + +// // Update the last successful completion timestamp +// await this.feedRepository.updateRecapCompletion( +// feedId, +// recapId, +// new Date(), +// ); + +// logger.info(`Successfully ran recap job: ${feedId}/${recapId}`); +// } catch (error) { +// logger.error(`Failed to run recap job: ${feedId}/${recapId}`, error); + +// // Update the error message +// const errorMessage = +// error instanceof Error ? error.message : String(error); +// await this.feedRepository.updateRecapError(feedId, recapId, errorMessage); + +// throw error; +// } +// } +// } diff --git a/apps/api/src/services/submission.service.ts b/apps/api/src/services/submission.service.ts new file mode 100644 index 00000000..158d9142 --- /dev/null +++ b/apps/api/src/services/submission.service.ts @@ -0,0 +1,347 @@ +import { + DB, + FeedRepository, + InsertSubmission, + InsertSubmissionFeed, + SelectFeed, + SubmissionRepository, + submissionStatusZodEnum, +} from "@curatedotfun/shared-db"; +import { Tweet } from "agent-twitter-client"; +import { Logger } from "pino"; +import { FeedService } from "./feed.service"; +import { IBackgroundTaskService } from "./interfaces/background-task.interface"; +import { TwitterService } from "./twitter/client"; + +export class SubmissionService implements IBackgroundTaskService { + public readonly logger: Logger; + private checkInterval: NodeJS.Timeout | null = null; + + constructor( + private readonly twitterService: TwitterService, + private readonly feedRepository: FeedRepository, + private readonly submissionRepository: SubmissionRepository, + private readonly db: DB, + private readonly feedService: FeedService, + logger: Logger, + ) { + this.logger = logger; + } + + async initialize(): Promise { + this.logger.info("SubmissionService initialized."); + } + + async start(): Promise { + await this.checkMentions(); + this.checkInterval = setInterval(async () => { + await this.checkMentions(); + }, 60000); // Check every 60 seconds + } + + async stop(): Promise { + if (this.checkInterval) { + clearInterval(this.checkInterval); + this.checkInterval = null; + } + this.logger.info("SubmissionService stopped."); + } + + private async checkMentions(): Promise { + try { + this.logger.info("Checking for new mentions..."); + const newTweets = await this.twitterService.fetchAllNewMentions(); + + if (newTweets.length === 0) { + this.logger.info("No new mentions found."); + return; + } + + this.logger.info(`Found ${newTweets.length} new mentions.`); + + for (const tweet of newTweets) { + try { + if (this.isSubmission(tweet)) { + this.logger.info({ tweetId: tweet.id }, "Processing submission."); + await this.handleSubmission(tweet); + } + } catch (error) { + this.logger.error( + { error, tweetId: tweet.id }, + "Error processing individual tweet in checkMentions loop.", + ); + } + } + } catch (error) { + this.logger.error({ error }, "Error during checkMentions execution."); + } + } + + private isSubmission(tweet: Tweet): boolean { + return tweet.text?.toLowerCase().includes("!submit") || false; + } + + private extractDescription( + originalTweetUsername: string, + curatorTweet: Tweet, + ): string | null { + const text = curatorTweet.text + ?.replace(/!submit\s+@\w+/i, "") + .replace(new RegExp(`@${originalTweetUsername}`, "i"), "") // Remove mention of the original author + .replace(/#\w+/g, "") // Remove all hashtags + .trim(); + return text || null; + } + + private async extractAndValidateSubmissionDetails( + curatorTweetCmd: Tweet, + ): Promise<{ + curatorTweet: Tweet; + originalTweet: Tweet; + curatorUserId: string; + curatorNotes: string | null; + targetFeeds: SelectFeed[]; + } | null> { + const curatorUserId = curatorTweetCmd.userId; + if (!curatorUserId || !curatorTweetCmd.id) { + this.logger.error( + { tweetId: curatorTweetCmd.id, userId: curatorUserId }, + "Curator user ID or tweet ID is invalid.", + ); + return null; + } + + const inReplyToId = curatorTweetCmd.inReplyToStatusId; + if (!inReplyToId) { + this.logger.info( + // Info, as it might be a standalone !submit tweet not replying + { tweetId: curatorTweetCmd.id }, + "Submission command tweet is not a reply to another tweet. Cannot process as a submission.", + ); + return null; + } + + const curatorTweet = await this.twitterService.getTweet(curatorTweetCmd.id); + if (!curatorTweet || !curatorTweet.username) { + this.logger.error( + { tweetId: curatorTweetCmd.id }, + "Could not fetch full curator tweet details.", + ); + return null; + } + + // Rule: Bot cannot submit content + if (curatorTweet.username.toLowerCase() === "curatedotfun") { + this.logger.info( + { tweetId: curatorTweet.id, username: curatorTweet.username }, + "Submission attempt by the bot itself. Ignoring.", + ); + return null; + } + + const originalTweet = await this.twitterService.getTweet(inReplyToId); + if ( + !originalTweet || + !originalTweet.id || + !originalTweet.userId || + !originalTweet.username + ) { + this.logger.error( + { + curatorTweetId: curatorTweet.id, + originalTweetIdAttempt: inReplyToId, + }, + "Could not fetch complete original tweet details.", + ); + return null; + } + + const curatorNotes = this.extractDescription( + originalTweet.username, + curatorTweet, + ); + + let feedSlugsFromHashtags = (curatorTweet.hashtags || []).map((h) => + h.toLowerCase(), + ); + + const includesAllHashtag = curatorTweet.text + ?.toLowerCase() + .includes("#all"); + + if (feedSlugsFromHashtags.length === 0 && !includesAllHashtag) { + feedSlugsFromHashtags.push("all"); // Default to 'all' if no hashtags and #all is not present + } else if (includesAllHashtag && !feedSlugsFromHashtags.includes("all")) { + feedSlugsFromHashtags.push("all"); // Add 'all' if #all is present but not in extracted hashtags + } + + feedSlugsFromHashtags = [...new Set(feedSlugsFromHashtags)]; // Deduplicate + + if (feedSlugsFromHashtags.length === 0) { + this.logger.warn( + { curatorTweetId: curatorTweet.id }, + "No target feeds identified for submission (after defaulting logic). Skipping.", + ); + return null; + } + + // Fetch feed entities + const targetFeeds: SelectFeed[] = []; + for (const slug of feedSlugsFromHashtags) { + const feed = await this.feedService.getFeedById(slug); // Assuming getFeedById can take slug + if (feed) { + targetFeeds.push(feed); + } else { + this.logger.warn( + { curatorTweetId: curatorTweet.id, feedSlug: slug }, + "Referenced feed slug does not exist. It will be ignored for this submission.", + ); + } + } + + if (targetFeeds.length === 0) { + this.logger.warn( + { + curatorTweetId: curatorTweet.id, + attemptedSlugs: feedSlugsFromHashtags, + }, + "No valid feeds found for submission after checking existence. Skipping.", + ); + return null; + } + + return { + curatorTweet, + originalTweet, + curatorUserId, + curatorNotes, + targetFeeds, + }; + } + + private async handleSubmission(curatorTweetCmd: Tweet): Promise { + const submissionDetails = + await this.extractAndValidateSubmissionDetails(curatorTweetCmd); + + if (!submissionDetails) { + this.logger.info( + { tweetId: curatorTweetCmd.id }, + "Submission details invalid or incomplete. Aborting submission.", + ); + return; + } + + const { + originalTweet, + curatorTweet, + curatorUserId, + curatorNotes, + targetFeeds, + } = submissionDetails; + + try { + await this.db.transaction(async (tx) => { + let submission = await this.submissionRepository.getSubmission( + originalTweet.id!, + ); + + if (!submission) { + const newSubmissionData: InsertSubmission = { + userId: originalTweet.userId!, + tweetId: originalTweet.id!, + content: originalTweet.text || "", + username: originalTweet.username!, + createdAt: originalTweet.timeParsed || new Date(), + curatorId: curatorUserId, + curatorUsername: curatorTweet.username!, + curatorNotes, + curatorTweetId: curatorTweet.id!, + submittedAt: curatorTweet.timeParsed || new Date(), + }; + await this.submissionRepository.saveSubmission(newSubmissionData, tx); + this.logger.info( + { + originalTweetId: originalTweet.id, + curatorTweetId: curatorTweet.id, + }, + "New submission successfully created.", + ); + // await this.submissionRepository.incrementDailySubmissionCount(curatorUserId, tx); + } else { + this.logger.info( + { originalTweetId: originalTweet.id }, + "Submission already exists. Proceeding to check feed associations.", + ); + } + + for (const feed of targetFeeds) { + // Check if the submission is already linked to this feed. + const existingFeedLinks = + await this.feedRepository.getFeedsBySubmission(originalTweet.id!); + const existingFeedEntry = existingFeedLinks.find( + (link) => link.feedId === feed.id, + ); + + if (!existingFeedEntry) { + const newSfEntryData: InsertSubmissionFeed = { + submissionId: originalTweet.id!, + feedId: feed.id, + status: submissionStatusZodEnum.Enum.pending, + }; + await this.feedRepository.saveSubmissionToFeed(newSfEntryData, tx); + this.logger.info( + { + submissionId: originalTweet.id, + feedId: feed.id, + status: "pending", + }, + "Submission associated with new feed.", + ); + } else { + this.logger.info( + { + submissionId: originalTweet.id, + feedId: feed.id, + status: existingFeedEntry.status, + }, + "Submission already associated with this feed.", + ); + } + } + }); // End of transaction + + await this.handleAcknowledgement(curatorTweetCmd); + this.logger.info( + { + curatorTweetId: curatorTweetCmd.id, + originalTweetId: originalTweet.id, + }, + "Submission processed successfully (created or updated feed links).", + ); + } catch (error) { + this.logger.error( + { + error, + curatorTweetId: curatorTweetCmd.id, + originalTweetId: originalTweet.id, + }, + "Error during submission transaction or acknowledgement.", + ); + } + } + + private async handleAcknowledgement(tweet: Tweet): Promise { + try { + await this.twitterService.likeTweet(tweet.id!); + this.logger.info( + { tweetId: tweet.id }, + "Submission acknowledged with a like.", + ); + } catch (error) { + this.logger.error( + { error, tweetId: tweet.id }, + "Failed to acknowledge submission with a like.", + ); + } + } +} diff --git a/backend/src/services/transformation/transformation.service.ts b/apps/api/src/services/transformation.service.ts similarity index 52% rename from backend/src/services/transformation/transformation.service.ts rename to apps/api/src/services/transformation.service.ts index 7001d4ef..b10ce7a5 100644 --- a/backend/src/services/transformation/transformation.service.ts +++ b/apps/api/src/services/transformation.service.ts @@ -1,15 +1,24 @@ -import { TransformConfig } from "../../types/config"; -import { TransformError } from "../../types/errors"; -import { PluginService } from "../plugins/plugin.service"; -import { logger } from "../../utils/logger"; -import { sanitizeJson } from "../../utils/sanitize"; -import { ActionArgs } from "@curatedotfun/types"; +import { TransformConfig } from "@curatedotfun/shared-db"; +import type { ActionArgs } from "@curatedotfun/types"; +import { PluginError, PluginErrorCode } from "@curatedotfun/utils"; import { merge } from "lodash"; +import type { Logger } from "pino"; +import { logPluginError } from "../utils/error"; +import { logger } from "../utils/logger"; +import { sanitizeJson } from "../utils/sanitize"; +import { IBaseService } from "./interfaces/base-service.interface"; +import { PluginService } from "./plugin.service"; export type TransformStage = "global" | "distributor" | "batch"; -export class TransformationService { - constructor(private pluginService: PluginService) {} +export class TransformationService implements IBaseService { + public readonly logger: Logger; + constructor( + private pluginService: PluginService, + logger: Logger, + ) { + this.logger = logger; + } /** * Combines transform results, merging objects or returning the new result @@ -61,12 +70,20 @@ export class TransformationService { // Validate transform output if (transformResult === undefined || transformResult === null) { - throw new TransformError( - transform.plugin, - stage, - i, + const pluginError = new PluginError( "Transform returned null or undefined", + { + pluginName: transform.plugin, + operation: "transform", + attempt: i + 1, + }, + PluginErrorCode.PLUGIN_OUTPUT_VALIDATION_FAILED, + false, // Not retryable - plugin should be fixed ); + logPluginError(pluginError, this.logger, { + context: { stage, transformIndex: i }, + }); + throw pluginError; } const sanitizedResult = sanitizeJson(transformResult); @@ -74,19 +91,29 @@ export class TransformationService { // Combine results, either merging objects or using new result result = this.combineResults(result, sanitizedResult); } catch (error) { - // If it's already a TransformError, rethrow it - if (error instanceof TransformError) { + if (error instanceof PluginError) { + logPluginError(error, this.logger, { + context: { stage, transformIndex: i }, + }); throw error; } - // Otherwise wrap it in a TransformError - throw new TransformError( - transform.plugin, - stage, - i, - error instanceof Error ? error.message : "Unknown error", - error instanceof Error ? error : undefined, + const pluginError = new PluginError( + error instanceof Error ? error.message : "Unknown transform error", + { + pluginName: transform.plugin, + operation: "transform", + attempt: i + 1, + }, + PluginErrorCode.PLUGIN_INTERNAL_ERROR, + false, // Not retryable by default + { + cause: error instanceof Error ? error : undefined, + details: { stage, transformIndex: i }, + }, ); + logPluginError(pluginError, this.logger); + throw pluginError; } } diff --git a/backend/src/services/twitter/client.ts b/apps/api/src/services/twitter/client.ts similarity index 92% rename from backend/src/services/twitter/client.ts rename to apps/api/src/services/twitter/client.ts index 06db2fc9..690bff89 100644 --- a/backend/src/services/twitter/client.ts +++ b/apps/api/src/services/twitter/client.ts @@ -1,7 +1,7 @@ import { Scraper, SearchMode, Tweet } from "agent-twitter-client"; import { TwitterCookie } from "types/twitter"; import { logger } from "../../utils/logger"; -import { twitterRepository } from "../db/repositories"; +import { TwitterRepository } from "@curatedotfun/shared-db"; export class TwitterService { private client: Scraper; @@ -15,6 +15,7 @@ export class TwitterService { email: string; twoFactorSecret?: string; }, + private twitterRepository: TwitterRepository, ) { this.client = new Scraper(); this.twitterUsername = config.username; @@ -68,7 +69,7 @@ export class TwitterService { httpOnly: cookie.httpOnly, sameSite: cookie.sameSite as "Strict" | "Lax" | "None" | undefined, })); - await twitterRepository.setTwitterCookies( + await this.twitterRepository.setTwitterCookies( this.config.username, formattedCookies, ); @@ -96,7 +97,10 @@ export class TwitterService { ); await this.client.setCookies(cookieStrings); // Store cookies in database - await twitterRepository.setTwitterCookies(this.config.username, cookies); + await this.twitterRepository.setTwitterCookies( + this.config.username, + cookies, + ); // Verify the cookies work if (!(await this.client.isLoggedIn())) { throw new Error("Failed to verify cookies after setting"); @@ -109,7 +113,7 @@ export class TwitterService { } getCookies() { - return twitterRepository.getTwitterCookies(this.twitterUsername); + return this.twitterRepository.getTwitterCookies(this.twitterUsername); } async initialize() { @@ -129,7 +133,7 @@ export class TwitterService { if (await this.loadCachedCookies()) { logger.info("Successfully initialized using cached cookies"); this.lastCheckedTweetId = - await twitterRepository.getTwitterCacheValue("last_tweet_id"); + await this.twitterRepository.getTwitterCacheValue("last_tweet_id"); return; } @@ -137,7 +141,7 @@ export class TwitterService { for (let attempt = 0; attempt < 3; attempt++) { if (await this.performLogin()) { this.lastCheckedTweetId = - await twitterRepository.getTwitterCacheValue("last_tweet_id"); + await this.twitterRepository.getTwitterCacheValue("last_tweet_id"); return; } @@ -238,7 +242,7 @@ export class TwitterService { setLastCheckedTweetId(tweetId: string) { this.lastCheckedTweetId = tweetId; - twitterRepository.setTwitterCacheValue("last_tweet_id", tweetId); + this.twitterRepository.setTwitterCacheValue("last_tweet_id", tweetId); logger.info(`Last checked tweet ID updated to: ${tweetId}`); } diff --git a/backend/src/services/twitter/queries.ts b/apps/api/src/services/twitter/queries.ts similarity index 100% rename from backend/src/services/twitter/queries.ts rename to apps/api/src/services/twitter/queries.ts diff --git a/apps/api/src/services/users.service.ts b/apps/api/src/services/users.service.ts new file mode 100644 index 00000000..f39f21f9 --- /dev/null +++ b/apps/api/src/services/users.service.ts @@ -0,0 +1,285 @@ +import { + InsertUser, + selectUserSchema, + UpdateUser, + UserRepository, + type DB, +} from "@curatedotfun/shared-db"; +import { NearIntegrationConfig } from "@curatedotfun/types"; +import { + NearAccountError, + NotFoundError, + UserServiceError, +} from "@curatedotfun/utils"; +import { connect, KeyPair, keyStores, transactions, utils } from "near-api-js"; +import { KeyPairString } from "near-api-js/lib/utils"; +import { Logger } from "pino"; +import { IBaseService } from "./interfaces/base-service.interface"; + +export class UserService implements IBaseService { + public readonly logger: Logger; + + constructor( + private userRepository: UserRepository, + private db: DB, + private nearConfig: NearIntegrationConfig, + logger: Logger, + ) { + this.logger = logger; + } + + async findUserByAuthProviderId(auth_provider_id: string) { + const user = + await this.userRepository.findByAuthProviderId(auth_provider_id); + + if (!user) { + return null; + } + + return selectUserSchema.parse(user); + } + + async createUser(data: InsertUser) { + const { auth_provider_id, username, near_public_key, email } = data; + const parentAccountId = this.nearConfig.parentAccountId; + const new_near_account_id = `${username}.${parentAccountId}`; + + try { + const parentPrivateKey = this.nearConfig.parentKeyPair; + + if (!parentPrivateKey) { + throw new NearAccountError( + "Missing parentKeyPair in NEAR integration config", + ); + } + + const networkId = this.nearConfig.networkId; + + const keyStore = new keyStores.InMemoryKeyStore(); + const parentKeyPair = KeyPair.fromString( + parentPrivateKey as KeyPairString, + ); + await keyStore.setKey(networkId, parentAccountId, parentKeyPair); + + const connectionConfig = { + networkId, + keyStore, + nodeUrl: this.nearConfig.rpcUrl || `https://rpc.${networkId}.near.org`, + }; + + const nearConnection = await connect(connectionConfig); + const parentAccount = await nearConnection.account(parentAccountId); + const publicKey = utils.PublicKey.fromString(near_public_key); + + const actions = [ + transactions.createAccount(), + transactions.transfer(BigInt("100000000000000000000000")), + transactions.addKey( + publicKey, + transactions.functionCallAccessKey( + new_near_account_id, + [], + BigInt("1000000000000000000000000"), + ), + ), + ]; + + await parentAccount.signAndSendTransaction({ + receiverId: new_near_account_id, + actions, + }); + + console.log(`Created NEAR account ${new_near_account_id}`); + } catch (nearError: any) { + console.error("Error creating NEAR account:", nearError); + if (nearError.message?.includes("already exists")) { + throw new NearAccountError( + "NEAR account name already taken", + 409, + nearError, + ); + } else if (nearError.message?.includes("invalid public key")) { + throw new NearAccountError( + "Invalid NEAR public key format", + 400, + nearError, + ); + } + throw new NearAccountError( + "Failed to create NEAR account", + 500, + nearError, + ); + } + + try { + // The actual database user creation is now wrapped in a transaction + const newUser = await this.db.transaction(async (tx) => { + return this.userRepository.createUser( + { + auth_provider_id, + near_account_id: new_near_account_id, + near_public_key, + username, + email, + }, + tx, // Pass the transactional DB instance + ); + }); + + if (!newUser) { + // Should not happen if createUser is expected to return a user or throw + throw new UserServiceError("Failed to create user record", 500); + } + + return selectUserSchema.parse(newUser); + } catch (error: any) { + // If the error is already a UserServiceError or NearAccountError, rethrow it + if ( + error instanceof UserServiceError || + error instanceof NearAccountError + ) { + throw error; + } + console.error("Error inserting user into database:", error); + throw new UserServiceError( + error.message || "Failed to save user profile", + error.statusCode || 500, + error, + ); + } + } + + async updateUser(auth_provider_id: string, data: UpdateUser) { + try { + const updatedUser = await this.db.transaction(async (tx) => { + return this.userRepository.updateUser(auth_provider_id, data, tx); + }); + + if (!updatedUser) { + // If updateUser can return null for "not found", this is fine. + // Otherwise, if it should always return a user or throw, this might indicate an issue. + // Assuming repository.updateUser handles "not found" by returning null. + return null; + } + + return selectUserSchema.parse(updatedUser); + } catch (error: any) { + if (error instanceof UserServiceError || error instanceof NotFoundError) { + throw error; + } + console.error("Error updating user:", error); + throw new UserServiceError( + error.message || "Failed to update user profile", + error.statusCode || 500, + error, + ); + } + } + + async deleteUser(auth_provider_id: string): Promise { + const user = + await this.userRepository.findByAuthProviderId(auth_provider_id); + + if (!user || !user.near_account_id) { + throw new NotFoundError("User", auth_provider_id); + } + + const { near_account_id } = user; + const parentAccountId = this.nearConfig.parentAccountId; + + try { + const parentPrivateKey = this.nearConfig.parentKeyPair; + if (!parentPrivateKey) { + throw new NearAccountError( + "Missing parentKeyPair in NEAR integration config for account deletion", + ); + } + + const networkId = this.nearConfig.networkId; + const keyStore = new keyStores.InMemoryKeyStore(); + const parentKeyPair = KeyPair.fromString( + parentPrivateKey as KeyPairString, + ); + await keyStore.setKey(networkId, parentAccountId, parentKeyPair); + + const connectionConfig = { + networkId, + keyStore, + nodeUrl: this.nearConfig.rpcUrl || `https://rpc.${networkId}.near.org`, + }; + + const nearConnection = await connect(connectionConfig); + const parentAccount = await nearConnection.account(parentAccountId); + + console.log( + `Attempting to delete NEAR account: ${near_account_id} with beneficiary ${parentAccountId}`, + ); + + const actions = [transactions.deleteAccount(parentAccountId)]; + + await parentAccount.signAndSendTransaction({ + receiverId: near_account_id, + actions, + }); + + console.log(`Successfully deleted NEAR account: ${near_account_id}`); + } catch (nearError: any) { + console.error( + `Error deleting NEAR account ${near_account_id}:`, + nearError, + ); + if ( + nearError.message?.includes("Account ID #") && + nearError.message?.includes("doesn't exist") + ) { + console.warn( + `NEAR account ${near_account_id} might have been already deleted or never existed. Proceeding with DB deletion.`, + ); + } else { + throw new NearAccountError( + `Failed to delete NEAR account ${near_account_id}`, + 500, + nearError, + ); + } + } + + try { + const dbDeletionResult = await this.db.transaction(async (tx) => { + return this.userRepository.deleteUser(auth_provider_id, tx); + }); + + if (dbDeletionResult) { + console.log( + `Successfully deleted user from database: ${auth_provider_id}`, + ); + } else { + // This case implies the repository's deleteUser might return false if user not found. + console.warn( + `User ${auth_provider_id} was not found in the database for deletion, or was already deleted during the transaction.`, + ); + } + // The overall deleteUser operation is considered successful if NEAR deletion passed (or was skipped) + // and the DB deletion attempt concluded, even if the user was already gone from DB. + return true; + } catch (error: any) { + if ( + error instanceof UserServiceError || + error instanceof NotFoundError || + error instanceof NearAccountError + ) { + throw error; + } + console.error( + `Error deleting user ${auth_provider_id} from database:`, + error, + ); + throw new UserServiceError( + error.message || "Failed to delete user from database", + error.statusCode || 500, + error, + ); + } + } +} diff --git a/apps/api/src/types/app.ts b/apps/api/src/types/app.ts new file mode 100644 index 00000000..1eb0f8f5 --- /dev/null +++ b/apps/api/src/types/app.ts @@ -0,0 +1,15 @@ +import { Hono } from "hono"; +import { JwtVariables } from "hono/jwt"; +import { ServiceProvider } from "../utils/service-provider"; +import { db } from "../db"; + +export type Env = { + Variables: { + db: typeof db; + sp: ServiceProvider; + } & JwtVariables; +}; + +export interface AppInstance { + app: Hono; +} diff --git a/backend/src/types/config.ts b/apps/api/src/types/config.ts similarity index 74% rename from backend/src/types/config.ts rename to apps/api/src/types/config.ts index 3d8ac92c..894c854d 100644 --- a/backend/src/types/config.ts +++ b/apps/api/src/types/config.ts @@ -1,5 +1,5 @@ -import { SubmissionStatus } from "./twitter"; - +import { SubmissionStatus } from "@curatedotfun/shared-db"; +import type { FeedConfig } from "@curatedotfun/shared-db"; export interface GlobalConfig { botId: string; defaultStatus: SubmissionStatus; @@ -7,8 +7,8 @@ export interface GlobalConfig { blacklist: Record; } -export interface PluginConfig { - type: "distributor" | "transformer"; +export interface PluginConfig { + type: T; url: string; config?: Record; } @@ -40,17 +40,6 @@ import { RecapConfig } from "./recap"; export type PluginsConfig = Record; -export interface FeedConfig { - id: string; - name: string; - description: string; - moderation: ModerationConfig; - outputs: { - stream?: StreamConfig; - recap?: RecapConfig[]; - }; -} - export interface AppConfig { global: GlobalConfig; plugins: PluginsConfig; diff --git a/apps/api/src/types/errors.ts b/apps/api/src/types/errors.ts new file mode 100644 index 00000000..4986652a --- /dev/null +++ b/apps/api/src/types/errors.ts @@ -0,0 +1,222 @@ +/** + * Base application error class + * All application errors should extend this class + */ +export class AppError extends Error { + constructor( + message: string, + public statusCode: number = 500, + public cause?: Error, + ) { + super(message); + this.name = this.constructor.name; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } + + /** + * Serializes the error for API responses + */ + toJSON() { + return { + error: this.name, + message: this.message, + statusCode: this.statusCode, + }; + } +} + +/** + * Authentication related errors + */ +export class AuthError extends AppError { + constructor(message: string, statusCode: number = 401, cause?: Error) { + super(message, statusCode, cause); + } +} + +/** + * Validation related errors + */ +export class ValidationError extends AppError { + constructor( + message: string, + public details?: Record, + cause?: Error, + ) { + super(message, 400, cause); + } + + toJSON() { + return { + ...super.toJSON(), + details: this.details, + }; + } +} + +/** + * Service layer errors + */ +export class ServiceError extends AppError { + constructor(message: string, statusCode: number = 500, cause?: Error) { + super(message, statusCode, cause); + } +} + +/** + * Database related errors + */ +export class DatabaseError extends AppError { + constructor( + message: string, + public code?: string, + cause?: Error, + ) { + super(message, 500, cause); + } + + toJSON() { + return { + ...super.toJSON(), + code: this.code, + }; + } +} + +/** + * Not found errors + */ +export class NotFoundError extends AppError { + constructor(resource: string, identifier?: string | number) { + const message = identifier + ? `${resource} with identifier ${identifier} not found` + : `${resource} not found`; + super(message, 404); + } +} + +/** + * Conflict errors (e.g., duplicate resources) + */ +export class ConflictError extends AppError { + constructor(message: string, cause?: Error) { + super(message, 409, cause); + } +} + +/** + * User service specific errors + */ +export class UserServiceError extends ServiceError { + constructor(message: string, statusCode: number = 500, cause?: Error) { + super(message, statusCode, cause); + } +} + +/** + * Activity service specific errors + */ +export class ActivityServiceError extends ServiceError { + constructor( + message: string, + options?: { statusCode?: number; cause?: Error }, + ) { + super(message, options?.statusCode || 500, options?.cause); + } +} + +/** + * NEAR account related errors + */ +export class NearAccountError extends ServiceError { + constructor(message: string, statusCode: number = 400, cause?: Error) { + super(message, statusCode, cause); + } +} + +export class PluginError extends AppError { + constructor( + message: string, + public cause?: Error, + ) { + super(message, 500, cause); + this.name = "PluginError"; + } +} + +export class PluginLoadError extends PluginError { + constructor(name: string, url: string, cause?: Error) { + super(`Failed to load plugin ${name} from ${url}`, cause); + this.name = "PluginLoadError"; + } +} + +export class PluginInitError extends PluginError { + constructor(name: string, cause?: Error) { + super(`Failed to initialize plugin ${name}`, cause); + this.name = "PluginInitError"; + } +} + +export class PluginExecutionError extends PluginError { + constructor(name: string, operation: string, cause?: Error) { + super(`Plugin ${name} failed during ${operation}`, cause); + this.name = "PluginExecutionError"; + } +} + +export type TransformStage = "global" | "distributor" | "batch"; + +export class TransformError extends AppError { + constructor( + public readonly plugin: string, + public readonly stage: TransformStage, + public readonly index: number, + message: string, + public readonly cause?: Error, + ) { + super( + `Transform error in ${stage} transform #${index + 1} (${plugin}): ${message}`, + 500, + cause, + ); + this.name = "TransformError"; + } +} + +export class ProcessorError extends AppError { + constructor( + public readonly feedId: string, + message: string, + public readonly cause?: Error, + ) { + super(`Processing error for feed ${feedId}: ${message}`, 500, cause); + this.name = "ProcessorError"; + } +} + +/** + * JWT token related errors + */ +export class JwtTokenInvalid extends AuthError { + constructor(message = "Invalid JWT token") { + super(message, 401); + this.name = "JwtTokenInvalid"; + } +} + +export class JwtTokenExpired extends AuthError { + constructor(message = "JWT token has expired") { + super(message, 401); + this.name = "JwtTokenExpired"; + } +} + +export class JwtTokenSignatureMismatched extends AuthError { + constructor(message = "JWT token signature mismatch") { + super(message, 401); + this.name = "JwtTokenSignatureMismatched"; + } +} diff --git a/backend/src/types/recap.ts b/apps/api/src/types/recap.ts similarity index 100% rename from backend/src/types/recap.ts rename to apps/api/src/types/recap.ts diff --git a/apps/api/src/types/twitter.ts b/apps/api/src/types/twitter.ts new file mode 100644 index 00000000..dff8f3e2 --- /dev/null +++ b/apps/api/src/types/twitter.ts @@ -0,0 +1,16 @@ +export interface TwitterConfig { + username: string; + password: string; + email: string; +} + +export interface TwitterCookie { + name: string; + value: string; + domain: string; + path: string; + expires?: number; + httpOnly?: boolean; + secure?: boolean; + sameSite?: "Strict" | "Lax" | "None"; +} diff --git a/apps/api/src/types/zod/userProfile.ts b/apps/api/src/types/zod/userProfile.ts new file mode 100644 index 00000000..eedb2114 --- /dev/null +++ b/apps/api/src/types/zod/userProfile.ts @@ -0,0 +1,20 @@ +import { z } from "zod"; + +export const socialImageSchema = z + .object({ + url: z.string().url().optional(), + }) + .strict(); + +export const profileSchema = z + .object({ + name: z.string().optional(), + description: z.string().optional(), + image: socialImageSchema.optional(), + backgroundImage: socialImageSchema.optional(), + linktree: z.record(z.string(), z.string().url()).optional(), + }) + .strict(); + +export type Profile = z.infer; +export type SocialImage = z.infer; diff --git a/apps/api/src/utils/auth.ts b/apps/api/src/utils/auth.ts new file mode 100644 index 00000000..a8f4a5e3 --- /dev/null +++ b/apps/api/src/utils/auth.ts @@ -0,0 +1,251 @@ +import { Context, Next } from "hono"; +import * as jose from "jose"; +import { Env } from "../types/app"; + +export class JwtTokenInvalid extends Error { + constructor(message = "Invalid JWT token") { + super(message); + this.name = "JwtTokenInvalid"; + } +} + +export class JwtTokenExpired extends Error { + constructor(message = "JWT token has expired") { + super(message); + this.name = "JwtTokenExpired"; + } +} + +export class JwtTokenSignatureMismatched extends Error { + constructor(message = "JWT token signature mismatch") { + super(message); + this.name = "JwtTokenSignatureMismatched"; + } +} + +/** + * Decodes a JWT token without verification + * @param token The JWT token to decode + * @returns The decoded header and payload + * @throws JwtTokenInvalid if the token format is invalid + */ +export function decode(token: string): { header: any; payload: any } { + try { + const [headerB64, payloadB64] = token.split("."); + + if (!headerB64 || !payloadB64) { + throw new JwtTokenInvalid("Token format is invalid"); + } + + const headerStr = Buffer.from(headerB64, "base64").toString(); + const payloadStr = Buffer.from(payloadB64, "base64").toString(); + + return { + header: JSON.parse(headerStr), + payload: JSON.parse(payloadStr), + }; + } catch (error) { + if (error instanceof JwtTokenInvalid) { + throw error; + } + throw new JwtTokenInvalid("Failed to decode token"); + } +} + +/** + * Verifies a JWT token from Web3Auth + * @param token The JWT token to verify + * @param loginType The type of login ("social" or "wallet") + * @returns The decoded JWT payload if verification is successful + * @throws Error if verification fails + */ +export async function verify( + token: string, + loginType: "social" | "wallet" = "social", +) { + try { + // Determine the JWKS URL based on login type + const jwksUrl = + loginType === "social" + ? "https://api-auth.web3auth.io/jwks" + : "https://authjs.web3auth.io/jwks"; + + // Get the JWKS used to sign the JWT + const jwks = jose.createRemoteJWKSet(new URL(jwksUrl)); + + // Verify the JWT using Web3Auth's JWKS + const jwtDecoded = await jose.jwtVerify(token, jwks, { + algorithms: ["ES256"], + }); + + return jwtDecoded.payload; + } catch (error) { + console.error(`Error verifying ${loginType} JWT:`, error); + + if (error instanceof jose.errors.JWTExpired) { + throw new JwtTokenExpired(); + } else if (error instanceof jose.errors.JWSSignatureVerificationFailed) { + throw new JwtTokenSignatureMismatched(); + } + + throw new JwtTokenInvalid("Token verification failed"); + } +} + +/** + * Middleware for Web3Auth JWT verification + * @param c The Hono context + * @param next The next middleware function + */ +export async function web3AuthJwtMiddleware(c: Context, next: Next) { + // Extract token from Authorization header + const authHeader = c.req.header("Authorization"); + if (!authHeader || !authHeader.startsWith("Bearer ")) { + await next(); + return; + } + + const token = authHeader.split(" ")[1]; + if (!token) { + await next(); + return; + } + + try { + let payload; + let loginType: "social" | "wallet" = "social"; + + // Try social login verification first + try { + payload = await verify(token, "social"); + loginType = "social"; + } catch (socialError) { + // If social login verification fails, try external wallet verification + payload = await verify(token, "wallet"); + loginType = "wallet"; + } + + c.set("jwtPayload", { + ...payload, + loginType, + authProviderId: extractAuthProviderIdFromJwt(payload), + }); + } catch (error) { + // If verification fails, continue without setting jwtPayload + console.error("JWT verification failed:", error); + } + + await next(); +} + +/** + * Extracts the public key from a social login JWT payload + * @param payload The decoded JWT payload + * @param keyType The type of key to extract (default: "web3auth_app_key") + * @returns The public key if found, null otherwise + */ +export function extractPublicKeyFromSocialLoginJwt( + payload: any, + keyType: string = "web3auth_app_key", // TODO: if doing a self-service, this would be where to build off of +): string | null { + if (!payload.wallets || !Array.isArray(payload.wallets)) { + return null; + } + + const wallet = payload.wallets.find((w: any) => w.type === keyType); + return wallet?.public_key || null; +} + +/** + * Extracts the wallet address from an external wallet JWT payload + * @param payload The decoded JWT payload + * @param walletType The type of wallet (default: "ethereum") + * @returns The wallet address if found, null otherwise + */ +export function extractAddressFromExternalWalletJwt( + payload: any, + walletType: string = "ethereum", +): string | null { + if (!payload.wallets || !Array.isArray(payload.wallets)) { + return null; + } + + const wallet = payload.wallets.find((w: any) => w.type === walletType); + return wallet?.address || null; +} + +/** + * Extracts the auth provider identifier from a JWT payload + * @param payload The decoded JWT payload + * @returns The auth provider identifier (verifierId) + */ +export function extractAuthProviderIdFromJwt(payload: any): string | null { + return payload.verifierId || null; +} + +/** + * Verifies a JWT token and extracts relevant information based on the login type + * @param idToken The JWT token to verify + * @param publicKey The public key or address to verify against (optional) + * @returns An object containing the verification result and extracted information + */ +export async function verifyAndExtractJwtInfo( + idToken: string, + publicKey?: string, +) { + try { + // Try social login verification first + try { + const socialPayload = await verify(idToken, "social"); + const extractedPublicKey = + extractPublicKeyFromSocialLoginJwt(socialPayload); + const authProviderId = extractAuthProviderIdFromJwt(socialPayload); + + // If publicKey is provided, verify it matches + if (publicKey && extractedPublicKey) { + const isValid = + extractedPublicKey.toLowerCase() === publicKey.toLowerCase(); + if (!isValid) { + throw new Error("Public key mismatch"); + } + } + + return { + isValid: true, + loginType: "social", + authProviderId, + publicKey: extractedPublicKey, + payload: socialPayload, + }; + } catch (socialError) { + // If social login verification fails, try external wallet verification + const walletPayload = await verify(idToken, "wallet"); + const extractedAddress = + extractAddressFromExternalWalletJwt(walletPayload); + const authProviderId = extractAuthProviderIdFromJwt(walletPayload); + + // If publicKey (address) is provided, verify it matches + if (publicKey && extractedAddress) { + const isValid = + extractedAddress.toLowerCase() === publicKey.toLowerCase(); + if (!isValid) { + throw new Error("Wallet address mismatch"); + } + } + + return { + isValid: true, + loginType: "wallet", + authProviderId, + address: extractedAddress, + payload: walletPayload, + }; + } + } catch (error) { + console.error("JWT verification failed:", error); + return { + isValid: false, + error: error instanceof Error ? error.message : "Unknown error", + }; + } +} diff --git a/backend/src/utils/config.ts b/apps/api/src/utils/config.ts similarity index 96% rename from backend/src/utils/config.ts rename to apps/api/src/utils/config.ts index 4862a949..2c358c3e 100644 --- a/backend/src/utils/config.ts +++ b/apps/api/src/utils/config.ts @@ -1,6 +1,6 @@ import { config } from "dotenv"; import path from "path"; -import { isTest } from "../services/config/config.service"; +import { isTest } from "../services/config.service"; import { logger } from "./logger"; /** diff --git a/apps/api/src/utils/error.ts b/apps/api/src/utils/error.ts new file mode 100644 index 00000000..dd218322 --- /dev/null +++ b/apps/api/src/utils/error.ts @@ -0,0 +1,100 @@ +import { Context } from "hono"; +import { HTTPException } from "hono/http-exception"; +import { PluginError } from "@curatedotfun/utils"; +import type { Logger } from "pino"; + +/** + * Error codes for API responses + */ +export enum ErrorCode { + BAD_REQUEST = 400, + UNAUTHORIZED = 401, + FORBIDDEN = 403, + NOT_FOUND = 404, + CONFLICT = 409, + INTERNAL_ERROR = 500, + SERVICE_UNAVAILABLE = 503, +} + +/** + * Global error handler middleware + */ +export function errorHandler(err: Error, c: Context, logger: Logger) { + logger.error(`Error handling request: ${err.message}`, { + path: c.req.path, + method: c.req.method, + error: err, + }); + + // Hono's built-in error handling + if (err instanceof HTTPException) { + return err.getResponse(); + } + + return c.json( + { + error: "Internal Server Error", + message: err.message, + }, + 500, + ); +} + +/** + * Helper to create a service unavailable error + */ +export function serviceUnavailable(service: string): HTTPException { + return new HTTPException(503, { + message: `${service} service not available`, + }); +} + +/** + * Helper to create a bad request error + * @param c - Hono context + * @param message - Optional custom message + * @param details - Optional details about the validation errors + */ +export function badRequest( + c: Context, + message = "Bad Request", + details?: unknown, +) { + const responseBody: { error: string; details?: unknown } = { error: message }; + if (details) { + responseBody.details = details; + } + return c.json(responseBody, ErrorCode.BAD_REQUEST); +} + +/** + * Logs plugin errors in a standardized format with appropriate context + * @param error - The plugin error to log + * @param additionalContext - Optional additional context to include in the log + */ +export function logPluginError( + error: PluginError, + logger: Logger, + additionalContext?: Record, +) { + const logData = { + pluginName: error.context.pluginName, + operation: error.context.operation, + attempt: error.context.attempt, + pluginErrorCode: error.pluginErrorCode, + retryable: error.retryable, + details: error.details, + ...(error.originalError && { + originalError: { + name: error.originalError.name, + message: error.originalError.message, + stack: error.originalError.stack, + }, + }), + ...additionalContext, + }; + + // Use warn level for retryable errors, error level for non-retryable + const logLevel = error.retryable ? "warn" : "error"; + logger[logLevel](`Plugin error: ${error.message}`, logData); +} diff --git a/backend/src/utils/logger.ts b/apps/api/src/utils/logger.ts similarity index 100% rename from backend/src/utils/logger.ts rename to apps/api/src/utils/logger.ts diff --git a/apps/api/src/utils/plugin.ts b/apps/api/src/utils/plugin.ts new file mode 100644 index 00000000..7dda2c17 --- /dev/null +++ b/apps/api/src/utils/plugin.ts @@ -0,0 +1,245 @@ +import { createHash } from "crypto"; +import { PluginType } from "@curatedotfun/types"; +import { PluginConfig } from "../types/config"; +import { z } from "zod"; +import { logger } from "./logger"; + +/** + * Creates a deterministic cache key for a plugin instance by combining and hashing + * the plugin name and config. The key will be the same for identical combinations + * of these values, allowing for proper instance caching. + * + * @param name - Plugin name/identifier + * @param config - Plugin configuration object + * @returns A deterministic cache key as a hex string + */ +export function createPluginInstanceKey( + name: string, + config: PluginConfig, +): string { + // Sort object keys recursively to ensure deterministic ordering + const sortedData = sortObjectKeys({ + name, + config: config.config || {}, + }); + + // Create hash of the sorted data + const hash = createHash("sha256"); + hash.update(JSON.stringify(sortedData)); + + // Return first 8 chars of hex digest for a reasonably short but unique key + return hash.digest("hex").slice(0, 16); +} + +/** + * Recursively sorts all keys in an object to create a deterministic structure. + * This ensures that the same data will always produce the same hash regardless + * of the original key ordering. + * + * @param obj - Object to sort keys for + * @returns A new object with sorted keys + */ +export function sortObjectKeys(obj: T): T { + if (typeof obj !== "object" || obj === null) { + return obj; + } + + if (Array.isArray(obj)) { + return obj.map(sortObjectKeys) as unknown as T; + } + + // Check for non-serializable properties + for (const value of Object.values(obj)) { + if (typeof value === "function" || value instanceof RegExp) { + throw new Error("Object contains non-serializable properties"); + } + } + + return Object.keys(obj) + .sort() + .reduce>((sorted, key) => { + sorted[key] = sortObjectKeys((obj as Record)[key]); + return sorted; + }, {}) as T; +} + +/** + * Validates that a plugin configuration object has all required fields + * and that they are of the correct type. + * + * @param config - Plugin configuration to validate + * @throws Error if configuration is invalid + */ +export function validatePluginConfig(config: PluginConfig): void { + if (!config) { + throw new Error("Plugin configuration is required"); + } + + if (!config.type) { + throw new Error("Plugin type is required"); + } + + if (!config.url) { + throw new Error("Plugin URL is required"); + } + + try { + new URL(config.url); + } catch (error) { + throw new Error("Plugin URL must be a valid URL"); + } + + // Config is optional but must be an object if present + if (config.config && typeof config.config !== "object") { + throw new Error("Plugin config must be an object"); + } +} + +const packageJsonSchema = z.object({ + name: z.string(), + version: z.string(), + description: z.string().optional(), + author: z + .union([ + z.string(), + z.object({ + name: z.string().optional(), + email: z.string().optional(), + url: z.string().optional(), + }), + ]) + .optional(), + keywords: z.array(z.string()).optional(), +}); + +export type ParsedPackageJson = z.infer; + +/** + * Fetches and parses package.json from a repository URL. + * Currently supports GitHub, GitLab, and Bitbucket public repositories. + * @param repoUrl - The URL to the repository (e.g., https://github.com/user/repo) + * @returns Parsed package.json content or null if an error occurs. + */ +export async function fetchPackageJsonFromRepo( + repoUrl: string, +): Promise { + if (!repoUrl) return null; + + let packageJsonUrlAttempted = ""; + + try { + const url = new URL(repoUrl); + let userOrOrg, repoNameWithGit, repoName, potentialBranch, packageSubpath; + + const pathSegments = url.pathname.split("/").filter(Boolean); + + if (pathSegments.length < 2) { + logger.warn(`Invalid repo URL path: ${url.pathname} from ${repoUrl}`); + return null; + } + + userOrOrg = pathSegments[0]; + repoNameWithGit = pathSegments[1]; + repoName = repoNameWithGit.replace(".git", ""); + + // Check for /tree/branch/subpath or /-/blob/branch/subpath (GitLab) + let branchIndicatorIndex = pathSegments.indexOf("tree"); // GitHub, Bitbucket (sometimes) + if (branchIndicatorIndex === -1) { + branchIndicatorIndex = pathSegments.indexOf("blob"); // GitLab uses blob for files, tree for dirs + if ( + branchIndicatorIndex !== -1 && + pathSegments[branchIndicatorIndex - 1] === "-" + ) { + // GitLab specific /-/blob/ + // Adjust for GitLab's /-/blob structure + } else { + branchIndicatorIndex = -1; // Not a valid branch indicator here + } + } + + if ( + branchIndicatorIndex !== -1 && + pathSegments.length > branchIndicatorIndex + 1 + ) { + potentialBranch = pathSegments[branchIndicatorIndex + 1]; + packageSubpath = pathSegments.slice(branchIndicatorIndex + 2).join("/"); + } else { + // No explicit branch/subpath in URL, assume root and try common branches + potentialBranch = null; // Will iterate through commonBranches + packageSubpath = ""; + } + + const branchesToTry = potentialBranch + ? [potentialBranch] + : ["main", "master", "develop"]; + let success = false; + + for (const branch of branchesToTry) { + let currentSubpath = packageSubpath; + // If trying common branches and a subpath was part of the original URL (but no branch), + // it's tricky. The original code assumed package.json at root if no branch. + // For now, if potentialBranch was null, we assume package.json is at the root of these common branches. + // If a subpath was detected alongside a branch, we use that subpath. + // If repoUrl was like github.com/user/repo/packages/my-plugin (no /tree/branch), this logic is imperfect. + // The most robust way is to require /tree/branch/ in the URL if not root. + // For simplicity, if no branch in URL, assume package.json at root of common branches. + // If URL has /tree/branch/path/to/package, then currentSubpath is path/to/package. + + const packagePathInRepo = `${currentSubpath ? currentSubpath + "/" : ""}package.json`; + + let rawFileUrl = ""; + if (url.hostname === "github.com") { + rawFileUrl = `https://raw.githubusercontent.com/${userOrOrg}/${repoName}/${branch}/${packagePathInRepo}`; + } else if (url.hostname === "gitlab.com") { + // GitLab raw URL structure: host/user/repo/-/raw/branch/filepath + rawFileUrl = `${url.protocol}//${url.hostname}/${userOrOrg}/${repoName}/-/raw/${branch}/${packagePathInRepo}`; + } else if (url.hostname === "bitbucket.org") { + // Bitbucket raw URL structure: host/user/repo/raw/branch/filepath + rawFileUrl = `https://bitbucket.org/${userOrOrg}/${repoName}/raw/${branch}/${packagePathInRepo}`; + } else { + logger.warn( + `Unsupported repository host: ${url.hostname} for URL ${repoUrl}`, + ); + return null; + } + + packageJsonUrlAttempted = rawFileUrl; + try { + logger.debug( + `Attempting to fetch package.json from: ${packageJsonUrlAttempted}`, + ); + const response = await fetch(packageJsonUrlAttempted); + if (response.ok) { + const packageJson = await response.json(); + logger.info( + `Successfully fetched package.json from: ${packageJsonUrlAttempted}`, + ); + success = true; + return packageJsonSchema.parse(packageJson); + } else { + logger.debug( + `Failed to fetch ${packageJsonUrlAttempted}: ${response.status}`, + ); + } + } catch (e: any) { + logger.debug( + `Error fetching or parsing package.json from ${packageJsonUrlAttempted}`, + { error: e.message }, + ); + } + } + + if (!success) { + logger.warn( + `Could not find or parse package.json for repo: ${repoUrl}. Last tried: ${packageJsonUrlAttempted}`, + ); + } + return null; + } catch (error: any) { + logger.error( + `Error processing repo URL ${repoUrl} (last attempted URL: ${packageJsonUrlAttempted}): ${error.message}`, + { error }, + ); + return null; + } +} diff --git a/backend/src/utils/sanitize.ts b/apps/api/src/utils/sanitize.ts similarity index 100% rename from backend/src/utils/sanitize.ts rename to apps/api/src/utils/sanitize.ts diff --git a/apps/api/src/utils/service-provider.ts b/apps/api/src/utils/service-provider.ts new file mode 100644 index 00000000..dd82905c --- /dev/null +++ b/apps/api/src/utils/service-provider.ts @@ -0,0 +1,211 @@ +import { + FeedRepository, + ModerationRepository, + SubmissionRepository, + TwitterRepository, +} from "@curatedotfun/shared-db"; +import { SubmissionService } from "services/submission.service"; +import { MockTwitterService } from "../__test__/mocks/twitter-service.mock"; +import { db } from "../db"; +import { ActivityService } from "../services/activity.service"; +import { ConfigService, isProduction } from "../services/config.service"; +import { DistributionService } from "../services/distribution.service"; +import { FeedService } from "../services/feed.service"; +import { IBackgroundTaskService } from "../services/interfaces/background-task.interface"; +import { ModerationService } from "../services/moderation.service"; +import { PluginService } from "../services/plugin.service"; +import { ProcessorService } from "../services/processor.service"; +import { TransformationService } from "../services/transformation.service"; +import { TwitterService } from "../services/twitter/client"; +import { UserService } from "../services/users.service"; +import { logger } from "./logger"; + +export class ServiceProvider { + private static instance: ServiceProvider; + private services: Map = new Map(); + private backgroundTaskServices: IBackgroundTaskService[] = []; + + private constructor() { + const feedRepository = new FeedRepository(db); + const twitterRespository = new TwitterRepository(db); + const submissionRepository = new SubmissionRepository(db); + + const configService = new ConfigService(); + + let twitterService: TwitterService | null = null; + if (isProduction) { + twitterService = new TwitterService( + { + username: process.env.TWITTER_USERNAME!, + password: process.env.TWITTER_PASSWORD!, + email: process.env.TWITTER_EMAIL!, + twoFactorSecret: process.env.TWITTER_2FA_SECRET, + }, + twitterRespository, + ); + } else { + // Use mock service in test and development + // You can trigger the mock via the frontend's Test Panel + twitterService = new MockTwitterService(); + } + + const pluginService = new PluginService(logger); + const transformationService = new TransformationService( + pluginService, + logger, + ); + const distributionService = new DistributionService(pluginService, logger); + const processorService = new ProcessorService( + transformationService, + distributionService, + logger, + ); + + const feedService = new FeedService( + feedRepository, + processorService, + db, + logger, + ); + + this.services.set("configService", configService); + this.services.set("pluginService", pluginService); + this.services.set("transformationService", transformationService); + this.services.set("distributionService", distributionService); + this.services.set("processorService", processorService); + this.services.set("feedService", feedService); + + this.services.set("twitterService", twitterService); + + // if (sourceService) { + // this.backgroundTaskServices.push(sourceService); + // } + } + + async init() { + const twitterService = this.services.get("twitterService"); + const processorService = this.services.get("processorService"); + const feedService = this.services.get("feedService"); + + await twitterService.initialize(); + + const feedRepository = new FeedRepository(db); + const twitterRespository = new TwitterRepository(db); + const submissionRepository = new SubmissionRepository(db); + const moderationRepository = new ModerationRepository(db); + + const moderationService = new ModerationService( + feedRepository, + moderationRepository, + submissionRepository, + processorService, + feedService, + db, + logger, + ); + this.services.set("moderationService", moderationService); + + const submissionService = twitterService + ? new SubmissionService( + twitterService, + feedRepository, + submissionRepository, + db, + feedService, + logger, + ) + : null; + + if (submissionService) { + submissionService.initialize(); // TODO: remove + this.backgroundTaskServices.push(submissionService); + } + } + + /** + * Initialize the service provider + * @returns The service provider instance + */ + public static initialize(): ServiceProvider { + if (!ServiceProvider.instance) { + ServiceProvider.instance = new ServiceProvider(); + } + return ServiceProvider.instance; + } + + /** + * Get the service provider instance + * @returns The service provider instance + * @throws Error if the service provider is not initialized + */ + public static getInstance(): ServiceProvider { + if (!ServiceProvider.instance) { + throw new Error( + "ServiceProvider not initialized. Call initialize() first.", + ); + } + return ServiceProvider.instance; + } + + /** + * Get a service instance + * @param serviceName The name of the service to get + * @returns The service instance + * @throws Error if the service is not found + */ + public getService(serviceName: string): T { + const service = this.services.get(serviceName); + if (!service) { + throw new Error(`Service ${serviceName} not found`); + } + return service as T; + } + + /** + * Get the user service + * @returns The user service + */ + public getUserService(): UserService { + return this.getService("userService"); + } + + /** + * Get the activity service + * @returns The activity service + */ + public getActivityService(): ActivityService { + return this.getService("activityService"); + } + + public getConfigService(): ConfigService { + return this.getService("configService"); + } + + public getPluginService(): PluginService { + return this.getService("pluginService"); + } + + public getTransformationService(): TransformationService { + return this.getService("transformationService"); + } + + public getDistributionService(): DistributionService { + return this.getService("distributionService"); + } + + public getProcessorService(): ProcessorService { + return this.getService("processorService"); + } + + public getFeedService(): FeedService { + return this.getService("feedService"); + } + + /** + * Get all services that implement IBackgroundTaskService + * @returns An array of background task services + */ + public getBackgroundTaskServices(): IBackgroundTaskService[] { + return this.backgroundTaskServices; + } +} diff --git a/apps/api/src/validation/activity.validation.ts b/apps/api/src/validation/activity.validation.ts new file mode 100644 index 00000000..965ec255 --- /dev/null +++ b/apps/api/src/validation/activity.validation.ts @@ -0,0 +1,131 @@ +import { + activities, + activityTypeValues, + feedUserStats, + userStats, +} from "@curatedotfun/shared-db"; +import { + createInsertSchema, + createSelectSchema, + createUpdateSchema, +} from "drizzle-zod"; +import { z } from "zod"; + +// Activity schemas +export const insertActivitySchema = createInsertSchema(activities, { + id: z.undefined(), + createdAt: z.undefined(), + updatedAt: z.undefined(), + timestamp: z.undefined(), +}); + +export const selectActivitySchema = createSelectSchema(activities); + +export const updateActivitySchema = createUpdateSchema(activities, { + id: z.undefined(), + user_id: z.undefined(), + type: z.undefined(), + timestamp: z.undefined(), + createdAt: z.undefined(), + updatedAt: z.undefined(), +}); + +// User Stats schemas +export const insertUserStatsSchema = createInsertSchema(userStats, { + createdAt: z.undefined(), + updatedAt: z.undefined(), +}); + +export const selectUserStatsSchema = createSelectSchema(userStats); + +export const updateUserStatsSchema = createUpdateSchema(userStats, { + user_id: z.undefined(), + createdAt: z.undefined(), + updatedAt: z.undefined(), +}); + +// Feed User Stats schemas +export const insertFeedUserStatsSchema = createInsertSchema(feedUserStats, { + id: z.undefined(), + createdAt: z.undefined(), + updatedAt: z.undefined(), +}); + +export const selectFeedUserStatsSchema = createSelectSchema(feedUserStats); + +export const updateFeedUserStatsSchema = createUpdateSchema(feedUserStats, { + id: z.undefined(), + user_id: z.undefined(), + feed_id: z.undefined(), + createdAt: z.undefined(), + updatedAt: z.undefined(), +}); + +// Additional schemas for API requests and responses + +/** + * Schema for activity query options + */ +export const activityQueryOptionsSchema = z.object({ + limit: z.number().optional().default(20), + offset: z.number().optional().default(0), + types: z.array(z.enum(activityTypeValues)).optional(), + feed_id: z.string().optional(), + from_date: z.string().optional(), // ISO date string + to_date: z.string().optional(), // ISO date string +}); + +/** + * Schema for leaderboard query options + */ +export const leaderboardQueryOptionsSchema = z.object({ + time_range: z + .enum(["day", "week", "month", "year", "all"]) + .optional() + .default("all"), + feed_id: z.string().optional(), + limit: z.number().optional().default(10), +}); + +/** + * Schema for leaderboard entry + */ +export const leaderboardEntrySchema = z.object({ + user_id: z.number(), + username: z.string().nullable(), + name: z.string().nullable(), + total_points: z.number(), + total_submissions: z.number(), + total_approvals: z.number(), + rank: z.number(), +}); + +/** + * Schema for global stats + */ +export const globalStatsSchema = z.object({ + total_approvals: z.number(), + total_submissions: z.number(), + approval_rate: z.number(), // Percentage +}); + +// Type exports for convenience +export type InsertActivityData = z.infer; +export type UpdateActivityData = z.infer; +export type SelectActivityData = z.infer; +export type ActivityQueryOptions = z.infer; +export type LeaderboardQueryOptions = z.infer< + typeof leaderboardQueryOptionsSchema +>; +export type LeaderboardEntry = z.infer; +export type GlobalStats = z.infer; + +// User Stats types +export type InsertUserStatsData = z.infer; +export type UpdateUserStatsData = z.infer; +export type SelectUserStatsData = z.infer; + +// Feed User Stats types +export type InsertFeedUserStatsData = z.infer; +export type UpdateFeedUserStatsData = z.infer; +export type SelectFeedUserStatsData = z.infer; diff --git a/apps/api/src/validation/config.validation.ts b/apps/api/src/validation/config.validation.ts new file mode 100644 index 00000000..5887b5f5 --- /dev/null +++ b/apps/api/src/validation/config.validation.ts @@ -0,0 +1,60 @@ +import { z } from "zod"; + +// Schema for TransformConfig +export const transformConfigSchema = z.object({ + plugin: z.string(), + config: z.record(z.string(), z.unknown()), +}); + +// Schema for DistributorConfig +export const distributorConfigSchema = z.object({ + plugin: z.string(), + config: z.record(z.string(), z.string()), + transform: z.array(transformConfigSchema).optional(), +}); + +// Schema for ModerationConfig +export const moderationConfigSchema = z.object({ + approvers: z.object({ + twitter: z.array(z.string()), + }), +}); + +// Schema for StreamConfig +export const streamConfigSchema = z.object({ + enabled: z.boolean(), + transform: z.array(transformConfigSchema).optional(), + distribute: z.array(distributorConfigSchema).optional(), +}); + +// Schema for RecapConfig +export const recapConfigSchema = z.object({ + id: z.string(), + name: z.string(), + enabled: z.boolean(), + schedule: z.string(), + timezone: z.string().optional(), + transform: z.array(transformConfigSchema).optional(), + batchTransform: z.array(transformConfigSchema).optional(), + distribute: z.array(distributorConfigSchema).optional(), +}); + +// Schema for FeedConfig +export const feedConfigSchema = z.object({ + id: z.string().min(1, "Feed ID cannot be empty"), // Assuming id is the hashtag and should not be empty + name: z.string().min(1, "Feed name cannot be empty"), + description: z.string(), // Description can be empty + moderation: moderationConfigSchema, + outputs: z.object({ + stream: streamConfigSchema.optional(), + recap: z.array(recapConfigSchema).optional(), + }), +}); + +// Type exports for convenience +export type TransformConfigData = z.infer; +export type DistributorConfigData = z.infer; +export type ModerationConfigData = z.infer; +export type StreamConfigData = z.infer; +export type RecapConfigData = z.infer; +export type FeedConfigData = z.infer; diff --git a/apps/api/src/validation/feed.validation.ts b/apps/api/src/validation/feed.validation.ts new file mode 100644 index 00000000..ad0f2d60 --- /dev/null +++ b/apps/api/src/validation/feed.validation.ts @@ -0,0 +1,34 @@ +import { z } from "zod"; +import { + createInsertSchema, + createSelectSchema, + createUpdateSchema, +} from "drizzle-zod"; +import { feedConfigSchema } from "./config.validation"; +import { feeds } from "@curatedotfun/shared-db"; + +export const insertFeedSchema = createInsertSchema(feeds, { + // id is the primary key (text) and should be provided by the user (e.g., hashtag) + id: z.string().min(1, "Feed ID (hashtag) cannot be empty"), + name: z.string().min(1, "Feed name cannot be empty"), + description: z.string().optional(), + config: feedConfigSchema, + createdAt: z.undefined(), + updatedAt: z.undefined(), +}); + +export const selectFeedSchema = createSelectSchema(feeds); + +export const updateFeedSchema = createUpdateSchema(feeds, { + // id should not be updatable (TODO: migrate away from hashtag being id) + id: z.undefined(), + name: z.string().min(1, "Feed name cannot be empty").optional(), + description: z.string().optional(), + config: feedConfigSchema.optional(), + createdAt: z.undefined(), + updatedAt: z.undefined(), +}); + +export type InsertFeedData = z.infer; +export type SelectFeedData = z.infer; +export type UpdateFeedData = z.infer; diff --git a/apps/api/src/validation/users.validation.ts b/apps/api/src/validation/users.validation.ts new file mode 100644 index 00000000..a043b887 --- /dev/null +++ b/apps/api/src/validation/users.validation.ts @@ -0,0 +1,26 @@ +import { users } from "@curatedotfun/shared-db"; +import { + createInsertSchema, + createSelectSchema, + createUpdateSchema, +} from "drizzle-zod"; +import { z } from "zod"; + +export const insertUserSchema = createInsertSchema(users, { + id: z.undefined(), + auth_provider_id: z.undefined(), + createdAt: z.undefined(), + updatedAt: z.undefined(), +}); + +export const selectUserSchema = createSelectSchema(users); + +export const updateUserSchema = createUpdateSchema(users, { + id: z.undefined(), + auth_provider_id: z.undefined(), + near_account_id: z.undefined(), + near_public_key: z.undefined(), + createdAt: z.undefined(), + updatedAt: z.undefined(), + email: (schema) => schema.email().optional(), +}); diff --git a/backend/test/README.md b/apps/api/test/README.md similarity index 96% rename from backend/test/README.md rename to apps/api/test/README.md index 284aff34..7e85df86 100644 --- a/backend/test/README.md +++ b/apps/api/test/README.md @@ -11,8 +11,6 @@ This directory contains tests for the curate.fun backend. The tests are organize ## PostgreSQL Testing -The project has migrated from SQLite to PostgreSQL for testing. This provides a more realistic testing environment that matches production. - ### Setup The PostgreSQL testing environment is set up using Docker Compose. The `docker-compose.yml` file in the `setup` directory defines a PostgreSQL container that is used for testing. @@ -48,6 +46,7 @@ npm run test:pg:e2e ``` These commands will: + 1. Start the PostgreSQL container 2. Run the migrations to set up the schema 3. Run the tests diff --git a/backend/test/component/approval-flow.test.ts b/apps/api/test/component/approval-flow.test.ts similarity index 100% rename from backend/test/component/approval-flow.test.ts rename to apps/api/test/component/approval-flow.test.ts diff --git a/backend/test/component/submission-flow.test.ts b/apps/api/test/component/submission-flow.test.ts similarity index 99% rename from backend/test/component/submission-flow.test.ts rename to apps/api/test/component/submission-flow.test.ts index af40e8bf..5dacd8e0 100644 --- a/backend/test/component/submission-flow.test.ts +++ b/apps/api/test/component/submission-flow.test.ts @@ -80,7 +80,7 @@ describe("Submission Flow", () => { // Verify submissions were created for each feed for (const feedId of feedIds) { - const submissionsResponse = await apiClient.get(`/api/feed/${feedId}`); + const submissionsResponse = await apiClient.get(`/api/feeds/${feedId}`); expect(submissionsResponse.status).toBe(200); const submission = submissionsResponse.data.submissions.find( diff --git a/backend/test/curate.config.test.json b/apps/api/test/curate.config.test.json similarity index 100% rename from backend/test/curate.config.test.json rename to apps/api/test/curate.config.test.json diff --git a/backend/test/e2e/full-flow.test.ts b/apps/api/test/e2e/full-flow.test.ts similarity index 98% rename from backend/test/e2e/full-flow.test.ts rename to apps/api/test/e2e/full-flow.test.ts index f14b04e6..f7907791 100644 --- a/backend/test/e2e/full-flow.test.ts +++ b/apps/api/test/e2e/full-flow.test.ts @@ -154,7 +154,7 @@ describe("Full Flow E2E", () => { .reply(200, { success: true }); // Act - Generate recap - const recapResponse = await apiClient.post("/api/feed/test-feed/recap", { + const recapResponse = await apiClient.post("/api/feeds/test-feed/recap", { timeframe: "daily", }); diff --git a/backend/test/integration/database.test.ts b/apps/api/test/integration/database.test.ts similarity index 100% rename from backend/test/integration/database.test.ts rename to apps/api/test/integration/database.test.ts diff --git a/backend/test/setup/seed-test.ts b/apps/api/test/setup/seed-test.ts similarity index 100% rename from backend/test/setup/seed-test.ts rename to apps/api/test/setup/seed-test.ts diff --git a/backend/test/setup/seed.sql b/apps/api/test/setup/seed.sql similarity index 100% rename from backend/test/setup/seed.sql rename to apps/api/test/setup/seed.sql diff --git a/backend/test/unit/sanitize.test.ts b/apps/api/test/unit/sanitize.test.ts similarity index 100% rename from backend/test/unit/sanitize.test.ts rename to apps/api/test/unit/sanitize.test.ts diff --git a/backend/test/unit/services/scheduler/scheduler.service.test.ts b/apps/api/test/unit/services/scheduler/scheduler.service.test.ts similarity index 100% rename from backend/test/unit/services/scheduler/scheduler.service.test.ts rename to apps/api/test/unit/services/scheduler/scheduler.service.test.ts diff --git a/backend/test/utils/test-client.ts b/apps/api/test/utils/test-client.ts similarity index 100% rename from backend/test/utils/test-client.ts rename to apps/api/test/utils/test-client.ts diff --git a/backend/test/utils/test-data.ts b/apps/api/test/utils/test-data.ts similarity index 100% rename from backend/test/utils/test-data.ts rename to apps/api/test/utils/test-data.ts diff --git a/backend/test/utils/test-helpers.ts b/apps/api/test/utils/test-helpers.ts similarity index 100% rename from backend/test/utils/test-helpers.ts rename to apps/api/test/utils/test-helpers.ts diff --git a/backend/test/utils/test-server.ts b/apps/api/test/utils/test-server.ts similarity index 100% rename from backend/test/utils/test-server.ts rename to apps/api/test/utils/test-server.ts diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json new file mode 100644 index 00000000..a69df5e7 --- /dev/null +++ b/apps/api/tsconfig.json @@ -0,0 +1,32 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "noEmit": false, + "module": "ESNext", + "moduleResolution": "bundler", + "composite": true, + "baseUrl": ".", + "lib": ["ESNext"], + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "declaration": true, + "resolveJsonModule": true, + "paths": { + "@curatedotfun/shared-db": ["../../packages/shared-db/src"], + "@curatedotfun/types": ["../../packages/types/src"], + "@curatedotfun/utils": ["../../packages/utils/src"], + "*": ["src/*"] + } + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "tests"], + "references": [ + { "path": "../../packages/shared-db" }, + { "path": "../../packages/types" }, + { "path": "../../packages/utils" } + ] +} diff --git a/apps/app/.env.example b/apps/app/.env.example new file mode 100644 index 00000000..3b91e589 --- /dev/null +++ b/apps/app/.env.example @@ -0,0 +1,3 @@ +PUBLIC_WEB3_CLIENT_ID=your_web3_client_id +PUBLIC_NETWORK=testnet +PUBLIC_SMART_CONTRACT= \ No newline at end of file diff --git a/frontend/.gitignore b/apps/app/.gitignore similarity index 90% rename from frontend/.gitignore rename to apps/app/.gitignore index 6cedcb33..ce56facc 100644 --- a/frontend/.gitignore +++ b/apps/app/.gitignore @@ -8,6 +8,7 @@ pnpm-debug.log* lerna-debug.log* /node_modules +/node-compile-cache /dist dist-ssr *.local @@ -22,3 +23,4 @@ dist-ssr *.njsproj *.sln *.sw? +bun.lock \ No newline at end of file diff --git a/frontend/README.md b/apps/app/README.md similarity index 72% rename from frontend/README.md rename to apps/app/README.md index 0b59a708..ca1c192f 100644 --- a/frontend/README.md +++ b/apps/app/README.md @@ -5,7 +5,7 @@
-

curate.fun frontend

+

app.curate.fun

React-based frontend application for the curate.fun platform @@ -37,16 +37,19 @@ The frontend leverages modern web technologies for optimal performance and developer experience: - **Framework**: [React](https://reactjs.org) + TypeScript + - Component-based architecture - Strong type safety - Excellent ecosystem support - **Build Tool**: [RSBuild](https://rsbuild.dev/) + - High-performance build system - Optimized production builds - Modern development experience - **Styling**: [Tailwind CSS](https://tailwindcss.com) + - Utility-first CSS framework - Highly customizable - Zero runtime overhead @@ -56,32 +59,6 @@ The frontend leverages modern web technologies for optimal performance and devel - Efficient navigation - Data-driven route handling -### Application Structure - -```bash -src/ -ā”œā”€ā”€ components/ # React components -│ ā”œā”€ā”€ FeedItem.tsx -│ ā”œā”€ā”€ FeedList.tsx -│ ā”œā”€ā”€ Header.tsx -│ ā”œā”€ā”€ HowItWorks.tsx -│ ā”œā”€ā”€ Layout.tsx -│ ā”œā”€ā”€ Modal.tsx -│ └── Settings.tsx -ā”œā”€ā”€ lib/ # Utility functions and API clients -│ ā”œā”€ā”€ api.ts -│ ā”œā”€ā”€ config.ts -│ └── twitter.ts -ā”œā”€ā”€ routes/ # Application routes -│ ā”œā”€ā”€ __root.tsx -│ ā”œā”€ā”€ feed.$feedId.tsx -│ ā”œā”€ā”€ index.tsx -│ └── settings.tsx -ā”œā”€ā”€ types/ # TypeScript definitions -ā”œā”€ā”€ App.tsx # Root component -└── index.tsx # Application entry point -``` - ## Key Features ### Content Display @@ -133,14 +110,14 @@ The app will be available at `http://localhost:5173` ## Backend Integration -The frontend communicates with the [backend service](../backend/README.md) through a RESTful API: +The frontend communicates with the [backend service](../api/README.md) through a RESTful API: - Content retrieval via `/api/feeds` endpoints - Settings management through `/api/settings` - Plugin configuration via `/api/plugins` - Content submission through Twitter integration -See the [Backend README](../backend/README.md) for detailed API documentation and service architecture. +See the [Backend README](../api/README.md) for detailed API documentation and service architecture.

diff --git a/apps/app/components.json b/apps/app/components.json new file mode 100644 index 00000000..c48c246b --- /dev/null +++ b/apps/app/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/index.css", + "baseColor": "neutral", + "cssVariables": false, + "prefix": "" + }, + "aliases": { + "components": "src/components", + "utils": "src/lib/utils", + "ui": "src/components/ui", + "lib": "src/lib", + "hooks": "src/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/frontend/eslint.config.js b/apps/app/eslint.config.js similarity index 100% rename from frontend/eslint.config.js rename to apps/app/eslint.config.js diff --git a/frontend/index.html b/apps/app/index.html similarity index 77% rename from frontend/index.html rename to apps/app/index.html index 95c2a95e..f04c4732 100644 --- a/frontend/index.html +++ b/apps/app/index.html @@ -1,9 +1,10 @@ - + curate.fun - crowdsource automated content + - - + + +
diff --git a/apps/app/package.json b/apps/app/package.json new file mode 100644 index 00000000..4731b983 --- /dev/null +++ b/apps/app/package.json @@ -0,0 +1,94 @@ +{ + "name": "@curatedotfun/app", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "rsbuild dev --port 5173", + "dev:pg": "rsbuild dev --port 5173", + "build": "rsbuild build && tsc --noEmit", + "preview": "rsbuild preview", + "lint": "eslint .", + "test": "echo 'No tests yet'", + "clean": "rm -rf dist .turbo" + }, + "dependencies": { + "@builddao/near-social-js": "^1.1.0", + "@crosspost/sdk": "^0.2.0", + "@hookform/resolvers": "^5.0.1", + "@near-wallet-selector/bitte-wallet": "^9.0.1", + "@near-wallet-selector/core": "^9.0.1", + "@near-wallet-selector/here-wallet": "^9.0.1", + "@near-wallet-selector/meteor-wallet": "^9.0.1", + "@near-wallet-selector/modal-ui": "^9.0.1", + "@near-wallet-selector/my-near-wallet": "^9.0.1", + "@near-wallet-selector/react-hook": "^9.0.1", + "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-checkbox": "^1.1.5", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-popover": "^1.1.6", + "@radix-ui/react-progress": "^1.1.2", + "@radix-ui/react-select": "^2.2.2", + "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-switch": "^1.1.4", + "@radix-ui/react-tabs": "^1.1.4", + "@radix-ui/react-toast": "^1.2.11", + "@radix-ui/react-tooltip": "^1.2.4", + "@tailwindcss/typography": "^0.5.15", + "@tanstack/react-query": "^5.64.1", + "@tanstack/react-router": "^1.114.15", + "@web3auth/auth-adapter": "^9.7.0", + "@web3auth/base": "^9.7.0", + "@web3auth/base-provider": "^9.7.0", + "@web3auth/ethereum-provider": "^9.7.0", + "@web3auth/modal": "^9.7.0", + "@web3auth/no-modal": "^9.7.0", + "add": "^2.0.6", + "autoprefixer": "^10.4.20", + "axios": "^1.7.9", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "date-fns": "^4.1.0", + "intear-wallet": "^69.0.0", + "lucide-react": "^0.483.0", + "near-api-js": "4.0.4", + "near-sign-verify": "^0.1.3", + "pinata-web3": "^0.5.4", + "postcss": "^8.4.49", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.55.0", + "react-icons": "^5.4.0", + "remeda": "^2.22.5", + "sonner": "^2.0.5", + "tailwind-merge": "^3.0.2", + "tailwindcss": "^3.4.16", + "tailwindcss-animate": "^1.0.7", + "zod": "^3.24.2", + "zustand": "^5.0.3" + }, + "devDependencies": { + "@crosspost/types": "^0.2.0", + "@curatedotfun/types": "workspace:*", + "@eslint/js": "^9.15.0", + "@mswjs/data": "^0.16.2", + "@rsbuild/core": "1.1.13", + "@rsbuild/plugin-node-polyfill": "^1.3.0", + "@rsbuild/plugin-react": "1.1.0", + "@tanstack/router-devtools": "^1.114.15", + "@tanstack/router-plugin": "^1.114.15", + "@types/react": "^18.3.12", + "@types/react-dom": "^18.3.1", + "@vitejs/plugin-react": "^4.3.4", + "dotenv": "^16.5.0", + "eslint": "^9.15.0", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.14", + "globals": "^15.12.0", + "typescript": "~5.6.2", + "typescript-eslint": "^8.15.0" + } +} diff --git a/frontend/postcss.config.js b/apps/app/postcss.config.js similarity index 100% rename from frontend/postcss.config.js rename to apps/app/postcss.config.js diff --git a/frontend/public/apple-touch-icon.png b/apps/app/public/apple-touch-icon.png similarity index 100% rename from frontend/public/apple-touch-icon.png rename to apps/app/public/apple-touch-icon.png diff --git a/frontend/public/curatedotfunicon1.png b/apps/app/public/curatedotfunicon1.png similarity index 100% rename from frontend/public/curatedotfunicon1.png rename to apps/app/public/curatedotfunicon1.png diff --git a/frontend/public/curatedotfuntransparenticon.png b/apps/app/public/curatedotfuntransparenticon.png similarity index 100% rename from frontend/public/curatedotfuntransparenticon.png rename to apps/app/public/curatedotfuntransparenticon.png diff --git a/frontend/public/favicon-96x96.png b/apps/app/public/favicon-96x96.png similarity index 100% rename from frontend/public/favicon-96x96.png rename to apps/app/public/favicon-96x96.png diff --git a/frontend/public/favicon.ico b/apps/app/public/favicon.ico similarity index 100% rename from frontend/public/favicon.ico rename to apps/app/public/favicon.ico diff --git a/frontend/public/favicon.svg b/apps/app/public/favicon.svg similarity index 100% rename from frontend/public/favicon.svg rename to apps/app/public/favicon.svg diff --git a/frontend/public/fonts/LondrinaSolid-NNS.ttf b/apps/app/public/fonts/LondrinaSolid-NNS.ttf similarity index 100% rename from frontend/public/fonts/LondrinaSolid-NNS.ttf rename to apps/app/public/fonts/LondrinaSolid-NNS.ttf diff --git a/apps/app/public/grid.png b/apps/app/public/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..d19ad60df74f4b42a06bb7765fd7bcf40743307e GIT binary patch literal 5026 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 literal 0 HcmV?d00001 diff --git a/apps/app/public/images/feed-image.png b/apps/app/public/images/feed-image.png new file mode 100644 index 0000000000000000000000000000000000000000..604ffb503ead0023920eeac05fc517440bc18608 GIT binary patch literal 9196 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 Ro>V-5*GgK7HS(~K{{d$(Tq^(o literal 0 HcmV?d00001 diff --git a/apps/app/public/images/metamask.png b/apps/app/public/images/metamask.png new file mode 100644 index 0000000000000000000000000000000000000000..b5aabbf46264cb275c10e76373cacc51b287b6e8 GIT binary patch literal 5469 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 literal 0 HcmV?d00001 diff --git a/apps/app/public/images/near.png b/apps/app/public/images/near.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ca8b9e910cb42e87a2f1f8ebe4077ef97665b7 GIT binary patch literal 6180 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 literal 0 HcmV?d00001 diff --git a/apps/app/public/images/overview-bg.png b/apps/app/public/images/overview-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..a20ded01ad6e6cfb5330d3378c944bbb92e9b39b GIT binary patch literal 1648111 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
V zy6mkXV&qfLy%|Q_X6;ZJ_2}D?`KFdp{7ql~BV7)ix;28Mz4P7ih{vumt(w{*;ykBXU_ z4V>G{73faGe(NGl^L|ccz639HZ7f@{Cz@8;or64tgoxHt?<|P%bVL`FjLoDrh`TJJr2lxk%YU=eY@xg|+oy44O9acaEIm!3z#LioL6(jvg;Addaof)atUNn4qaBR*J2r~{sfvA>_?_6>h8w4=`T__BC;du2TnWV z+P-$BH={(9J$GCzZrf{QWu!aZ1iq`_w;9`*2UcajSQ~tL6n8pqW7RNlE|_F>2go;a za!6rhr7^biy8vIlU`%NEkS9Kf(Yq!Hc>2+u^DwbJ0DYn&d82T%*iihh$AW>+fH(OI zE<(j$pi=tuO-s_sqfeh1!j8MnfpORH*l#VZ&z^}GUCflLkbkf}@+s|%c%b5luUG3a zr;83?uBNk*ym#*9dY#;G$U*Z~dzG2Bm_9Q7U`iW0es5)@Hhm`XPJGEdJxtV~!9l{v zXqFm7LrDU(S7TkKCA-@0H{3XPdvE3X{_0mt;}^vrQtRd`m&%TLmPw@EMH^%%oG@4x zSrs?fa5{yQHv*w$qco4bUvB$K4#1PtJprSSkoAX zJ}5wB{f)*6*KBubdm3L7)|KgLqE$H7f)i~!%#iF25MP?4G6{J3&S^VE6-iY|p0PVd$N%LQf%0Ad zRUiGeQSp-RsuE+i`}gRzr{`@&Dwx;qIVYlU8WuXH5!0~lJOM0grZ`n(;flRL- zpRrq_tocB{`5WNifeA_3cMPMp8@#9I)98x&5rA}p$L4l_>#+-U-=-$F_cC zxd}vtQE$UKaUv7rJ?mQsDlKH~lU5$%m7+&q@Ga^C+#7N!0E+I(#58vDK4nx6A{ z&?i&=9}dtJ;rmx%{Tb5UYhmiSCfAYc?Pk1JJCx!79<2ZUY_d-a63t^DKhx1u5*}A6 z8FZ?-Ye@IlN^4f-~AquLw73$^+kKG2>p2=cDvygR~tjc&8jq#D@k!^4q~ z>AX(M(yNU-Wlo?`%@T zWd|GPR4&iunJlP*#GGwa;Ymt!kAkWY?=Apb4(AYl`pTMT08RkGtuMT?N&X8)B`f*O z-$r=1OE;`DC)7lB>WuG!aZ14IS#RCjfpY#RAR!-vK!x~h; z6VH+j)?;R{?gYg=e!R|r3{d&zV+jmc^IZr4M%+*iL2gbkN(x!bIosjbHWT3DKqGrc zHAzhRG`;zN7!-+1(uysV=DBS^jVtpoajl^Ihge&iD2MNHnC|6|W5FUoSLup4z}n$Z zwtiQwaxfaub2AB-`&=+*FG0Z8F5ckilX`I-G>FvFHI2b0!%L|RuQitmRbFR8WleOo znE?1ECC~|1fE)>p9U_R1*jigV19Yu+Kz3>C8PMMVMKEc`@+giT%o%Q@8tW!7rlf3p zmF{?h19JvirWS!YZsdkEKm~qmPTlbj4_0=pg>O)HW->8C_O-rkuy;qW*}aWgVm0w9 z%joBN{+`3VqkgUVyI4R;8hz7}(_o_^e{mAo^#i*E!T}B(v2O3OHB{Bso4xZiKI9k8 z@8CZOHo4g*7o}T=P93j{5M}n}4$PAeOd4*;e0cco672xeM5JMMxKp=j-^|@@4no)# z*?-48xgfFspL}dh9d$4`d4z+LaTaa#=(eC_iP`KX8C@wZZ(;_M z_M^0uCP6b}kecr`r9GCuwZ9Ru^Jf3h{*GY4(w)1s`q5Ci!uOqoZ`rK99EqM&s!l$dN}71;`Boa1)?ncLjMAwy^G284Y}JxYVMGlx zXE-5crm-W%E&p0hj^vcwqWBZ+X2I)8h1?vVVpNB0x#Qp-m5l!6OH?pIxLJO2aSOWa z;UaM365kWk?9os+OuJ}M-TcUqH$9=z;6~SP%9(Pc$=4FCOQk_sXTDxfssKeOyueDl zRd|ntlJpZr6Cu<@^?{)5zmB_aDoqs#7z{%bKg?H$UC5Gp*3yenIrDnvd$VT1`3ch& zm)4qCsKLZiU#-gaYl}k=DdVGqXQfuEfVhWpt{6ik4?k_{`k2e)!b-2OhvRZw_R+u$ zW^ZQl_3PQTb;)lgrwU)5eRKNtgA zR9N87_^oj5O4KF(Yy2O+U2^AYKORO=|AjmnWZE^Z#s!Z+3;@Z?kF7R!dRCE>gq1g? z^^-kmvim-=`+wZTMaIg1xbe8W94FEQn|5hsg-8YEYR8zgZak9;e48K(WEo8=gj zW~a$Wftz=Ja+(wZcDr`5lp^Fn!i zG6zrMhmY|gYM=>cHf_mcZYAR>+sA}7=@HYQ#ibbBu~F)sgld{2c|+iQg}$NEHM@~N z{Hz`~O4!gDBMX(-Kn7e_wNWW8;IDEuN9P&;CExnSa2$O1*V)L2qSZ@Kg6?;bAgKp$A&u z92_1PIXX^rbd6Ul?~(HWl+YtEyy|Bb3&qv&9d?N%^Y1-P#rTSXjFK+w2;Xmml?6g1^I!~+Tt29zyC>?QjdF}f&2@^j!!x6(A2%TFtPmw`YM~fd%v8|?iw(T~1O36@?=%0*j zT!&~^7F5-;FvkYZ`=TH>cht%brnt|9M>H$G**H{|$^$wCHkA0#hOR^03)el}DlNO6uFPRqvb$^jqMDRx<{6i#DmLk6qN~j5BAWy#`H)M$|_!1$GMq&)>pL7 z1-sF^hSrGGHa8$^P1Ms?`g~XxRPVrZ)6yjHx^oVXg1$)`n`VIBcF<>N0CzR&6&qH^ zaIjgN0VhDc)g)k^s+nET&*1W-^_~6u<~{ib)<aTrV z;no|r@`n26G`n!u=ucq05a_79xlZUI(}aD01M->~T^>Jq^m!7(YF2?K^u)UASXBz? zPWW%gclpRDSRRc!3f2d2WRd0dq0fLq;$Ka+fPfuZ$c8LERJMT?5M2JcJXX6x6I!eN zlGW%GT>fe+d735Te;|0EN;zOu2_v`W8NTeJuRQoN>?WR3ZgLCy@ve1cd;>`)Km|sk zGp3GG6x{(6`UWxkeHsL&e*(@?;J$jfN;3b1 ztngW>P>F#R3|sSCOh#CP?HBg>oBPLJEgrL!42b!La^ZD-O4~H;e`77_dm{_0enDpH zhq7OdG2oS@dt~coaLC>B_qk&`xdo9^_+uSAj~AS@rrkamBh^jM-r&dLJ$L$xv^r}q z69qEsq!Nz<5j=v!caNRkCL8zHn%5;h_08(*KmT!TnQu$LP;PuNKCk5XshqcIuR>ju zWSb2IoARnVyg-qyD{o}_F15sHa(7=`@b1_0crUiHhs^f;tTLv7lgFP>8+*XJz}I{} zXBCH$0s@|`5kdvK*|j>ibNA0gt*tp>%LIltOq;jbgF5kX#`VH-jX1Hh1 zp{k{;ZiUrr-ca zd8#JeiR+$r|3kbmctLBuIn<8)yYEkn{~ICo?RR8X>E;8i&o)ODQzNSF7X!Rh4rhOO zkRmQ0hQU3D1I1tH`RYEY^Ht6AeDcmw?E|1nkpAJM;qa$ipQ*?Cp?Amr;`WN0z3!#v zvRu1fZ+Q4BEP8gk2K4r`MZ1j6FaJLFO5msocaxe$)2h-%hM+9Nju}L9xygFZR8%4F zC#z-vu0K5v)Zu*N$TE%lfk}fK&(#XI#{SKzhd=on6EMRn+x1!fe6qy`<9HwuVSsD( zxn^@}m}${-vD!Q_?5qQjllShP!f$f(h>uKCghwXPKLS8bCfnGi-``^~d3_#slQLOv zr7haowO5}_NyOilEayjWn$xGmRTfQ(# zB}Us2D4G5Iu&I0-!r|SHq`h;tbMENgq+|(p+Vo&2qoqOCAQ0BjS@ISk z4L5&*W5|%>VM4V>fQvUge=Jf@mPKi3P8uyj*=K}Oh5SCW5f$N6jZ?-Y&PTk_tBnBz zW{}-v*`u>t%r;(KX@!`Ty&hRAe4HNOk?W^rjLulEe9{N4OvW`5iFS0R6bd&KNaM>Rt-NiB-tBgQe+Q_Q)~Sr zb~sU@g(3K;(0387OsH$MG)mzmHI>flZu>1)K#R;=Sf5FxAdpeBqMh#MSbUEj8eSHT zLu`()8qrZJ?7ahy#eJmMUeKr|q`5L_-CDP5-$Hk*Z!BY|Qmxhyx~{{HYow5$H}A4d zM}GP&9M9OKupc8(APD}48NPK|bMkHYtKtZ>MRtv2-#JH&#KjTV53?1R`Y!AnGrMv? zav~C!3xaK5g*5jNQ)v*v2vjFp83n1uLO6+DqaI1|dMHtC83ZtjjQ}0#jhGz-$R8y+ z`bL){A+VybqPdnP%JL=!IdGW-BR8_X8$4ee(9v@BdB7~(;>gFE4QdHnW=vC6dNVI; z`zKzCYXk`0B*8bw(Fg{bNR!{up>@zu3-C%pvS-;6eAz^%Z~iOM0E&=ihGf+Z1*#f0 zRK<_0YzwLqoQpWgTQ5%dRuo7P)p~{xqy6%4+nvR<>QULfaG6;}q?en4Dg_ZAw0BBY zw$IvI61AMQ5N2=D&s%>OrO&J~DUz@JBSO^S@JPA>-pG>mx;}mi%|$ zl8+y1ZoQxD^N*Z2mzw0&-ukrKC=e6=c;osv^+SO#jFL+;tZ_95?$o`%u5GORXu8la z6yaSH{M>H$v3@~GY~^8M$%)6a1a!ZgK+IjbWQ!JWh$Qe`(v|7AcF5ylU6EIA!5wsp zp5J=tgnX$x7UY-p8ZEz$qH0}h2|uWbE)Mkz~v#vsDGIcnb0H# zdDDiJYQp%D?}pa)6mwB$PR*klNAA2Oo3wi*4bOdZvWGssDONC6Nd2~FdU6Z-a`NO< z#{1K<+Y|cqH_~NWFpv%YqL||~-FfM(DHrwTNI_nqvYRixGUxa==XVTi(Qm=zxBN2x z4hfesZwH2>*c1tOAn_4#dW^A$PvAjSo$%`;VaW^yX6!oG`vq=goAF zXx?b%%^9QEJZ-|^p^+q7C^{E3f{wRsbvRLIeIlYv!_bps`EAq@v72!&U*IeVeXZLXP&+hkPw+#mZRas*HPko{>3+z1G7DS2+-BYLktmQv)8jF?h zZ5O8)z~z;}LaWspI;R>a(F@m0e*6B`b?gL9jR^KSUe30+R{T@Fb79d~^2u2=-4Ws& z7|ZsSx+p;PXB|dfrNS5UVx=vBj!ZvU&28dMYK-%SbEP2FwZy#EZ!W7FyGpQp6F8%$V;S(C(nE zFBMm~D^D)3SWjRZEf9TM!;gX@vkmi(3Ksh}%driLZ6>>zUvL=;crVbWhki&*2IyA4 z_JH5siWJ^=xdi^j8u}jDuG!Ne8%N8AB;+8K=%x!+f%=531=-s7mdWR77HxGcbc|VLLe3kCq+P<&v zHAq8=#;`ul`}!Fy^duV*#h1^u$;2YUh0qANw;&Te4&RXYH9LA8P0J!4WC4g&bD|#; zwW;TFWy=D%PWla{jHbfZQVn5qB-k9;yn9)ws+hsi6x#h{ZCpy9!17eYUiEget9^bo zq^n0OLa-KGa(zC_4nX5W(Nyt6Ub*p6z+y0ps8kY;|JV-)$VtB)7aX`neN>*O z1sJRb|J`f~L^8}UGh%l1 z=a&-%b%MM0MKjQTT|He@^J3s$E=4nE?pV{M!)rD=fk!e*eRDU7yeOem`H&SL~nq!kmi=nJes2 zp^vUQ@g9ZM50Z<;qLr8;|0|?@R zp`3}ZD^zZviGJzLmHGJZA>g$%atXH<#?X%0Qh#9f>ca;y_}>r-%}6%NbqUIBnT;bU z+GrV!h*-P^Y~uEmu}3%TmPm$%ZgaN#5_W4mH66($61Ye*+4Iq5iW z(7!x_d_fxO;NyL3!x7}l!K1<@)Si*(t%bH&DNugwvaufZb1bK*1hH(qLsQlc{DY1h zCD!t{c2pf>W^CIgAqL)?mVN)4U)jHn*_7vXlz-%n0N6Jh_p%>3DrMjo#t1{QA+&`X zk}ey=Ehf;d@C{;JNj)WR8CRl%Q<|uff}}y)va2jKS|^H$o+~$ZK-fP}JaSk`3ap=~!}xz)RH9$>Ba=1%xXcn&28YwkXHb1nW+E6C!2 zipOOPfxAU(<4faO-6`x-$g}U#PWY%6$@`m-!UkP;@9a8zp2N8OA!I%6_UH5P0()QZ zq~?1VMNp@(A%rZbi{IF$Ug3QWC*t#(HuhU?j9P3k)I$-0`N3gDjQ^gk*IVUVF@#9s z=uPK&nPst?v`hmgjW4dD>SFmY%RYB%lPLBk5>lF6|)Z)fKl?8^D&l{PB>jT(3 zCHx&jzP16`9W==RMkIzsRqpcFl&JJ0d_x}U)BG!lg(608!{x72*CE`^GL_x1up^cu zE~!5joWP_sUizBK*>h@_;gY7)7}lZh|9Q5+>?B=QQlWi-)P{9>>14U56e_17DEw*j zVEt6vfYO^`{%@``G^d(>LteFyul=8fFm!)Z*^k8hljZ&I_r2^W%lh8+@$<}?)cuAY z>iOs29&L>f_yL59Um7$~E_P#`F65fDQn6Rp&Zr;#JRl)6Cm0t^B_WP`p44NX-AHoE z-e0WXa05<_vX{2~C_Xm^EBWMK&}vn+v84!b*onLNk4z0 zY>9XRSFXXcamvv``cyzj#g{LG^_k~^caq9YcU%QFaFZeB0rN}WA`nd zUKOVBu7w>M7ri8Xd#_;(GT2R^;%=MRA5cEp6GZBMbFtccs6#1H&b-IEsjlr>??5Tv zq;0I({#gq;;wpu3Sfe-5fI{#nnPOqdSQ(F0HJ%NK%RvNv^+`Nnhv^=Qw6+5bUIrJN zK}@&*k4m>^uF&Z;hQlR~?W?!`_?|t$h`e8`a z&hu2PqAfLvylvP2d$9d9?-ltPY*PJ2d2yE1Ewt!k2jKTC)_%vG>@UIL5A@#Xx`Vs` zPyF!fq%GWuZ`zr2`B%<(IJvI1PWAyX*4b+GEJxXH=fGS&<2(^uodtLvF_(pggjsa| z?Xe}IE0<{^WfYCk?t>Arlz-k%+mqP59^}q^ukz+&vo`0&^O6EA#NCnupjeacC^>8yyqLL%!>o} zTx&79(sm+Smbk8l%PQS`?((DunwWD}y^D`E)G)_QN_?F##PQ1bw36AlJvTuR1(n;E z0xiKO)G(~U6}z85)Q#G!l)-Ks8QlyKx!_NuyHQ=!Zw+|bZzJZU)z}$^=bPzea-n4*(avioRa2C88sIS?Sr1m)k;X)x9Z)xflFP>u?+;-Ur0rkKziJ_jb31e#VHjsv#M{5T+NgKZbT)X|Z0E^H_PA4i9|U5~ zxj3kB)4jJxs>hJB6T4!}J@a19sVWY`d%8P}qOwr+x}g=Mw+v88KCgUmnvxk-4}j0j z%O03#n!9fjJx%{i6%cNanNPxcA=w%k<>mN*T<8jgw~XH{bOdnf0i4I*{_7mr6|khw zF`Hvbv0cfeMDcm@R!}^YUE5u4F^Y(k$Ov~~`}3R(W5}A##Syq27e<-4=hRQT&YMx& z*0_g{EG8H>D_A{w$Er=gXvSl79(v--8r-~v_mk%xi=GJK2SLjDE+J}k*g12T?U~U* z!wV}@D|N&#+rP5OI9MHeWqIfJD#s0GwDU8}dwAzX!xxIOd``!GV`b`B)QJjQQSz~S zRb3Vp)N~AVO9QsGmI_@>g`))}to*hAz`oG#NRjsGvT+zJA~XA^X`}A<>pVg0C2>v0 zk}4Bs@!?8^c`n2zSf;dnWx3Jtw(@Jf(SjBa61nTr03Eb68!42@C$H_^3}F4lC@%c- z))nl|Zw>z|D}nu`XIeBw-#W@|0P{y)Nup7FE(KPfAN{j~NBh#&l8R@Nc22iVv*sS} z=2VJN*rv@UY99&WzGHJeNjwu#g1UBk;GGb zH?hUPGS7KD)6-GR*LfbF9tOw#n12;uk}AU$GFf;~R(RQ*_|&KA-2 zDPZx;e)i06u1%rOPuJ6!s-klG#v!)XMP9m%2E%Q(xnGTzt!(Vjy9`+h3_7C!#j z^|`LW78j>+Q1+90qBGQE?y(N-oabIks{^QSmCs%aoqTuGB9h?YnK6J9Cn<6=T~3D^ zRYu3L!xA6m{Ulxf^uE|2u+P&GSdD~}1PVq`V{e%nL`35wFH^HUcE>yJyn3fU28|wl zzb{r(xUTY)iSSPpGgn9jvid<60^kC06%rMlgBM>t*BEbRjR#(M{o%BfT_h0zmVIW> z7+`LO1I5j_t`+(G1YDx$Zvc*qCar4i_)tZPXxz|Q-16r$8WR?-So~>T!&Z`#^6@u*F!e1m)X>uvL zv-*;5ibSmswG(-^Ju89E8lM1K)h*9lhJRGCTHatJCchVYPP7~&waOdW)973n~^5m>42#!Z_`_2^+A@=(@r6~i|i*N)iE3O+ego^=gd7* ze8JOxBkP6=?X5jlBB-Xvs{80U1$4aK*yB|o=o&G!121}5f!2Tl;YJa(6_rPwdc_-l`8ss=Ukznqt zqw0;B2t>mk+!EY)XT#d$CBV|ty{2Yi{fl`0m})Z*ahXA&_yN-{nxu;BDe)wKK~eIY zOP8?Z_p6aazf$kwsc6tm>L+2{VR^vg*0|Nf_4Sj6YqkcgMUI018jRPC$U+KA8I+~3 za7NC~E=zTt>zCmx-zqB&2(5%zhCB`JaMsJPK0gZ;>isk2K8e0!32QWJ*_w`{!^uCA z>Bh7d+!v{aWFtri)DRI|W;x3t#!}Za^D5H7^SXSnsurH(_aYC?MN@I><5jU6A^yrS zPuL_CHOBU-sKX_O6SWqxTx#E_X8g#zQHx0iN*|~du2258;0a>J@c$q}S|csd3-kDM zYL}2Xc~zr$OAY+RY`3=g)|)^1TnwLC!lRY&MjJm8Al)?4bBr%au{ydti7UW4RY1OD z4ls(TTs8n_BWdQj6uZu;i8dD#=oh8IKEnF!_k1NWOhCm3jJ`7*#~iPYt3@v@4*LBW z^K^+}=0@X!w;%4%A1*`FcF9v)Hz&65nkIz8HO=E{BjQxhfGI)zntKofZ{-Jh<>^71C4(0EK}WR?snE7SgfnpIkt-4y_jmSq!gMdg>7HyK2eQKB{ij?FNr#x% zahsH*m>d3_c%-1aexs3q*JWSBtTL7_HLGzT)K8wzcF`JxOE+3DQqvpWEueMDEv>?Z z<}x+iCF)HQ`$kV#%&sk4-pj?LK4M~-c0WsnVvef_9UC11Y@G&dJ?`r>H^!z;22K`2 zj5dg;!Tcu!IXR@L;H!RW2?~}Aeal*Gpj5N|zpPn0Y|D|?H;U(gV3f6K40jr^^d6f$ zhXj`<&rA&=xb+wYWBY*lyHLIs-la|b;jO9&rQfAv`Q@%F(Q!O!F1VQLJ%K4^W8xAX zCT975{kqOuEUAJ$d_3)w!3K58lyOXgq&vs>sUQm~_#V#{D%E>v8I)ebAg15(kaiRJidKHbY<-r+?kHc?Zx5ywRt_( zeM!q#F#E734+nB0!~Y4k`kQhj=d{ir%mvqXQy;z>3Qgptw)U_;AO{Vu#-Wrd$B=^k z2k!>M?#0c$Zum0}!}Uxd*9rALp%-+wSpN+tDNZ4>e#-ig!y)~uy?2P;i|NQ5{W)xb zd@;xLX;id|(z}pE-;Ml%&`;;tpYZN$ej2ZC^xS9?X%L8F!&WJB?E`a~SVM)TgcHXX zl$~>8oth3keFNgkCNz8-F=B_kTG`jht`!5%?7a)V=PF%rNNDn~+p9bZ@#xR6NA4=Q zJ~akudJ&flnje&MWiE{m9+S=nw#Jl!ol7QX&fNL=0#)iSwtD_MH2toU_;vTQSe*k1 z@E}+EU(Z?gIW2VPc><+8-l3QK} zwhz-oDBtZ_Uh_~NRg#Yx4sOyMMmGiLRma?@T6@z$_Ip)7-+$l)Em$Te!ztjI?j`~w zdPRDic2_ToTQwJ&VINT4Fb+0|A6`CMV>~&^HmP|&nB*D)tQ!*lEtg6S2p;|I@ezJ`(#xvdzd*yr}Zc$2;PL8cOeS33DyX^;T-P_VBrJoGW^;u=*QD zBaZsVYLM==`q+HgU9|(jBNytsHxis9O`Ap%(c?4AGwrY7m(Mm6V%r+xex7kr&G20= zQ)@*&C?R!!Z6Kb0FsCr3g&MxSw@;=TXwwm7*y(Lm#lkmh*Zw^zVoGl`umvjGsd zNr4)}X9!QzQfR2s-bc^e-m{9TNsJ&@tuwHfTa#8OX7|_T1mbG3Q8<4NbR391`}Gl zJ}CLme`IAkR@m1K=~53XoPFCdf+c^9Y7(3n=L(M!Um=l?T?$nS;c34oKNAUJROWXX zrE+aR3pysvg|XCwE5Lg{ma5W*UpipfuUk{N968tF-W66YWY8cduo4{wv@E|=Z#z}i zBVTUk`aCwu4{`|S1!$&DMaDfZQ3@=kE-(Oq2K3{F*>1uptkR6y$1**@`J6MpVCtbi zi!xG1jW;5bb{tep*NpTQALD{!R}=>)B^(X1z4+tqQw&*MgkO?oQE6=}qWN*GV~op0 zY;lj}#_huLf`hya$ExvE01dX&c#L;_;&dknxGLtOvNp{U~E_t+y29V$up(JUgCJHO>x#gP3beeuGLX!8@Uu z^`k2+sGmr@mv8sTFPp)5)wLxhuLXWE*J6eUUSly?7VU<1<1u>CETm~^ z=f!{%hEi|2v>7zxB|p6ts}~q4T77r+p3XlC%OWOq)1ydpg=v{(^GDt@x(;V;umu>@ zV`@I+9%sUl`_~bL%H}#*EIEZb=I00A{#}i!ZOnDqT&ys%ANaSKv*K$H3gnpXfGp5d zk|ue6?RyxabH%oWc3ng8Z&J!c5H1k01?0@{pIl~?C>yoBRW)v@Be&}Ygp*cHVOLQS z=nZ{AnRvoFh@P0wPL1q$u~;@no8=1dpq$OHg{n8YaL~m9N~?V2;e7y3sM_dz!5HW| zHWti`g)v73)ZBz6gxClrZp`LoD7@cq?tWoDcHLu^UKNY;o>x6_$n@*pif0mFU{~W|^*Fni zha5&)iHAIMwf7o+)Onf@_I$b$VC-#oB&x`#+TX5db>UFb@@&%UtLBLX!G@;&*6$4M zPEe=x2g({=H}5Md%YEv!9iUFVdbb0ch`J)nyCEl>P$)TYD=AQ>vcFadj#K_8#xBLZ z@EN-b89op&{p+Aa?){)Qlea(Q#LNw?EN?EhK1*q?kUAU`2BGI2etqy))Zr-mQc zo?46gd?9bR9ro3sof?1QZV7)IHcRt7srh6B^ZAsJyr;fMOU1P-=~|Acaur_K;aWS< zr{iX%m)p3jL68Qarw1Ayc7_7`T2+{4Q%&rE(kj+9*xNG(qHU$PHrA~9{ts`=6>c=y zlys?TO(T5*{ptAmQ`Z#RTxZORJGTO+k<-f$D6I~(AMpu|4W%z1c(zkuQ0=-mgx#eh4lM@>IKy@ZDl7 zI_@n+=mo1myip5}df$BU(S$rbz4r{GY3t~R;Wrn3Hc{wmf0;0FP+hS9srvw)+!=j< zRUES0?^F1$a|<%JeuA}yAP=8l-Evs;8DK??2u{sZ@al)XP03I8mcOxdcYx|w;h#zq z@6Gu6dt9bmEbP#5+zuW7Yz({%`sXPBla*iA#)z#&tiKfdVDOeawY7xwl+*9@Q9i|` z+DlbI`0dc|H~Ud3c0oThVTOm7Jp@@F{0_M0MOhZUXPOnT7u0>%uR>+|tEYG;;^QH; z$~>J)$r_c2ly^IXpcjqBe-JO-tRm?V{`USgnn+)h+wEI{+=`NDkFv7FokyM`=5{MdVdoFvDW%mrdIh^LUzL(KNP*7UOzZ`8PiV zIihG_^O7`gcvG_dVXznHNKR+bqDFQ|70;z$b&QfVwt@xD!!~Yv*6^P4zp3DWuu*;^ znqG;3-=i3c=6yFmoWL2#&O9>s^I%H-+p3Jt$T$=kRCmn#*gJjuEkr{|op_vM z%{7o1^hm?To`%&;^`=ReBHxg>I^-U=bLyQ%<9>Ke=Vv!}uY!&6yB#)jQqxO#A6;y> zGRvP&crrw2EqJaosc|Ey{k~%%#oNB^>;W$bw%}>S#?suz*7HBzUx*r0CoERWD!CF$ zpG4S?dK*7X0N5z*nwpj?W;hUJ#LKkT<*wok2z~}VQrhEMTw12Xh9b>MiC1!|f?Gv$ z{4-5uU6~9aZA3y1DA*Uxtu~JG+x5?_2D4zYrj=?>WvhzYutv-2DVl6AqAu7}Fj-m# znYrVR>Rt*p?uA#g|3$F>b#eR+>7M}ikLvQ5FuP;ZL5ohSJ#Qct;sdUcOKnCe<9UM| zmCCZPNh4x3D|{>_#Fv5q=fg6D!yb~m^EFM4cUaO~yhS;HIgVmLfB9o91+Ya0NwuH< zB31y6uJTH$mNQJmst4SRF!%=QISkexcoZ32!aOgKH4Q{-*?47vvSE%6YL9k`O+W-H zfxNZ+YGypN3(c&y$ZSMxzjWW>YV+TN3}a_w4fKD1_nMZO1rJ=~nTNi)QE=+z3Dh`ET|gO4}wpFTkNO7(z?V zGsz-7yi)fbcCA5m!-==8xhMDj&W%Vmi4l@8qt%_(paAWoreY6|{{9*) zqsS(kPZ%8{*7+Wg41O)-5utK0?21ip(&0bNPqmGGl+(=Y%%1!9rE9Yia*Gq;c8+aG zYInYU*9YppyEQL;Xzn-qgwqOp0%(QeCmj#mI8gZEAvpJ5?vvaQ_&weBm3y}$jbEH- zKmNUW;7+av`zWnpZY=PS2BPf)pkBmNI)C`z%PWTNe~|3vp0iC;>P1N@LZ#?{fw$_h zlai<@`y*aQeGV$GIx|aSh2KTTNoz&@bh-!suxYNyBMP_&gu$<2Y`J9uO6%pdz=gb= zuKQ8iDsci~pwDPVfKq=}b4#;99UI&o*3froxclPNRSiV0ma>Z0YOCPm5(2aHP3$=k zRSgtQl^AH5WiRA?`d%OF==(YRk8l`uuk$(2C;yW2w!Pq??ensPIbtIpH{Xy zg-U5(lrUut(X+rGcMO*`f+G%({zzFI3Z4PgSha1oLMJFKrz6ZB+{OpI)(I@}yW*$; z+*Q=3Ez*YT7XHgh=UR3Ib=~qqOT6&|2hRQ5cn1;USjC)By42Mk zbsRmSnL074ZfYYoH6}ul!%qP>x}*crQlnb*%w&g9Spbq6A#DQXsJ8yJWdsksif9~cZ?Hq#((FNmHufNPbOu(q#8asbrGxBb#Azcqo1m<>ASJ#%+T{u-4}rqc-;ozZi+X@l5qtiON~VkBij<| z%SDu&+=7{XcPr{6D%z`HeR#pJXexs>tF%_0G{-aGx}~)ng>AsC9H&z$Snv{j)eh{%j1XI+J+}k5fbK8 zEL+}BwRn0=vn9QZ_jeS*lEo12llOVo;UAeYfy>6mS`1ozJZOubJ`jQ- zLb|r4y1Di3n%=b^S6HoPyBK@^8)$Kj1%3N7)4IJER>eD+%c z&ylz2h&Ert<}C^8qBI7~Gh?uI(Qr28`9&8f_cVGtnzsBJNu>mcn7OxcJx1A@|ow}CE^+C5-A7S&-EU6lB=zk{yLel5ksb~!39g7kjK>fDC z?&tw{#py6Wm&i)Zm`Kdke8*zfUGG`E5;60{w0{6%D#WsM2+uH^|Ir+X2)khS*8JV9 z)eFgUG1b>d+AD!!YqvS$e-=kcUZ{Gho=Z7R#9x-EBh#qBk{r_9Y3f8|1T1^JP%B|C zq@5{#+wr+)yQs~1piGj1Yftu1`>!Vw49~Y(&E4A*gAehMYeSiU4f(-7g)>;a)3RsX z{XoU^$U zs^_rxz|1^F;xa|yvtnb6D7K!yezWfk(MqjTCozcJGZ4gSMc}QI7mGRq zB05b!oNRho2L$%**?q#=qnjT~j8Zq=XO(*~&ZliW$fD(MTj5J@$oj0@2jf!)dD+0E z*bT9thw6?VE;KaRYxz7KZgy0wep%G{^tNGm*^ri%`p(zQs|EqpW_gPZ25pFtg(8!M z)@R!&A?Ma5H6>SZqa_iMqi3AoKKZ48NPIF;6V;lD9)ShtDZ5;r zy4(UK1*piOo|#IoW}ynMxj3iLYJ^;=1uF9)T!YIg?WAV|G!^(kmf>ca8oUlCEOCB_ zeRN>RH#0h-47OEQs#mu`kyCaSsmLk0v(Hx-_-}Oap{h5=VDHw?YHTv4X4Sg5!q+onzvJgV#3GeEuiQ6!t%>>K-BEk;Ow-R0?u_KDna zn*R>@kwMFE{;PL%LXOK-kiQ*QE_s6Tx9nsdAt!!H!b>l3p~!J!xV0w)Cpr)M@gV$B zcxujL^tevdzX*HEqfu71o~TNyE^fPUio9gWsi?NqEiK&GE`x++Y6pC@4WBVlv2mN- zXn#(hUPQe7M+bXSqd1-Em80ubJ3A&ES0QB)_CY+4MT+}j$ku9jX1(^nkc^1pN4Vy5U(AxZCG{%P9Rlz4ZpD8ETIMZcj1OeSa}TOp>At?Cx8{b z6}MnNSsl(*5StVu6;}4GYKXegGsNxL#9~N)eMKzVV-uRGhk$d!Lpg!v zVFW+O>TlIsYwxW)3Dfj>;Fq0TCDOw|uhe>AX3muBYkLEOKb|D7lJ}W&n|2xfdhQ%0 zFX|t@%YoRI$@bM2sZVO0^Ioe`ds$d$>9JM7M<(_%S zWm@D+7*7n^c_v2Dobfd-!yrVdGw@nmcpb_Vj`VE_oyCHzpIZC)5e2#U$&H>1e#zaZ z^m=-NZ&J=Ba~&MYO~;Q|p6*=zzSk1uhPy~6Yfkp`Y-ho~)RtLjg#?Q{c`m85Q8rsl z3n8H_mS~U4%UUgucV^WimIFJ>_@;Eeu|*ZY{E-(P3|+RKKZ7Fc^6Sx@zloqr?`|vD?y$hBl^~B zO60aDHGl)4L%M8T>B>?i9@FM%)V+rqkk*v$XOV66b7f?Vf*a~Jd4)9JwX#yZ(m%lb z#y9si8_8H%tSMk0lqYF#gt0u3$&l+&zp|(v9B1eFB=!dMBb4z83jMcpmcM4nEt}?3 zSlN^~cA_A^R>t1~@B}khHPY-rAl2F*+MxmNsJ!jHhn&Bg3)rG%$F?nuV~}fw*6(ww zAJDh!3>hFo3xz0*h=bHKEvLPvR_`l6k;+$Fn^bCstuK9da$%u}Mhjhey}(fa51@o{ zdk)Qeg69GK9Trb-K*CspznoEB&I1g|IW_GoWMTANt6@i~EitZ^#kL8;TEuM^!QuvD z;bxW(SO?3O786W87&`(e+}}|Ex8iqbS$I}fqYDc3Q*(!1O7e41N+60~kuD(85T6WgiLDW#$oQuEw2}ExX z%(lA_N#9botr?d|mA<^^Uv)niXsNa~!F-ThPn44LthNcoR9lac^P4lI{ z7gxM#wV-OCr8DGY(8oI(A*TsW(H-8K>cH*xxD@&$W<7&~)xn9X^hqBr#98*8Nx8<@*XyvU^Boz3M8?%^qsOOVE0E8=;4@o2T{QRzz(I$&l zpYy;3$61AKc11Uwr8Xs4Gk^LB|M9vxar*bv-gi}`{i4zhn~$l|xQv_Bhca-{jNE2& zqnyazpK%jJ_l=ONthB01xGqfg*4d_{cEH4`!?lic6UUjJj(Wt^@z0c78^LF-FfVUgf|i| zb+ztY4%v{jw!s)C|A5r}=-JlRCJ5=B6_>GnY25mFR{#;powJ$AYBJsh-uF+@hYZ>< z01FK%?&pHNx$A@SFBW8-yX6UY9A8ccSFiMJz7I1x@wPH# z!3M@xzUyxr1q;bk?I>I9k(?_sU?fHbgd92G-K|Xm+)V;pn(c|$72+8M{b`&qP-TjO zExL`KJPpwyzu4LJ^01uP6Xq+MiG@gK#=iW=drG(Sa(IcMl$+BQLG6?9V5?&eXPS9F zc0sYh!End>&}FE7J1E`Ju&p#LUU1X<>CE`lvKOTEP9cwFZ#pX#sgF$|sZ=~GJuWrAAkS5E^R_GUX&X4zu zD76;wGcz0oPSiGTM#)OTV1r8(rHPoI??MzL&CoGBqd(%%z@o;csBVsJ8|u9<_v_O-6H$-+*)e3f{>LRakW76{2h%sbL3Ng~ zur&;UQbm7Ul>al14qb6AHtB`dp+{W=VeBuo%0H{UX^}3I;p<~|y|VnbUvVIKUB}?W zSl-GaWVTh2<2hWOXN2+6G$S!Jt74$4oOi!&;v|X66!%8ChEa zu64bk6UoIf_ivqGtid5ysELFGNcZj8^wI+-swQ_YFKptnyk@*#?G|Eo3QKr63@5g+ zV`q75=qqb!Pl}(dW&XXywkwYiiO>~Oe0;`7!O=HjVP#P+Jixd`DF2c+V37)8k_dIr zZQ0zryUinMGHQtPcM7{JWc<~pI-18dIp|a?-S!+%aBJDNW{Jf@c=*VFVh;=MlqDxH z3`CuM%|zijCO_G|X8M3umIh`#Fa z%~ijr^F4Ot`2@gB`kLT%hqbWGe4-J z%IYcVO2+$@WVrI@`@4;`P634!$O`HcjC}(V>gyDk5LvcZyeQZ1DsT^drs(?l$fDO( z80mmYr-&cR3B@aC{9ASQ3>8Qhx2Dzm&Ym3In`Uo!>H1l1%Sx53)*}{K&2&3j=n;24 zkW7cB?e5Dqb=%-KFD#Q!?`C*+KOcXa8PSGgt~o>V(@v}PtCz1c8)Ca~=A z)VHU%s>cd)Z_#Q6^_)@nlyA>T?A{PRCw=3`OAT`u9}mv-Woy5S@6{1S?vHU%K6EwA z+^;j|o#ix~wIznfV13K`cT}ujeMi$WXG)XJAUF-IK0O5$xcGUq7P*H)?8Q{+{`Qp?4zaL?d?O75yd=Q~_Fh+8=eTBX&dFYwh-S$MCXk>Qm8WUB<^ki7}~^ zVZBS8?c-YExWI&L^y>Y^r?~TD1wa`o^v_Jk>P2%64n+9#fNNP!# z4O6Z&=mvV(+2_zrYN zfR4f!Cz=eZKf~5SgAdoC+>bGTB$@HkrN}m$b*N-VdBLrdok3r~B7?&R*U#*FTddl? z^>96<$@7UvP1Y}b%5!{@Q!*8;&s?_)@3rI$Xw2`8gufVjY(BUzeBb znqVsCZpBFc{fjSzlTI-{9E~UE^;f1=y}!I{q2 zTwK3dspJMl5#P z7)mZOR}qs?C)~+FOk+G z3$7WcG-yWHVtO|F!?fatm%MP-;i_w}NMyC9r+ z$*@f+3+`7utuRzizHKQvM(cuL*2RC94E_#wFfMMPjnFX;t>q2nM3+n2y719PP(%2y z-P8V_{W~Mk79*XbZ|AV)I1FL%7fTf;2XjE9pNWLUpjJ#M{mn#7?pQqk?`T%*qx$Dw!Q1WR#HdyV zhjFqwWp?>aVw4)>JqrmwyMMc1H=6|J3(@sm~S!_YY1ckx)Mi^rJ z=qCndv`NmQ$7Vm9*T%F?ptkVAY*>4i#)SW7nju}*C@ss+$Z(^^103z=u`O2Il9y}fO>3jI;gR&K7sGqJ?tWQ7c zx-;x=>qv!kOuP!*Cw}Gb$(Dwv=;QT=7A!y~BULzZaN~*bMxrM=+I)p{=*==y^m_D8qPs~*>&B+Qslm50O*eBOh8W>c8dHOZjB8-62>*L>A zttnqRmD+P|Si9lGe6z!EWu=0UEBjH>j+S&MOZs2f^KxmvsQ9=QW~$fZr9BA&pVLlb23Did{>TM;vr3haq)@}D0C&soUd>%!nZTrjIvcD-LB+_b z3QwC1|1cP{Z?ymWlSzEl!qge!>Bv}I)J9YU>sqXmW1<*_qdBETZ6H3|;R;su>K?s; z1^Yn5sj=s!@g587V(yi)XYwpL?M{wbr3waTpBcqnVf0vQhQvrXJ3doF5Lc|fZ0(I^{@;^F9#Kk588SNi)X4DT#*FUVESvr5VvnL|9+V8^Z;$l zYt1Yi&%2yBuDE(E^Kb>GXgD7)!U>QjhL&eR^D#~2s2L#ta;<+{{>&x_-@ zP`qg+Kx+ih@W`UYt<^%4{1WzjI{hhE)zdMKjSEfaP<59=N9Rar9)9mQOzXOKOj>1E zZ?{Y{BT=bP+h*9f>6QpM(4Q!x2%|m-4-Jn)ild@lSO$4=Qdmdunyb{y>c2|*ji?!Q%KsJA8@{{pDQ~j+dQF;2hXd=fp|1mM3a7xY zL?a}^w(M?Mk)f@};OX?KG~tL!f3cZeA9gEeFF0o)s`?nl?;ouxBYDhflE$r7NMsqs zOLv~}pK87FJk*c^Ce59uJd=#0Mz8qNI5>^8mATXdin09KwIg=%@=Jd zX32Q^eX}p8X5qcOu!!<8Q1#KA+J_sx!B4X6z&wtN*>~vI;s*T6a)?bTvF?*wija%T3W*T z(>rH~^GMk7L`ziFOugw#i#@N33u<7Dy;@2pGWN8_x+{-`GLI_}i;-lq%Fi6jx)}fT zl6=D`8+;b1<$!4)Zju<8g@lgBxiANesfWFbIl4xDy+xNu%#aKhQ&mU}97pt=|Hz4J zj(jz}1zDmhdubGx4O%=Pqs@Qy3D?aO0yty(mu8fRH{|6T5sN;%C_zQ5HyfZlL5btR z@!KG8eGUr4WTF%9SD=R0CEYqcYnsov?#Jw+8pk7xmhd+@o_#yfQBibk(eK`|=bAhV z!wKw~?4b9EJOvP2tUKTSJwJ*Zy%f{ksF~oxFDaz}nKn`LUl`Q83Kb4`4j8-gUAGKl z^ni2F(mQp0%zSs+lhmAIc!5#45xKSUdi&-^2tBNKPU&a&{1fDP)lFTvk*@Q`dvoAM zdPu^>*DgrrrOp4bfSZ5g7?&6am88zaagzX>V(|Z^uh;&ETOoICVKiF|d&)R0C)t?L zznpU>)j!rkZxgLTsY8ugP^L!NbDC2YHJ!FwEiEu90L3@lA4mq$S+BS=o!__Fr%-Ky zd|C)U)PvgDyqqg%-AMVKdvhNwNj)LPX+g0C`2Muj*%D$FF7Ob4bvh}x zzotyyd9z4-UTg*-el_Bn$M$2*dH>Pl=j^6h@yCujU(tR}V~^m(hi{kn{67n@r-Ai! zg{{;I!dCjvMmHgZ;QkMRNzMZaGXIR%3;jMXw6`>W_x6X}sK7by7cuzek=rCz9O<6w z&}Dh7k}mpHeHUWyODE$Z6^JJ!vVT|FQ%DI9!C$q599{eQaEbhSsL#cJxY+*dF-o0^ z$v;OhX&=2@m|1t!+U+AvPQMnv;XQ%S$WS&qcLewSR2r6j_A>q5KqGk>pDdJ{QeLVV zcEMamhy>aYmU0=~yp;=zc6ieFHs)4~y)(`A5Y!+|uH~N{ zHT+K%n4GS0N5B_>HT$2BI!!6{G>?d&rJ6)lu$O{99`5Z=8Q(itQOEhfgI*Di#)c{vN&KK7_Lcttb=J7jsy0vbve05eDJy@^e$+?UI*0AIwYpDssAN&J-y{YTUgEs-p| zZ`g~9097G%BR1ej=DDAA%Hlys^~tF{o*`PqMX5r^E3eFsW^W>hUSbrc#3}ZCaFkKe zD4uSpB(t?=D!J^?j?aE+k(roUq{xK&)ZJ0S?RVvZRb^&0*7e>bv93zPMYf}_aJR5frQShg-MP2>plG7^n^c1s4BBJ2 z%`Dk^F*zkmEx(Z{-(^G(@kYNXaq}oOtoBF#DIljQtZJ(~`SB^dyAu^r5wqsdJvzvp z8AQo~lzuyE8hz;gx?bXN_6JfSINLe(QfYs?mPzg|>y(+RB~ovaZOuLlJ#6Y~Sd`jH z-{AMOXLRoFYXO3%j)^lw^$n)Mv@Wb5{}7h#=4r_Raj>5}hu?7I**>ZED@ zU3H+&nBw!WY>rbjBNzA{Mu&TCo;r_==`-*k-j75bKvN2z0VURK`J?52t_vUIWe&w* zC#5Ym3vxX8mzlAaPs120nyK9eVDC(MshUFuHF3J%_uz8@6J0(^pbA7{<4wz{H2ppX zjk~)^5FuR@@vxFNk&}6^B=u?9yCYHD@glNueDP^!e9J>rh6)Q6^Qgb-6?e^LN7&$n zK|$js#Eehhy1L2@sncyc3e+=z0$zo8XEyz2YrdQ3@=E5Ksk=j_hOR|fw5wV($@>+0 zTLm|5oj80$ZBDJi9j#UMO1=;a$z{cH8S6EyQ3%n3Pi7-5D5~?yum$>;J0+1`Wsu@+ z1%JrEl;E=kTA_ald4P(l!gS|5l5zXESGG9>~i1wbEdIMCgT(O4mJty99 zXFI=X-WncftIhY`oTx3Rk7?iq>cxgLzC^Z7#SE@7{*R{f@JsT2|90ET(#lfHRk$=bL{XUL(RU+$e6U?@LT{|^K(>2+@4CcDIR3oC-{DIYPQa7_ut83Aq_2`-x8$p0Z zZbFQy(eS;mO({*$9bzL!gRdaVj~2$ZX(yWVR7&w}|ASKr=2fiNGUs2kO2q-b@91`|LL@L9BBTRIa(8-igbA z3MyCrOWIO%FOzVBf57n5sVh$wSB#a%TQe-+s0sr|7XQnP@^x*W)J-nIqkxFf+dM!? z{GfEZBo&Sfr8g%w1_)rzp9~*t=HOPte5G~gB~gE)H}5}K3!9iV+>E9Ax2CO}pJ^dm z1$Q8-n8PTHmK-No+6qHx9ms4`Nu7_FmKk6957Hc+Rt&(}M-88Bv+UI^3ElGWvK%c` zRi&khq2~;2`5V>@^X*O6JUGZ5J0R)(Pmex!p(pC@p-PxlTvf!g-@C#tl^_9WlrWk5 z3D84#J7u!&NOkRUICSUo=CmsBsH9z3ke1P}!g~i<4}T@DoWE-69C#rmz%bk)vK}{~ zwQ)%kaKcI%KtJ?7d6HYpzT)9VA{L_4nIGJ3^Nm7Yc4b{De=>7THZ4ZdF3D5oD&iqI z^Q{l^S}gCzVYz*$l`Zr3o_pt)^}F=le%EJ(d6V=DCXIpdV7@`}$)aCrQJVEP{Ry4x z^sCJJ^rwpj;Cr$qnG z@qtRsDLYlj-6ICa)QZ)%4jYbCosW&6y_u#1JQ7ABfX)aSQSB*`jCG_ZM2 zU3r1brf!$JsisnHt?m{^$5jPAKt0gEzv#u@$QCFVB(BIJU;!lXKZBFrT@_ z9L{=?eC0%Na!HY6*%fTB;!ruc3tYj)+Za9Z*>pF%J+W$X%E-d7s}6oBJy-{7AJk~8 z()O_WX%1X#VTKtQGkDZKKDr)@v{LNdrH}Zx!#8GCMsL`F&q`S2<@+HJUT^&K^caS1 z_M7IYW{o1j-wST1KI&@NOCD``t@F=!pDvValyjgag)8uDjLfb`#qGu0eauCvA zTGY)3Q>=Y9PlV#b>V15qBw7J$CBoO1i1KdUDc4ZqrG1fLbgyctHFZ7@us#@BA@(6W zmqMu}Vi^_%c93;P{U%M4R*^?)sdaW6Mt646ZrIlkF>e_H7|!017hXD;0lcQU@bDJ% z`1k=gr{3_O)K zCaoizZ$>r+3~Rm4mTvI%dU46M{NsRRB-M^vdIPcXg+0c(u<*8L^@P;ar|o0me|Cl9 z@W3f6QvN;d-!=*!iJe2`@_VeFDWK;MXw%U1Z^L7u%;&ELh{Ymf+A*)D@&`gnJs3Kr za7^(&Wrrf)Ap!$jb}4kTqWyUVToQWwIMXR)54LUA`Ejzmg@Ri)l~~QsDdN7qxTzXs z+bB$a?VA6(uBsaf>yAY6yAxs}t`l7{?D2EkVH7SO`v#0$7{)P=Z-3xCw>8nIk_yyxe+Z z%p1Kr&J8XzIiR1FR#)BKB!q;n9Xbl?ub3NRWiOSdrh^GE8xTYFTT}lVSiR^~rWY=C z1UNOOFq0L4Im`c zH3JU4Y>Ha@4Qf>DInZ8$>EcZ5S6G24^W8n{H(4v^Q#vr_5fbW=gZvtJXU(XxcAd#f zZ|Q!j)YMv3s|RAp!@P+<#>6geP`G0Li`eo$rvlIzH1 z??SOYA}v3^xkEa#e}_cX!Lz4iX{L4ljfV~?+%^CRerX0*0?Z_vdsWwutI{5Uy)xf> z-eT-T^7ecm-Vo7t)Che6l|D}-LfEVNkPc_2|8Ey5?bU0ucxetmea9x)fa zE@yIWt{%N~=2wKBx$>#e!Gfw&AIo$&A9{K{cRGVdbu@-jm36Q0P4X(toAa=0JIO$O zEOfmaN_s`l6KZ#CNp@)H*w3IOpU?<80i&tHf^SPlb#g!0NF9}L8n`C zedMrU-+lcird2AaGxAl&wz=136rbb$#VZO&m!-MQY;=%Tzt6r$3M*el1uA*xSx;zW zU{)b;N$Q+R3}%x3ixx$7*K7zip|)l1vyf zzWD9P=v2IB{a^N27@QP_AT8!?$HM!>c@Uq}9rg|58qls^erq{GvWhk!XHWS18}Hb2 zn9at6D5+?ddTR>r#>$B8s8^xk!^aAn@J00jwHlt6n1lBFj0wOd_(n5Ol{ew)^-5*x zDxkKEvgETYM_ewz1xG0^NKQBht+hqK_IS<1Og<>H*uf9GoO_=3T;~^81D1+c;dYJ= z4QnAjqzC9BhtXr!=0Ai%C@~1t6KQtL%y@LJG$8S>6xT?xH`19$cri729{8ec;pRSj zC)n}YYVbm@hkmG+XVTLk+go==6usRM;R5^z?<*(O8%`fpK+UT(yhJZhvtoYp+Oo9x zj+9X6XiWZPOwWYKK z)5%|2vu5UFXX%>-g1Qt@{-lVCYM(eS$LKK%p>&yCh(wlRV$H3ao z3qgV^bHq~rE2@VmNXdJ3v>;)1NCU$0ii2!Ia~GiQA&ZSA#3oh`qcl)oW>@{UC?N&K z_d{i%|8a@1WElB9GU2q%rjy;q%fYJi0CV>8v$2Nj?*n^Q`^9vEwqfqy_`$KS+^<2< zDtn>Ra7Rhs*mGCu#(9T z0m*}F?0Cwi3k11uUC>|bC*t_wtUrub8os&0n$_d~GW2SI=)Yv6zOb0Nn8+RpkerOe z7|aH}&^i4#F=JY)!#9XHGx}$zudWV1Gpb%T)Mf z7$_Th$#FDvg;po;PRV6ytLzTKOyhVfY3mGQ0epJ<_)1S0b~XAvPT@|Tj*H?6z(2sS zwYMty>fYmr7>6z&n%<-L>BclvaQ#wDQJ{qVg}hXJu{KVd+mG6Y8GYo@JXx zIhWUbdcVC7GBJ){(s?I2e+s(ly%pK=clK3aZpTwb-okvFLhzE8ZbMCQC~@}X<(umU z*ls=b&qZmTLw$nP5sgufa)BEnOa4xCW@Yo7bwU@^VfeB|3-#n5hGY+#ejN+dJ zzH6o{BQJc@%wKkuECf7E%hb}evAoOCzI>y1ukB~6Z5abl5fr> zGN40-hl%2?}miznmT%Dmn;zwu*Z!qi8c9s+kR)V z^{p1Sl~&YxL#?aM`kN)&IoU)P-8yj@@~lvd7IlS-rh_QhO{k^wCaXcR0is^ zD4&#rTQ3Pcq5KTC&_(_(g@vDGE(eEo_0${a&mr;=XJkd0?a8W_3PHDMg*}?C zNkq{v8=;y>M?R}6(hdZ|uxH)V_Yc_WVJ zVtm0`|431WP04s#VZhD(cJDfASnB4Q9mi(5CS_^yQ`Dd#@JIMx zub;Gd#SQj1vwm1Qf@C^8Dswmu zDE0AkjV z$u+h6)z;hYc6;ctK1zs}R{AoJx<-BaDhy60JZY$@Q05gn`X$f**aND&NN_z@_MBXJ z;cD30q};xx5!nEeoTdA#tu`VTW!vk-FqLK?nY`36xy4it=bJ5=wSJY8t1HIbenY1H z7`76D{^bMz&1Ne4yNaa1{Z7HH*N{ZztxbtqRX)jul;Hf(WEYgWh8Ix(y3c1-fhs7V zWvTO6x-@w`O;62>S5Z6apn%Cov27G<`1i4I7Je%L>wNX9*X`_U>ni83KqlCPc?C$G zX}#i;s<89A&~lc}8YSovgYbUt0^B&j7U{+{hR|N~S3*KY=aR)ArwWcVc-><2uofmq z8=Azo2c7Y&LnJ_XSaL#V?x|X?dh$l%6Nt(;%SH@S2%>sI* z)7uoEwg#b+7YEzSpWDn~CnT{GbZNmS(AuA{$C`Aa*>_XWtYy zeEUlOBV7cCW9_K_7(FQUR0}Ue3Rv$AC0}SNawS_4gtzDAMnNHrTwylj()oo0HNR$y zrC+5_f7e5e7JcDds*xM5ldZQFCcPWlv1Tlwsep^@8Xs*qc8hMLE^S;0B#4sxWHpuP zTu&5tXysK;vb3^`Xz=4wvgo&vMCg&<$yDjXa`F4%m5NrdGVsP*aNXjbsbL6m1_DG3 zLJ)(ZNsv<}Ds`yF%a$LhQxSLR`IuHp>Q(yyZc~T@O9ilI*cjvtO5!!3xXkhK z1lE6X+?wd6EYqOf^~MzYs=4*Q;?6r|fR5hyfR3P8{RtyTvYlYDGepAczOpJ$zLG6= z<28`d`YTpilS*A-iTjQ<)Qb`q4|=J-qQ4+nmlj`1Jk5@Oe#ikJBJ^x=``MNWc{Og; z{K*5=diUh@ZK`&AiX+ZGIu|OFQLs%%;1TF=2+M+xCF@MwEoCSwx>YX5i$Ua@epsDy^mE28;~@*Fq}beG zs)Lty(g)=WvnG%6*IJ}$BPTO}+1nmn_@?F&U%rp%cQqJ1`Gg%Et-tFdvlx*mG3(@b zV8VN(A#@*ZtaAzDhE7GW1-uTGZ-lg7aWo z(-tb_ic0bw1k~nCsfCuUwB{n=&6^i`G$=zKw#<*c#VidpoNtyrjA_cPk1$cMt&6mf zBS(h>BjhwGl$X;^aT_4MdVcmkqjnn@TV6 z{$(!ulnuM=_VU&aO>s&{>{I>Wb+5Gk_pq*1K-cmuK063*@1?J4{#v1nB)2CI2y!K+r_>>D!eiTt(2B>GWXswL5UMp}Mm=kYq zBoG|aF0JT{gG!Y3oj&uEnZvgYSaS=`Azi$UEk=4$@z6_J5v^9&o|zOZtJzF4I(9;7 zI{O|em0gEptjm9Z4Zg-HnUTwiF}U360uelfR-N*Ko9kcfxU(AmZohIDZ9q+TJ!|$b zRV`X7>|NCN(sv7Hf_lb?d>~7zhadx9*TFc_3Q3qm)W#qDJ1sQU;I9NQo$U%jRLzD* zNf$QEyfvFTo%YwCaU;+pqg%&(ra zbMREgKdHTirQf^;!RV#S+h-SWy-SRfiPz_g&G$6iH<)7rWWN-`w}B>0?N(d#HHEQiH?yS{|5r?vuZbg0DngKleo@@$}gOV8`dW`Pb`r;O&|6DvOMoqAQzj zHs_u*9sSJoF9Fmztn2afbi?BV@j@o_tFh0Jq3~*AcphN#MktlOA=OpM;(q(S{1w2l zh37CEAl}|a^@}dzFr3{m#=LWBYug9!GL~X#0<(KywDj@D-YfXSRjH|hAfpl@O#Y?f zF|doh!_{0uB0xg&U#8joS8~tuldCMb;Qe4ZmE}~Bhm%64kK$~F{GaE|^Y0SLg01Eg z9(bEIC7;sdRNGsssrcWsZer0eby81(mZV2weh6Zpk95vQv=A@~h3`p`$ph4<0k8ic zcc*5?&QqeL!(W90pUk|F-Xx9K!HsDnc*0k-&|%}G8@dsMaq2j2*H_AyTlch{Hz`XP zhq}mvf>tKJ(EjoN5la|Y0_NqYREjcKMtR*1;xE#L9RmtDtI&u#S-LVvl$~H3%p8-`B;#d z@di?zp>-5wM~zD(a;H}n3GiCF=_1#Gxs;5VkLzvkAd?zI-<#c}pRqHq`l<9$-$eS+`-5ogP(0$GQIZz~w|dOUi4?LQz2hu@0u zCH|qx@&7n7p>n3ec583nBe$V_iGZLb&mj z=GS2Ho^zcbwgwrqSV0Z ztQe>D7_c}8#rKUPH&t!%{R-ijbq@&dkDshxoLl5BltD-?^&FKmf(A`oO(VP5PvE>o zhgFBavjw@U_`Po{Re<>UlJ;7D9@%p$j^^nU!x?)U@DAVtc#x))=HRG#oAk~l!Bf8R z5_wM>px!D@pAn}=D2S3g0Lag#YBU>r#OhvZD>DS1u;*$x*u+qq6U&1>Yhi%fTY!|S zA8`R{PKI}IQECT0My-F}Pz)H7oc1zmcxQdUv-O60Qtz4LEtIc?FomwyV;UfJZw04c z3ChL7Z*hlGbDdXr95O$S9t;Z$@9p~x(Gq2_|4~vR`pXq2?%9O5OZ7xW zJ5FRp>5pglFIfWPsb@bIgheTj9S6nZdA|Ku?PUQu-p1g3&7s_Wy3MJ(r4*`eYG9-63%7_ z_i-68{YA(U0^KnxW1T$Xu8>82k(~VDLQ(4_)R#m5mj&?YLcAy}+xU&BU;iV4(Pp8$ z)P0AIkriR!BYmEn(yddnPK~_xI(=1DO@oV7ctZ6fFJ#OEBsA#&aR{`WQJA(i#z5Ic$CUsoh#*SDB?Nr9(Li`rw4ogYgD zAGzwKW&7~XR;)cW#BceSt z!7?k_hdUdepg(!#9Ky0|sEs_r zQ-PFcZ4V*LyFQ{HY9I3qehy4+U^d@f{M`L%kC~w!^(0_KerHc2p7UBVYo=nrv&^A# zS-sP*(Q}k%n7c6nU1JqCpgxfZZYtgB($RZLGqGn*8a^qHv7XDF{}SYuT~!wZuB(k@ zYWf-Kx_C68>_xcXVK+>YO|ESi<8ju42fHdj>8N1#k+XD9G7@a@VH63RF5~_A1y= zU{^``#?VMn+x*;`ZIXIyS&F|sw)0a3rWoH6#>Z2!| z`4s%!09R7mcVxN2vHzi%_F9`e3jZ6=(8Y2?njf;MdL^XTUKkApEG=zaFM#p5H$Y-J z41ztlZu;%LGr#ewUoVUR!gK>73D-|W`wj9aGF zeJ?fcyyN=%;S&R^L-)nKx$S`m=k~cWH~#3BM`0 z()VsOHmlhHt10z)*dZ-1TrD1|vd2_PsavyY%fTq9@$t2ElDX#N?M;rvZD!c3of=6; zj@h7Y2nl|`(DI#~I$af(wpaBW;ynB2POkzbW$EAQdMnElckSGQjSwvL=u}4?Ee#-D zmUVx8zA5f~n_<#T`qtL<@euADmVOX4SnI`|CBAd^1{#6> zJ}=ojOMeq$`gRYq?E#`-6@C%?fnyqgG^J<_(|&j%e47w{`{0)i8yrwAY`1s6SH${5G4}-N{ zApfJUS%Z#Mxc3wJ5g_K1h7N;`2SqV7cP!P5k*9=M1m>u#;(v@u=7GD~r2t}Z8pDu& zg|top!Xz^<1JDh~AOQeWvq@>%2|AXerO9hCEcJk$*MHgSl4u#+kJPeLYBQl87^sDk zdVFaann9cQN%0ZgE)Ej4#}c!P9&b$L9YtFLkda%5jK7QbPpPwe4UP=8rn-(S=d%_% zog=+MPxWAR(cgUnqfV%&es0o?Zj?2{!tmzk14^aZBP_Wda_916_YsHEB(T3;{RVRk z?3;u~ZXAJ`mmTbStaUa{CjkNATuW^dOyxuypUq71>U=WsiYawA%p7R>`YIJTw$pD| zqAOlHxSeulxty6s>wA+ONwYlna;v*udnt?Wndx3`+a+hR`_e>$eq6W%>o-V#I3PCgDc@fP ze>al@a+rg3STTE;>er7h_9Yh)BXM&sT>;_A`t9$T+|PxGZ@4}!Z>&ZypM6 zS$=L`**XNXjWVnYr2&ie&|hEkP>}KIiem6ACD6hPL{Mh&Y@$t~!d zU~Q0?&27++&avQE1ft+eHhLL9HqiAEC-Y9LKKvHpaJ zO);gjJyjAVVa(AmC~Km!HKT<$3G*^-S6j7MB*MOd+y*K_>r@qv6N1>a1rbW0$us}xn4s* zE@)u@0~+}7H6&=e$G$rac%qgg3_v=cjTjRB#cAPqcN<|}L|lTcsHV~^@t|_w4rZud z?<70d$Od;N6#1WhgJIG|xKNO5PD67F79Q#*7H~JG?Ppl0F+tf{Igt(TIS)Mr-kgdh z*vcbejdZ6}s~MjbK4G0)mC>+AFL4IQ>r2J*2!5Lch}chF0A*Gw8hp+Q6q~s)?}b^& z0l#_#@ATd}(a4XDp-dvT#w>0-3Hh!YJNuyor-a4Q9K}&G@JQZPt(be32eU#fZ^u4P ze>~8Hi>}G?=IXoh9gXLY{M<&+IIHfI9JZ@dVR^x}Ap%46%{BaCc@|-3`iWb&>bQ0O zjLKw5>m|@!twMtJi`~b=-28Vv<|@h`GeWLety{)=-+kl2ww4COSG4T5_$ht61+uyr zMjM2j^iNzX2|-2tat3Tr*GKp;$$2FA?yvbXz2!Y={$r4f0XYlxH8HX_3jW%8X~i(D zE0+7sKr%WULDilIwuH%2=6J^8S4flkP8jD}%rIUG^(u?z4FaDq>|z_;fO>@FC9L zuIc6Qmvypkj0WU$^8qV^7FRDOOwj*8qLgPNM@E@hdYIQG>{_Yc3nv20`35AWt! z5}+nI1j=%Pmj-MblZ-wLCLv|xI$lVd2^2)7J0sU0cS}9(y%!XM2IWVe&5zjmtI!aB zT*<#4LBg)J-VRzlp>Y26w)$#L2Gk_H&o)7EBU1_|=#>`q7SCr`C)&^dJ<2_`H`48< z#QYgw_RF7_pP!7o2#oZ~geEBc?srMM2krD&uc?jvW5-I`zsO@D-F5_CkQy^zbamT? zSby!)Ab+OB4iqv&8Ip@1oZRc^ELUJ&Onk(j@OXyvDnc}deynAsy9DFK$B3jXoAW$v zVeiKdoee;>p^_RHe9iBT;!?FTDm`m^bhm2V^`&_qsdF!j5nO{B`7I^BT_+yK`{G)A zQu)O}Wh%ha&Zf;S@IY!)*Pzhb?a2Cg)x4w16^RWWLEFFN;$>o-df|NXTpu3yQf}DS zAofxB%yI&YxDGCBis*Pkvj@)^yxZ7l!zNzph+M?*H@&zODE+Gi)2;7DAoqO+(9ER< z*X0qyQabtV_T6Z11Uih5sM%W~P_h;lYl(+UN@5=+>iVZ13!LSLcj;Q0$Gilso-cw@!ST5{$?n)e$Iwm#=hRl3-bS*8*WQx5mKZ+iZ%8o5yl0aFgN( zbX6{WF@N5#x=Xi$Dy(id;RZ_;=G`l*)YtHaQp>R}qz3Hs5?$FGY>!EDSWkfKJC+>Z z236_Sj13yazfNa94QOJcNuf4KcON|5D|Hz~a#r$am|+e>(Svb?@~*Tv$9%@zXyLtv z@r;%ui_7C55mZ}s)BP}h&Mi0Y+6-DG&RvB-XCG}vkgWaIxj}-|@M?HNe}3VGl12;x z8N8_MqlLBz!qVZI#RZMT3rqnF9wc~HWcZbt?YDZt^j)Z?FsHJO3iGNh;F=N%TH&o> z-}qUrwhhbNsn!ljvi~1+~#nfkMw}-+ne}_dJrD_R<&~Z zWG5ikw`WYHFJtH}xCjhO!D_C$)+Nj+{aXxKXd2@E*T`^E*(}U?0e7QF+uO4)N>soq z`XqqM&nY5gLn9L}?cyxrJb#PrOkc+Jsi)k}gWLiM=;wuI>5_cY2qOB^qIKEIaN`m+ zOQh_Z%M;$h4bS!C+&}|NnF6NEge8gYvBaV+l9};(kRS(EftSA?%o8n0ME2>`&twfW zjUQfxi2gYVPW#ya%hryLL5vVF%q+j~A3cpZp~SVhuZ&1j19%BPZR3Xur2aVZnVz?w zcj_tKbjWVew3Y(%zb-7C-@P{8c1OPn%@{U+5UHU;vYn*;C)OJmBM~%iGM(*gb>n_0 z=j|#FIZUR^o#&$(8nJ?1Ced4C8=g~kjGSrOAvM=OC)>M~S1m)ndGXOi{uUD9*KF>9 z)s5~lu!8Rv)d^~HB7ew5<{6S|xU3<6`H{bIyZ!Szxv?}H+Yx)?+`L4QVN2=Gw}sB` zh5#)?DHpWsa8&B~5|M8b*MvsyPTBbVID}v_bkT6*L_npPyCQ*Iw*|Rkv893cR2A0} zJM|)B=k*ca$;)@*8V4{VeV)9b?7gZ2oegK}L$Yg?;7gopdSv;SX7BLc@sh@Q>W8*p zlDsELBldo%8r_{4L+VEten1(Q{TO#I(k;(kvfug`C-bApeeh2o{19w9cm_UC`I9EF z+&uGfcPM>3?7)telYnZogNk~2<)EHV0RQVS_%oZ1F8rQrAFN}c>d6mr>J>fR&qJ8? z^FQ5-Up)0OIz#ihT}=*#)<`wJ-T~S7dfykxPE%e})_#1{`481(2`lopy8L1+z;H+w zZ9awvc3*nVdSsKb-L1+8 zYreZ|=j*|oktN&BI0oTJ)N)~G)<}`mz}Re=RL9&>M9eva;Vf^<`rm@f`byIbcnOtL zc^*B~RAo+%K__G6W#5_JlBn3+1<3wHV#E=*@7_EK4EI5-<%+xBW^ONMBoI}TCB;++ zsA*YAvgNUMu65Z zlbJ$tH84-OP=bB2f^2P!YAEOy!%{!5vUZR2&BFj0IS+rY@Nd3Yc)ENTdlBV!0Dr;j zF}OQ_i;Zw@B%L_5%+m#8fooz6jhp|)(QP$!&4ovz=b2}dy5#KfW?~vo>v?QmSm`d* zaK^S&WT6`b8A5595!`=Y=*ZCi=Ko6HBppJ9{iz|ncx=T^h2R7=B98s%AEdLUw+4(7 zmR(+;6F(UF=;9$3?&%WAn zE(|pRMeoh-J89Eu4^s=UTV+tf;m!0g0P=<`^n(-3FY2i_=DuIiLiNdWpxv!KwJ4UJ zqyMiQAMZ^!QGb<`!l_u3_wl%eqrUR0#*c!63rzby=2m{=v4?AYmaJYqv=wtxMJ!57 z-}>wpFylaa`30dn?N3R@?)fdm|F}Su6RGIcAY>1tRxRRNgTQZzFx@aQiHuV^>%ui+ zIk6nkT4+^{Tq}7l{Bk_5M9*orw99Y84o5GbEz^0FFyV?#UW8!C&LqXCLqUtc_O1J2 z?;V{Mm!nb-q?byXq}!-pVkBw&Ab8iRW-4NyEc*Q)KHV+v1(=~8VhIt`}MCyS}Q&jVP^&Sd-H{1Wr{bW{b zY=r8+BU=?UQ%&A#>1x|N1@V-qEG2O{qa7q*mR8_YkM}NS`y^w5R%H&!>8VJq8spy5bX2zh#$(! zZp9%QlgAV$J{1?Wkl{Z~fCAoJjp z#M9j&RSyGD`X3t;YLKlUz8hbGbDFrH5h-60ZK1O9+X9OCUoLTfG|M43R@>QD0HaOB zfi@>0{{!|Yq*RCHhXr;jV_z3iqPvJ|E5qU~ckPj0;&HKLwIwXSVo&zY8amBvuzVlNmJ+QGEdSguQFk+N*JVIic9q)Owq?(v=8li=EDC;|akf=$ zE=f&3gSXf8ycOR*wtL~p&j40cfcIUaWAP@9r4N0Ml!PV|N+Y0k0Z+qkX>{K6DqfUT z2b^}@?}1{pxW%^*kdIcggPj5|zR~|!M6`QWVY52j6uNgd>;CwT3qqfR-3Wx*S3Ajw zn`f(R;$eHr_y1vqJx*?Szi4ylseZ_{DO>X8Udn6Ct@|}tvxv|d>nl-rpZ%ywuug?Xc2~OkZ?&yErFYbim2tn&V^u3?Z z;RXxe{>pp;WIuI6HC*~T5*lICEWmrY zFfaOpa^8dlXubZ1)~pqnY>a+UQ0yp9k9Cf_2nn;{6XX3_xfDb1Wu3jR!kgBUftv?J z*SDK9?>(1BuHso&SWad&3_I#&%;B!}<#}&lwf6OL3wva-^oY3)LLtA5fysLWlPLLU z5l|iyDYH){O5*7_^K3MBd3$$7+`ZqgiUFuNtJ)9(?m{b`YH$$7)M47Q>f7)u2+PEMw}DopH!et3`b_Y(gFI}Gj#?0k(S8yN_`2Z z7^l5s!B@&o=iE8&Gv;a`-#apo=R78sI(>fG9r?`oBe^iTd0{MlTI&2S&9dzdcifju z>X^#=MC&VKv}5P%6@!f3?Iu$RJ&dqS^s>_R*BE{L(3H$#pN$j1#(p%`bGjlt71-F?&fZ#p8hFBb(*75T zI3lXx_ErVu(6oJjIl0BR^Z*z3O25NEu)H<{tbI|fZ4DMqr-t}s1v%yAlo8)MGws{y zXt24Ra50ylND*%Gm6=th+#8+t@NUQ#i;YkkJ9yTKXN97(Cy$#%miR>=R;K@^YT1Du zduQLIjM6miIIC}o!`!3E#C86wcZ2y_BQ_gY_o9mKCjF9N;WPN=Bj6aHe-mxk9_V_7 zR+Ow4n+@>4z$x)z`#uhgIiXk9f&Xg3Vc*g~?-zs{w7XKR9*dG@YXU{Ni@Ch86)ZC_ zc!g2=lF3ci5SR2I(p>(G*aB7H7cdT-R2mDE5csIHR-Z|dBOx|2Q5%cgPM8i%9}4?B z6~!@F0c2fqDC)8>R{WRu6H)2VF*Qm+61>f@CTN^|#0Vurh>eGb>aE|9!}u>-2Xp^k zK^QKPjfcSEUkSrU%%Q&y81Z%- zD^~G#D2si6*qK41XagiFn8q#@i;ns+@gWc)_gRVu4b+f|(rcN}LRYi8E9!)zM%2j2 z5gT2^2#r{$DP8aj$05*Pn#}`?D(Xs0s|BI3vV@5yR&lhY`Egb}7(O*9z1b{1%1IMc zgsnZiWTb$NEj%)S+RzitU{v0E>Lel>(2*Kw!}0WrWaN*7>;e<($R4td*sFnwE$}czvl8%&d zc3dH;EAFV9+ok=ny4j~B#D6G0H2$N`=nbJ|(t?RPk#xel*IL*8DHcnqw1Rtok}OSA zn6a%79Y__0r|zns5^^5Rn3LMxObGsXZH0$iaos5m-f)kCTGi~7Ydq-vms+UNe$it$ zw_I|r?|q{O2H0@rw z@~i?6YT@{5lX~}9Cp(}CbETte^^}~Zjo7z&o#T()?6_XnUIJ% ze9FMXE3K;y4F2V(FJG;@KS2*ZGcxJQ<5|f64QJ)};I&M?zZPpU%?k&nE%gKdTc0$? z;12~M@3hlvnWygt_hk&A@%O;rpHSKRGe<@_k3>3VuN_IOCu~%RGeS;Ozg}8DPE9moPz3UpwasYPwdwL zv(17RnNzj4+f!Ixt~&wmy3SmEU?djU8GjhJ`oAoIHIvmmN3fpmH8Ssb)OUL9V4I$B zaYU>Zxn%}bX{^_Zz2`uwDs~{tBCO>UG;^G8IUw?{tYf0=K>gxpbrA6R=lw^9?r`Jfw-^@mQgzhY9pr(k-MD-u#sh<~-z zcHRg^FhcR$-|vTmIN^9Old;CLSGFoC(~fSYkGeJl%RI3Ni)^XU2$Ii#wYM|teAXfE zqVPM_$AgmGk@8v7?%&*niR6lagZ2}sDNxe9A9D0tMcHyR!uPqdE-PPwqRa8qzA?99 z5fC0^()%_!?E7Q%0S_yNQ<&dnk4anZ0+aj~ScY)~SY(oL*HiU}bz!67ff0MtC+V)o zOn>-A4z=`e4*%yH9QRN5k@usmhhLX#i&_JjB|^-9j8o0=OlP^Ar#+5Wytu&!Z`m){ zg6wc3Ln$^1UQNS0g+E->S5)>WamkjENx4I$^}@_5TBexjQ&w&3#fq_^K*}g=(NH7*DvL8ETDtJN6A>;c zQ{o@yHZXtF7x6^X{~Ai3YBtW9p7j+~nf53Q+b(F(7*pvAwi|9nD*) zN+vl_vBBPM8Y>_~k&&x--1xSToUF~c2XC}3U2hI0)u4ruZXbi1G>05m^U5g0*hdjL zW!)t(+OI+euS7d^5yCx^fTZgQzG5VEoj8x3I6pPV%FD(EhR{n>#kM6du50Dj5c=@? z2>SvutsOERD#1X=ug8!%ycNh za%v3bHLW^Ks8jq$)RUGktos~SGDtqFArpob_DNS=EX2+R`QftRhIW>u1+ahp%6qInfTJ_b9f zfSvqiB^G})_yGn$uyl*+ja#Tu5c`1B5`AuNTVl`pVy;c`t=tagSBA);#*`Eq^P$kn z{h6N%0^U^iD=ScU<|@y=*fZp`@V8DVZuAOQ0iq(^w^p6%$FKH-u?19-pk`Y`(;N6_ z^XScM5^v9Zawk-@9`Y0-#iSP$ci>w%MIcB8Ui0nNCRSN-pR{_L3ddCwhe z_6a<1rl1vc{x{)~#3gyjt2<8rxa-s*X=4-UEptj?cX6L#k1Tk{!-R8KZail`&46sJ zv*o8FSLUSh-nApwPQA4rS=oXLy>junQK;pPz(==#_=wE+)I2Y#x;MQuG|vSJc9|sZ z%1IXA!o(ohg+p=OgMy@D{i7}4Z z$Q8*;qN{spJBe|3+k#d_U4I5x70U2uI-HCW*8yoW(>H_R%1QqXtF?{MYXBR+QT zAI`BHC?(4CqC&Hk?^Xvym>c$zKk2!Vv4LTpubJ&uzVm+XPw077uXC;vV-WebX7+qw zNWk{rGBwrjn|kn<(s^gzw@e1L{(XOFW^Fs5sL39;zmpe@ms_uW{;^=H=xZ5|;-bCE z(#(!PFUKSeh4mWt*nM(|j-I{!n(7*i%J1W`J`=6SEi&B!UBd;HhqpbuSN=V3`=Y-^ z-iz3g6@>R|VL8NS{?M31j(vlz`JBo>NsD!~mZ-qIQT<*cD+hD$;z-`lYN(UO36<`I zlid_{_~HLY)4BgM{r~^JQb~nZ31y)YDoT>`sk5Z4QqE^eVn)tpTd3reqEN$%YW2dL z=P)*6lZquVbJ&=(VTRdx`|kDrT)uz7^OrrJdpz#<+wFR_^)Nu4}OO&??u_F6w znw#LB6t=x+b=TDQ63i-1>@RG~7;F3k*#M#@Wk+v4_ZHDLO|Ra|&8i24+uV9}U7!9^ zUNCM%dBTd(m#yMv8O`lZDPNna?q3SW@EXQv>qlGpXqO`yKACCRfUf6hzTOe%w|(;d zSv+j5KQ*=3s>)J43GfNq-6XEE>8m4Hxz-9p zPZ{2QO4vD96om#`tU%yQCUhWozQ;?S5|>!CAIoM@7K`O`v^-gPFXq-xEX+B_mCzio zPO^xFJ<}EYD{K#3GHNo3jd}*A-vo5p_(d*_UtBZ4KHhUeVHapm;iBn>87AAHr#fP% zupK`DKGOzVC&S?zveeZc;=Wy#a97Pfvx*O}+5T^IM_i|Fp{w;Y-q(S~v)d+}ou4up z?47tJKyY=!eEYk*+8^^Bc0Auq@u9(|>|j$HcoXR7iz20;CEx%T!}^e{e5A0%fL}6_ z^r6_Dq@Y&HBn+HJ10h>CPEp%jfM+L6i|S%W_9unqDB{pQ!;N5$$*e{N+wAuTU}XDN z+&A3jur^;I~@G*mOz2>PYT|uykdleR_IMTV6c!bX-Wkr+k52n^?M(osJ z4$nO;fCMPw7^A?dr&&hjN*F+DYwoMY2jsf|ah-s*eHppxsVS>EBpBY{-)4A2RYTl< z@|js3TuYo^Jg6lyG0~&QyBHbyZ7-669T)W03u&$snQ+tlQ6yCKO9`6!@D~U!ZmsVA zno+g9VBtQ8V<|*}3sNWjQgu3v(o3<{13$rB=8S;>Szrg36ZJ{hv$qcQl?64H6bo$+*!}ot|YAbND zjkl^>8r<&cSDu?hw(fW1jdH6mHv9cC;A!Kho;fLpQUz2F_1S6DqShcMmzsn?M3m%J zd2zR-6F?)GO%-S5bo1xxyYmPQi+6yeMFr*G0@UYK4#GR;IL5o`}vr{eiv*QP#(c8F(>EHgqwVjM;vWd8dIqr-z#sKcY|>TwE4rfk?+f&Kbsu% zhgYW1+CGa>9hOPHn<1uZgC|&rxg+n<)y>TAi*3hz<4!)75Cp`!YHOu^b1fxc^|=$9 zVYh!wv$vNaHkr3W-cS?xqf?ztEUTht(Z)f-tA5&14?S`W$I2Ri?*F6M{XO!OMY0Lv z7}Rus&LwMgFtq#Tqs)m*0i2_^R(3My#XmY}eMdGoY?eK+Li=$IFU zc&nGvc0S7b5cg?i`|hLjSoF~Mu%mwjRIuy1?Yo-k>R8%w;H+hRYq-#vhY1KJUPr*(`KEcqwCU8n!4o0$}TEQ;t$Nw^;_H|8i&4U zdX5I_7rEh1>BN_)TQd;8!#3M4xr{%C?Hw$>AM4dlXxw>Cy4!uk$21-}K6Oah>%QiC z9ix6C1Eiw;I#hpxM6bWZ-5yewKlAaYUI)RB`_Veo6WL(Wz~3q$lMzudarLtx4C>V5!kDGZhOT1`G0sZ=< z34dcXpI(rz*$pGlWH}I5KDY$sumAhI$OguCfwLLk0%_fGJoSn!8Oy$hzi^hnpD64f z(#4k}8=o(`sfOy=^gUE}kIA^7FR~6NbbrMt9A7c4 zpZ?i*w3jX*bJ{gF2CP>pDIVc|5y(>}VIYEWTthV`#)moNkU6t$j(+4d7{`5ABZKF2=);{U4Q&e?oJRiyf9cWm@~@f)ukxk z=|Ie${e$kYynkXmd^RFkyXIIm?oIK(r>HKliRas9Rj zIvP>EOR)i=nHbmfN;GKkv2B?i7V{}!y0*re+-UPmsA5?e>ML3mL(y=7I};sp@9B%4 zkRmIyU^g2sB;Zs)aRilkx@=cyN7DOZ3#L!=-3#kd8a_T+ph5iIFtAPV$jXhc+7Hwy z|3#ppGD$-M?UqKmVj*?`zA*7-F+U&MJ5cSUyFvX5w(L>{afrm2C;Wt??NeWNS)snpXBn_}4J8+O7xB>+!74 z?PvaNi~qSX48frJYE)9#jIJ*A`3Jt`&-Mpn zBOmXDyjmYV2mBV0^5zEp?JlomIlNX-$EgS{^MtT1u~~bcY|w zNVW#hasf{`0GcQ2?9G#%iGr(-zim8+wF%m?`u7$?^*ZR=jhbxFm4J3wZqUx#6wT(6 zyX|+|0hM!4ORgo&{%?dA{Rg*Utv=+M6WDiW^T+q~mo!4tOk$cbzrrTE-X5}OSJh1X zBLFo3PN&AAlg~YBZiw(lDI7jVJR!D^stJ%YBgk$3wlL$r7Z;zCt8VY?aPXA#k_EzL zPqg7ao0HiKy5^s0*5#fD18T$LB4T!#@e2zeVW)wqSi~#BsJcfrze@)~}5aLi@@F1q!y~cWJpEav6^6kT++pf6fr@Ie65e&iNQK z3Z7b>(^_(eQ1yfzx?;Jx%rJLVFI+sUQqpPXs_e?VEq)plkX5jsbozJ>u zJ|pX%mkouiMcr<6`OZ53zk-w8Njy9Y%#el?A7ipw*D3oA-1j+{4%U9=oBe}*WDHyD zSP|d1tg=7s%W=tSwU|8~Yq7(L`-Hf<{Xq2qz1RPYTl?VYhz#5;)eqEW21s#*a0ai8 zi&l{bm4AoSLiQB=BR`{!j6_B(=nShkEGZ5tsF@C)uZ@o59~|sA4`{z5Oxdj9xk3w% zB+t$7uFH)G&`F_BuA43{KE9epLl;TZAiD}HWYL2df%O}z(n9N}Ql!~~Fx=h6Fqp0J zdDOgZXrOA3AM=OqH)*KeP)%JIFxdyTNh)93wsHF3`r6j4___VRK!wX0%c&KV?kP zvu8k=)7nkJ%v_BRg3;{vyO4u1rW>Oy?mr zI^o2|-aJt&p2P9R-+NZ+4t1qP)DPAVK=`$;%>n(DK`n8gwNT9FoQYC%6I zx#*gXLkBS=dzf0vO2?I9X03)-WJkKFGe1m*4)V%H-mD~20&x#B z{4`N)ZPSl39q20Kl72WJ*pPxzcJ1tBuhl;4!JbjFjUB2cS4yObr7|DUu#X@F49p{^(q3%%SBX=d zU`KxUXP`V?G?!WVy9Z+pW(p0vj0BLh77ZSzUz~^!QsoF&9p>V4O&Fz)UdvQE$D_T{ z^uu(z9cg8{ScHU)UjxQKLuxsToPT>(XRqb4Su3HSRkyLEPa@UAKB;la7t-v{YF6bgYXw^LWHU#O{lvpBq zi(J2DKphRU9piw-J@|NKsgj3zxQGufdUWrd!TfI?ldF!O+`!95{?O&688p?;efXKB ze3JKc=hEtnRX^CD)x3O(kR%ZzGuy__9sd!^ifs>myL~*ysVBaPxL@nzHcHF2?bm9K zIfjOJrWs3g(p6%^9&SC$-x#~n6d&4od<|1;a)=TOV9!i^CsRKBG|Q>V0!R7= zWH=LY(fKP6JTEtwZHi2h`w?qlWi_gMmGo`nZJ<{d9OQ#$5dVTwC|(w}+D}$w$+VB#}k026XC7=NWQuA%Nc} zU%vNxR5bQMG!?(3Jv!1RVf!?HXcRhGmh1)qOV2^{!5 zHAWIO*>W&)+s{GilgS4>Y}EVykZC54Kbz36!UohK=~(v?8TKD_=gi-&IpoPd+$W9(dHtCF8aksH*E+HdskSSt(2a-3z1b&>yqmoJOG{x;&eV# zhQb!RV2cBA0a&s$W2rpFO&?HgwBMN16FV)YITE&{Qn-!m_H=YvDO-9_<({`SeRjF@ ziN%O}k(Xr&HZW>6Kkha<#Ra?>AP)Wm-b3h7q;+xDlnbvcHJ z=uMAdF-1029Yg~$6(Th9c)d7V=J%UkF6y`G^MU{w!|yL^iS8WwNAUdCkgmr!IN{WK zH7M?x2Hr~p-a}H&2#!s84(BqD$MQeTl~?tms<(+v#@zHvW*I*7J7Lf5O=CVdM1_iW z7rs2|zUXOvNfv^N-ME-j8oqNdO_2blZ#q-vBj*c_N!C*6WvjoaN#SBDuZN;fM?>AX z!;+kBJ%>NEeV(@xffVY9sA2YSEFMLrY0H#2?FBFgY1NQ|QL7xKsHehr9Z6TXt%)hd zS(~xn_l_|TDhQ0a=VQr=UqpYdZ%?i`Lv~%+B@S`TZ2maZCebi^`8{}&mesVPsySXrI-Ro(f;<1>`;lFBfnV$Qj6oBs*p{enUQ<#^hMknoli@>!;lLRk*EDLtPi&0 z-nX2ywWTogI43qLg+D4=T6<6>*Ww+)^809?ef&M6cY!bKJzKdXwAQG=H>Oe;k%KzC z?4UESd6AyG2IY96HzE$p=iYV)dXM!_W{GG~i}`i%z_JX2E_I=S8>KCA($Oupt)>2|xIRePaY_G@uKi3Lm9?;t~7jPZ6J4Z(D=z$ ze$=_#>%&|4+p7bsx~tHjiF}wT)ooMW%X3B^M|Q3Lyx)Hj`0Wp&UXQ#0I5vRttv^(Q z`t87H8+cE-hRm+JLw8-}gzqYH^SX~O)0;Znh#}TjtIL2lhKJ9Le$a!4m1N6@(u0dk zio6&7BGjPmMTofq;;)!^Fe9Et^I^ZnikW0yJ{XD91qkq141#! z{?xN=`TCB3K#?7OllxPOMjGG7N`2Sf-91{<(rj(4>+WL5d-)t3+4P(?0T|Eu zs8VzlwsZT`B~;;5$Y|h4-x1D?e5_C>h^CyNLi@8>w_Q3GxeW}ZTQ(2&Rw!DBr0jge zPBo+}lUI~B3itb~modf9>XWVc*^anZStWalmvSj_wEgR^#Fva{0}0BqSj^MImk)zs zAAl^31cuWRc+eVcyk2!AJsn(-TiIy_YB@1eZhfk^ip4hzr`t$XK6N&POU;elCe><* zV-c7+lI9%5e=)6fy~r!WcCg{pMw(t7N+|?6GdeW2vtQ+6Uy^}>^|AN4l7W`>H`GGI zJ(j*5aZa{Ragc3MI6vrv$pZn=si(l#^_R_*9wND&x?!>$HN2t4jZBh>_s)`T`rq8C zDp}u$SVRLcD|Vi*;pjFjoeMTa6b#9dDt4jU10z(6s+}3&Q`H^(zi3MCKo_88@%TZL zvh3*iYib52HhUXF7po03Fc}gyC9bcquNEU0u|ZVxun<{@PBKlxKU1 zj5Q@O)Rd5@7M^lbpMsY1j!9Acrr!1~hR;xljYC^UD|$54z>Z+*g6~7P-Nk@GU8Jtb zar@uL1v%KFXQb^dIZ`U>-9$Ot`tF6nL9X_0Dz7(|>Np*{Qh&56Vmy|X8!dqtxvtw~ zqsV|*GA2L3TW3fvb6$n&XAW%hc!IW}R*$S@M2Q_x}KYCF5eI ze!|OP)teI>d&@dT#Oq2KZ~+HBauBiWv9iA$zs`_J^<{OIH_#Dm~YcJOGVrqZ2T_RL3%6opV z#FqwNVE7L=p{GY)$d@wNUL!V3lHyj+`M+;QdqZ5R*>7wcb-VI^NQ%pgDNLgSYgr?` z1&KzIT8nl#C6zPgeRI@ZKnH*`l$Zmk{U~HBPt25vU1*{)8WaL$21&Df0JMr^gEaE4 zlksS4)Ypi8KOq4F2Hb7<@w?#46F$dDM^F^C&Uk<%t)t{dOS7Rg1Y)+73~xjU0Fd85 zrI{jB)jVqM`Mh_>yHol-b?u)4m(qc57}He@AkTC!e`u2MJ9L0!-L(kW0&+n z59n95Q_+JpJKw8Mj)~{SZ^o`cllKqTf6cDO#F4F76sMA5H=muQBDrf@Ue`Wu+@x1U zNj4uIwcNa0Gd3j!36VDdVGybn#oQ_$Eqc>Kiz(u(uViK(QNQik+@8M&@+XY*do0~T4;@ePu(ZeCu&Po#8`3bjC2ve0-Lf@twta8F z)x?2R>)d-Z>ra8pdX^u6piu1(G9Qay7y=2admq74US(E9C< z+esCSP(4*Nw7w%~5+{8Z0WN;+OL_XZc0zkTdpFQ~Dl$67F&_3mJ=G%*AI#2}dR*-&0JyoD zJgissUJgCTygub&WNEfU-~G|_u~kHZ?7Igv^NMzE>=kem+$^oBmif zUvXi(c})XU;J~q@*r*W0B8eeBSx)lTbzKIYH<%UwD>f9us9Jw1bA-yGUL9%Nb zsvJL{L+1Nzg;G__pt03gE{6ddtHdfR0~(@#cMPmO*c0FoWBykwW}j2Erb;ep!2@of z)2H+lDEk-l<)T5u>4P`A{~EJyhuE0rDxbzy#(8N1#U>cq(*~2qeYRL4vn^OQlYW>| z)JVV#9T`daIqWe@oSy0;RV7Vr9~nAUloGk22(V4-n%~{@-cNL(nQT|oeAR^;j9dR< zu)0RS#2w^VcUHN6R7?yN2Ogr%kh*h!VZCpW{i>`z2MZc{_>ya@gP#Qx_ke!)WVDk7 z%fZLFaAF5tvj!L>dU6Hmf7cU5${KK2tyJ#C&V-Zw^~$xuhL2tSW>LVnE7>Z@qw|>% zA{LsR|KK0futJm~LdnT}WI;Y*zS=A_f?{*tHloK~van5b=2YuG$%;Bw(ISA9Wvimg zgS&1cq5XBww!1(lj<&u>5#2RFR^ijx`L?sPId6;cE!0Wfw`wWgq1U5{F(_QWW{qL0 zp=xC>E^1?E!0#G9jGkScPb~@nO+H*!hs1}Ap~f@uAVby^ZD4e^J}A<&9%adGXweNY zdsB4xoT`k9QQq$8W5{JBuablW6KHcf#Z_l-^0hu4+KnR_1F@sWq6~}^T?2*>oL}%fijC+&Q3ewgakQR#b zkFN}<+*Bhm$+N074TALUJR+I_0rMMd=f-0ub!Sh18oF}I=+^{oI(`Y62==sXt&2A| zw8V{eDBxEAc4VoeiE)9JoWPi;(R%n=8e&L%;Ad4+!-ZL+BFI}tpe~o={ny9KiweAb7__TDhu29bLl{9 zdxd#eWw_*vE0g*xT(G#kqB;bBo_wPG=$@oO$DC^yeh&pz1uoCLT%?vf5Uq%>U!homlfXqo zVZ)V$BX>_jEeeON9#u&_w?jh)!#j#@z&IRZo8OF z(!=lD-|L(As<8bjbLzNn&e^CfdhT;WI{e?ExsWYS4?SXM{PGOYLu_TfGuMuie#936 zK3i1qCO5Uo{A0IIY>ffu`h-MIVK*1oUp=%T`d=~~1>5&EK^q)!VuzVoZTG8s!i{~e zindBrM!ToIH>Kuh$N*Z9h_CX(m@7;3oN=VSl_Ic<|iXkDd&a- zNR4HR*u3lHrt&aQ`;+A;WLT|)ulGkE9k=k~-CX;Df6zS@($RerK`y4U;DTi0NaojU z`F*k{co(kB>KrsscFyaHG8CJC*>keEm)8G#%Qe>|yLA5PlpgcIn|~}VU%q@{>eya{ zaZp+GX9+r2-=sca9e8jG@9636B|R*jQ}e+O$hD9)n4y_u)iz@Ihl{4r*sJIK0!6lO zUpfUSx7~4lp8;7I9o4-LS}ieQw}V&5&VfX>eCf*u#e6ee-hO{l3DacbTv#O)cO!EE zmJfs{Uo0ioe?s|xI%!rF$z8Dj8Mjxn*_(c(*}*ff>R4L!({P)F6z674pH+ zLR$h|{*=J8ItI0mZ-jpe+37?*cb+?ZJM6S>m=8UlB_1@*?JUbiiA@?U9((o zEuQIoUVC#HHxwGMdCe4u`qG~So8(D@77TF0v@spNq9|^6ks^6)VS4(Q4eKU-odv#) z8#P)s`e4h4d_XM55tnp>VEO3g%P0i_Q-8h7?zis&EKuEi%VLf|kb3V~qa)neO zDh>;gV(hC;$6h?U@xE{f-_rYRK42-4MvjlM7S);H-Y5n@dfc!I#r*t(`QWNx=rx-< zn=A+04s!bJFsEPbf6$@Y4Eh>wExPY19$_`Ut7WOI`hUcs;=ljC_dfDLMvq{`_HZ|i z*?ZAl7dkBSFyvx|jCkU}NP9kXETK8a=6S=QU2eT0FJ(9?OQSk??e|F8{;!74lJPTM z&$cb9p;Ei|Z_~VExzXCtSRdZOh$Qx9)MaGOIYp6T^S zVMm!!-agCmb`3}4R5KW_E`s!;y2h3Ez&pf~TIjkyyu&~|?$py%5IF#zBrMgQag%yW zTbnVUJQBdehF;5aw3R#A!(C5^wP=8}D&c_| zGy!fk2*Ty;EpB;jI_v7fud35`99Q2By+m&6tpv@XFj?)nP(%8uD(C(mWls1pr?+v`{}^teKuoVR|R^-DXBdS(Tx0rn5td% zuo*-ZbUQtv3UlP)|CPncvJAOmO{jfoMF`_`v`G(xQ%u``MJWC?b`dzWN$;=;kpdJw!R39%AuIQ_6CvOJ%@GV+RNBrakN zHf^sy>j5%goLjKv%1XuuG|9MGHl8GXl)6^ z3R_bjB$VJq;#Tf&_L%LD>LqU|dtp@bD0aoI*r?n^Yp!2Lp72t%*kvmSk}Tc@pIJmn zPJATW(n_9b>#E~8XZior5C4ZH|6jfcMDk92m-V*+Ph+8DTNxWWIX4398h5O824}^V zQlN-~fOx3c{{6g5@3EJ80g-d{UovIAAdE)wP@6 z%6@7N-@fq7qvTfRa<>jT-}J)~r@vI#pK&vMkz4oTB_-b=t7f^S%}UByu$J z4A)<#fuYrJ^y)Fp;z@pvaxtdrfXkhnIh8NR+uZeRCcb_=L>XKjecZ3aXw$UNYw8mX zXg~dq{#3R%tNZzG>v{}<807fIYyEg|^oFfccSV_rqrS27=76)Vnno zo2fzFr&rIOLj1{BQ02zt)RMU--j9~ym5*pB+bxB}J7)K3L~Xc2T&|I5Y5oAGAr2?^ zR(_~*3O?NUK0NpI)Ro?hh%p&@R5tog-^t{Ym`;byjU{6$DuZ%ofg!k}K)w$mYuR%8 zX#D+CkK6>Mq|kPqCpS(hY&2{-u13B!apSDRg_4Y=MPb~fXFVC)tx{xk2g`*+@2BdX zoG0hX3nGftmkLmxEL}Bg(LF~@kf%K*?grR=(8hdXnDG-x@%*4nQe9%Q$&RVCV5?azk?Cmxr7|5KK_Ichk!T(b=P z6{C?rrw4mTukalQqZ~%Z)3o`0?H_Z#`~M;;M!LwBBD~YTn!ZTKFZwFxnLX$vRmtwx zSYlyJ(}dC?w+~pN4jXH%=lLm)d3jy)UfO)39R44PZ|N(0X1Bze=cq%^;CC|U`_|jT z_#s*Tm@IpMfrg0-+1l?A^^77Q*v0}(`pZ>VYNsvkIThAY6=^C(WHrt-*RLWr(!$@K zs?IHvCDM6!L+eeN<6jYi&4NxQ7P*3_4;NFKusX2F_sxc#zt&SgNSmCBS7XFn;hZv( z?SYJ0C}C%e@SA$?`W>4AM+T<&;p(g^LD2bSl zkweRMv4YDY)8$K8Q5H^!GF);2HdShR3Ov;6CVYCDTpv9(MP(wp;nNU*p8&6J#pOaw z#PG^piC!X9&Zecv#3jnDV}MWV^(2LZ;v2ZFEtmRxM4?MPFUulVD*M0=x_tFg0F0t_%qPxV)V$9(B|}o*CUQrBvA>YH+4x z2QrKDaXRRSD=9AWX*L$qgG}2NV^Hv-TM#yuS$WISBQviw0B&i=x(6ofV;14t*pL3I zU#Jvm)M1#xRBF{I>3|SJ+ZYM6`O+$=2y@;n+WNGhr1sk@<}%wYyzC$Hk=Rdwqs-{$l5?J7YpL1TzepOvs)ZoCCzTl(0!iCdzhzw17I znen{m(PpWxU%ClH)IoC9Z22!@PP(E#5vW)O$Bo@8hibVw|r3Db%oK{JAS?9(ycmX zMF8?&zmT{qsq_E1zpFj!;CtsbDff@OXZ0ldw4Q!Dg5A!@dmCWJu8~FSstX8QE>&CjP6l@*xNOHe-wF^8P^4(M70SO zoLK6@&2Iq!;?gsK&MU0%tH@7!8EI4fjet$>WM^vS&9(q4?nNB;p40VHzhUkMoBrqr zN&>0%w;Olg4=~$}DQK=qyV5P3ak8r3&i%nO&h~$GwAN*xlnQBwq+Qe26+P@~Xn##a z#R@azBSAvP;Pp05GyUyV8}gZRR*)*<%!Nvm4E72t-tReGz4(M<2V*W+omETw3hEtv ze-(A;h5;)ISwPg|A4B`PC}{N&2%!wB@5^Nqw1hIOvG{L~%4_8>4}JPR)9oeJ=JxkP zTxO_G?r=t|*!YI5Dpj!RkjsVsPd3VBD{noI>XoD{^5$j;l40GH!2`_sTa6QE=lDLU z^3Gk>eiYY?Pb*iCOlKOnPu}%BHm_toQ;jBU7!}u?dUWOIe5r}fKA9!%Xw40%qJ0<&8iBHSDH-^%=_2VHH6SIqVaPkMp2 z9roPhu@6FlS9>(NYNq(a#qThw3LDRK>o#yMwy`cyF@p26=U^-oj?RF}cp2%SYLR5^42Z$f{_#Z?QM8eH+z!m-qC{=2L^+&fdNxa$aA zgS=UOOpoVOef4sy*|Sp}kR^>JO5W_uncg4wC0Bk9z%unq{3heM_ZRyODi_C<`T41g zuFAQQf=LY#H}SG$qakk~H%lqA)(p!b2=Obb;%~^+jZ&ttm)XL*EpRgY(3p-ix6Q{8 z%07X4ao#@Gjr1igSP=(Jq#AZ3ma1Om_eKz3SelH*pB>b)c3s4qZucSnY02Z@qBYR&VWtB6QCAG>QD&6kvC1`E`=(nl|5IJIcG5UsVt;rR*l$MD|pI z0h1Lzln6~fKE?y*JpmZ=$n;iE{D?1uySQQ#M7LY`^I@D{Bx|fB)7v73=xm_Q`LtBr z7r_)8@qR>p%NVviHVQl>6u>1+Fl+fg{{@aOW&CQ==rbEi>5KGHy~T$h2AoOhQP#03 z6;!NF{?IJ6S>K7R3|0LM!#v=u!QZprbrKQ^N=KdW2=NPPRmY%N`M2tW{KG+iDr5F;KG1)Fd#Hvm zR41eQA~vhOX(JFX)g1`UVh~M4_w$rCll!1;ftj%f67L-=G@WTMVJH<2Fg;Pmpj#J{ zBD!As9)3w2zC_*b&$!M4-hLpnXk0h_)MU;!OZ?i%duLr%{rTfCHHSwiW_m`@&F0PF zpsi=K^eBhj22nEGW|Pu|iab;IE=v=^ON!D^V4# zXYJ00MO=BLS7erJP^M{;^7Eoeox*eV;hRHopg+Mf#~8kqQw?do#GybR5algwi?hAY zc|XR()}qnlNfdTy1M1ERGjnrXntXSqSJ`__6ehWsQRLXy+|N4>Lf(gGU4n5RNcaytL(7e>hUeJec@8(u|cj+QfjPxVQ`gCoZY6FJbV#a;o zCeX_(4IXQ5!dIhFiatXCfjvk0sIS!VfvWddyzo1YpmY_kGdQOL)Lv7lYW z<(X7XDd)dg+qh+h{4O@2_NkiHvJt>RlCV%kGs*@ldzM#URPJdS%FqoxpIIe-V3@ba zdVR25+hXpWzw7!&gTEs5P2zb)8#Fa^@whn6gdipyGN~jHLF|ZvBQRGb-dt_Vr!N20 zdIH<7EPqjT(Cl}zis3i(^vBKcy1Qn+st#Sm?<*AJ5YMrvV1Fx%(256?tY*}G>BSA5 zS@C|LajF5B0Pm2p{ZAHW&MK2E_js}@Q`8gt(gv^!aTz`t`1AvVKW95mTl~1+{n+~X zn(yU+4&5`>tXSTd72Q#|ax^jWt>#j_Y7onVYoNh4I+Bwm*shL~!S5Rbn2sozj&Gv2 zg-2*X#tODV=>QrTvywzzx6hA(hT=D{@KM9key8+}oX{F`<-8?r$KqPq{q+J{lPwMDVU(&07PEO?{3{w&0l6Q`O5?`c2z2GKeIYfQfpIa`UXT6!f@4$+ zYEcSqPuZ>R(Hyl3MNG$MA~9o`b0tT?x8*;DraET97bHmLjvUs;zQ`|z$u&!!)o)_^U-5+*aIc?%-+<%2c*vl=pvqu`$S z8W?*IZnayF={1sOkDKKDsbBZxvHDTPs~&vTCWVU8JTQm;6tafo^FND1@HTK>3{h?> zmM_XBGvMrC(ZspSXYi21W%j!u*?$)y<8KT2uRH7~yYYGnj_PJ3g*A!mqF4HPra_i1 zL$1;B{Ht9WeS+(zv`g8Q#2TiX7sW6Z88HB7OWWdusMg`-laxQh)5kf44@ycyRQfaV z>@3Dy(3%D#cRs5nS~0`TF`v!blKiZAU<5BH^nNCkoGS*@)mLt1DKxG)C9!@OmI- z4+@=Pm;8z+Ivl#-CcUIV!4y^q#TM{&S`wa#NOajI7goJ1-g8~b56Pz~pkkN)Q(kzB z=50kNFw3%4W!Aed10A%6jG$4NZW7ap0WAw4pd}rQegK`JQBOf7l@dvB(m+}nUX#}! zd6xa1-V@a-qh%1~BSV0y?ouu?fnX#|sbCXa8!4D>v`cp2Mp*h~qA<&Ab;4`^-(0BuP${OA5} zdy6jd_pjo>(Om1|FZqkaQm2N#wc$NIq$h=P+Q6?lZ)_esR$P4Pb7-whewX!U0k<*I z&gj<}UG<-+rG8V(V!YJ()7zgknN8neZK}EZtJhiuwGzpmszB{w7}&R1Ab!HqGf)QV!o9n)J7ay?W3I_0v;lY)ZQFjav6K1!75tmge!yTs zF03P*^?VCqLHF%*r}D^I59?Hf0{Q*yy4Q?9APPLWukqi<&!i`@3r~(*znl$o*Sa3o zGBxyWqP628o1hBA$6J2yXRMwmi2d^i{Bcb>Dxcy1CF<(M)XE{2^#)gp(Cz72{UuFJ zb3~#=h>xBJz~XY&oNuMSI_&QCHd7NMEU3IYb}~1vptq{%Q-sI>aQk#=Lj_1A@!v5* zHH!?u4~LCj$D!m;99o?Xy^Q@N>XZ;X)?Te0Kvu$y9Rq5Mh{JT%(9Xz>ENRu`Q;2%W zPA~*}12wK*@-UMoksh4Nq;g12?EE6XQJiP>#BJtrSJl8f_YUIK`qTsdstHrSZ>_%x z)Sr-Lb|yz1GOykycx(Nnq2;>f_a+{vM`4aw8u#bmu>N-AXDBD0ydeM(^SvshbSG8`7Ewmx!pLH;2|KhcSb08UELgLz;2vE%0kIH?KPj2;Hg#kE~+0PXf z*2}#>h1lw_HC>m)OcEg9gvx(HaN0Ox68yr5;vpbhHPqqN9ygq|DFQEZ7qVp69|M&x zwh?eHhro)|X6{nlh<6a@sWuvmtPp+A7JlzRt=DR54<0Oe7`D+)95UCBY&BogRUV+N z6>~-v@KYh~h>qv;*UnybHrs)*$Sb5Mh*BeVPI4dH`IoV^S?_w=nh3v_4K!70oeEw7 zBY|6;Iz^CzDBcLv1|bHGUQqPg;dT=9ZM7A%|1j0nr;deU_@9G;*>Uluq95-1X|{}p zl{gW5xgs-lri`@25T`}Xz8lQ`X55&t9IPsZn-4}#D*P_EJng$0@>}?x2c=?kn zr;mHs;$M?KY5j?_L=!JHxYWS;{YYHB2ll+I&F~0|P`{LAEDGaQa+UG)ji~t4r62IL zwI!wLWv(mOiO#Y1tcr=EPcG1`Lt#J|jUe*_ywSMb2dRfFGz7`nYv{0?fb5pi|pEpN*gSLL7Qv6?m&s0M8zWZYCS-sEyqv_n^nePAp-$^Q= z$f2A%I3y&gk;8OU601ug=To7XC8sglq9i0mp&X`Ea$$3x!L4xQ=MFfW@z*?iG7u+N6I7KJU9F~Q3{CG^gLdw8-dH! z&ov_MeNaiS^?9~&j%&F8nT|5KOUa%DHvm>RS5L>tDD7yz z;Ltc^5$$#%@T>jQJ;KEGOq9d}%>HI9U^;(*d?D~|$=W-`%ihZy_ZBXjasi{y_p-yv zCn+&`!=&&lIg;3ydAz!&1*lc!puvDz#m>bcor(-xjXGmM7W>Q*eojahQ%TvEa@sfR zpskGk*O#_a=Gl%;{hCKbUJfT8MfrkJ}6Bo%t%k z%e$o)f|se$vqf4x3w`pAm<9Jc@9qOOe;*QVey&k)s8j15pkNNd1Wu_NC^-_o=e!nT`Ic@d(8#Th5uE zv0{mKbu~t6^=%5<(ZO*9{?3Dz=;m-XPBDfNkPbO>U&OoAS7pB($3bwGvN6Dc)(bC>5{!0ZxD6+WBGhX5Mx@ET zE=v&#R{_meQGwN$xd^MaV{LDgqs_=#r?!fQVw0MVtp3Vc2@I$JlvT^9nH3Pk%)rqS zAw+T-Qm|mVzOJ%y`0RTjS4qrFv0$o=5fHEhZL1)Mb%SdM*BRR@45UDbNSHR_zsg*p zN~$~w06DBZR0{vXm|d24;(SVZH~Ol&h%Q`}vFYJa0gNUvCSB^h;2XH#&dbwCii<07N-$WG$&jXHV=x*Ham&jRfRAt=_K*0wK%$Ldnur9`vAl`ufYLLj1eK@WcN17D*kS0bwp6E=~C}*d-@yB z$z?l`(tOz~4DPDP!yFkw+^3c7U?HEs!rc5*m`b6;?H|J$HuSJz`d#@)m8z&9^yp=R z!KiF8KhTOlo0^@{PUIAdYpF44-2=@?5LdN>Z4=7+K(bmFAtHuLI^dfn0{15ty#Zhb z;d-1c&lx#MPqt^%Itz?8=zrFi2`Drm{H^c~XodN-y~Z~%qnvzz3`06kcpPhH(@2brt%4MKH|b8h+Qx1Ym11O6Xx{SMGF5BMCwFx-@L6%O844a zM4LzO{oHx;+v8|B%VGPsdyP$|aJlggFQByAERRKyn=oMsD`;@emW&&|qC4K1&CNCw z1aQdd102+|x;Cz%{1&Y-u9EWca1KN;n~(K&rD=2FTUh^|N zYH}Vi39@Xhp*{TjcUBvJ+&+jLY8#dM&~?miB+EoxHC4l&3s+D#p1NBHUAkChgU6J= zH#6P|{)m!24ya90agchtHGsgHe^6g)`1VeH<;>`=TFEdo6VgxVoPg&Q^!Gbtj!%ni z-}x z{nNg4o0yB-15*J-)~ccIo<6*((cgt&nWO|s*pGdlU5ML6W#4lZ9rCpU%C=rQ2`qE6 zT$=+{{?>ta%=)Tg2||AfxYZ6!-ti<=I;A+NpRzL{UjyvWckp!@r6eY4`g?>%eLA)- z{$GJ+sQL?%ee{#%5vu=-bG-t%?GxF;*_!BW+GTkZ;3ti-FnZm~Y;q4IZ2G=leZI7o zWv=@gY`zSM_yu8hAFFykMbjl!JX99RFdJ5MfO$qrch$>)@ryP&80qLsvv`x6>D`4T zS0_{SLIPw>W>K2174J)MuUJO2>eC0Mr%>zmQEybOyf!DoYh&{J+ke=r5??T$9+Bo2 z)w9NStj8vPeNa$jCLIVRb zmFIi{;5PH!>lvb+tR|$+bN|_BR^YoHT>4yNeu7YYIgR?^uN4BMCSiEQY+;pVk#;kw zv^2RY2NPo4%g7KeByTU!NoCe+>xPMsd{&%hHtH(tALDwtn^5WQfUG#_Ri`Tnli}_M zXP-Nwk@{{~4ydT01XNp%+jAs)096ApMGFFaZLDgG;>Mv%UcD^>rWgi{%^opr zQJQH~K`cV38X*h$}_8`|`s%$wlLZ+b;;y>8usbDOc%KU4KTBXBV+4tn6G43yfgC*LGi zThZ_d^SabT{c7OcPmdMJ8%oYPY3y0s3(WV^Pc}~1T07o$nHpO=+BmP@cm%lfgU203JYpZ6T9#nB!DwRk2(LD6eK_PGh@olZdkT38J z#j28ywuey)pfy9UotclAE!^VD4wiz>JhAsxTb@#0*-ZdWvBIFQMx;dMd`z#7>*~5f znwCXwx*Cj9y62C-&d{g@-_!?NGkA5I^`2igIXy<~iRp3f{kx#_$Ys}BN=_~+2?7M} z*dD-!bVvUUsNG%NEfA6D9^ps?U$)O4XD7O9g+B)2z1wZjf_J#8pB?gV?}YVQXi0+G zGVrnYOp+nk8)Q4bLCJ_0=28OSY$LB9ZJ}Y;!tEJ78F$AFbAAj`?^XmvQOW+!zRuim zOb{X?DCtJ{R;~cqBjTovlmVfLl8fcy!Mbmo&f_N$#bCNxxGtT{a&;|#+t#)mjCn+= zG0qinwnJqQ4vKib%hBRHEB!Gbtrb1s0O2oVjsHRIVX@w+Obbqowj{VF&SF#I<4TW0g|)ag+IBfmSFUsKir=SNNX6 z3&@8p9k^x>!Y()?;CAB=;mDUed!q(2sqN11o5pDCZyF5GS}b#OdZV;$ zl)NWXnbz%*b;|%v7|pTJyKP}>jJhg~;2H&RH%nMP=7U9Yx9L8;})GsEN9p8bhaDOAGZ_XG$oouMU zVWT>6QJq5e9_|_9u@^px(P4J;K6TwCyP|ziGa<$MHM9(E3E2-V;#23+@1(5$Q+-(1 z`t?y7^%IuzdO}6KucRJSeZd-Xw zYawJmK)ePyDFWv{$D7CRmTzwOr#3qO^g9^+U7e^YrU3>RllN5CI2E>-nq zUj9(zqdXwkqSFH8a&un(UG|Qz?2<>RcDsV`kHSOzB#!3?4lvV={Q&gUT@&f}F%P-n ztjsT!#ge}T6TUMMVrsI5=$>zkjl#{$TV<9VNtF-J(_}$YKXye@ zXqu)jOY258fxFhmwdWg)9JV2PCe1zDFh z@j1_RFdN_iJKNEaX?NZ)OHX(DXuwy~Nv}pNvfo*u0vM1xa?;?Fe$|v5g>Ge7ExtaY zTK_`4@MccK1(bJHV2F`rJWOoIGm4KZV)U5%6=HxGaub0b30A?<$}hf?t;0X4`5 zGLwg`Z;qO0K4SQ}9Q2f(i`{b5`eRp}qZugZ-@U%NcIOS?vE$OmCCIyl2t=lP*FY$! zrD-?&Sorddo$QTkiAset8(D(faB0M9Crm5%uf&v`$`Ae7wqXtUFloRU(m!MM6jrls zxV>VRo>=E|gS~KyT;Yn6liav_FT}f*b!uDFojnR0+Pjd`XJ6J@GMJd=a@ZZyItEg8B?xMR^@Qajd{&Kc2#>Ly{!*S4q=~2J=*X z_;_gZ?oG%esk^cG(G#@!rc&YVrzl#Mn*n<74q)E$FKKXNt*25rhnT*w#B3m3??Ly}E!|Hc0&W zGpBgdP@;Zs12s}C0u0r2+il$w5N&oW-?0$=bb-YXxINj{HCffHb$-#3nPja`OA!1f z+d+B|-xNzrN2y+-?1<_4Zw?1`A>5TXHnB~jd!f7iYH1Yhc0@~T)Mjh_tke@ zc8T%lVbGpBoYah;w8EAt_te}6{ptkkqMd=d$UZRMRPbR7LScvZ20JhZq&)uou0kX~5s zz()6nS8k@F5~F+PjA@ghD`XHdD`Z4AYs90T8lfm!Q%Fx9ZdgZ$g?{gxb9Es!Ym(A1 zc5`6E-lf$9cK<))g^Cm5yt_cqoqkr-mF?2%3Y;;^WK$GYPQ__;>-Z#k_YdU@5;E)> zbn61}|FffC3#>Q)N)Wt3`*(bXP+oJXVPCTfy!^)SF ze%LDG7sG$QHd`5;GtYD$A2o3IveWN>80VJ>Dedx+GqDoEA~nzs(W6SfEmN~6GMj&6wg&ncYe|_AqRX;d@=SF zZL?exk@$AvIQe>ZJcsxv(CF6uk5*X1^U7)r%Dhs=<1bZ@> zN_sk^;M8Cf&V^X@j=Tx76qG)vvN8mDrJ`Zivlh{Y%DR;>=tN4gfxrf{e z=4IKO$YwC>3*1dx)*^Z`UJmTAI)8L!I^U}(-&e`BrpPt5<*gMKa0vLQRo*Gn!Iv@T zAq!4?RLrW7^&Ye{d)|HS8{@#HR?>!kt@4vqCs6#A$XinVGTpRYsuz1S>FR}^`;{iB zWX;k{HOO$O*bern;xW!q$I>bg16*en8P?CAt!}e2Nj4Ile6t%W;M5TEh)>3Q5mFD|NLQ^}D6YzsG;ca-Mx0 zH+R1=&pBn0-^jJz{ukW8pzTX<%LjIMw8L-z<5HX9jEXEnW)P;N?cg|mSo%4z=&eVVS|)hDGq5!ut`*ILlbV+g>O=v%73 z-)L`eOOFJqol4SMjuNGG4Jb9%*yHdjB6+2OU4iZ&% zN(q08gfVKs`D7U!g*Q4k9JMb8jm&f(?XEM}Dey`U@DrFG3%3aJid^>m&UqGE%QS!R zHjI$CcpWGlaO|%RNs%5a2OS!$kXn1t#dcmarwykrZka*}1!xj(&as^}7c&BNCk9fCydkaJ{icyF25Mq6`|KW)55&Cz+JBUtbp0Nd;BNh8ZS&wyA>c@y4QQ6rb8Kh=;xn57aO|y0b##DP<68@_3r^MY6Q@how<+^z^Ii}J<*CILV3zjJKRvczMTTm~(zEK|vJKYFO zkk0c~YPXpA`>{y=8iqrFv(rZg<1gkDnkCTI>!*12zWEN3_z*XivjF)@zjv4)#%Nr5cd770pBr8&G!M+vY5 z?q?BGjszWh(y&V0IgYzZ8l69badvBXuoYFst$)Dd1#}Bhi^iO1YxBPesH)+ov7gvP z;JVrBL%50N3RM5Bk;Z=`^?JbCIsT~We_{9S54*S~&-YpwT?McvQoHVL6cv9P)=a3n zI~|Iiz!ju9med4#XT5;xDj}`xn|9vRtI_Ox?+A%j+Viw}*YT?(>TSmi_F8?0^p$7& z?R?|2r5UeL38*QJwxx$P2d3(Eco=>5@tFMncPSsHs>0d66{Jl(wrezPpFxg~>_h7{ zNaIWKeg#+7$MMZ@$eU@lq*BZN>zUzit)72BH(gmABK`|!xjsYrr0ll!`R3tj)&?r^ zx{_JHQk0zX8O$x}kS+BWQPw|)Z ze{L9s9lWrp|6YIpgMs483$~z-6%9G(3Kj+_%x~Z9QATHLS`_yy06qxdUI}g~@je+R z4VUh@BRIQCF2vkkxGskB ziK=Tb=psVAVu^=PxkKb_EjW9-43as_5`IRV&~DF)c&w>#5i?-rf5G~s&d+@(f0yl( z)c$h(bjtCv%ZcBPmvtcxtR?c!oeI7p_SNvxkA;z|r`cZ6kgr65q(fQjcFhXgx(NnKT5-Y86R) zId62bRlE)U@aLQeXNe;%`>98P&w-6+U{Bt%rk{%0PiM9$%rd-4<~NIDKlPptlmPK;Q%{#T8t}7lU8D$a`6@RDp2>5U%J1kSR=J5Wt~ zg}$+RWW-C?31A+RK~ui zx6{7E{MqbGO0KkD1KF@$oa1a-9U{jbXi73*218mACU`Ve*+jZ?mF712vKxXgHH$tx zd{C6nPfMR?txpcz(JZ;Zdz%B($fkZn(R$U^MeRWEMAFtcoY~H$c55#= zC6#6boCOLEBEyAueso#@-&kn0xc2to!v4TEe~eE2FMXB57SMTiVjHRYrkfbrZH1ha z{(2rZtf=zK$04FCrqd`mVPAg1>20fxEnATHc<|gVrfnfSL`!Q9It$sB@e_S|$ zH-QsP4JL;9glcd0U?x2vfLB25h(i*6qln8!ofh-K!1-xA;9t8yrniCb`quta20cVa zoxwIJKW}h2%BziBnvo9{xH<>NivV~A=E&bU>1ls0vLo)??1B5Dbuz2981v+bQDMy{ z0-BB8>#o`o<6t`3xd~5@)_>uyZ_2JBB*-F9tj-r)d}J;B?;aX^AwOydPsDC7Vv(GG zvD|+%>lNsz|Mc!HI#~R(F<)5A;9EE--3S-Svs4iW_pF1wxk6MAEE;x)_YbJrK4W{NtyXOmtbXP8Ivui6zi!O;y?e+P)T zqP^!40{27GWX}lzI%_-747028@66gKvqi?oqpmum9+GbPz6V3TJdAM&lCnr+bXx`P zkPxzIz8klchp^z7>TMt>7_BtB;3PJz&A>#_pv&`r9Y~t+1+Ka&J$yXoD+)_2!^F^@)DtLbJKypd+@<2SSKT>_`$n62S zuw8~KQGU9a=OPE4whm-iX=*$Wym>WS5J5{$+R&`Xvp#ubg1!Vv&^QHtfz2O$aNQs8 z=byEGc4T~ZJ+Mzs+swQ)KA5ooSZ{XitDQc-f8Z38?9s!NS~;7(q3WpC`pc-lvWTJcKe%CwHMSK+F3ATwQ5LwBSf z$fid z0USIn_3!18`la8|8r8ptX|am+7mtLGmYRQYP-E{KFR!pVrJUlLpPjd1 zB;YmBdeNi-b#6m$SXD{5Y)NjVpLP#>9+Fgi9 zlr#UvSe83;z{kk^5-F>mb^wr|u_{y5e}&yFkDst=Dc0D{k>4bczE#(zD@u))xx~zeESOuPtKJUn> zD*b3+pWGwpE;!};Px$hJ3uUo=2=8F#XwnN@S~ma|FTa;oJD}5=Vyd9p_!rK9VVxfc zCNO_5#%&TQ)nUus$WVhv>wC073Ml$1^mxWo=vE)=dnp5^i44p#_mf7if!gr@KhK_- z@b~W|01D$uM@=Z2T8u}RC;a`NXT;n}*pD8$EL0CrdE4gBH@jb3GR@v-dRaJ)<<0t@I&OmG%CqOh&|+5Q(G1f#V-9jqd!XT(X-F}C3Eg>z|U;RxB6 z2cGwL?p@s}Ju2e_x%w-)XTXyXQ3t4ecFt{?R~k;F#ALurXdoNFNE9rG!CaT)+tiH}9e#2er$2x`-_(Et+;u697o6k`7k+VV)=ue*r^wH*P7GEC#6YNZRQ}$GLTkWlL>U8? z62-X^^=oBKfC#Ea%95;B7+zXQFWydnw3nz6@C8VHueSAGt)~8WHc}96u__)I zJ8%G6$yoiiOAeKIb0YlbVMd2vsAWJUbCG+v_KviY`Vz4ut#dm(Cvw#z$mS#Q znNdgT|C%a^Z=ZepFnIm_M;Io|i`I=eomO7+J&1jte@ft_RHXk2ll&?_X@*NJFc@7S zrg@2+PJ()a@=}F%+HnCx)oFpfMkZrdpN^Hj2nGdldj_?jyopl~7tea%r3MmvQp8pt zwnK07>IuEo)Jq6ea4_*yRAeLxTD&={`-xwU+UyN1U7?}FiqFw+Cu25z1ua`ffg=Bxwv2;~cOrn54+ zFaiUM`aTBg2x55~%>VfwY*BlD44;_g2}p&`h%d)+4#Db?$K59cUO0XP#XNU6+w}UT zns5e%uYW7}Pkp%@-ql%HEZJy|Y(x%Cp2v5@ZJyag&U605h;}nrRcUj~U<;oe?V@6% z#{98eNd#o`QP4upTes06|HR&=!eHffNC5ATaefXa2^brf4}~AZp})?scqHX&t(o?a zpYK~A6cQX9LqYlIW|DLzeuQ!V<0jGap7z$BM3TFHy0@EmPqK)dA z3R}|_1~VGA!h3@>67y%*kD$6-({T8|yV)@cJD$nGAcsyg z8XGACN_YJ%^tkhMDo4_dqA@RWQr^g&ivOSo+kd2}!?GiEXLM3@%z);BBHsAE1J&|( zAVAla-RthG(aX5lM&MomCm*Cbl z%v?mrB<~0`@^H9ZxsxpS^R~>bH;(y~rQJ&`y?gTLwD4JqZ?wO#Y9E>Hs?!i4bAQ*% zqCvT5d6~+~WEs~!X?=AibsOpl=h2r{9j{)VDnQ0A!O?n#`w>pZ+ zOhG_C~DsE#QRjc}V^W|mZ>g@yq z(0}Cmt%_FMHtIjD^>RTC-?>BZQS#wZWQR9;hg-JGC+Z0STULgD9AAJU9hv|210;$X zZC$-_pIcC@_^ON9l*K1EM8AS0dIK6_z)9Cg71s!%19_}?U)>7haLs(o5<;+kR0xSq zTUk+@h|7!;Cm&gqCxy9kYQU!c)9b~jCPe_|-r(}r1U_jkdV5oQ6o)LkSUP6@?OA1S zZk```#HQ5D{BFsj6DoZ9zig*2ds;NI4Ti>FUM{-gfjJD?Y z%TKdf7z+~f)O%u8=Net){#f4+q1ep^yw*RGUixw2FwbP)9zuV6dfz331kM{>&RkOH zuMgV^hRb!_$w-ap7UpU(C&hN?RZkdXhFp2gJG_|Lw%3&;K3Sx{a11^QgBpAZZ8W04 z*z&=Tcy700Y(9U7dI6EUu)p3GExfpDQnwLyqHQfC)%>DERKUUI&o`TDd0yW|*s%3( zr&X-Mpd>SqGoZNXw6O!bd~IZvxc>mLqb{O8Tl2FLYT5E|O^`|y#759^v$V5HE;!-Z zQiPJlXLiYM-aDmzjP*oTapNIWWGuuYPGlurnWX>G7vJByum6)xSl?daP9!t!Lcin0$6zn%=sODq=-|DeznBCkpL;2UL zH$ohV4O=~|wtx)K3oHJCF~eaR{7nS6#4s(G@_9J!tUVg|s%zR1nYaF?2{Q~!u9|Za zZZ;nk5KyZH)`bL8udXyEYKt2p0B!5K11yc_M@zfl1N9WOymm7(ry?*Cp1fC3p2XpN zcjtb`>f23QdgLGeUnO z-Mih%fUg5J2j_nYa*!+4S`!ZJ5gu0_@1`)B%PwMpGP*HMHu#*Pn*5By zRp`{D@Qoo$&sNQ9I-tRiUGdHCe#)T~J}7kJhp6NOH>5$?UO0StZN*-gY+)VbteB>{dlJJepr_P)GHa<(%|+}n{AygW>} z@exA{|5$zaL;CR*+MzIqL;3}OqTH^<Y1$*=>m9!W#GkEmMn~T}coVIT1IuFX%DpwR(n7zAO zes;f=*rUiZCjuoC8Qb#LAt_yE#ck6EZX9&fyr*T=;Am$N6?4(YGwHy1|A_L!h~)Ic z%kDJ;vE)YT@O5HJBe+~ATxqtg+;BBf9>krp3a$XgmdiRg^k~VK5%fx~!x1A=cLISK z4i+5?6D5NN@wSc?u>fSXWE5g->ZSvVO=Hc1lJibEG3h)o^14Xdl_42KM4>e>g= zlf^ccpb{tHP}u@jKIz;}OZsjUUhm469cizvjvPK#UKtyqu>vP&b?erj8?DV=EQUlC z-F4eVAZ(Q&ByO%-&6UUbJ+uJZAnU?e63B$HV~HxM-_hE4Ul%~wM*^pW#3QR1rXXPF z!GE()-d#QhmG%t4mmww3uKE@hE_GEe6>#2mJ!v6whK5d!+++aK&MOGvZsJoab6o|Av!(h07kM zX0Y6;*A2X?=jWd^*AbsB^z|NmP$Y{ci(iob>~ziSr$tn9ct;n*BlY2o>A4}%-rK9g zORlJ}YHq83@uXs~^g*ijL6^z*2Ex)PXEV2em(n3$7@M#IZX5e1l=REp!LhzD?Y)PD zjlubS4Y35Pp;Bj2Hr)Y}^tu(YSWOD#!7e)Y_1$(ZM((tkN8koT3Ls?go1l8L1j zhEUSx^E+l&2-ND`;{AV76AC*Z7rQ)5q-HcxE*J+LVJAE5~qwy%5ABUm}){=v4i z$lLYJ*Qz){YV08W$z7+a9=XFN^IKAxpSmmdmd0I!xq+b*%!yin=oM}eU6F~d7SKC*y5(2v9S6(fu2|t*PQxqo^^AVVF%-loeOQ9Xy zwBbt9>Ls<~xc6plu~Z3Y^z1rkO*BFchl_N)TOc9L!aVAK9HNdjH6c@tu!TvQNz3

e>kI0ta2!eI=YpRNSaen!p@eHFdNhy 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%0A=A-nEZoCMc-0jJz^C%>C+C8`9X zs?m5&I?Jt$hy8A5n|f!7iR)PZW-KB)ULwinEL^Z0o7^F&gmApSIsGiPkOXxFUEA;w8grk4saCdcll-hXqwgU1v6%kH;*X)A&8z>9C>5RmHg>*kxHdmr!3 zUYfeNczj9%lI49{Y_!-Cu+$}jEh^bfs~o-Qe&SYp5nJ&N*O)IrAyssu@9u7Iyi%gw ziNxjC`tTI!Yoxmp8RxN_k)@2JRP-WHN{k%#pvJnDNfdN1cY<-_{2`^Q%GFLq$#^=)NQMJ~N6HSa@JoB>9Zm~~ zs?iqp8KYcXpX1uI%|jz7*{pEC%F;8GsGS=1>Mr2sewftV3HS5J9;xuI2zE@7V*OG_@F^CeY)S~2`GR6eD_dQeaj3@GB4e1;;t3 z7JmaDpDPCW1=17Uy|6HSn;o0|*+JIX1WdceRuoA3^oq|Zmlwe{S@T7y(mvimm+_n{ zM;8tDTJY*`rsDxFYP+vG6L~fbGmC+fW)cTK)Zp$)rD#qvxm1kTmaY;e_vpK|vS_pd z-T{lZUds~joxsv)tSK{|qK3ORC3!_=?6&`QQcB&};edwmJN$_yJw*8GJq>sTyBXA2 z=um$3y?zQYe16Htopc-a#XJV2%KpbQ06~_=QqOFRoPj^Af&FZBy-#@n>3+PqV7b$S zvBd`cI?VDc^JMa`xv~>e8e&ef-@b4O3ixPv5OnB!^{#+-6u)-5h&0QWKW4ZPWwz;n z%1hlCpI23GzO?tOd_wdiZ|X3aemDnrVbX3PY>m@K3^00 z<{L8TyIktiym;uVWR=XsaUD!hY#HU4lNGVb25xO& zeIl$T!>_FdeexZArG!E%XT?tzER_ayI7y5eh6PI@H8%Qob~1o&mhdjKow2#uPx$R! z4r_Ba;G!!}$$@=nCNy#b?U?gouZCVzSz=b|$G|BjzxgbtS8J;kZuCb)0LTF9tT798 zg8PEsBNM6}PBb(bv&Vi1_?Yh_UW~(5@5r&RfsGZ?$bg_GSOOkfj>(<*7{1==Ob*dp z_~sA2OEBH5s?Y9=wbPJZO>u2d*|Raka@=%7S&rZXX(C0sCd*Ovc{Tb+7G2&zOaSzd z-BohXg$A;zK;%w^`DDO<<5PJEeg%m61Jx{teuu!~KCg!qgYeZceJQL`gK=23->^t> zk-5WY_Ky9Y?CK~CugbEKv3EHgZZBK4)zlJGa2=8rAPv^o6x8@@{cj(5BdD}qyaYKM zg4u7t?pr}ClX3ON;f8x*B~A2&lw6xG_61NS~7Dj`!Ni?%k{~m4;HU{KB z=q2vyK@628lYKCu1o-P8G}pEidSA-&I;rCwEJ4&w9pTWkUCkL7YOw!1XWi2B#*DIf zB=cyYnZ;FVu}QFeE$h+UPVCX|>pm9UWozxrPpD6?UAyR6?7Ej0nRⅅzH*uXz4Zo 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

  • U??jK%usP_%_BI$i4q6pol6Z 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

    j;@!?XQ^WfqHqdf9bIA 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ͅ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

    IvlXD_DoXrB+Iy7HezX4V*8nJMiTKpw^& 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
    UHXoOoh_gJw(g*F-ketSB}KCk4KPxOh_9 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 z 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�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츕^|E>Vf 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�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⁣+T-hn`#EQWs}dA6T;E?e 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%0Aw5Q@d!Kv5dfpDH5q)Q>kCOHnp_Tc3W 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 z

    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%0AC%SFe0_-)nb~5g-3(Q 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≻2)kSbRe_4&Jg`~P?x@Wyv|z<&$b`?(NMIj=ILgHu(p zuo-wGrfU+Y3-G8836UL!P31KiF?B$f8@&M@v%d-eYbh5^3})65lAzsx59Rb{y4fJ6 zYp?h-uD5>#@GMN2PYB|QMOKSXwo)}8XKR#D&#j-(-ps7~aL7i?7QpYZ-5=+4;XR4i z^pS{ofSfHmfz)7>Yh7Dg5D!Z(s{2HC#(D}Oyahv0K}d`z4Qt8+B>Iv z6JtsIal)P*0Yq8x>6vrKkkbDUIZt)?)xYJ?1pl?(T&oiSz}P$PEvlpi=DtlIhs|!` zmO%^@KhQA|i6aT240BupB|;Pw8Eag;;EiXV^+!;3`9W09kwf#2Z}mw_=$kahbCBC> z0sH2wP9wlxyh$0ai1yU(t4>rx-VeDQuVJxfui5jei^>_vUDHWu^(kLVeUBVRAM#O~ z%Fi?Ae=A{#ma)~7k+qe8IlF)bz0`ANnrH>OWQnD}hmJ)~rPZ-@GS$R};(*GLXI>XQ zvl~Q>`Ho0vBCIMCT@!>@IEqCC?kchn%3CvKPHlyuuN(a6#ydq$;YL?~p~Cf&0?hMg zoZBqq8Lgae#T(RwIBLma+hOK{ zd#*iU&7$E4B@qx~S9Ws~LyoC7`jcz$W1*W}?C$DZb;YuwP2jh;{(!!RU$CoL+68`a zWHEsSeG9}MN}7;hD5~}w+-GE>67u}AU%mf@L30!6VWAaCd_Qh^0a6f5_q#97u~1=& z=R3X3vHGv_a?OMm3Ylcz%dT%X3RYh;G@WP+_(yt?#gK~Jx_-D4rA!Yd*OnQof>(<9^6$4O!N-*1PeGXRe( zPTA8d{RpqTsH6F4VzQWA0R6=RgSY;{dV>Yz+?&#)7E-8U{Xj!AK=kxo51Xeo8`qOZJ^v|UUt z(-@JCampdGLYG$?|BEf{2f{lf7Sg=v1DwkYrTjx^C9<+d@Hn#bNO)4* zP_%Or`9sv5JJJ0_feq|{W5S8DMpWvhi`GVsOp~raP>%xBWQkLgY~!jIE`fArIeLCb zBhy*jxYbEpK0UAQ#><_v;WXzBcRz9Cn^SBKJ4vZ1h{Jksr9M(3)Zau)SpwWU$qIC@ z_Uuef9^haw-eyk!x-t*bYA?3E(~gOc4fw$j=TBx?oZK3|WLndKd_f6-qiR6OZTZEp zf>o}$PU)>ej8?<7RN^h){`lcZU#-B`1azCJC9TBrKd>f0wN^5d0 zO*=rWm0Q3kRk3@qkxU0=;oiBc4Q)kr%a9XY_P=8>^O16hS~e zA@~`{Rj6&;4c#o8>0b#`*_u!YysfOc+AI-x^_2}p_&$=q+8hHQQY5TI?j%0&++@@) z@xzEJ+@4U!)Y|3{gtRa>v6V7`0p2Xz(zyH37;gbT_PIa&fX#a{i?P<;#F}E0r$7Gz z0UTNGUu54sQJMH-m|K(+At9LA?y+@CXM1@6lNAG~x%(p^cRh!??HwmA_dw6<-XX#& zey{)#lffiEN&{TZea#j)3}Geo6+e0-9jG!@Izjq*u z<<{zJ$__ZS=J#|z$lQEUZx1+hGsL0gY%46TVYcK-|cJJzVu@rlfuk=4Zb` zjWfeG_^v8l=$vf(|x-?=g!kdnIMdZso#KyMuBQwWOW{npzaBG_OB>vH~ za_AF!kr70Htb|VP-c#Jg%-*A&QQ_l_dmPhu2*GqA&%bfry_)~ZgJXjjLLZRrPo~OG zaX>E)Er58%6gqEgYUwsZtG{87tFW=J;ka$S^QE2GnG4hGj9^)wbeGn{&ix3j zfDcgkG5F#S*y9rDO_yMjn_m!m3k5X2FY`7yuf5}v8o6+}4%%N$)Y>OqF>r4Ncsp9I z6sdU}4Czb*(t?*%)i6!7FELF}kiu<^3b8=NqDA+oZMNFvsrF5%bJJRKmN&>_COrFT z3ENGE$GFQ}Dt*xo(F0gGEQ+`}@FD$c{~TP)QNqsB0#CMh2xjzErOQOco!8lx);Zlaj}|H+=wKNhU2zFk$lx4<>?c;|Bnv1i_Jq#pR*#=x>ja zr)}s3vw*{nHlk}906zPc2ahpnRfH>5+AeAl9RFh?>Yn-XCcQ#|o-N5{ZQ+E%> zyY7=iYxnHG=80a>hP&m2g1TM4g~4^mE`0iFOdHEKO8CULrBR$RyCtyC@l83YqOZb< z2`N#&nASG9Ix$P<_yKb*K;V;ukyFlC?oTFK0GsZONSv>OMCe8o$t{xyfx1W*xueO##mM!c z%`Y)}X9oYNK1jNDy(n3u2WcL&TQM3oDKPP7QB6}}Bido|S;hEzPrm2c-twdDwBX~p z#glq@?w+>4pfrW^nISLeSr~MBfy|`X3X!kN9Af0+tM8loCr(%t$N|7n{9l> zcEje>!XZdmdVS71&kK_1lN*k)jFqpa9-DAJWE;MF(_pL7(qu>}(uYEd_U&#u)jWFC zJveZcX-ZL_b4g4kkHU|kLnLdvg^NRL_5qtCV|Lw~@Xwbi@hCwN4&a6LF@+tUfK$bA zCk>e$DYec4$RHn9WtAM<(|{hnO0wx9N=$M}@Np4Ln64P+hItNsciKq_C!*%s^V6(L z*^ji8;cbF)eN>gUPvrtXPMf|DgES_8%8l=hnv5H%q?J-AYCOymgII@ZIwkCXg^N`K z+hy~6u~$xQANgq6yvUm29-qxh?x6NIT?QB~W8*^EvC?_&wl^`r-*Y3maLerheo95W zK`!6eP>zDaI9yHUU!csk!NBXj&B&NHyA-ACBxa+!P4e8w9{X`G-Gn%Ovi}9++_kO= zs81)&fE@R}#3XP;)Zdkj<+O2HxK@p_XBE$yz=-xS?JdRyw!apQ-tb>g81Ixs(+tk_ zTZr`h5_s*_?+80K*x7R~cDZ|jRk)3{zPpBIGrG^*;nxc2zB@a>p|E>Y=yVyrC_H;O{D1uH4oNs#eEHEVLz_n1|D)+F!8d1w^_eM>skZM#u0`>Fyqqg8?H(Y_RPe|KoVS^YK1z zc3;2qI42P34XKG@G4ff@&5=A+*B%>Mn)lbT zdHn`G@kkc_Yr}j%@0rpV`YDUpzov~N9^N`AAS%TK{a4y8{^~ zF=sm4vxBR(g7%rI)oPNfQ56~g+^EHAX&`V|pRH*mDs66g;UJLO5(?LB=w!~)y>3GT z7h6pH8LemM1{7wtt9((bBK9~$=~dHGK&H###FgVA8eJ*Qs<#hwRm&8TQR8_cvYfkx ze;ECBvJp|QqXa9Mzx4hv3LOJgfoQjBld-zJfQHNI!zSytZZ;O5m}O8A_h>}7LCeZ1 zc3>mTl28qTouCbJByGAPmE3aKGV;*QzOJrHgVNMHi1#TcJ=iOnaI{5N#fYmuiQNz} zgRD=W6GNSXo%6(d3XlNIYI4WZdPmix#!oq|IfaPO3A>$uqD^)0vw3}|4eMsh5X7U> z4!_WxZpnR7;zd#01NU{33DToHO9GrH6*~Q;?t#zQ1BSvA)UaUJnztm#?I&E``p)Ci zc*1%uLC9;Q{49I$SN8k|*E2Xx?xbB##U(XM;o-WP#@53zN0N9ZMdokvxZJuM7f6Cw zmt)&pMx|tOX26g&+#_B3hYsgYyqI$>!4GlB2%jXLUfhaVHLY7qCotGzc`~g|qG7kg zlxcKi^?2j80Qvbrbh(VrQ1}t;(>w9CJHlJ-z}ktXd1eRVy!o0h!i6gd;>6l6NEV?v z%W$dOARl>9>f{f{4CSfwkgNI%6DXL{?GJRWr3%C4j$iK4-)Hj=SqND7q3Rvf{it81 zH7Jnf@P-|*IIX= zOo7If^UEjgcizLDgn709X#2F`H)1NAM{giPsDJ=o!Eib;;p7(-I}^ERQ#k_A!pi49 zgo|lP(E(208!5tmE~q9cZMXj zKQIa8AL+^g(^v9acH#XOzPvIupP|W(6?=#V#(D2%I|Zd6&RpHElGN6EKbHjGUOCK^ z?}-XDorY7+)=x!*jS5e4tH%bd2tB4pekCF-2AG*wVcDZzU@Nq=Trm?;6RHz7}=c zd+4q7`p0*p-Rc!JyH(8vwZP>IBWO+A4R4!^)j+vr&pPE_fU7=*YcHrWbD7R7fdc#^ zWF4~Y<{pxZG=16?aZ9dHPbR)%{TTQZZ3&jJ?DxOngZK_Hwv2Ui~3(>`%8rN?zuyXczX7ak(xKgHk2m8TwZS(O;N!AsV z)4MlNCF35`Ou@6IQdbCIo#M|#1Cea8bsa(TUW*YD+LQPbv?nhgR+18-wEhnCI>BCq zVKT`*)6lf0j91*|-jIK;f^S)9Mxwzyn0!m3h* zqY-Q@nhmqM9j4B>SPau8negv@h_rLNXz)?)xM);A@-97m%qxF1PGP?*yuC?E4iks* z-gyxxL6bS;<^Q>@T{}hfLM_HS-ej;*I1J+m2nt~xu6Win4puv=X1}p|{D6#~K257<6 zi%#+J0dkR(Lo`1e!t?Hp;pfr@gS>A>*HM%d)-eKgMxtSJ$ep{u2(-Y;M6)4Xnf~ zZTdzRj3nNxLl}c2dOBbeBX&3l#$A{7)Vj|!5I11*yzOVG9dSlWMDE*$W(k#`X=Hw5 zLYX_NY(D#n7C2pV>zP@nb`Rf2yE`7GsEqktTe^?L4}L{)g;pOqp7m~u*Rm9KZtunO z_02pK^e{Pc4~2JEtw=ZYe`irse8Zb#3pa9@2$dk%5wlm(JI4Z<%cKqh_It z;ey2eE<+&33X&WS;lgVSVkCD!^-rhkp| zW$3IfbV-f1i1X z1$`iVF2mts4H;m4IRDEVX3CIDD)t%Hu&Y%9egVcV^G>g;mquLlg2wq={dWbbMf;=o z(K_sxT9Ak+plV^`evtZNG(+2Km@kc8v_}&M1kiMQthQU(uUI<-M(koV4~VscX@Jo1M!exFXide;-1cl_MnvKuyWd?pggtTs!uw$SlW zj6>HP*%SXsboB^t*v5qP^hn9*l++-slSi(IIyl%fAL1V1hJv;G(&#nG%RW+x9X++s*G3-tCy=<09e|ea7Pg zukn=S(JsPdV?FOtZ&hXd?w=kMj{Up#RKPlNulF>sD4KNzgC)GOO7vk=mPS}M3+S(D zIubYJo95RDYCe&sl7z&F0QKY`WL2{|f967LhGO;`LCB1pDHyW(YD8yU`QC9J)8|At zsW$t44}^jk+o^f@scr2ZqBcjsGMiSwx&aBWGLKf)@NDrIhmR1$d+>C#BWHJbDC`0C zUb#;kPKk!y^>J8rrO7Wx1%Cy*@Q7AP?Vhf%yxO`Md25gtA*pQw>_U=I8kABNeVNr6 z)~8fijZ(Ml-prY-?(eFQ5`JSEN)y92T+-a=!?u5J5Zd`eWoRybyW~n^N9S!JK#>l= zvt0Zx+tW%7q={w>c7An&-FKf4sPX(PHqgx>O3;sozZ2?dQvw>CTDfns+S)l4K`$eD!KNq;itW7 zp|lyBe9Dcd7M{=uzqiy*i#o4%C|&iYwZg8GpTEY#KVr3!2>pTp_ z;YX)J7qc{OHW{U@Jdp3W$IyO89f8XYTBHR{VZlXg&nkQL?>2c{{HNp{>%%dhb>&@G z7%c-)e#j-XBK%qRHPIBajNGxW54Fk%8-`M3O=~}K;{FWh#oDLdTbz}&xgz?2NtEWK z`6buDgW2N4`N7KYq`~EVHx4BYn(%RXrdOWGPLN zm^p(+P1<^U-e}=g#aTUrR4d{Y{XS~d)jIrkv3F=%JiLW%__5)uiPq++`RwW-wPUya zvGP$MPqwOuV}HkkriF=9t)#>*^dquCf9gbV%mZkN`(&PLaNk1Q@NcPDcem1vv)uor zWm5bNHmM?$;*QRj;LMTE`cxN)>1@2m=CWE$zRb_td{U1N^p`GBo87bz5PNs9U`S_o ztHJ1yLXrI$NM0$egOcsedifT2Y3+@5ohHvb#bbLA;R!BKf{b=;X^XgV z@dX`1r9y4PZM#{zgF7)isU7gdGxqdKQyv$Rw+^@S22A^rj&2CA^%QRp}Je z=xLMkEp^-L6<3tW8IvuAr{@+1&3rVqu_%8L)}15F(&^%OmM)x>ov6Pr9&_g;oaXY4 z@v=w{zI3tn7n+UOoPe;V>9g@(P{!;@M(bc1-OvJIz;CC(^+tM`939~DLoij}P7E5N z%LlJLij(E6-7#p-PkY2>xqg>c*$DO$9K!(Me>hI^Nhv@IYX)|<@Z>b=0WUme$Bs&m z%lmI(#iqQ5Z`mZD)gm&YMeIW;8SM&ve-o2Jzh*mtgk8`jEx&@ZGWg;gixhm-@r6Of=NV z^2;Ay8o`y{y0s+e4h7|}B?vXCW=@~AuhFg);PG@)S8j^1eE5Y{W%*&+qdz}Z(pGdl zgWRVQN5$(gcE!5D!GHm;CTjB42n`*Y$Mh7C^Nud+aIlq?pB+dkT1Y zs%QIJSVQH4jMtp$_lol9QYWe*BTQ~v$`q|tq?}cH_)GcMxwXMgBDzYS z@5Lj6Mb9!a3+vj=Me3!V58NB9@J_wAD-bkdzA)u2(7aOZTnjd^mQZT`&F-dGSmSOj z!Pkr7-h}i(-l9e`hiCTN?8292B%ajOc4h5V8R=DsSN_*lH&mB7dULjzL7?^i^jscU zcE#_?-V>sRs`FzKpS+%HX?cNST!?lFCHcg9Su-Y1HSh<-UtV)f5*5&;6k8&`yf;Lz zJ)RT;H=}T=ViW6PXwwJO8f&L|%rg=xIU7b0kyInd->_StpS6^U2{H58#bxb&)B{3P z1-^FV=l4?~hB*(OYC!~3od7ELZwPWGX2c>WVfG1gvK@A?T7>-8t0?af2tRcIbRkVd z8?~tI5^Djp!~s?tn4X56X(rHKx>r4F(G3l%c zt6RnL0%CcS1GaTd$CT&7pD)tqDPrKl&+d=U0!~zB1H=|E*_*V<6CSrSj0;aLbLuqT zmeEa?1yuLg7=FNf^0;udnAabpBG6|HKp$p?FmYD3427SKiKPg}o5O1AfuyS*2{+Cr zJ#Nn*S|W?DKsVuXjUxO*{23e8uJ@G(c1Pkqo0^BM5>GcxQ8RGluSdjELn4`q*)*gT z=-s_K-y~w0$$6o$0FKdgd2aLnEC86O;~h9SYXWGMdS0QcFn{Z{-)C-`f~&7I6E!5=3`JN{~{qZkLkYZe$h@Jd7R2SH`}3|JqkUj zXIVzSi`qxBA}Bk@r4yr?(R@VhSz}-WK@bd)zI}8Awq~Gs7530I4`jeDqS_%dKvBfpi1fyv;vMKa@TrS1j-{-kl&>Te*X<| zkJV5QaP)N(UWFJB8WE*LttVL4dxS(#QaKtZm#(%>CGe-t+JN?W_>ZYHp{#)e>IPGy z>n_d=6eaiKfKs58N^}4HUtddH_!fL{@9?k$!{{aCM^(4?b} zW(J1to3iYGUPwLW!@X&Iq#1ft9XFEj18X{Yzlc_>*fBWU0XPgza~f@d9Ug> zp}z!>Z@EDTmkzOO!hXPvqIzBuzO%CYm7ZptW^O$W>OX`?scsCZteWzNP0qPgO1;Yn z!=}taPiU#4hGM1sKY6U_n;)5m14nhGea`O~znlV65JAJ%hoz>6nSi^t-3fPQ4;5+l zF&iqfeN?oU^%chhKE~X}3%Q-l>`c+}<-^Ld%I1%y5<0E}{^=#7jt4m4rvQG2#ILCn zuk%(Go4sB|FUG~bi7MJ{UHNuJ_bmH}omNlLGqLG1L$MUh(YtmZtjz%oOpEEQG#M!6 zjh~^>(+GWj5AwH}edaCeRB8((;oeC7cuTY#`)ReuZpk4E)A!nAp1y&!du)Y{7wf!K z!7?+oa9#Y4GCu(_dsEeHN9{_CvFBIk?KI}06VAkG$`%xf7O-UR$1dDN-hetKVdJyj zLYw}!Ir@TYW)V%TgKo90X0_!KltQUC=HY)wecO6M`bhCdy1L{p8z*4Mc*{)mY9ocO zvnsF6Y(Ml4WetyRy&t{peM}!tPiJ{WvBCY?1FhjsEhWJV1+XDfxR2o zlDbr^W3a`7{<5<3m3NflHOlgx6*wVDVsN0i% z*_*kc>V?=HZ@z*mV&f!lNQqVV)9pK2nRT0d_@L%UdJZOD78aX~A?Z zRN)U!AaM@&+?0zLK3U3QRl@AnGX%8*QLC9}Q!Drh*jDY^5MwN17u z&wKazA!{Qu40k-J{aLP(geGsJ16#*6uCJQ%&5XULn&uC^qaA4mqf8=L@@eG=3U=qY zzF)2_uXab?lf1u|_WX3-IF&QHZ+(}%tVlal@H$+K?Ord4Zx{2x3N2#jG* z%dSV=L$PN}&hM~uQ(ZP6Iz}#h35?i0zO*n^7f8I7UY`t!9@_s^iOBLnM6nk9JRF<( zS$fn+dT&-d#xDvz{1n2nwsip9Ke>q#w#v*DnM1Bc! z=JTue=AuNn0&J(_zq+h?q=Znp_DS?4kz&+lM;aoPv6IrZI!#ui$!r4>a0Jr_Gx&Rm z#1nQ$Xiy}>%HNQ`WSOF^iY1a>u_JKE??bYQwrvUSj}m$YRqZ{^d#e{UlZtB@ndnC~ zs0??4K_W{BCzT!3>TUA+>sd>Q6ywYwHS}}T9p#-i)huv|cezxk^Wh)|DYGaPK`;m| zM2l`{)%_(IF0k|yB!XnBYJ=qcN~*39E*tm`wDwuUn=9+;1!|inCbyg{P#NY0Y2d%? zI6S$MkfOXRKlhKBq&Thioi#xy=c0cg)#V1=)$>*tX5_>#&lT;5O0S4)T(yloqgBrV zQwRGt0}5j<%H1{NaRt3L7g{&xY( zYTgh8aRvsp>LzP@KLPw4`4I&GvFw`M#ERC>jd*;$nybfFk69Xc*Zwx;PW&s9_VC6` zZmuml>b;3ow?=6Grx+2WK&40Xe8IdHExbY6V&i0h`?A4yn*oqt1AJuj@sL7)^``;b z0=9mpIM6AYb^)pW@OlOz>QcYiUyMR zK$M^BjdrSIg?&_diAJjz6!jv${ZJoBY7KcRfM=u-67$?hmyz7dr#HAe+HTulq2wu}6+i2&cxf#@yBwcN0>IvFx~Fun`|)e zBKi3eF!2?Pc)swp^F^c*gF9&JRNNWfXme7R#2unWxF6WYDutfbhc=&{i`;h9#RCnF zDP%MSJ841ZAo6q?IQuoO!ll(Jc0&Kc3C&$vUoCeU7~PuI#M~`Xv8G~a^SQdy$zpy| ztliT78AoIt{ffF@Lp?Y6`9^@opV|dNMr>STAhRCErgTR8ySQd$8SiFM_O3b{R#h&| znyzbC4KR!)YG?p@5w#{^m~xeCQCDKL#2=buUj3uJXF$>nm;>8ns}KObwa--qWt6nI8*t^?dMApvVpmUP(*F|qmbI4-(c6{z*Sz4{= zYmx;osB1tQH^;2KzP|v-rC~n&+A@h`y$g@5)!^(TLO84>9Qy_RE9bn)*V{oHQ_B~C zRwp!Xgmj<0K%iBx<+^vd>^t*4srLT4-2AI+e;@!9_l}iMG#WN-BNI_5Bg2%EqI>nR zocW=GNYNp5OWcfPOU*c#a>T@T3GK3omY)F`#Z;5@@ z*X2{aR9m;K9GcwDpOf|mJksVwL{U`8%YMy#kII?YEju&)JVlSF_61HpVsQY(NmJ)M8OiR(qYk-!TA;7VlOHBwau z)v~)J)#;N%&_O;IUG7Q_7`S~b$FRg5e`+HD8t}oAzW{7^{|ajJN74U7xCp21T*Gg;iuX|j+Gb_ z7SqXB2p1840u)V&wPIH&!(uA6a8mZn+pZ#V^W3w6zJDwJ_`E?|1p-vVlD|feaNYJd zuBRY`8B2F-YF7+pZ5d;W^LywA@( z<-m^*7Vj7=y_M&o2NVYgav$>V&UilXPSY<+b3|Th=eY`T8}maf%LHH+mvFU#(5p!e7YZ!YiI20mx((^Wp_pDeTJ*L?3yR-9~Y8T zLvE7|V$cQ}!}@%xory;iyqs8Tji6M*vFedNuKFyxg`N3|=gmzId}z&{-@l!ScQ<=p zZ%)b8WhGJ;m!sGxzIpsy_y=SYb-4-o{R@%G&OAm8LNcBmeR^$OLz+R zgs!hu?bY2yl~>L`D4JiWn?gC`n(!Xt8!s(HR{b4zgxRMAa`kM=lz&fBHDdFUlNO_` z)H~yjp4`Uwa6k_1(QRMJ9pN5xWy4TBUbdhEaPza{#SG^sxJT+Jr zEun|wiZ&(4FTOV->q}7?=;T8dJ-(~`i9hW+Ja@hf-1s3f1lmnK=&;f!Vhf35P}kXp~D;b z3d+!l{eRN_Sx$yVO)&4U%{lna_EAe>xVNexV2(-vZJ!IOtg4bf+y3JlN>xw;Bd>E& zM>vuhucl@R_yK<*=GzK>@It()=Ay$Rr~x|rK3v7|N{(-(g&?(?sW4rO~n=auWz7lcx85FW3*QeOzr z9OU(B9rO;+kkl1`er45`V!J}{HE zC#d&jH~jOy`sod~H_qip3hs>cNq)^GI~j1SlB$%xlWue7N!?D}6@sP!MdGNr4;&d{ zj5n=5!@5&mlBwjS6s5l-O`TGwK{jAcw;tNmt{uQ>9q_D1oS8AN zCd;bp=ZCJ_t62|8J1s+qjvDBR_bw%(?``;8^cd6pm>J9`{;nY%$|mX7hnfajmS`7~ zCpIt0Y*^n+%703Czq^h`jhX}wVu8Q3#aof5pR7+lLDYTU4ARnRHNq!!~>=1@T1fJ8fc<72y%)k$-Qedz%;c)8GhH(UAdo z7}qutUbRTRm0ORwU2PE%47J*b(mJYrityrnLHZEL=Tu~st$Z_w=7UHp;FY=(x|lm3L5lMFY@A5Bo+k2`bs-#qt)dz`S8rj5cIh8^Rg#2U9y4j zu298MKSjp_hTvNn*7&R4`bdSqq87E`Ae0H0Yh6@s{YZ(TO=c`dyD8Wg6hzyPG~B)u z$X5;|g?AGB3qPOdtBU$gac!vGPvToS#IYh@Ybr=XytAlYLskz3wLAbQ%KbFF@~Z#Z zfZV%i+U@L!eav0N83Jz@lgzR>#^?7Pnas!G<`Nvm3TwEjZuy-S_MtFi%SkgBz6Y}R z1$Oh|O?wMs{2<`5k-h%? z@$Z#8E&^7Q^<}F_gtlB5oXHJrgObHV3<*7gvZWO?p$P?TWp1v%LqV~=f=d?m7{%kcGE3JhLwmIw$(BAcqm4=SsU%;4A&YMA zTh<@<)5@6=KA*^IJeAqCc7a3>495K6T(-GQ$*@ZCPo9n|CqD`n@9qQgR*4*ynJaQZ zr-SH?pmH!~mWZu_9$&@u9*UD{>oylj&$^r4aX$v)WEt?KQ82?zqS9%uVR-m6)$W_Cena{|02w!hNg_ zYP}G(lF3!GN<&|$Jb;3v1o0~u6!IIup?|`06Kp|sU*Znekhd)(6;*E5%lAMkc z8XeW+swtePjUs%bZFlT2TU(!F6uqhkOIDWR(+pXTkv_UPr%m-$@&kf9w+`ITQk_UxI*4B#Q7m_{g_a*E!4_=x~?pY=oV z13$$F71pC-x4-PsrF#&$llJ9ddP71IH!o+QhXxM8!n3_zatP110`c1<+b|^(BwZGaU2g(3_t4 z0{IEpP$OpR5z4RO<;VSR#9&~K3jHmNpEkjB@1fYuAO=w`#)aj(f!quyE=iGjN7T}g zm(-fvkmU5=bxFB#;G$zi`8R33nN}uAvZLH%BZiLo-YGVKqKoNvD+`-p?<=3S>$>i! zLK!qw;z-0cnb8b&Tbn<7InM>l88#L6(}H&%ofOR?9#!M%#Oh-VR~{EG2y9Py-5ed9 zp)p1NHWYFU#_#8obwz`^Cw(iTPF;4e&zJ!i0nkM<^TyNu)V*NfZk>jR5%+B#m|Xn(MEbUiKERwjOW-8H0s^Gp)_xWHB?GYy&f8;GMIeDICQJ3inP zS!Fj~ddk(@yNibH3GF5wR$;%+O`$PVGZY|8&i1b_`eH2v4 zYu;(X1_DSx7Jp@yU16qceXzQatU9M9r*|n;&pd7)LTP^u5o4Dl9&&=O*CbaG{E0H@H+gAToARaFY2)iE1Wi z8y+Eks4y%K{j$c<}*;ehl7u7aPg?6oEPJij6%sU5XJoU&bBb>ni z7Z5-I-P!fxyEb~tXu>)i4f1?2baJi^Eiea;e|GBWzzJsXmssyR2=xzz8o4X)m`mv=A>+c3!;q|Ck#)Ph#h9H`$ z6UL{@zx5UN{)8v=mTI?`DFNTe((~Ok*J;r_F_$p#b1RS~k|n;+quqKOfd|a&>e)2y=y7~wwg!eQ zb7$;dezD%*7q%IA?+52}XM|7LkcWt%4sX8C~;z6rl$|b`b^^Qh!m|t`~P*@nJni~ z??UjDRXL;lfUjf+H-2+Fi&a48@T0ZX*)QAlL-W%IQa5dhf^v|}*$QSWAxq>X0g|X& zi-DOQM0YU%r}*Jt6Jmtx8YiJjqN2WP1wX#^OW65Uk2#1cd9Vi%OYcWFfwFg~zZyu> zuc&o%C6!brmGnu6B0;3i@vOGThak&;C$A-A5&l9@OJ1kiRnfqoV%%x(O?!dX zpu^fKo( zePy_U9JRY0_*YO_=DCIP`W^ngNdB8=>!IXz>Tpx6{6(GX2>BGSKul@>vIH5cINU{J zL6@bSN;C|*P+TTTWVP|93MBl%Qh6eTl7YQz(4wor&RFMcH+ihCZ1t z)wXHV6HVc4&jv{wfmPrgJx5wt&v;?%`I=Om-uccB@sV=fgzb1Ia7ebpN&$b-8cG?o*u?OEPb^0Om<6@o+CaE|Ls_ zH?mxVRp|a9HHP|;Q|^s(L2dDQcYDo0+G78R9$i~c>)}+j?!e08vh_~N_o+yD0XRut zq+hZ%%5UrGV0?^IMbc54cg>SxiB~lx0yLO}x@VfnVY6Y}{gR3nH_(s(*#bUo+ae=YYG*NY%WJD_N$4Wq_E-6?$otZI@O<)T*_18dlfhdUG%25hI%C_7e z&~aP&IrS&QJrb~5C=Mp0-nluCI~%~^;T)FU2BGkWFslynw1QCdr33Jqay}1We~`R2 z*mO=~f_Df>)cf(Tf?T?>OUM-^XF%6i@bsxHImU^->;5il0HYdP1&y)~n~WgS{eE%M zh`7)BZh;?Fy3!ceVQf@M2B;rCS9{zp)Gm9oa77C*Ph5jux5UejXhSUrW#|Cy#x7(` zjQ7+XbX3T3t-x?8dMS)7^E9iu`S5Gw=Q#OYrl$70DfBPW?hNmlYWoVlc?KX0Yo3`< z-XzgxK5;4-DfJK*wuChibM%;Aq-U}HQb6k~4ndE<=$V4XJ1*@guQ$ABfDgOe9tDm} z-_1joYRgrChiTn~<)&;@dZoN+Kn2qfhJ};?T);6C08>Z1HT7iU zhred)h@W1{RsA;dVb!szI83_KYIWnzkhb2v3#n`k$i5XR1yv2}#bVq7w)ch$jVJMM; z*`2wFf<+t+(T@AB&M2%DiH^|SWizK0ekHg>*ACbq6#o9v5gx@IS`dE2*}mQGDqer` z7dKS}%IS1pL>pBSm^dt18*0BwsQ!CF3an>kzrT(Qty&fB zmOr?5J5B+L1bscMICupSm+DscN?@gO<#p;qZ29A2wC3RvYz~4f7+Ef znOHQ)VFuduk?&yd$mw_g=U|vtG0U{~&9CjbZZ4M}^XVR%W|EDrEON>eMI4`}62VRN zEvur?6-hrXk++76j|_gA%g=0(i~N6cOKvA>+~=k)?1hFNSEsd>pNkwuX}>I8gH^+f zf$ye?M;52D(x{2S#&wJ8>+>`m@bd@>O@&m6)FT6?zIlE-aGIu?=BZaio$|BTwRt=WVj@=oL2dg@q;)dJq9~N)aI~o&>D2Lg%o|i(+z(;TEgICVTyppZxiy)$V6I z*(ODt{AamZ3VAZb@h@p#ZT=-;=5GEO2G(PL=hFMTJ(k1}st20?3itN96g5}CP~Nzij;85XzHUFmaJ)dw`Q=c&st{~7#+SbgJ3$0G%~WIe;WUuEi)`PYBe3>gM2Vm_Bs zJS0)R=1?!UczNWo;GbK3`yX(xOvD7*J07PM;s{tI5b%xD~6t# z`^6!stuzsMAEM>9Wi0mTACD8aW)g!Yqk7)WMPAM_b@o+I>`_uUcF~8cO&SI zV>e5r*JHb@vM={J=$>49@n03&)ZHIilt8gvE!=>@K_7qQ`NCabywwTe488?JC(Zuq92J2*~pJ?lH^&ED>M1uM^S zwj}Mvg$DbP4kwS>SEyt$W`|m#*KXs=dp zI2XN?E!7lEbx`99R>v18Cvg>PIOf0a#4ZR}d}jiooCMoluFBObSPTsma2?GJPQ znmef*xB%pE+Vp{6N4F1&?W$alK1c|M)A}RoCIBD5ink12v74B95Guk~>y03~L~E#q zLmBxHXJ)4oWaOBQ#Qvn%mwrnVhb(kXCio9xIfkW}F!p(J=9Wxt<3OIC05l5J=uP`Cd2 z^{bC(XG^mUgVwAylsX9?HJhrfZoT*_pD4Qq;WaQ1d)vfd8S=~HtiuDJOQgn-)<>OC zY_U_m+l`XS7Hk~|o0>dRA_dGXQ#^k`Hl6>)POK6Uv-22E&_M+#pV7>*4i!^-BC1aY zEI}E)*0nLsd50y>yyl}S>o8rr9BsRw=GVa#0$FBvR8PJlR7~;O)cswPL)J?JtkpvHM%#W$6`ly~qC!dg;D_z< z)#5)=*)88jzwumZ+o2m90sPA@ulrq67ir3)yqMsp!B!{r$SCKE@}QiJ6rfKszG8LI z$4;Bo6<>;+N*Xo}1ldnYJcrL#3VEjz%__2ddZi1{Oy*Ih_-JmNi{Cf3PPY`sVE4>? z64xmD;U856VFXtxc=^~0ihCcWH^Q4^M+$PM2c;QMbEw;p}_b{sAQeWS&nMt7~Voc4Jk%`k#7u>dx9ZsI@Pas=p?S-hPiBzcU8S{?F~&>ia9L zJ*!>sH;*KiEiw;ZT0cItUCtJRXC7qV_m6#f+|P{xk&;j6)LEckn~F8J|KS;+o5g;> zP1uGj`~3=Ct-8b-fX|`*ctMkZ%ebI257(uv2~WzHKy$7mkuLxf>>Wa&|00uSEQij@ zlZe_eHNSnloN>4M<>}PLe-iInm%jPOmZuG1_4iR*)xDe7Fgjms-bDG|FoFOE@7d@* zWG#16gRoEKheakeUd+{u=;OGlZU3nKqBWYPG}_oj;RcJxoYUKA`Z<7>Mj z@T#mQw*=chk^hgT_wY;degF5tU6y7`b75JUnwgn@A3T;fcxe;&+~eo$C1Nu9##@iYX2Korp z$r#mvIgLS?HBLTLy3oNdQNFjdtJ8Bzj1Xok@<6$sRoZ7__*he|)9kw;UaxOc;byF? zn_*#{`yAEXSjEs8`jnBR{JW)lV)ck5 zM2!A5p{ZlFoAyJAnc28Y(ZjEI;5-4co#3wN#ugb^_IO;ubW8$w%WjChhfPVZ-_uQn zL=3}!MF9^$C7sJ(=xB_+_wvedI?FJ9B9!i)>qF^id>FY%z1kV1p|g2?&#DiVG0aE= zuX@;&2Ty0DZ0Txuk^^m5GGpQb6E_13$K-<-0~~4Hg62($C;EXAiJOj&Y}u-`MQ4rK z|L&gfSV^B{y?^#LuIP}_3;+M-5hdz6g67Cw$7yqkL+Yg@=RHgPQd5hP&7YdjgzQ89 zoLBT_gu7J9&A$&IKko3Lm(u(brbZmVrmp(cM8JF2B&qMmTz(CYLs6|^kXFOM%R`h5 zyjmgqu_`E1|Ni_5$FJnyd@XrvU?s%i1wF&kfdVjKZ@=#fcy03iMWftx%irgD;^O_ z;=IoYS_nvEDOWO*1g{`Y87%~-eRk`9E>b^yMsVDZ5huPK(*Bls9TXd7s{W-{gE0ny zzs&sXxd-v)xZ{_`{Q3{)@)_uo=X;a? zB$4ssjr|lDnR>yhR-;MVtSnKc^see=MQOQ=)Bw7EGBjeVR5f`hyl-RnIUx^vW7>8m zxa^BsFXdxp3*RszLH7gg6+L!+E^c2TWs7XRjj~;lR}79BfNgcf>uaRW-=aGy4@%;F zVz8yIeLGUpiTb4o)l|7_La-hv(Vd%pDK~K-XZMLymCOpV_IJ_wQdl(=23_uiJ;Y!EffxEV5*JHYnL;?CBF(PAwFL z*mK%E_-{Yz&_>lpZ2Jn7BJ7Fb6%yRr4r_quOI3W#(0ZR25kjcN7|yjsH9c*nHn?@O zwp$EDCOnP%DvKBt4t6`fgnpsGwx*oz`$ONGAtVDLg&Nq6#4cK`FLI_UCz-05B5V!A zKsoww;ObJ$bWE918@X~=r<^J3N=`ZW2BC7ZOA~b^Gvr_5WoTV6ro5_V?@=hZylGM` zTR#>y5g6u$`NXY;E_hi;(htK8<}N9Br+Gf?0^ zq^58VrOBP!9b$v(DWBF-k{c<;_p72_Y3I%Re zQjao2egh0@wJhk}2+DJ88)F-PZ;nA(YWpZo@yw|4*Irgmzi56-2ldU_&{@MKk_+(s z$s2=#YRm-B{&_wR@6F|{{6`(p~#6J0x_Y$(*HP$FXzhy!k@=d31 zTJxcI6Y;{F?x{oibcyceX&cYs=i&!VIlh3P{mg~;H~ujGW4(OMb~ELllbA195~dz# z8nxBW%&>!kKAP4flaWMfHXdY;!;`>FNoC^orfZdxpUn14!Gh9D(7?>sB%c z_>?x;2R|87CYN-~Hz|7M_G?q}@Z?WSllDr*htM=ZJSKuDAs+IcTKdjH2e&2}&{|TJ z8>CGJZGV_Kw-R?KkvLJ}05w(~6qu<@29O7jEtd*URks>q6ohH_!gGR$WJ*t7C8frI zOB4QBOBX6+)lJu~#X&U6XLbn2jmVO@v<%#_R%u49(vT-lD|RntMhx=0N_pp$vn^`Cf4-$1=Qp=4W5y{T+c0Di_Ti z`!!CtgnLIkcNjotQY`O>ameUe@QPCvsH^t>l2&&{bn?6WA}56lBC2|?J_8y@ zAj^t164L4HKSP%b=|d(MUXJpnCo-B37BpIzznNOc8rmmnTjF_im*foS^M%G-HD}ev zeK-@UH%ygX;4i(&ba%qs#~qy#B27KC;D$(Q+TvR_!S?8|*Jt_OT>i}WjqmfNGpkHV zkIsqMX@0c4$@d}bET7%8C03cr3o&eOFTc{_Ie-0mj%-2MkGCtrtl?>dXW#g!Gf;I^ z)Ih5J)zYJl;6n{UW6LQLzL`<&2Q{gvg&%B$z3UP{h|g>@ zxuwkzTyq1GeePkr zsyhv~EQ1!zmSexFSX+u%4DF1#US$BDeq4$kILC9&ODrJscC{Rr-FP9$Kwm=zq7V?H zx0Z3pxK-_g#=Jbeiz-1K1?zwV_Yq!AlZZj^grnjDA3K7j*>?G9c0#DsqtSg`=~&X; z1?%@Gdg}$;L20eUTd@2iV@3nqNrVfLzLjI}z7JFs4SnxVL$PnZt;_)0v>)F+3S77D zdAc!YE&wp6zA4#RtA8?wKGQOL(Q=%O(b#d~t_~Vnm57nCc~8vL!QOYvu-?I-ip`B; zP?g+I0~b+p=H>#QEkX=`)F*_l$~9OO5ltzLTZF>S2<1aXOgJ_@)N7XCUvUF1T`Bgo8a$91sdWn4%CXlOQPijjV!fdmoS9aW96T5pZo(v$ z?<~m~AJsC<1AL=$);xRWUx&uya#~IxmoLIJ@UW-ZR&+_`g;>>3rDPfH!{d{+(vbag z{5}~csUhpBu>)X6eBu1R8U?NJgm&MaL`$7oZ-lj4`7>}M%E7N_*YAr5K9q$(jUz{ zrq^y0Y&u0|`F8cSG{Ee^#qP2ruFtAracV-*DKCOX06?iF9_NvH!t4EqsCWsxVc(z6 zZ|qJje?awnZjsc1za$g8Lc`u**avx~lRCNqvp`||4+gwC5;CoJV)g`GT*dw`) z<1`vtAIHKYbcwoJew(GH<(6jWvLUuJxG=(!f8*YVV(BpM4iC0p-^L%Mj9l(HP{^5e z(_-Y!Tkl7Y0c6qNw%=;%-_lD_ElE=JAgM^~gBvo-H%FCAN4Rvd-h7h~MK8XPrM|Zl*N=z(t z*@!bNy=nyAv%Q~PHk>%FG)dHD**CkGg0La2;7k}L^O?;pv=&cuo_bexzHOu@{FD3JA=XUm+AH8h5}qhq_6SKQq9o{+D3&iLC56Bp?&bUeN1+K zm|VCU(-2G9dc&F(2?nC<`*TOT5Urj z45#$xdEY`-lK#X;u+pd z+&j}a%p2Kz1W;w~evTJE_YRit?1rKqJ_odZ4{N;cdcJP&q@3A-kiB)#A;eZ5?|qMc zvtnW_9WBI;i3IddGyfhYN-{UrP-@Rn?GWGUm*atIe1wMMuj}@=5GDv*K&|HNW;^0T zP<2PH_37)qMtJB8N;ez%7RWf}|78Kb&=?#QR8{3$%;G-W!|CmuH00K5U*~^TGmR^% zdR%`azn;paxyF#2N@Xrl#V|1|`Z1`<6Nia7yIu{w$O;|fj!g{ei>-H09eKZ`-^apV zBj2v7E9fRcKbcbEiA00HP$$Hlbf{4hr#IE7YlHE5S2pY4>CwxM!G&c97FEfwJ#Dau zdBbrM*t#m+A(U%vJ{t8+$G&4?I~c@X#j#&}qFZy4Hv5{ek!Pdh(<@j+vW4P$M$NZn z_ct>fXP$^92Y+k6E3ZgZ?!oa*uWo|ejtYZ-g#z(<+21r}!q+6xaj{o_vVP0=V*P$r zE11z}DKfnW?=pk$Su%37IH4K1xTbEqfWaShr#MAy9IABJVmpA*L#YP!)CcwKGS-Xd zaBP4ZIdc(S=`&~JyT~O2oD<94qj0B{31Bu;)+MvM0a7>US1SBFb~#bIoVI^Yc!PfN zMjz$s*sJC8&s}(3jQ_%7+B$rTy52f}=Eao@Wk=*?AwZ-5Dxe7?^2L1RV)FLH#rt4L zN)0ddzX8EB<@e*y^I+gljUI&ESpg`Vn&(!`obc>(t-h+*V45^G+pu*4A7x1iZQGBW zB^7UTnM)xtFR5IV>c&6eu2~X7Dlh&vV&2Gw%}c;DIQ){Ot+K5!d7|_GKXlz%&|Ag4?*; zhQKvLA%}h@J?EbX{cZ06G5uMo#$(%$df2|CJS<^(shlkk)>crA#k>`914>VcYz8yW zRgmgZM>HPxU`XMjDar@s^|YuLse8V$!L$F3W5UgJVx^}`i1^`&DmoG`4al_@TnBQz z#d<(^ApyLNt^u(hnUPPJv+|&6?%}~pR^z-S9C2Sblc^cR086mkG@OLWbq@shh36j* zQHP7aE1Z;{)p zuE@0OWs4u#a;^;rPH|8<7nojN{w5Z7!Z58b@*ydCU~-=5?ZVTqLM=B{jtB35ftO>+ zyxUBtWABBG%Zp}04+m&dyOU@Q-z{A4 z$6p3pGa_ExC~_%E zWREX9%yZ^afnk+`Acc`+lesmirkys`c6d^;L-#w-N;Wp>`p?$_`hV@?y6j`ZiGmap z^%{$T#{CR8UX3FiF12euB)qPL$Y6+phpC6-e=h^ zvh(}T>&;oH2?Hn3I;OCy?$Kct?prHLX%~cacpFOV8fMj9Hv^34XOE=Wjb^WpLy&)>DX7p0;Dk4_$d)*N) zI@|%B)@3QkinlT>rQ74g9dXAO5Y3=Leo#P&1Ay9+AGn9KP(j38uBYTgxlftkUU4^5c+j{s|io083grYGX++tb6ncuk#Ho#3vMBp2n_ugs@|A5Ea{ z>r1l4l?+GX!FKP_q_LiHTM9O~zeS_7&iI&3GjBx0o|2NGzF``coBIwp&*CqUV6-m+ zTxFuOI2Bv(ykIbo5$b9TZ=i5q9cwvLufz?Zu$vh(%8ab=@orKlgs?#~9h~_?sJ7B`xjnUYJ3O71%pzGA&y*8C>zR-_#F#1Y(Z&J% zSJoB4{Zhg8a>iPqun-^~KN*n!5Cr&e5M8UT0jxXFJJ?XP`N`a{Gr~M76*pZ*;u0*i zzCm7(s=2x9(Y?to9=b8wG ztV*+AJ}Vn!10Qzym51u`CyxwrMOrVJFncNhNPJNZVJinO-zzM-UXvntyUmset*Y0! zIXZD^si(KZ3Gz`Ilz{8FOGQ(wtpKF)2A{pz87G%MtUfhs%KpMMvS4e5-cdq!9u3uYS{$w3tgT3HF+__-sGt<0WLkO zt@56Wv}T$CC8$7^-)m$@x=PdQc%wzha&@8A+=V$j!Up`O`QBk1edCi>-DaCofUMby zt*`ki31*rbbSjGO$I`}WBC4$n85ClE~zF`_t@;x1#joo|@ z7MrW17Ie}B)u436QMz`^?A4v43ryj$C^w{QXQShQ(yViw-=e8Y-oWERjG-#)dnPs= z5aULS`G3oI!>ETd?x483Q0(cvqDCk&5ux@>@dsFNar@{MbH+w1<_I^F&pQkn>Zx2> z%Etz5I|p{1^{^lSp09%>b+AvEA;eN4a(^X$P)m4-r9oRr8mLk1CJ<0zC`LHD8DeVLiJ$I$0Eq;jo8ht{hEnr>*G*y&8#{GzTeoiW%KJ|I*T zSkBA2Up!xvT-WTD;+OqLOXa0tyy#DSX8(SjN{C&yM4lImIdhPp=8_hS_c5-f=Egly zRLi`)!{mQEhW*vvZb80R zbY1UYmRLtR#kVKLl16t<9#|0I9SchBGMIpoac^zT4We(aWxe`yWCUlAcp{30P4jbeY$xM8~Fy^xUTDSW|e- zxUuGpPSOL_^r1!oEClV%8Ha6ndFmh1!4By6V>?aKmLuaSSNCV~j7%Q?eTJ zK=*S?ms?^+zVJCHbBtxbYK;rJ8C>yZOQ>B^IE&0+T4R19;DJ^s3ze7ZN8!00abMz+ znX?YMB?1$aEe)w;%jJe2LT>bo(Bv)nM%k8*rARDih%{hs+g%KsV)eiG6U`}oy$*3| z#cR-y5$Zwn!-AifmFhKiqAq6HiUvbu^*r8#gNZ-9mUtYb!MRS<**)Y$Xwk;pygn?u zDh{@iGB$3DR#4vV4Ci}z37t@4R1cgI%p+EQ0~v?BB2~lD`PyLHQ+N;Z*y|eBzHRq1 zSZdBA^YeqqD8oCJuS}_P;=QNEE&N!IV6k#qa6+DBj+H03K|D|J~CsMXQ$gcHs3Ln-y=T=|7 z@(JytO4m{q8JeUBarO1*IGz#Io&ZYrsY#Sut&DZfrS(E8GN5<>)ZJX5iy-nGlt<9D zJ~O*Si6^MSA9`0F=Un2r99bT?ba3h!7dTsV>5GkN2(WyK)kaLdRrBy9v%L4iO>D1?1qVvZG>TSbkXTkE7e~x`EmJ9x6}ojud|0Ezm9FeH91MYIbXw zGoGof)S^N(n*esyt1_SC*?yR)yKn&R_yL3ltxl9KB0K>aPdw6Y2gWKzpvckzzx;x= z#d38HL_q$!H}x z!Qem%-%Aki?hDuUAfMU4FYyP4DJe1n+5?|?Y@si-D`tA$Fl}+(kdh0a%1>jQ=)2Fa@!qO=; zsEpGly!)|4knOTRe+}{Inz}6}VJ~+A+(qe?pdViLZb}LVyS%OvS~=qc$Q5FL+_@@Ki#>57j^|$esIi*;Be^vSoF4V zOfByFRwA{TJeC+3e~Lvt_?lftdfHGeSh>Bd_kol`;+5LJj#R(lquW z^`m*#kYMQLxc*jN1;4k?gFQd+v42w9^HwRGm#}(JVkRI}mbxFzw#r`H~y||wStY9Uz_>1rp?0^ zH1qY`5Ro|T5G1QF0fFpJ-0UykF4{UrPy_^3N3gwKkX0x4dWf zH4~4JR@;BuwsDR+^xe_sxNF6Ztv#I^#e0o*c~Ucc)Cwy~&mWjS>ar0I${ic;;Rbm*&iVjLIjK{XpT zwL%1yE3jrqb&j(=#LQ4q|7@5V2g-vFDN{;3=pSn^Qmp=!%$d_ap4svsb6YCW13B$v zoz84%JC)HSiEz*}vzVrO*+dS6(=VXUffC1eK|c+LrPxndT+aOO;>-L8f;s0VZ?|Le z99dT-;$mGxrbn_Ao{EP~_ytdRFmj)9A{k-#lCST+@Hz8>RV~W-k@LZoWGNf2c9WGa z@5jz_oRA8^!N&(s`oW?qYF{{dwJ7&*o}1ac;%BE9aN)$Rq*qbNVkpL zbMFdiGVq1M2Z^U6gqHpOJ^s)7A;d)65NffS!t2{0-$x2h50^g)xbgj)VV0)L|IlYV zx*AoHj{|BOACuNv-`#{S>RbyKZhpD7>sEB%7JBXTIMd|;9LsfnZL!}pGrv9{H(lw-L2$4OR~2MADt_TZyzRa$c;K@?X}4lD_6P zbdlXj;rzikULk+DcK-gv3-rR(^&e1lpy69^m*5@!#JzjC=RIu3T>c$~)A+jILcdBV z@&T>MK6`>5)buKyG}x!=kvvfiuBN+zQH9>}<3m*g()5)j<>s-;Kfro$8u$|MXUc%w zN?t9gx+Wo1})?rP6jvRtHEtA-7QmREnE`n>taz-=p5CRslR|iDxTj=j` z7IEh%8-n=-KT}~&E@q`qhPXYkQ^8IZ1FnyxKHN#EzS?S`yy=zw9aK+A?hR?Q-VJ6R zoJgL?(eCL?6UN#IAh>Q-;)?1a5O{D7&SB_j$9F-G(|BZL*&A>WGR;S@-HxHDUkgjt zvXhDn5{R7|R}!DH`LTREAj*&78pWzme#=mPcj3@#tFpLA=2ST->ub6wyhD2)rYidPKC3$`D5wVYobk;DEkmsF!n4i&D{ zYt()mTo%)DU^H}AAFxs!(Ug?>42F60I2>^S@a(*MPG%pQb@|59WhT_e%z$q_d?BCN z#&UvsQ`ZvVh39$6qHs&!r(t9Wm^>t_GN;I42a}n)=sJ6xF>sPm8WyNFFO;T~X}V$| zv^bAjFnm3p20!oJtJCKH_gO)9?hx<7#JzJcj0dZa%1aJ+iw9X*8eATRi86&UnQDnm7++pD8Goa^ zpt7hcme&WHNnCFmhD69s+ku*KlS(W4@A_YEL9}stRjJT*>YH0X$As;sh}?w$Z_i<$4F(&7w_AFPNWf84?Otb$0AG16c+u&895h>V~-5A^(II%V&&FDy|gPQL=rC z=Cm6fxJc!DwQD7v^-*pECRnoIx2j7zRJ?BJc8}xMFGou@j8qTOIgFk>N1e_Qgsl&&Qe)arDkzwWXk$m+ap3Q04gbq{kRj0lX?({K zJKT~+^;BVvc4q$XIH!+?N%3FODV8|m4$PJb=+@~}9qOo;p%Z052b$~3zbynLjl|%h z!j(Hnf|fKaqbaUf%cnH+T2~Lhf$xC4fSOwFMByJ5B@ow(gay;Owi5fWIRIHQU5c*(ZS6RUy?H72wW)Qx>vG=x zh5R*1o4KK4xtO$;{qwua25zS)s} ztF15Eyx;Dsit>+ztV{Za^)XA@&lY){Zr7(m8Un?mgj&p(%h`^{Zz||rP`7&jEcfk0 zm_Ah}`q{YS5+Ff$UY3ZA^cZMg^Og$km9vYU3zKoB8-?II65zgl>Cy>Jw3=gZKDgZZ z?o4spU~Z@`Rqa8AOcgDv%vt+L641;v7`P0sbyzw?pMq7)lTps7X<{ZDJA50VdUd|a z8lX<*7&}hTZL+ivR&!1k5_*Iv+T{Ywjp)Th6<#0fd2H9y-yC8`BzX#1eXoi$RPg;W zBg>>tzLYvgGYNKGXR9b~Jfq>81YM1*UzLw0SesNtTfowLMgmjoYlac|^1Ye%(n$B7 zP(H4j)z0K#YfeqVm@OiGqZzXBPGjUvL*rNzC;NS90a5jSt0Pi;`_V`WqiEP=RQOdf zIuXe|m7~^up(T5zP7p$aQF3)FmYcm`E9{-At4Q1?*m>Z2OG|Hx>`^S_CUcEru#sj- z*t6APctLX~!=~k7e3Q%!I&NP)s0gL*{)|v}VX3*?U3S|Y__Iwo?sCdul#BKA%dJ88 zW50wjMhL1cj14D{Xz~A*p0?gTSA*w=V_kyF$HeCpXXEPnWaP_3-%;?B!THIvO63BB zMgzBOpX72_X*;y`tWc-23$4afx(SFu5Yc=SfAn1>A@z{wNR=}vVc*rsv1 z+mobq8!gX77Ds26a@Fc1oDv}gk9liynPX+N<|Sk1FRgI@>|@|bysOUu_}5ciR5W9? zMwxA-)VD8uD>Gziu}o$rP&E8vU#6a$TmbOtt0oO7%C9N=%|%(aI|bW|0t0UP4Rx%Z z#jei&QPcw)5U5o>lm8*TDQ zwRf9l$Iw}~n{(~QJl$jOMCG`3gg8{Z6$XbS%r9l7>}OmfU}_G|@ip%jmeemnWo0p897<$M*`Waaz~2?oNaBtLv&;l1wdVQFzVO>}FA6ABm0Ev)4DdUOV5Z*z$B1%&Ho4 z3(V|17q(xs7c4(-+48?S{z3-j0V8}$P-%a6ooqa$u~X%syzYCtY(n-FL+X;6MaQ!mecnTo_g4mIk2ZDGpF|=#8 zR}fs;=)KLKma|TXo^Y#GbnBr^tQ_M8e()#ar+X<8Nl1Q2w4|iy4Ow< zUSe-^*0FE=8JzMVIEH=9GDGwm>)SImORwE-ykafsj$mTBd@R0Tq*(*F6MR;S-c)hg zw8+?c;I}@Vo`@A`V&vM7dQsE)(05IuDy+Xf)f(1T%HOHe6J$;j7BR_Ee^6vox|9EC zp0NCf{{$a{^!444fwe)u#%E!SbAHGa4)6|-Z9)l)SdutJgo92Wde|vR1cYVtyfCscE5P3ofQtqhUMziJ@M62 zDFT!4!2g@Aky!mV3E;~tPrPRoM})#wFv;B1<=b zJ9%I^o3LO;G?(dxV?Oqb5(=iPb~@&RJ)!hrMah2Bd?4QYEyoG(SZ0hblZ5lwmh- zT7-Sa<%i_CAQ&wc;+o;=ak35`a_WLN@$Cm*dTw9ap z1W5xjRahIeW2e=AiLu1aPdsI5y#$VQGr37;9P9Hu6qB1|e8>(ywq@Ksd}m4GTl&Cu zfEd+)pB?&y(@`k;z1zYHkX)7X2Tz}$AZ7MlAAX4D$wLkBiyiD*4~VvxR;jhNji3R= z!MePFsW@j|lmq+bRZl7tH8*IP)q$WQYW?$Tm@@ZQ@(+9IR5$?3`d#!AzM6S~0mtvR zVuM3Ki<7=n7pM<;({BO>gIzA~N@u6*%KS){PSBI6vTTwNv7)PNWD?T?J4Dxw+Z6m} zJ^q~cVS%$`=l%L1;WU`>E2zY-rfS^yZ5nI+NejhTE4wp9cSK`%9bG*-Y6XDZQN9b_(*a@3FvgX4@Zj zpp`Q;5qBC!7+au2o_$;5J^^MsK>^TQD^KQ(qZp;b_rp*OHvdFlUsNXL?U9UaUs@18 z_M@T7a2}YqCk9z(0_yLCB9u-k?_!}_mmG*4XS@`S9H;)nSlg>;+&XAn$^6b{d|2zG zpA3%u$g3_>yoQ~Z!D)(x9?3`o=1yA%dL-(n!v>ga-^($gQ}jr$y#Psd>&|@Xqc)`r z2jb)r=kD5-Bcm0>>2ak@W4W=L7zlA>O02we%4B}j>(C;JGJ2qD{gLqwY7dsfJA3j+m4viw5wz&rp&=#g` zIcqO1fC6)-O2z>7^0c2j?Ed|8t6HKupv#pNJ{o(*>-2Ff+2W5XW24#NMO-KahqkTB z7ZuE@z|X3elRrN*5lRRL;q*qEaW2jyvId;B&oPqe4F?1FV(GY{x@ms zJKg}Fp+#}Fdtz~QsT`!PhVkF0f;e2~%ziD~_VFz527bKRnLMubL;h>In8^I6$2AqT zBBS3Yw=wk+X7-#Zt(?Y&nOS-ldBp|WBRO|RXQmr2%wYLh0#8gCJIpN23Fu1Ib|eir z$LNWCn69bN3&hf4j6kgs@qMhFKHWNjKDlDL=d*sABGl!wGRpUA%5}>y$DP)%h9Xnqn&}~u^(ASVo=>h_0lRV4kPRxVNZ#|H5?a8lrLyow zN_69?(|9_t)8Y`XU`P%_`mA4h$So0;^QCGO<(uLv=dmXwT;AkZ}Ja|qP-;rA<%XRTwv-5SY3_bCllUeoxF1U4u1)t!HME{Qg~dewcl)Awr=<$c??I_ zM6nMxxF*tjJ*h65@gbB06m22`O3sJ!Q;%fGxib9!+{WB~b3PLsbyB(CVt8{O+O4J0 zE)U&}H?sS3q@^;#wU-`Bf#?1dYVWM~qh|(um^b+3ZsU2u#1TLQdO0e>qF&VPJ|JJz zllwY8$Y2eHZpgU^iU1_~KT;G`{_YWHg$8Dyid4@R3oA(dH29w`V0OJ+pYaB4Y|yVAFE{wjz8!K-V6p7Ea@k?zre}?^v(|(M%~3PoHM;Nm_oVt){uOSSFzw& zu&4WKUCYlsGa44D?RU2%#zOrRuPG>gAIh4!ck-6BE|(d(-=hT1_%8ML z{QR*}S~-L|2cD?oPw^7z*B=+=Rurf+dUV)OTKe?QzHI~3CwcFnfN&QkH6V6rXp{t8xg_%RM^hH(;IM2D^uQP@uf`Zg z3%21@+iZ`w7<3Yzh@rw8kYv4~b;d$G1d<)tjldk>3Rs&WY4l?d9k+|8%_0OC7}C@8 zAo5^Dr|3!}%;KOUWGXl3H@CTlw1(3riv>_q6aX~NDaNk^m&t4cqEFV(v z;Lzg}1pS2P*_E(z)uMbk6<-S*71vA8bVyZgn{lF(i*fIs{it%-b?}WTj6#>nS$;tMy`+gq}L89FjIoq-3jzt&Z=RkM`^F0T2JNxEmlR>Icd=ski{ zl)HyV7W1fWeGL!bp4EhQw2D7tq}JQS99%A2!WPDnjT~FdsQ z__-}3>TSdXN+GUrgJ5>E=j!8JPe))f9|!byB@f1gi^o(irF zC7&%YfgeHT1nN1dtu?Oe<12tFrxPO$;drsA_BU-myF;u_G9Ed4?xakyLkGXC<19yb z?MnjQ6x1h&z_VOmsIZ=IR*e~g%#97W)dsDT``0~54YzkPu~8e!I9>U1AzoeuC$7Hm z6gOiHf&xmTX8F(}ltr)@S!FS0J`^I+rz4)5;R}F!%2aAf1DD}?jF-Ey?3MCW@;~~` z7zgg3w?x=__XBUVW@D^AZy1tt)Ph$>e>M#dA(!hz#iJ;tE=|md0Cy%wEM--Z8+($8 zRi1@!BL56fdIzF;27cdYC{$*q-{&$uP~9F1HL^y7gL)&6yZNgKV~xe~A78UAlmK8i zP7fpoEp5n~P&#=L60!_=8c+RKr0%jpcUetEBdA4QwVAlaMdq*QdEQ<6BDYQDu+|;% z*hTXBdz*ZQEIz;wL*czo6S4XW`62E83hqka0C97rxv(OS^;UAi^pC*7A*+f1CPSvT zVIagvyJ>8JpNCNJM4`gjBK=b9SU2$mA&@x&KnNS*s!ELI@XejxYh5}6G_zQu=%E@R zLe{X+P~Rq@mQMr252yQ8ClWgV@Va&a(|{O<=d1PKo3giI(Z3S(2zs#hEu=O@rq;3Y zFKzjk%3jmjj#bArl2qh&hZ$@RUieN!19lm)xzRk+D*;^_UG_9vi@D#snxf-x z5EH6{nJ3=GYq}#`kx-ZY^p*Qc_=_bpDC?RQwFIMTZ=Lma<|axatybZJ{pKA{bvz%# z*S3pRGO<|rmfOwR0_Aoh(_?{3b=78ts^2)hg!pLM-!?KvIhlC}J=_3@(w{SlbIM>GpU{Tm)L>_vSrjF*Nw}u7DvBl|C<> z1Zi#ot!EO8+;5{CM*KEJm%ayF;2D?v*hIOesn&EeZP1OB)-n&V64w$B^JD2yW{_1& zT#j=HgB3(7Er5D8eg{&ZiWv06x?I5fl3G@~yM}c##({8~>u#vG{S4?%~Ahn>#Y;@18Qp zQLNVUEOT92&M7`H5VO{kkJoDaTeZZ}w9@cydp+4|^uMdRrztZ}Qb0a8)5G8(msY$| zTnbl>Si2c&JK1z}M1tD+=U z5Vhx-jyz2$_3~YiyeAETbbaBOUlo^5;Vv~y4l*Bo(j1S}7p$|h*v9`2cMz}gbTqZn z5ZA~ww~(X&=?yD}_cZLt53?Q<|97~a*q8yhLro#v@({dmKHgj-lg5HMqckDAt_`_a z+{So3j)X6NEvMV7;jZC=msR?$99etM^s*(n##BnrLqIX`4*hTk#tkJ(E~vvasDtA^ zZPlH&$|o&t4ir}YuA%xnu>4LgoyXBxXfc-FT&MeOv*MlFCxuXSB#^0>;8PJ8Q#JCQ zbNRw!6zC|3`9gK95YXHI2R?%)qB2@RiV)5_ z%EHcceBA+Ha}6jWzXjU7#8ru}ggjxunzy`3Xu>PMVBdg_^Y8m@F(lt2H}%xMAy7K| z{ZOv-j!*2%1^A^?{{f0QpviBvY^2lv-pyvl;=P|M^Mxx9HW#LDN~m;kiunpNfyg|7$s;>nAc$Fo$B~+mDLyk`j=(h3I8Hs-U-#C!uwaaM~;(CJUN3edr!N~a!Lfg?Li(RRZEZXd;W5AM13pN^(PNZ#dNREr>;s#g_%zR+@dlv&AMQ&!V?{8T zyJkdjn7v3-Ub`@563xkoN#Hc}O3T85%uQB8)~f7BY}>7e*#v?A4C%%p7_*Py)-8J{ zduG8gPTf||=Qdh*Nq#aVYUK3F@^Yw^YUMvULfMB0)hbOnr>Nip%2uaRf(zf*GBqsG zw&;?Z)9+r!erQoFVo9v4B{6(OG>RdA%G`G8OQJ2Yk-VA-z}hbAZSKw>K4p1T0OzM? z{1){A=NSD7Ibhf9gsgcT#=@aZUo`_h$V-mHhUDspe{PEwB8nyi77;o_6ayus7-So5 ztOch&V#Fv_AO7PZJ~jN)qqSRLqJd)410cS`Q<3Flx&`x35U}8#JSJ9ZB_^u;c`27> z^W0)Z@O0h|3pT+l)<*6=5h-+0td%S5avO%wKnq$XJ^1=GscZ z``7%XppOT*3Ne`QMqZfk+8<6dx?~gYo^XBYoD`pP?vHP5 z-M!7LRe@`BD8fCH{A>jH+U`zUbpX{`y9b0fo%uH6(-`IUKDP*c%{rej~S+8P`b4G`V+1@kpXk?1czK;gn)_| zw=%%Myi#lCqG7&VUdM#19PNM1g7&%&fElkgfV`ehp02yfT|3lb>_k2RRxiYK6`BML zC>5Aq_H>m-K2Y;TZHngQ95cu}s`@{-vKg%Amc){?6SZRqz~A{FyLDh*YWxx5%SAPOu5anaMjmWyWYe!*1S(fZLUxK zRyS&qv&jt^;QX#_m}Ubo=#|avB`HUH^;F%95;_eQi{bFMjxaV}3z(<8TE>P6d@Z&b zV}{BA^S`_GNTpfrBkRu~1&8)}SA@={zCCiLDQy9#oPUjY1ITTEG#fQeCK}RPxwgsk z+27+{*KY-`fK&8bSAupNv(-njLp|myw1_jxC&Qx<&%! zT_y3ilude2>0QOh<~Zoo%ZTk|CmHB*YQ+~vg;mRdofi@K<%an3728%MLtbQ9iS*lc zeJQigLaMJ;I4rNCyzhLHxen=EfB*bcz3t?QCJAg4DiEmjtb>O3`W53Z>Wx^-tYJLl zLt+VA7ssejerSS0jzLLuP+o21n`FuhBgY)-RLcifYk)BxWG^(39bsU*rL-%CuKn7; z%R3TE_6VO=V%L>i$idZ?2eAZSQXY|=eWeS_EDsUSvmmhk;DKO<<^jnV=vp?I6AL{% zjAHaZ`84d*&3t56Utj{q4*DVx&-b-zINU~r!Ic~}H*-(U58<-kQr=%gj&A%jk)h6^ zA%kGMekj0X4pq>$-n{*%zJ;E`z;lGS1akejxgt=f`RGaJAFO#Sr5^8Dt0EYaZ!a;;6`A!12g;p1oA8XY^ zSaj@`Eo}0dRbqr_MFN1=34g6kf@lK)=q)Wp&Ru=7`33!&t!xZCbpqU@3x#dyptj5) z?4L9952oJc23>1K)+IS$YrpGl&>n;a?`C?L*ZH;&swKer;*WsjM+f&d9o<#_r-kn@ z*cOM}5{xG3tMzg3A}%?MZM3|1j?EeSEzgs~QR&ZX_xJLTn$6j%cAlA;=FhhK?h~Z* z>+PEvAGJ5AdtFd1w8g;@*1h|-`$B2j|9XSM8zM1^4|GHq{QI(oJYau7?LKF8pdkgV z#cW^Ga$IP=Gd3GemK8G3bYU8pyL#(-b1{r;bu6UET@tLs>3on#PMzWbi=1etRw%St z@G}gRB?n+nS`lH(ed?!u@7#esC#U&wMHRM^&_F04AneQIhAe1jn#0${_|vstQ@mXa z<`Mgl1ZtkocKtoHDOvZ_5ixFgP|~nM{@m{(L5E(xaU|=>DF`~~)P*TuAWhfDwDq2~ z)qbAo#f?)Rk*!i8F$XTDwfJS?Fn9_dR=R`S7C!D>+b!ohTK}lud(tAmJfTUYo2B;Z zj@ToN-yEQ!@#KXqtJDOqWvs3Nxn;9#dm^Ov_@K6sPuT6$YU)yJAA-2CMR2&F=ruqd zlQq!y7G-#WvH%K9dHc7Hl=V7*k#@{#=Ouh$CxyP`LRr<*F=PaBF9c2su@ZgRSZxis zqyMYAOgw==Mi8|pEH7KIK^J3AiJKK3oB7vyM+TDx} zK3iHo-qU64#+TGxUA~_&S5P}MZQds(aB>NEE~Hyq=&?`{l0;4}57<^~Z)p!~HJc(! z51OBv^Dg`(C+P=k!(rhYu?POXsvDmfm7r?Gc_zC8v+TU6Pu>{(33%7qwff_Hte#@x zi2}3Gja5>-Bp3gs_QP3*S5cc58#dY)q$NL0m<7L3bDGh$n!Ux+E&P5YOFt#HCFz6P z=N1btZ>u|G@dc%JCH>AaBizbDK!*(A?Q|rSszFGxbn(=V!W=x;dWQX&Q^vhMFl&GR zvLCaC0+XMUsmiS}O5fi0pU~cuL6uOxi?3B~I~MY$N{UX}Ttpny&b#uM1Y^|JWLYi* zoB(oqFnl6%LUjTc*S%FPX8e6j4m;8d{4J^)dboojG@fQbt%VU6e$JC^Lh-7f_X~^8 z3~@bZKmMWnjJ&sh{}DDjV?M}tgR?i%Bg)IuE}HYD%b_i&KjTu7fLck{@wx>``SyYv z8G9X^hkDt4Wds!w-a6~}4IUag!^lCE6qK!uESbsBB^_&*=q39gjPU>!Y3AnGtM{mW z$aR%24yU+QB0$c#J5b3p*-MF`vj?$d2X!RynpQ8$27{YF{ky=-6AM>5h4ZpY@GmdF zwDa6+^eh`g?0aJzEabC!qY^WxJ!tu8)ZelS3Ai|@nZV>W)^7{lRx(2-x2c3r<4FVg zRkgmg>hBD9V<~siXC4hZM^ME5lP}scg)o;zKeVu|I%QwTotF7|^_mGb)e4+<&X>pU zxi}uXbb!Or;454ad+(#pjgre6Gt8Y0j<(!eoHyPas%iZ-mQP>=Y$ZQ3#KyUf`iQN1 z&U1Q_9?aXr`=>(v3;RA~u@YGTacWh&3QAHn8G3<`aXDQM1?r!8ntezJrojs!dQ9d zhi|9@sYiKQgFG~NM`@wi*hnyeY15ju%py%caZ8C`s7jRay*Ikpmcz0m%{BZQ1ej%; zR)c4Q;pflxy5FPfflU`fCe}wF%r8V7lf2#&3TIqtTnQHZYHy;-j(rF+X)G4d@_FNpbgr&Sf?jJ3zHg}65Eaw|_nY5{ zNyt}Y=98>N)b;)w>G4i(4CqA9?5!?14Py|&mq+Z#iT{Hn(!2^b_P;+qJFWI$8I|30 zle%L=wJD=Q(yKXWW}xt;@?(LM2H)J%s) z=eD6$VWK}Fd}L8u$9B}lEGDa)dXk3ydAi1j)E~Pghu5wWiIF}zDe?~+R{{&xOXrx` z##0uw3ZRr?kmO;2vI)Z8^&~P!<=RKWKhH5XgyoDPHFg?n@r!1*mzS^IBl8H$O#9sZ zTV>itWP*N%qld+{k5!)!6&*_99ZFY7ZKT#H;gd+=TNSOx(?j!;U#vwmxPL9kNvR?I z+1fUZ0o&=&({!$STm)rL4tOZn0jE_%gTg2BS)}F0bX%t`p>_?dPKLjSJ*#bd5s$Tq zSox!M@C{pJ%Mu;JFs&_~o86<%JM}seX_JZZLzu*nKBun!>q{jO9A2bPpuBWq&(Lzj zsEU4I^T6q)m%E;ujF3h+xIB^3K@F?YX&Ir9Ne=_6SjIO;wi4@f0S%S*Bcy%XePu8OwuTsUNl&0&ivQFP_$jM3M?*IxMS@%Xmdtw0xlaELj+?tW8+ zQW7$!$VyX6HGMCjzXcI=RENwfkbsKAcDo*q*h3W+zP?F#jb&}{pt~>{!om~mH&Qc# znE>8$L!|0z?7`Mp zruHfLP`Rl`d@hOv#3Pw45`wU35L_c@zmeVoDe*= z)HO^^f8Sd)gIPE0td-q17KnWfbF9(MpeIk|VIl<8To=>Xt7r^M1XS;p4Wp-A()spC zr~a<-#N66}K3hA-Me4dfP*pD)$1o85H<@q`iiT#aze?!xSris9l_G00!n>SMBJyl( z(U=+yl%+Dr#!JEIrp+Fz$6E9JA=d6POnN@@dGk}peiWA!?isz57$t!s2}f=WM+48$ z^pjw7l%np%bqJ$gU5Pr#MH}p9{C74@m-oqg)~4&KNie4->k*UIVRnGIhO5~}-}P=X z0%NI3ixo;2KNwNd@`kJ>_!q351f^cpDl;wsz0Fi>PpV|U#KIcuQ}M@wGPu?v{JYWg zYI~&{Xwcpz85hau#0_-O44l34Z`PpF1rgW!ziY;NN9AC_>|=}dNF_gD`09whnxS9~ z+wD9q^6&X}{(_{0T&`!!=#fNz_6obk1N{dusHNVo4;Zl0jf}qoME?}J!^@UjFxUC= zC}6O}-+saLLGz%Tl5s$L>2aSFaK7?!?W+%dd#aBnx0nsRRUOQ zq}r)L$^=_?%GOITju^Q8L9>q+&*x|F4(IE)|3YSOJZHDK**@(5vsi38N%@*tgn_Yy z+DLD!nGC8v+qP+Bsr}orA3_#iqZ~XvYI!WjZ$Pu|6Q-ScFgs3>Mpk#}vD4o1|1%>b z6wFO!-6M}{l43xO%JXE3ll!usJ_BT-0@=E#4u^+rc%CLsHQd~}e%N0k>mx<4NPKTw z8oSyqKrb9FF{Bqwn;||tAQVC=V;4z`*2C!oNa6NaM9JJUobp>RXJ4fwKfx%GMJl|V z=8RU(Gah*_ZrBerN_2w%CCmLYRMf;Uw?=F4R#y7{Gm*5ru57nrjCE?}*EC7DHP7)6 zN$dZOCFjxT4u0H8m+YSz#g0XP9DHpG;A+mB3@kd%oIfgD{4WB@pkBJ3EDE13KGAOn z0Tundd$jQ`%T|GChys1So;q>lTSY98_*W={`H_KA1?r4!s$VnoXO-1AtJY164j@^d z?v{dbrk$_&obK!jq+bdAlZksF=1sa+^cP-lFAqO}J(j70X|j`18V49tmbswCt}|W~ zU@n4CWWIJuNv^}-pgQeO;QxR%;;2J?)YL02p+twogZ2v@9JC9$uFK5a zRIgH#kS|O_gp33`5My9-U>mIN{NfSWrv@`NaZ4dQ#N2=6_jdmyNm=-|*4j=nrg*-Y zJBrT;lnRu)qq$#t5SE>TboHNbva42fdH*EE-m^Vg-g4)?o{UWIh^>)vW_2XU5sxhp zEA-tk-a4HnmmYwb+9wu#krB`NN)~Q9`3w6@_nvqL$k%6;sVbs zPo**l*7%ZX%`v62mKn;(f)@5f6HGm9jGOuHkXh5OB4Y`jRWy|YjW%d@QN**~@=xSD z&QD9wI{n|2dE*4uYcEj>oh0cED%T(niWK>smdKfje>qsPJ<4g)U>0GiS^4U%o614G z(O#^0U4z5-Ctc?)OUh=lQ!`sciGU!HHd>?^7`*Kyti~u9@V!m=9keimeysEKZ~ z^=%D2*^2_IQ)jWX*}aq^b(bI5C(Yv4HS?#`hp$CKt$Lui*4NJ|>HWG+r~68P3YaTw zfRR`6Opyi1V$Ug>T)?wspeAz}Blx(icg^1Yp64$AnnS?G1^iDvwrc_qj$ND{`;Y~| zo@;5TdHydjE&DxQf@6yL@%!4JtIRMX^Po3!I+?*N-DNE`+SKn4(K`0%R-C(bq$2NI z`BqJ~?y`Aa<>vvdm>VyVq3Z7h05*hd)RFrxqe?+#RU&5yof<``kz4B36w|5L1%|2t zsMVTX7ub#x!y{6tZrZH5u6^Drd1lEDtlO+%ERfG{^@A}N%~^gAb2_97gP-WKw_#AD z?VShdbzn}72l>5nW`k+fgQ2^ee~xNck(Gb$yr1wh9h^~$vZ6f8ysA2%I6fSemZQRW zo#|z|R#4%YQZV9@f3GH@GZE5r_!-{>`Ix|91K1zsj_rD}SdJ3nb{qXQe+X*)=&Ns% zQDQG`o36t8*;QcN{Ti$21_fqA3KK>T3)W0d<@h&v_R?rGAD|XF+WW7Bi4H0BTCVBa z`nHf)6$0r;czZOCmrm+L_P(sZ625{eKdrj~8^{1*J|ikw-G*~8~=(u%#p{e>?J_s$?613W`l zeT(|k>hZh!!#;P17Nhk69bl%nWS+10+D!oITA)(|GjFGp;3A?b=d{l?0qjbD58dPH z%5S@AA>IBKleq8+JXa(IZ~$yW$;Nc|6z&D6B1um=R0*Gd((IL^r&HB?dUry8ytK^q zEPd=A!17=un)yp@u+fjbB28k+zB0Jysq*r91ZQyuMVpD5@oDyEwF#VVXYlmZF)vAl z2Eyh!0Z&d-^mAp2s-Lzr^?9uY{hr9MWQ6=7r&XsJ9hz=P;{^TW)v^J;(9nZ9sp*J; zdiv+8{?E;w-W~q4 zkISvr-Th13G*K(kCJT@?YHe&`=)z2uhkGJrskK%6`YnG)RUs{T3589 z4~~h?>oq2SdcD6}X9ORk?)*eJIy6srYb-CZaU%t=4?oM3ll>lEyCorFPA3ltyIguX zu|F51L+@gc{<&eac>-;I(fF(fczT<=X+<|7?=M)(?qtM{r=wc<+yrDUIHef_0A$(l z5mmlWYOG(qWF!S1$X1&1r?Ut$%X zt~W%`&T9t+b54GXaY9d`pvuhK!(v)qyXHkQ!?^J0>hD@4c*>KW-w0h5X%g%s?#!u`Louy%~Ht^HR-@oAq_E|8wq4dt-P2okvz^Idm4PMZL zsXS`+p1TB#mCD-;(__K68Q~hnp5ODqOg{=7Z_XJ62PK763p!^+)L-~&*p{Q%yLQks zoWtQe@!5$3R!km~4y?YVL{M%`ParHybg5nk-1lG#ji+=5t%wUQU&|<8yb_=ccBK*HLvKx(O@L3s){b! zMuZuFgE`GP;HeJvM%O@)o>i%uEZs&+*zZM^fcYEd2MC+QEZYbp4v|vK+`JuiBbPvp6xcKe-!v0KE6vuQ_u2Gf@m zuSKrTA(l5Y1xGxrnc(`Wuj1o5$j83j9TsNusNBdZXU^<2t4}ipk=BBB=cR)-S-t^S^ha9Z3 z*W$E+Pf+N0Z3J!gWnkWrpmIoDD8#8}_&f{Z8nKZ!G? zNXisF4jxs;S7vCr$jT7ceeSN5^sc4l8CO|^g=@bX9@MOjQvFYnJW2;@w#Ko*8#5;^*#Do>CrZ2u@F%AH^f!K)yx+J-dM8Rt*2=xsi z#T~`RwHq}f-YmP+RcL?_VJLywXE-tTP|=pq&HX!$ zCU47br5Rbq+)$IS z`kCH~Vg$g~AoFXC4kDlGS*wIY62?f#rV9}mqjId~sjYx2o|Zb@Gz!x##%(!}?r1XF z_!2WkZg`)STD5xoH(;3V{+ASBw4(lF{ch#a?9Q&l9ik=NhjE zF&q(@kN52VS}u|_MPf;A{tMlES%=*LX&d{}) zj;1eL66mgEefI{C5Si*0)b6905G*)Q)F93VgNsfvHJq-<1EyJomoB;M6qP|z?oCIB zx{d(0d>DNd@jPB>Cvl>)%dZvy?3iu$*`a>b45ecHigWgliQF31pdYo*tO7@!Ada_x zI%p2K!+U`viQ~?0r3s)^V?v&`FYfEJ^yiPNm^_44W%Z#6;ya^1yg0Kn+Od?W^Pwhi2VaVF51Wi~AYQ6U~5PydSbD4L1#VjfjH zTQb)d3vfS+UFxvJb~28YV`p3BGAb4o=!cl{__m~_U}@>J^I~_mnbE+$qXtFNyoZJ| zQ8qA-_^@5=!qQ<*!I=Hm6lW?2Aa}7-`-H zDb2(r_=FvZ81Wji=9ogUiH%@MxO`(oaJ7kIXWDySrOVDJG3fT4i?3i9+L)}ORcT`M z6*vQdaNbY;5lT&@?{^E_{nV(WTFqkyYKBae)!tK5pm&c8ua3hPdAffVJhcLi<%8w(@c~FZI z=q_4=$)3p1M^V_g(2H!y>dtTejQ|Q69 z=|l%B)uC7)EmZGcc(Uy7=wf)D{Qysbnf~~mZlDBG_#W3D!q|v!Apih;;qZ9;BgYUc zVky#BJuw%U>8*F$vC;pY#=n9eYhl7y(u{*c@1Hz+W2GfNK4kOt6Ekv{7%=W+IMR!5 ztkLgSC7!@OnD(4BtH9xHPH#(r8*`(~Huu$rt*rj|-I8gzJHRb063WMu&$6R9con6_ zY{noQU#UbsSGh6tB$4Rs;zAy;;!2(KQqgKXE|fskXF&?e0+vi@?j8bjd@`J-yWdX< z{4eb$ZnKnKb*2nB?yp^YJhN%n6?ySd&9*{vN=Xl;P`KB*k}x~=C+2%sI;5WR5`#Rk zCBjus(U(Yc=$bM_RTI=^I5t-b9#DTh!2EUQk0QxTsG(GoVC<}t>ME!`5H>q@>BU$J znvV^V(AUI#n5hz~fpW1;fH2q%#wFXUE*ZG(SVGYYp8|Fto~0%OJHCwJjB!Nhd4?Y)R)zch}9St@T2ANwYmkLvpic?6_B_8vzEH3tn=o(xQArH^(lWq zFp4kDK?#A%Ggg=s8KCRgV5w9lz0V!x_Bs5f-@pY9rlx7u@1FuRlD$xCVQsD}#H&iP zkJK4Am@w0eym+>sRYqugJYXGGlh-3!>fRingJVLE83h>Ql2U(7~5A!D+fRCA| zq)JSpKS?uJ-b3z{%El2tgEX&lU+~(LXhWs1bZ_~b?7DIIakn>~{l}Vl^cA$o&nK=IsT+K&IU44c$zafOnC&!`%QAMPi5Riu`6p!dvXEWEE+jAKfE1T0u@p zR}B%r9t72>WQ(hs&sU7ImSf|#Wi0So1Kv=APPK&$(IQr9zS1ejaGtWf;FmsI25$9_ zg#=#KN~C=su3cVrHp=E|&v^f$wvi#x&O3AJjnYdr@fT(&c8Za`_am(-rT!8*!M3gC z4;^_ILg0ddet%p!E^Y#Z%CC{WFjy=dF z!Z6ubgFbpv`NP}qq1}t|G%%F$&7Fv#Zzqy8A}}u~;}~IzYXSQJ8%aiz{%|>G!lD)# zGdO*BkW>bblGYfJnSgKp^S2KLpKgaDsstSqB&}6F`J@HCtVk~Hl zs8WZ#KJ5Sskv$9G_13$+Y~MD%`bNHC?qf~i(3wcWF?Xh}o|};LM9lTyZJD9l z7(0NSju8exVt<`*?pN;MgYNSs63joYn`YmHY2s0KK>!G5+{%ePMDXX$R~1*Uov#Y1OqgPH(U9_` z+oy8CZ?1cnrU%6_B>&qo-?iaKV#J%fpV^O&iM_?>so=6B&Lt2*xkmX@Je>ej3cO~@ zneD-o>EedeyvH*Ae5E;OA6bN5cAF#4eNPb0wLJX-KO53^1q*z;wc z*6?0jI`lC4rlwpYP@uwb1GHuLrR`hp(H-u!Rwz<{wMe5(a@my;`vV10My zL9)1Y-862PE2kdNR}cVy7I7u-aQdp(7%DH$4eX1`lyG!8d6kx$Atj(f$ZzeNf8OKa zjw(OOwb3d&@Fh@GK5rN&Mvx}n?u(a2)Dey?@cQi6IU7aQJ8QMqaP>M|QYc8hFAnb- zE1hbzn^}mU#xfFSo&+<>_y=u7wa;C6yHmQEW*Nra8z2VX%Eo?JqJS2*RO-JgaJ6<;S^()klUa&PQlU7obI$jCz|IKTF$v~PbU7$ z=$w;QxPz^1Xe(FhPJ4(Dlljbd$45&WQW(|Dn=O|t4G_d2uM zJsI6%)PB6L!2EGteZ1$v@P~7?Vi_E{8WFCPE74xE>egL()4soQYc?LCxYzf@rv6f8 z_U*!ad1~?mx<*;EO8OFZ4`~}2DiE8XA-Xv&I%Aq+QxC7aCBQ#`q4Zuf^qV@!F+dS&6Pq#h7H4(sRg(II9ERPO zQlqg|v+%RvQR8doWu9`cs=${X_0topT4hjknunBX-B}~A7zGo3_F54b%fTy!!+PsE z?i`xcu0m68@Lg2G`D!K_OGWiId~=@%u|m zS7r@7LxrEMg65TxTh_qd)jl&t=W3Z=eAxEA8bDvM@zDL#Z$gLi!V?27kk!Eh9%H8Z znly=5wtyzhduo6KW#5l<=2^C!&H9A5>{@)v6>ct(uVV}+4qbtiDbWRT0=UJAb%?lq z?&io<8+1JRmyeTyG}zL&VI3${Pwm~uWe6S;r_vy*K^pshlsvb1i03o*XrYNB!1Eqs z+o(wT1F8ru|FFYMoO%mw$5$9%q&6gc_!S-3UUu+T(d4cFHEvD=@a&I>>+U_t zWF29Etd=xZhXedZ?Pu@o)%I!h9mmXo&y#_(Pu?8$onFY{e)5J?mO4*hWB>8yc?`}^ z^VyUpdw@XaTETqK{wFsOTFKjfKV}PoJ&|Wk^pqXbZj- zwBATgW;aiOYvzIn4$JEF0iju=R+qD`-WXUp(M%)!8JC@p<~~rjAgcrlzy4V)(5=GZ zZf&~;SRZ;~5u)>S(A|c5Y-F)v+_m;BA?kB~+g3onN)c@+qnAu*a|fm!Kz{mtEBzp- zbhiC9CRxEzz^gW0z0KtJE0O62$M;X}9j^%i=GcFv0Ym?`1#QK0DkuI1sKcvWC-D~m4+JQlAzS;@z*^LTGL8_ zJ}jy7ZJubsw_Ie4_q)Um@Wsu>P)K($(Q2bPtnHjgG zgj(+!D0)7=Z>u&~vPb3TDAer~r%uQ&@_nK5oU{Bpuw3lTR&qwg8z-L{xz=UE3$n49 zM|zY;SFSj1uhx6j%`ZMvzI7RoU)-xoWA-V%fhgEC=I&tbV)MFuYs|3>F2N;I4=^oY zKVdzhmSf4~++JfzJLg7=u6z`9j~)6pPL=*&reOj~n?OGe(0wTR#eShlE4*Dl5tFSJ z^yaKzc1nOT+4{Kj-LAz2y^nYYl<){T6ao@)D zNwAPwW<S~nXT!Z7tg`Us!kzj14=9IgYnzDbKN<)DOuo%mDRgdQ8> zZ?>#rnVZ6rXXZN@9_&@{XJ%u@bmNBZ&Mx|#u~~L4U<)` zIe8V>OXE`j0D-^$(s^P|p?Hi~`T*H&Kvg9Q!1>NbTgCJx<@vM-=dGC>MW1VNn)X-n zGHeXC*D(0MrsU{EdDB(Ehqs0(g`(>)M1CW_XluZq3HsyaQ;A0cCf+eKZIRYhyo2QP z4I}Hi&>oEa3IR%|p#AB+&{G-F_NM{WdEcVF0>l3C;f}s?ZDOfIcIMGg9pP%+UO}yq z)qYW@l}!5bZ0%pnx%L3E?fgNSX`$)>?Jvd%`M}kg++!T!&pOZ6&2z1Yz<^hCe@ZA% zs?=B9Y95wA!WYQ?|P- zFFiq*X@6pwevKu5I*DQz0CNU&B2yegI>lh1^qb&(mI_doYT!mPwSr|&*M;eaC`WXYJ7hV}whLQ&X2~k-Vnt2l{9O_LEg2hPS&NjY@9gmMla%!Ip&>50 z7qBCO%!yW0vzGe4I6swM&FgKe;>~&Tnj_*5K&X0<3>mYFBR4;wTkecey^?3TBJT;T zXDmMyhxUfe3VgM3!gyJE^%nxsQaGog0ixI;$_`i*&_4mP*}|d+Vtb!DD&WdiU9DkX z54ri%5F`6Omw|i4F)z+~w)Tf3(;n2X!(4b>%_AsGmFX2TA6qcT;PpomxhY{W#1azB z9$|Sgoabjr)5;b{uvLz&Pov8TBby41!=7_*xqw77U?Af>j0EP|nl?&2t63eDuss-h!wz9cU0YF-RuysB2Ey4@-{6jmX`5|FMe2BQ ztHAX{S|w0%^POg@Ra561!Hu{aGo*e_+12%O94Xsd$D|dop;OCJm~T+3CgfhBdSn+e z#yLjdSI|j6U>SD>S?2hm)RN|4<7DTod!MeowF_i6e~(gLFr+Zin0f`-hvibWVUhFE zMYBqrCdL$tw&BOZMGuMgscgby(gjScYmM0IlH_g>I(ZiR%IjawkmmK}GUj#4x*Os{ zPfq7gg)1+O*>~OR)gaP8if5_2?vB2#W*d*$^NMEY<){AGN#VOHDTYdyk!o~(|5VZ& z%Ni`L@yzjg=xWM_JVS;;ROOwaJ2&RpFuaNDiC5H3E6n_ZGE-D02Rb%scN9Gm)az>a z*$1Lojyk=VAx1muV|ClM(v;(SHh9<2H77j-8Doot^weE(;j&P)j?zH|-q8XS-z)JR zQm=OG2RB(p)vh|3vae1zKVPM!?c$|T!^lkFHXba1oLv%IirXuma>~ zFLsz}vsFN`p{xFZs%s()L>2>w9BSL2Ir?I$dnH6|Z1ef~==KPAPu=w_C-3Io(kg6M zWLlpEB}iX18JQc?DKM_pN~(!5yl-Rgaxs{G?y^zevc}$Fv}PtOX0~l)encID&jv0I zaKJ34R#=`Asf_6yR|$V)fq-vIpd1k2sS2C>`>=x_9ID@8VY~N~TFp>t5sWN~r^Del zZm)=Qdu#Y2U&P|YZHerJtqI{wS@VR=&k;}A11`T4rX#=+m!)BHraOSSNxq@)UIpV_5t8^%h z*Y{qXmtj{12G!psgJp5s+=8{~@j;Z`KAqL4Z=5+^$PK%lSyQC)S$E!2{jl~mgrs1% zvH}}t?Cl8gNo7rFo1}lqX06Qi)skOZBHB&zK3Txq6(Wm-sSE5;=`Abw{u})lrx>`q z|9q@gqI1zy{11uLzXHm=aL<K_c60Jr40zgOCE9e)m1ba^VilT)J?{q+F#W@`_tajezKrn<4~k?w3wp+Nkqf{XJaC`& zM7LR|{=kekfO`(53KL4TMuBB>=lvKhQv7|#a~ol*$I|XL$r+P+YoHav?4@espH;dj z`{~7yJf}P`rMO6UZJOtI3~CHklLGf#gU{qN5}V%}*zcwoZK!w6yZ3or(E}E`{#;b4 z@?%FZKV98SEkcLDC6>*-$LusFhv8z3q?&1M(=dJhU=3i`>S9^r1TGv#SX*&vpwkNP zaIKM}G^l;y3A}J-!%6boXP^plz6T2}~4Yl-ahxWIM zNe@o6aA~#{jneSis+&&CX1NK=Io+%&aix|s{u<*T9@RSEnxGYiuPf^%jrZm(zi)=` zxad+Qsw2R=2WpJeAH*{E)=<8t5O+c8zJY!KE@UlR^wogIaA+3lKU%NHx5UaDBElU1z?Km+ATtvsS0xNi z0CP*IfG1kTXMr}6EBEIZP&eR4{|rMFSY#wR=T7X=?|_FHSOF#A10?3HNoq)509LfP zgs1O)UC4?8(}xzbl}5L}^VyaQhW%n9kFbZ4o}W0qZ|##NbyAU!E$T>Oc&3X9$2{39 z|FF~UOJsL@?*=l&^V?L(Ru;kvzRho5^6EmZ+rAl$sd|n**KoZ{`p~v2(h@JaBs}wL zmEF0RMAi?|p>5S;OjT)}VZ#s~b{JHFc`n|pF8K3R>5O;v7n<$Wv}IrkFR=FQlc^Pu zm9jVwyYlaH4X@G%EqWm7Rm+?s4NsN9Oc3d-x2kj4`f{qmcm)dYvuOm{Ie&w6&u)ML z8k`S(CT&@WS%R3`xK`s%QpWpPQAdI=CFqg#3%PRC^+P{=k+evKHgJ z?}Ec)Q_+C#!3-mF{u$?{?*b7|jyT1UH6x5ov2hS-8)kiRJF7XRr$K!84xqNFp@6REG zgm&m3kIdk+P#OceBDuW3!)$u9_Te7!Kbm@~<7sNgVGgNfF^OS#w)os1X}o!(`xX&2 z5Uc?Q9fF)Sf9VbY8R4<8OxBqHjDrEsBB$?7T{gKleOtt0fjomdJ6=3j8*Y7&Zt`Ko z?UKIFLI;L+hxz6brQhBO|92uE5R_^~{0j;2v=BaI#xGX*rk3CUYvh4d&IEpT6EKZk z-7*wC{F_BF!=!>F8T{ih(^^3XxgWCbz~#cCm@Kndt-rt$$MXSMkq zo4W>Nj3+565t&^rJM~2$J-_+S+v-yEoe8jY7o0ciHJ65=*NG2RE*o z(vR_C{fixG$0Gv8+uHcv@-e7w#IE^ioATHGt2X4;9;gPVv*O<#np59EbzSh}&h2(({EZL9tA2-Ei#uJ`w@60_JI&GhIkM%TgpMZj$;V9c(9;t%P4odEpq+ zI3rYRTc;!bOy~xRoWlgVX$Dtq*|b33$sb`G zjuB#duajdOxduY-KzfQ5+8k35+5a*Z?%g~|T70P9q4!ju)tP5!TR+i2kGW$iV1EGI z20E$prPP_`{3~=uW!R*hR+^lRbd*SuJSs*3b#R^bru3uF`LnuQuNvAw6Ai*3>Cnl+ z@5jy3;>N5!`E%vlLP4YWE$+oU3lYU4*|!#v!|(CItj#lyCkgYQyDYitAlFp<5Kbp% zD zWj|n1hCG_FLLYy0j^(vRM`u5CPun#qyJD~K%kB2v94kQR)+a)eRv>Z0z0*>XvvzfMuk$2OwXw+9y@#K_ByjSSs9;ixDE0xfUpAzz;4)_te&Oi^up#BXLt-A_(Vsr|WPC)7nNT9S(ML^m{2Po$-YtaC8WPon2q~)xRll6~y zxbF4dT6jAYP_u_D2_!wB#J%x~KGLefH$c4KnoNC>O&WrYk`aV2q+W(C)UWy_a4*9lUZO@b!YrTX-vnTD=Bd4VKs2@`oI({u0=X4qGe{ehJC|FC0~n+a;WC;25t zEOJkmS%&U#8jhPjW(Sth@2ZB`J&e{1xqL-ua%#b#(T`78zI+T2z^$(A%;+_HP8N>l*Jnd{AHmERTWn;FoD3?+TI z4zI?^sUzq&mpRu~V6XIS3?O)uWB2tOpq{zf z-Hve2IzgP&#X)eXBUKH$k*1~fRUN%mpM#R#F|!@I*&9Yys z9G$t0{BvD(W4G2|8F|_&m%(Y@Iu+t<_jR1@9h3@v@LNW*7AXS(zQ4j>D%nv z>FL;-6lY^)reDWqzt-fzR@QnP==HODYK&#E5Z9A;OLLwas1}kpJ9VCN?`>5zzw6PD zp7oo}f9{pYX{D|x_Q+Q0g%zdHQWfBH{{ zhd=z`!`FZP*AGAUb3Zry^iTivaQp4IkHDMqJ?1fw8D8*$7YvVo{Nsn~ufKi-(gn&Z z!d>45z>5X}{D88D(u`{SSc|TfegINt^-S5Gn7*eSSsDOQ0Cee!fY} zG4KGv+-I)3^iKVOexNk`)_X8W|4uYF{fo9iyZBH0yg$Xh=EtxrkJ193laKc4J#^Do z0s5VGP5@9FNDn&!;`at^e{$z!zp)q>A*Zd|?+rse=X*<$kKpZZ?ew>iFE#r@5` zRUA6+_b&fxoIghUb>7lB&DQP1J{@|^<1{64o>ceFzt6MvTdOXT15;~ly8>hvN&i;Y zd=69qdS-uo%{q&q&DOM4PF$CS+TJzv`K{Y>TqFl}nP2<-aTlMP=va@I6{soDQ$U*{ zbv-K8@2O^fN?w6wfO#t8xzBy>@LRw2Tf;B^@-L5|sos6!6Q3B~_rCWH|N3A5>*1BJ zeC6;(U-U&IApYSGe|S9lTT$uUsr{%&J!-r|TR^)2SOM^gWEU_ekX}*f`aI-cHUD0V zw$}I&Pr$5f!W2DOTPhq!?}<7mN?H1%2xo1?(4FYF-FDmXsZV`s`0UUA?D05v{b@7A zCqMbg5y++u@w66fs{`zw271vs=^=ov@(^7eL212H{Q{SX^adp7&h>bAIbgGB_j*`^ z!9F{f?!Y$dHbkt$H^6)3qUV6_9NX?k+B+D{CKf<%<@I~ki9lCWI3Tz_)vwilBJ88x z!KSb=A(lzM*Qe-FIZDg1?tbh(_p|#r$>xHQCvyPwxbVLZ06i{pR7a%m(!u9UdgGuU zL51EyqXN)z|4XP5S#Q=V$!E4Fo)LHX4A6?L|?Nu#HoEvGjd=&H>QJ@svAcH_X@ zez99E$D3=d_ODeAoVq9gJ+pIhtjeS}HGcKvKVFU4D7y#_v?eIWIPUiPY8Sz`bE%^j zK#%%RO>BKa=DgZ zs5Ne8^Y4qKYpd%xIIxTTamsuB_YFWl4tcLlMFpS>e2BINkR^gAzRpM*_u~PNvhi=z zueBw6@#Xc-uU-DFD*}3{XN}51N&#Sh@CSb|{tJZT-eN#WmF?gifEmX*OHT#TJ@c8* z93zoG_`wg38@&Pa1g5^@9q$-{a@~=x=ya8*=fCqizcc*UkNw#2u6Mm_Y=Xc)MWH|I zS*sQ>Z?Y%>b-Q#fp9%T7bAd9nc|(>O5cQ}=l)xI$eroR z=hp#nH@BWUfKK!_z_4fnX!i{y0L#j+G|&s?s^2{Gbspa^K=d|c=#!()IeMLw8K9s3 zr!tAcr`^iK*g>Q`G$SKz98mw^*!vjW?*KaTrA*&U0}!q>`tA|_svCQO+@ROnS_0@9 z1ASqA=>#t>z^S}wV5cUbb352vhm-XFS=Bk$L1>k?l(%z@+&(3 zrznG{vu>>C@-Ew98hLik`a73jhe|)!t{sZbx%KwikG0xAx13Y74|8R(rN6u!=+*Du ziOWTE(tXuf_td+Krt?(mi~f7`*D7DRYWG}woXNPVV|#!89B@6#eEyc6_1eGl=it`D zsdWh6RrW6G)6xaxO)8gz11&pL>D%St&gE^T1E9`@UcHEm_bMaPwPW?~FR$d+Y55!g zT{QwkpbrkPXYZLGu&y81CILS-{aQz!7hTHS`Sm{hAC*aDETEXcFe1?bJEddjs~?{Y zNGaX{9tuns=zZnNmEq@q{^!RCbmdp%t0I#XiLN`+^<2k%Kls59zIrsf>iFH?{oV0+ zcSWTut^O2+u88zoZ@qPR+~XcMf}XMeT(tap$BCtMwfgte`T@3PPTjGdY<%|-Ar<#^LgHx2i?*S$t?n>M&^x!ofo8$dd4_TWf! z>J&XhWh<}rm;25gyykdw)fFSqiL8$IcdIObVCRk3$^GGa#+~Z`(X1K@iaBF$AE8(-*`dImk>yX2%30Q_!pz;@RI?_)&OL!Zj_BivOdrvM-i g)zG%!*=%NaL04j%3!YC=oqc`6p_;w-&5Ca@+d*xOQ@K?BL{paW-}i&hPk;=c8M>_VfRA?va3^v58$&%b>Uf zF-OwAQcy|f=UdNa4v?M?9KkvO7l(j*$p5x;@C&=(0+dAKN1o4Y_8|5GSL}QodFJ6%{eg&&;ba@A-NeU16)ETGwbk5f{;th+V|C?mysn$9^>o@Kr9Vh1T8~Bz zCoi(}uN*AO@hE@!X?=NKMmdydKNeu-1{px@^X2J=&^29m0xTImzlSjNqfVy4^1 zLPfKSww5LM<^IOxR_stsN5GYWKP|qPZTGDiVAh#Mhx>@=^$!Df)3#PTwiE{7@x9RK1%R#l3u@&QSCh-Mo6cJ; z5#7noROyIrez-YIS9T{YOxN`+EyS@U;Xu41q`vEgiq_K((hJM5EYsu1jl$Bh?fInl zgw;tG6!d88NEJ(&zX}&QH}Npa8xXl1Xr*S}iU zLUeXg!Nml7$v`Ma|AmT-vh#buEGppu*3LpGM-OPo0*;`WDybp>nj^ZOCG4)HM!r01 z{i^eMdWPm+H; z=WO^fb1T5N0Go^m^JM4uaD*jQIH7oA?W4lk!R1ft1_$4O=z}?sRFM(NG5<%HT_3r) zc)WPK|Fp!3u=_b3TCaBrl6)AO2%~HsSL7MX;?yga@4*iD3JP)fXB zPDktS$X7elqD0BW7}cP{>4jqk3C=S?Uh>*i*>RD!kDYmj?y?pEAdvqH99lpUnG1!M zMRIFdY(-z!)v`(j<7f|!s3n2@GA*(I4)DABSNB6_O-;Y*NL5~IH2`!U|DEnq_5yQp zcBpGa%y?acdA&ACGe|QivR`8@sC;3_?^guELHfFYz?8X%dW5N|iwLiU)xgEV>IL`7 zO@w@s7-f~%TR3*9|Aw1jX{rDCG!yT+Y{j+u(Y8HfD)QWLc zG13RErCxa=ZoI93p_zBtYB!`>^$YpfCPKd|paB-Ehw#ACy@K?ie4$s{9Z1&)v?uAV z*lB~RW&Q~Av9{ncoAAA>ZSLz;kaWAuro!o7z<5#MAkibW*j;;Ra@C3lhQk4T6NWvv z;1X?KNWKrL4^RysGdw4N_C83vdN5UraqY|Gs_f}(&=Zd|$>{FI^8Vavhz1cCSEnWD zw;I?9i|&Ic=|BM>HXQf@o1&x`29W7F*i?dKbO)H`=NOi$^7g9EKk^sdMAUs;GB3QC zaBoU_gJcwJyP^@;fP`5FsG%weYvc;I!H^b)NqAOP4>c{>FGa6^>E$#wQq-w>+BK*x zcj?Ap7d4!cSA^@k`QMd>dHpg4ih1OPW8$h7#%~r6rL`N>r^R&Mc&c(Z?yk$x4Xc?7 zw2j_u8+Y94O2>ue*Uwz8h^pJ=$>3y@k`~Fx&Q{IqRnEqh!vLDcT$8LhqvC|x5#838 zmuY38M+9akSrW!coQ1_Slo=t9(?|drqt2Og5OzJ$duL4uGz4B?TKlaYgz>`upV|c{xCvX%PVgjEl7Jf zlq#td9nvtIu-4?1MuDZf4a3cRakOjaHxVLgLXX|){?VbdF$U%gOHS0XmG(*O3wYiW zx1mnL%HaIV&&*nsuIjWm&$dOyo#c(J!J1NBHN8- zqob07iNTME@77_sZVP?@V37`vlvB&eGMVR18A?C+zqWOV_HG|&tZj7(`A9EV4P$r& zSXN~${s?vtQLU4LA6?EgsLmD-elQwkq>iqx`>l&ay3ULTi^aB0G6_8LDVKQdN=jb zk&yAPH=N_0Mr{|ZBwsCpr3L7$13Ct$|4s)3)4?{3FRce2eySLNZf>@#gR)$B z%*9@UiWI9{v8uwi{JI-18K7E#(m?&iEqq)wE8}fLx$SM8u*v?I2Kt~UHaDnYPh0m= znQ}v8#YDkL;|V~CLp+5kU(gvJLm2X;-l5QDjcCivMW&S~eV~mC4@GEA&E0`{0kLFV zu-zA&Cc|0mKyL2@A(8$T5FF4y>DbQ?pO<)# zkd}PNXTDPAJ}eX%WE&_r2MOe=6V8Hvpb)owOF+Tf_Vgg(ELo`yLRcW7qAR<#d#Rb{ zDOR(bLg*Tx#m1%9m#!^YcfxfMuz<#Wi&ZIw-oRzW1!QWYQnZ)HuZNl)qu z-Nu5kV_FnKTY|i*QH)bY%n?s(J>TY^AJCa4ws^Vu9Y=Go$8-?I$56si9X+eqp{mBe zHw;$MT*XOa?@o7qGyLK2BAh$;bCaPwDm{P6h+8&O z(hJb55sZeod`@?I4Z)3uXb8r8pT_8Yirp_tB3c}?$R)byj z2t;*?NV1ZLP3(zkHjoK%PPPp0B6LebaSmwM0H?4?#>`4$#U7{eJ#ep*==8ZnExdfC zv&?n_Wh6-$8~Zu$KnR^EK8oUtZJul1lhDSnQe-))Xc${D6jV(uT@JvW80#=bvL6+^ zkwiPsY@gUfU^B3*_RZ(85 z+TXjw#xLTk8Q%msbVIy3DsL2T-^NLD8nJIIw!?2CF7Hp=MUlp9RP3Tnkk=E}M72CN z5f#Bpw`AVO%{dciGWuTk({X3~2RD8{g5%dZ(_|FlylA*lvnM-R#30eV&;(XK%%$Z~kxLMFbAnOaVgIophZ}o5FqKc|-0a^XlF^BFRQ^Uo3U*gwG$hZP73zcGC-7eHm+@E)_;6pioFR zjAY%ox~_6BUN>SApKXGg%2Aa(M-nrNjt)k1R^Ikc`fYCpPJ!WGlqvzXe_P1|O2Mu> zp^J&)_U?Qu=jc(PGX`t34yQ&|R_ZyctgPQ1pPBjQQD%k>ZN{+cun@gX&VQ|o%Z6$d zj+Xpz(MfX(jZMgVS6TOo?EU=?3!^r7$A3*q_%~a&9+0vm^93EBw5h>6(TS4>S^O!I zl1MKMYHrTbKL?T-#R9-ju+7G7Yq?PXn;+9jmwW`b5QnI3kp7*D#-Cxt<AtdxpL{ zl<<&QniwI3litfe%sgD0sAleuv;H|IomH>lQDnfWo;3n^X3o-X!S!dWJV56^P(5W$ zz@$L84sU<`-aNYHsFju75i9eOgwNzG^_3L{>CM{OMg-#`SrWx_QP@uB>e2fY&c5;= zO4?_ML)1vYaDLL|;e%&+vh`$&l=gW=Y2h=k?B0(t46AtVl{J)~>-uylBJi-5tyLZU zFDtEf-13z2F#hBNc!^cAW~lSq47E8qUaGHD_)J0V8+HSyQghZhBMd&-aYD-pI(}@; z&Sh5J3fo?9(ColA&~#3|4ZIV6jNdfBfZtSQYnqlK*3@vG?AIO||KL%8i#^yQkc?%_mjZS7>@VDT|sol^%&r7Lf@yByk@ zxfv{0(Sb^|pLbW|0-0ZXXRiCj;^tuPscE(QBlE9@s}dsjw%X^dxH&siDL>8FuoV%( zcn9C@*O{L8%g(e}!kaFpo;+>yd7$uj!n}HRrYfCm*8a!1OX*=1CiezFUoKL*a zjepwk2gHGAG^PKrQJnuqEf1phbfxWY-8Nc}x3qTo;I1tQe{D*iNYb=!`b(eZYQp3G z3j54@sHJuo;vwtV<9HK z!hfh1F@bGq(}UQO%3;EP000;W1^@s654Bdt00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPu86uxpixc|6nj7*5D*43G07C+5V~(U!cw1LB8-?$Wc%|t zJa!(SRw9QI879HwSb1vMQTg8=e5`-3rpufWBn2D6#mPrFaPl~~M+H3x+;tGSka6TP znU6%C{GaL)YIDA+RKbaF(qZG}`xrcWOf6`-oU4E_CWj5CwrGhp>i*-E64t&|O{L_~ z38-(Q<0fuC56%)N9riDdAqbnxtJqks!(y|2ww=L&A$UY2S`|c+jKw;Lb;8#-s;JvZ zU?n+s;W~!LE-MYP3@w7tp_PTyM))Yst%s|4clQp0O2t^qv5~xe`52$)-^;1+)E*~+ zl2gp?%j4>c=QwzF)L6@^iMAsrM%1VrF*4R35!V{&QBtn;XQ_PIuH1 zeJz>@ZlAh`o5Lj;vseHwW7a++Vy)TStEWZ+c@FAh4AL9pLzmE>+mDubQZk&L6#~UA z;pzSnQ+csp3w~hn%RDUhMh7$K%_}TW)Fj0o5iB6}Hu^mv`R}I%bpQAJ5Ed&CUhlDZ qV7h_HuEk{Ay_qQN$K7}QI{pGU%zzo_1855X0000ZR literal 0 HcmV?d00001 diff --git a/apps/app/public/images/web3-plug.png b/apps/app/public/images/web3-plug.png new file mode 100644 index 0000000000000000000000000000000000000000..bc1e3fee8547ab3cbee8e20f5550532f14c7584d GIT binary patch literal 247545 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�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

    &t3~^>^ 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 key.startsWith("PUBLIC_")) + .reduce((acc, key) => { + // @ts-expect-error whatever + acc[`process.env.${key}`] = JSON.stringify(process.env[key]); + return acc; + }, {}), + }, }, output: { assetPrefix: "/", @@ -43,6 +62,7 @@ export default defineConfig({ port: 5173, proxy: { "/api": { + // target: "https://staging.curate.press", target: "http://localhost:3000", secure: false, changeOrigin: true, diff --git a/frontend/src/App.css b/apps/app/src/App.css similarity index 100% rename from frontend/src/App.css rename to apps/app/src/App.css diff --git a/apps/app/src/App.tsx b/apps/app/src/App.tsx new file mode 100644 index 00000000..3b1d5c4a --- /dev/null +++ b/apps/app/src/App.tsx @@ -0,0 +1,37 @@ +import { createRouter, RouterProvider } from "@tanstack/react-router"; +import { routeTree } from "./routeTree.gen"; +import { AuthProvider } from "./contexts/AuthContext"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { NearWalletProvider } from "./components/providers/NearWalletProvider"; + +import "@near-wallet-selector/modal-ui/styles.css"; +import "./index.css"; + +// Set up a Router instance +const router = createRouter({ + routeTree, + defaultPreload: "intent", +}); + +const queryClient = new QueryClient(); + +// Register things for typesafety +declare module "@tanstack/react-router" { + interface Register { + router: typeof router; + } +} + +function App() { + return ( + + + + + + + + ); +} + +export default App; diff --git a/apps/app/src/components/AuthModals.tsx b/apps/app/src/components/AuthModals.tsx new file mode 100644 index 00000000..2ea59b24 --- /dev/null +++ b/apps/app/src/components/AuthModals.tsx @@ -0,0 +1,25 @@ +import React from "react"; +import { useAuthStore } from "../store/auth-store"; +import { LoginModal } from "./LoginModal"; +import { CreateAccountModal } from "./CreateAccountModal"; +import { WalletLoginModal } from "./WalletLoginModal"; + +export const AuthModals: React.FC = () => { + const { currentModal, closeModal } = useAuthStore(); + + return ( + <> + + + + + + + ); +}; diff --git a/apps/app/src/components/AvatarProfile.tsx b/apps/app/src/components/AvatarProfile.tsx new file mode 100644 index 00000000..2b2c0553 --- /dev/null +++ b/apps/app/src/components/AvatarProfile.tsx @@ -0,0 +1,220 @@ +import { useState, useEffect, useCallback } from "react"; +import { NetworkIDEnum, Social } from "@builddao/near-social-js"; +import { ViewMethod } from "../hooks/near-method"; +import { replaceIpfsUrl } from "../utils/ipfs"; + +// Constants +const DEFAULT_AVATAR = + "https://ipfs.near.social/ipfs/bafkreibiyqabm3kl24gcb2oegb7pmwdi6wwrpui62iwb44l7uomnn3lhbi"; + +interface NFTMetadata { + base_uri?: string; + [key: string]: any; +} + +interface NFTToken { + media?: string; + reference?: string; + metadata?: { + media?: string; + }; + [key: string]: any; +} + +type AvatarSize = "small" | "medium" | "large"; + +interface AvatarProfileProps { + accountId: string; + size?: AvatarSize; + style?: string; + image?: string; +} + +const sizeMap: Record = { + small: 24, + medium: 32, + large: 40, +}; + +export const AvatarProfile: React.FC = ({ + accountId, + size = "medium", + style, + image, +}) => { + const [avatar, setAvatar] = useState(null); + const [oldUrl, setOldUrl] = useState(null); + const [imageUrls, setImageUrl] = useState(null); + const [img, setImg] = useState(null); + + const replaceIpfs = useCallback( + (imageUrl: string) => { + if (oldUrl !== imageUrl && imageUrl) { + const newImageUrl = replaceIpfsUrl(imageUrl); + if (newImageUrl) { + setOldUrl(imageUrl); + setImageUrl(newImageUrl); + return; + } + } + if (imageUrl !== null) { + setImageUrl(null); + } + }, + [oldUrl], + ); + + const getThumbnailUrl = useCallback( + (imageUrl: string) => + imageUrl && !imageUrl.startsWith("data:image/") + ? `https://i.near.social/${imageUrl}` + : imageUrl, + [], + ); + + const fetchNFTMetadata = useCallback( + async (contractId: string, tokenId: string) => { + try { + const nftMetadata = (await ViewMethod( + contractId, + "nft_metadata", + {}, + )) as NFTMetadata; + const tokenMetadata = (await ViewMethod(contractId, "nft_token", { + token_id: tokenId, + })) as NFTToken; + + if (!nftMetadata || !tokenMetadata) return null; + + let imageUrl = tokenMetadata.media || ""; + + if (imageUrl) { + if ( + imageUrl.startsWith("https://") || + imageUrl.startsWith("http://") || + imageUrl.startsWith("data:image") + ) { + return imageUrl; + } + if (nftMetadata.base_uri) { + return `${nftMetadata.base_uri}/${imageUrl}`; + } + if (imageUrl.startsWith("Qm") || imageUrl.startsWith("ba")) { + return `https://ipfs.near.social/ipfs/${imageUrl}`; + } + return imageUrl; + } + + if (tokenMetadata.reference) { + const referenceUrl = await handleReferenceUrl( + nftMetadata.base_uri, + tokenMetadata.reference, + ); + if (referenceUrl) return referenceUrl; + } + + return null; + } catch (error) { + console.error("Error fetching NFT metadata:", error); + return null; + } + }, + [], + ); + + const handleReferenceUrl = async ( + baseUri: string | undefined, + reference: string, + ) => { + try { + if ( + baseUri === "https://arweave.net" && + !reference.startsWith("https://") + ) { + const res = await fetch(`${baseUri}/${reference}`); + const data = await res.json(); + return data.media; + } + if (reference.startsWith("https://") || reference.startsWith("http://")) { + const res = await fetch(reference); + const data = await res.json(); + return data.media; + } + if (reference.startsWith("ar://")) { + const res = await fetch( + `${"https://arweave.net"}/${reference.split("//")[1]}`, + ); + const data = await res.json(); + return data.media; + } + return null; + } catch (error) { + console.error("Error handling reference URL:", error); + return null; + } + }; + + useEffect(() => { + const fetchAvatar = async () => { + if (!accountId) return; + + const social = new Social({ + contractId: + process.env.PUBLIC_NETWORK === "mainnet" + ? "social.near" + : "v1.social08.testnet", + network: + process.env.PUBLIC_NETWORK === "mainnet" + ? NetworkIDEnum.Mainnet + : NetworkIDEnum.Testnet, + }); + + try { + const result: any = await social.get({ + keys: [`${accountId}/profile/**`], + useApiServer: process.env.PUBLIC_NETWORK === "mainnet", + }); + + const profileData = result?.[accountId]?.profile; + const avatarUrl = profileData?.image?.ipfs_cid; + const nftData = profileData?.image?.nft; + + if (nftData) { + const { contractId, tokenId } = nftData; + const imageUrl = await fetchNFTMetadata(contractId, tokenId); + if (imageUrl) { + const src = imageUrls || imageUrl; + setImg(src); + setAvatar(getThumbnailUrl(src)); + } + } else if (avatarUrl) { + setAvatar(`https://ipfs.near.social/ipfs/${avatarUrl}`); + } + } catch (error) { + console.error("Error fetching avatar:", error); + setAvatar(DEFAULT_AVATAR); + } + }; + + fetchAvatar(); + }, [accountId, fetchNFTMetadata, getThumbnailUrl, imageUrls]); + + const avatarSrc = + avatar || + (image ? `https://ipfs.near.social/ipfs/${image}` : DEFAULT_AVATAR); + const avatarSize = sizeMap[size]; + + return ( +

    + ); +}; diff --git a/apps/app/src/components/BasicInformationForm.tsx b/apps/app/src/components/BasicInformationForm.tsx new file mode 100644 index 00000000..b6a0b3a9 --- /dev/null +++ b/apps/app/src/components/BasicInformationForm.tsx @@ -0,0 +1,189 @@ +import { zodResolver } from "@hookform/resolvers/zod"; +import { useEffect, useState } from "react"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import { useWeb3Auth } from "../hooks/use-web3-auth"; +import { useAuthStore } from "../store/auth-store"; +import { useFeedCreationStore } from "../store/feed-creation-store"; +import { AuthUserInfo } from "../types/web3auth"; +import { Button } from "./ui/button"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "./ui/form"; +import { Input } from "./ui/input"; +import { Textarea } from "./ui/textarea"; +import { ImageUpload } from "./ImageUpload"; + +const BasicInformationFormSchema = z.object({ + profileImage: z.string().optional(), + feedName: z.string().min(3, "Feed name must be at least 3 characters"), + description: z.string().min(10, "Description must be at least 10 characters"), + hashtags: z.string().min(1, "Please provide at least one hashtag"), +}); + +type FormValues = z.infer; + +export default function BasicInformationForm() { + const [userInfo, setUserInfo] = useState>(); + const { isLoggedIn, getUserInfo } = useWeb3Auth(); + const { showLoginModal } = useAuthStore(); + const { + profileImage: storedProfileImage, + feedName, + description, + hashtags, + setBasicInfo, + } = useFeedCreationStore(); + + const form = useForm({ + resolver: zodResolver(BasicInformationFormSchema), + defaultValues: { + profileImage: storedProfileImage || "", + feedName: feedName || "", + description: description || "", + hashtags: hashtags || "", + }, + }); + + useEffect(() => { + const fetchUserInfo = async () => { + try { + const info = await getUserInfo(); + setUserInfo(info); + } catch (error) { + console.error("Error fetching user info:", error); + } + }; + + if (isLoggedIn) { + fetchUserInfo(); + } else { + setUserInfo({}); + } + }, [isLoggedIn, getUserInfo]); + + const onSubmit = (data: FormValues) => { + console.log("Form submitted:", data); + setBasicInfo({ + ...data, + createdAt: new Date(), + }); + }; + + return ( +
    + {isLoggedIn && userInfo ? ( +
    + + {/* Image Upload */} + ( + + + { + field.onChange(ipfsUrl); + setBasicInfo({ profileImage: ipfsUrl }); + }} + recommendedText="Recommended: Square, at least 400x400px. This will be your feed's avatar." + /> + + + + )} + /> + + {/* Feed Name */} + ( + + Feed Name + + { + field.onChange(e); + setBasicInfo({ feedName: e.target.value }); + }} + /> + + + + )} + /> + + {/* Description */} + ( + + Description + +

    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�b6FITMji0x({6HhBxD&ZHJR6D9*_^U`4x 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

  • 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 z