From 3058f5d22ec1f7e3ace1e5a6e61b580453729193 Mon Sep 17 00:00:00 2001 From: KATT Date: Fri, 20 Oct 2023 12:28:22 +0200 Subject: [PATCH] rm async --- examples/async/package.json | 22 ---- examples/async/src/client.ts | 64 ---------- examples/async/src/iteratorUtils.ts | 33 ----- examples/async/src/server.ts | 80 ------------ examples/async/src/shared.ts | 21 ---- examples/async/tsconfig.json | 11 -- pnpm-lock.yaml | 183 ---------------------------- 7 files changed, 414 deletions(-) delete mode 100644 examples/async/package.json delete mode 100644 examples/async/src/client.ts delete mode 100644 examples/async/src/iteratorUtils.ts delete mode 100644 examples/async/src/server.ts delete mode 100644 examples/async/src/shared.ts delete mode 100644 examples/async/tsconfig.json diff --git a/examples/async/package.json b/examples/async/package.json deleted file mode 100644 index 5c7919a4..00000000 --- a/examples/async/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@examples/json-stream", - "version": "0.0.0", - "private": true, - "description": "An example project for tupleson", - "license": "MIT", - "module": "module", - "scripts": { - "build": "tsc", - "dev:server": "tsx watch src/server", - "dev:client": "tsx watch src/client", - "dev": "run-p dev:* --print-label" - }, - "devDependencies": { - "@types/node": "^18.16.16", - "npm-run-all": "^4.1.5", - "tsx": "^3.12.7", - "tupleson": "latest", - "typescript": "^5.1.3", - "wait-port": "^1.0.1" - } -} diff --git a/examples/async/src/client.ts b/examples/async/src/client.ts deleted file mode 100644 index 6d443b97..00000000 --- a/examples/async/src/client.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { createTsonParseAsync } from "tupleson"; -import waitPort from "wait-port"; - -import type { ResponseShape } from "./server.js"; - -import { mapIterable, readableStreamToAsyncIterable } from "./iteratorUtils.js"; -import { tsonOptions } from "./shared.js"; - -// create the async parser -const tsonParseAsync = createTsonParseAsync(tsonOptions); - -async function main() { - const port = 3000; - await waitPort({ port }); - - // - const response = await fetch(`http://localhost:${port}`); - - if (!response.body) { - throw new Error("Response body is empty"); - } - - const textDecoder = new TextDecoder(); - - // convert the response body to an async iterable - const stringIterator = mapIterable( - readableStreamToAsyncIterable(response.body), - (v) => textDecoder.decode(v), - ); - // - - // ✨ ✨ ✨ ✨ parse the response body stream ✨ ✨ ✨ ✨ ✨ - const output = await tsonParseAsync(stringIterator); - - // .... we can now use the output as a normal object 🤯🤯 - console.log({ output }); - - console.log("[output.promise] Promise result:", await output.promise); - - // Iterate over the async iterators - const printBigInts = async () => { - for await (const value of output.bigints) { - console.log(`[output.bigints] Received bigint:`, value); - } - }; - - // Iterate over the async iterators - const printNumbers = async () => { - for await (const value of output.numbers) { - console.log(`[output.numbers] Received number:`, value); - } - }; - - await Promise.all([printBigInts(), printNumbers()]); - - console.log( - `✅ Output ended - visit http://localhost:${port} to see the raw server output`, - ); -} - -main().catch((err) => { - console.error(err); - throw err; -}); diff --git a/examples/async/src/iteratorUtils.ts b/examples/async/src/iteratorUtils.ts deleted file mode 100644 index 27850c95..00000000 --- a/examples/async/src/iteratorUtils.ts +++ /dev/null @@ -1,33 +0,0 @@ -export async function* readableStreamToAsyncIterable( - stream: ReadableStream, -): AsyncIterable { - // Get a lock on the stream - const reader = stream.getReader(); - - try { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - while (true) { - // Read from the stream - const result = await reader.read(); - - // Exit if we're done - if (result.done) { - return; - } - - // Else yield the chunk - yield result.value; - } - } finally { - reader.releaseLock(); - } -} - -export async function* mapIterable( - iterable: AsyncIterable, - fn: (v: T) => TValue, -): AsyncIterable { - for await (const value of iterable) { - yield fn(value); - } -} diff --git a/examples/async/src/server.ts b/examples/async/src/server.ts deleted file mode 100644 index c40bb773..00000000 --- a/examples/async/src/server.ts +++ /dev/null @@ -1,80 +0,0 @@ -import http from "node:http"; -import { createTsonStreamAsync } from "tupleson"; - -import { tsonOptions } from "./shared.js"; - -const tsonStringifyAsync = createTsonStreamAsync(tsonOptions); - -const randomNumber = (min: number, max: number) => - Math.floor(Math.random() * (max - min + 1) + min); - -const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); - -/** - * This function returns the object we will be sending to the client. - */ -export function getResponseShape() { - async function* bigintGenerator() { - const iterate = new Array(10).fill(0).map((_, i) => BigInt(i)); - for (const number of iterate) { - await sleep(randomNumber(1, 400)); - yield number; - } - } - - async function* numberGenerator() { - const iterate = new Array(10).fill(0).map((_, i) => i); - for (const number of iterate) { - await sleep(randomNumber(1, 400)); - yield number; - } - } - - return { - bigints: bigintGenerator(), - foo: "bar", - numbers: numberGenerator(), - promise: new Promise((resolve) => - setTimeout(() => { - resolve(42); - }, 1), - ), - rejectedPromise: new Promise((_, reject) => - setTimeout(() => { - reject(new Error("Rejected promise")); - }, 1), - ), - }; -} - -export type ResponseShape = ReturnType; -async function handleRequest( - req: http.IncomingMessage, - res: http.ServerResponse, -) { - res.writeHead(200, { "Content-Type": "application/json" }); - - const obj = getResponseShape(); - - // Stream the response to the client - for await (const chunk of tsonStringifyAsync(obj)) { - res.write(chunk); - } - - res.end(); -} - -const server = http.createServer( - (req: http.IncomingMessage, res: http.ServerResponse) => { - handleRequest(req, res).catch((err) => { - console.error(err); - res.writeHead(500, { "Content-Type": "text/plain" }); - res.end("Internal Server Error\n"); - }); - }, -); - -const port = 3000; -server.listen(port); - -console.log(`Server running at http://localhost:${port}`); diff --git a/examples/async/src/shared.ts b/examples/async/src/shared.ts deleted file mode 100644 index cc973f9d..00000000 --- a/examples/async/src/shared.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { - TsonAsyncOptions, - tsonAsyncIterable, - tsonBigint, - tsonPromise, -} from "tupleson"; - -/** - * Shared tupleSON options for the server and client. - */ -export const tsonOptions: TsonAsyncOptions = { - // We need to specify the types we want to allow serialization of - types: [ - // Allow serialization of promises - tsonPromise, - // Allow serialization of async iterators - tsonAsyncIterable, - // Allow serialization of bigints - tsonBigint, - ], -}; diff --git a/examples/async/tsconfig.json b/examples/async/tsconfig.json deleted file mode 100644 index 95c6bc3b..00000000 --- a/examples/async/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", - "outDir": "dist", - "strict": true, - "target": "esnext" - }, - "include": ["src"] -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 223c0510..81c6a834 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -153,27 +153,6 @@ importers: specifier: link:.. version: link:.. - examples/async: - devDependencies: - '@types/node': - specifier: ^18.16.16 - version: 18.18.3 - npm-run-all: - specifier: ^4.1.5 - version: 4.1.5 - tsx: - specifier: ^3.12.7 - version: 3.13.0 - tupleson: - specifier: link:../.. - version: link:../.. - typescript: - specifier: ^5.1.3 - version: 5.2.2 - wait-port: - specifier: ^1.0.1 - version: 1.1.0 - examples/sse: dependencies: '@radix-ui/react-icons': @@ -2570,11 +2549,6 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: true - /comment-json@4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} @@ -2825,17 +2799,6 @@ packages: typescript: 5.2.2 dev: true - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -4857,10 +4820,6 @@ packages: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true - /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true @@ -4986,16 +4945,6 @@ packages: uc.micro: 1.0.6 dev: true - /load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: true - /load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5248,11 +5197,6 @@ packages: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: true - /memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - dev: true - /meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} @@ -5477,10 +5421,6 @@ packages: - babel-plugin-macros dev: false - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: true - /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -5595,22 +5535,6 @@ packages: - typescript dev: true - /npm-run-all@4.1.5: - resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} - engines: {node: '>= 4'} - hasBin: true - dependencies: - ansi-styles: 3.2.1 - chalk: 2.4.2 - cross-spawn: 6.0.5 - memorystream: 0.3.1 - minimatch: 3.1.2 - pidtree: 0.3.1 - read-pkg: 3.0.0 - shell-quote: 1.8.1 - string.prototype.padend: 3.1.5 - dev: true - /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -5880,14 +5804,6 @@ packages: is-hexadecimal: 1.0.4 dev: true - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -5940,11 +5856,6 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: true - /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -5966,13 +5877,6 @@ packages: minipass: 7.0.4 dev: true - /path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: true - /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -5993,21 +5897,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pidtree@0.3.1: - resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: true - /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} @@ -6270,15 +6163,6 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - dev: true - /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -6599,13 +6483,6 @@ packages: has-property-descriptors: 1.0.0 dev: true - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: true - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -6613,11 +6490,6 @@ packages: shebang-regex: 3.0.0 dev: true - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true - /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -6627,10 +6499,6 @@ packages: resolution: {integrity: sha512-lT297f1WLAdq0A4O+AknIFRP6kkiI3s8C913eJ0XqBxJbZPGWUNkRQk2u8zk4bEAjUJ5i+fSLwB6z1HzeT+DEg==} dev: true - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: true - /shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} engines: {node: '>=4'} @@ -6726,13 +6594,6 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -6840,15 +6701,6 @@ packages: resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} dev: true - /string.prototype.padend@3.1.5: - resolution: {integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 - dev: true - /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} @@ -6894,11 +6746,6 @@ packages: ansi-regex: 6.0.1 dev: true - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -7228,17 +7075,6 @@ packages: typescript: 5.2.2 dev: true - /tsx@3.13.0: - resolution: {integrity: sha512-rjmRpTu3as/5fjNq/kOkOtihgLxuIz6pbKdj9xwP4J5jOLkBxw/rjN5ANw+KyrrOXV5uB7HC8+SrrSJxT65y+A==} - hasBin: true - dependencies: - esbuild: 0.18.20 - get-tsconfig: 4.7.2 - source-map-support: 0.5.21 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -7611,18 +7447,6 @@ packages: resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} dev: true - /wait-port@1.1.0: - resolution: {integrity: sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==} - engines: {node: '>=10'} - hasBin: true - dependencies: - chalk: 4.1.2 - commander: 9.5.0 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -7691,13 +7515,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'}