diff --git a/.gitignore b/.gitignore index 801b18a..442a78b 100644 --- a/.gitignore +++ b/.gitignore @@ -38,4 +38,7 @@ yarn-error.log* #vite dist -*.log \ No newline at end of file +*.log + +# isolate-package +isolate \ No newline at end of file diff --git a/apps/api/package.json b/apps/api/package.json index 581632b..4a90cea 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -21,19 +21,19 @@ "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log", - "clean": "rimraf node_modules dist" + "clean": "rimraf node_modules dist isolate" }, "engines": { "node": "20" }, "main": "dist/index.js", "dependencies": { - "utilities": "workspace:*", "@faker-js/faker": "^8.0.1", "express": "^4.18.2", "fastify": "^4.26.2", "firebase-admin": "^12.0.0", - "firebase-functions": "^4.8.1" + "firebase-functions": "^4.8.1", + "utilities": "workspace:*" }, "devDependencies": { "@types/rollup-plugin-generate-package-json": "^3.2.0", @@ -45,6 +45,7 @@ "firebase-functions-test": "^3.1.0", "rimraf": "^5.0.1", "rollup-plugin-generate-package-json": "^3.2.0", + "@google-cloud/functions-framework": "^3.3.0", "typescript": "^5.0.0", "vite": "^5.0.0" }, diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index b0fb3a7..3b21e87 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -20,14 +20,32 @@ import { onRequest } from 'firebase-functions/v2/https'; import { fastify } from 'fastify'; -import { registerRoutes } from './utils'; +import { registerRoutes, setContentTypeParser } from './utils'; const app = fastify({ logger: true, }); +// Register the content type parser before starting the server +setContentTypeParser( + app, + 'application/json', + { parseAs: 'string' }, + (request, incomingMessage, done) => { + // useful to include the request's raw body on the `req` object that will + // later be available in your other routes so you can calculate the HMAC + // if needed + // @ts-expect-error - taken from Fastify docs + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- taken from Fastify docs + request.rawBody = incomingMessage.rawBody; + // @ts-expect-error - taken from Fastify docs + done(null, incomingMessage.body); + } +); + +registerRoutes(app); + export const server = onRequest(async (request, reply) => { - registerRoutes(app); await app.ready(); app.server.emit('request', request, reply); }); diff --git a/apps/api/src/utils.ts b/apps/api/src/utils.ts index 5aa50dc..55c3ce2 100644 --- a/apps/api/src/utils.ts +++ b/apps/api/src/utils.ts @@ -1,27 +1,16 @@ import { iLikeTurtles } from 'utilities'; import { faker } from '@faker-js/faker'; -import { type FastifyInstance, type FastifyRequest } from 'fastify'; +import type { AddContentTypeParser, FastifyInstance } from 'fastify'; -export interface Request extends FastifyRequest { - /** The wire format representation of the request body. */ - rawBody: Buffer; -} +export const setContentTypeParser = ( + app: FastifyInstance, + ...[contentType, opts, parser]: Parameters +) => { + app.removeContentTypeParser(contentType); + app.addContentTypeParser(contentType, opts, parser); +}; export const registerRoutes = (fastify: FastifyInstance) => { - fastify.addContentTypeParser('application/json', {}, (req, payload, done) => { - // useful to include the request's raw body on the `req` object that will - // later be available in your other routes so you can calculate the HMAC - // if needed - // @ts-expect-error - taken from Fastify docs - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- taken from Fastify docs - req.rawBody = payload.rawBody; - - // payload.body is already the parsed JSON so we just fire the done callback - // with it - // @ts-expect-error - taken from Fastify docs - done(null, payload.body); - }); - // define your endpoints here... fastify.post('/some-route-here', (_request) => { return { message: 'Hello World!!' }; diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json index 3acb32b..0b9f253 100644 --- a/apps/api/tsconfig.json +++ b/apps/api/tsconfig.json @@ -2,7 +2,8 @@ "compilerOptions": { "paths": { "@/*": ["./src/*"] - } + }, + "outDir": "dist" }, "extends": "tsconfig/functions.json", "include": ["."], diff --git a/package.json b/package.json index abe28ab..134279a 100644 --- a/package.json +++ b/package.json @@ -10,16 +10,15 @@ "scripts": { "start": "turbo run dev emulators", "dev": "turbo run dev", - "emulate": "turbo run root:emulate", + "emulate": "turbo run build && firebase emulators:start", "clean": "turbo run root:clean clean", "build": "turbo run build", - "deploy": "turbo run build --parallel && turbo run deploy --filter=web --filter=api", + "deploy": "turbo run deploy", "lint": "pnpm format:check && turbo run lint", "lint:fix": "pnpm format && turbo run lint -- --fix", "format": "prettier --write \"**/*.{ts,tsx,md}\"", "format:check": "prettier --check \"**/*.{ts,tsx,md}\"", - "root:clean": "rimraf node_modules", - "root:emulate": "firebase emulators:start" + "root:clean": "rimraf node_modules" }, "devDependencies": { "eslint-config-custom": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6bab720..d20c4eb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,6 +48,9 @@ importers: specifier: workspace:* version: link:../../packages/utilities devDependencies: + '@google-cloud/functions-framework': + specifier: ^3.3.0 + version: 3.3.0 '@types/rollup-plugin-generate-package-json': specifier: ^3.2.0 version: 3.2.9 @@ -924,6 +927,23 @@ packages: - supports-color optional: true + /@google-cloud/functions-framework@3.3.0: + resolution: {integrity: sha512-+4O1dX5VNRK1W1NyAia7zy5jLf88ytuz39/1kVUUaNiOf76YbMZKV0YjZwfk7uEwRrC6l2wynK1G+q8Gb5DeVw==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + '@types/express': 4.17.17 + body-parser: 1.20.2 + cloudevents: 7.0.2 + express: 4.19.2 + minimist: 1.2.8 + on-finished: 2.4.1 + read-pkg-up: 7.0.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + /@google-cloud/paginator@4.0.1: resolution: {integrity: sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ==} engines: {node: '>=12.0.0'} @@ -1032,7 +1052,6 @@ packages: /@grpc/grpc-js@1.8.21: resolution: {integrity: sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg==} engines: {node: ^8.13.0 || >=10.10.0} - requiresBuild: true dependencies: '@grpc/proto-loader': 0.7.12 '@types/node': 20.11.30 @@ -1362,7 +1381,6 @@ packages: /@jsdoc/salty@0.2.7: resolution: {integrity: sha512-mh8LbS9d4Jq84KLw8pzho7XC2q2/IJGiJss3xwRoLD1A+EE16SjN4PfaG4jRCzKegTFLlN0Zd8SdUPE6XdoPFg==} engines: {node: '>=v12.0.0'} - requiresBuild: true dependencies: lodash: 4.17.21 dev: true @@ -1416,7 +1434,7 @@ packages: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 lru-cache: 10.2.0 - socks-proxy-agent: 8.0.2 + socks-proxy-agent: 8.0.3 transitivePeerDependencies: - supports-color dev: true @@ -1467,7 +1485,6 @@ packages: /@npmcli/fs@3.1.0: resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - requiresBuild: true dependencies: semver: 7.6.0 dev: true @@ -2111,6 +2128,15 @@ packages: '@types/range-parser': 1.2.7 '@types/send': 0.17.4 + /@types/express@4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.43 + '@types/qs': 6.9.14 + '@types/serve-static': 1.15.5 + dev: true + /@types/express@4.17.21: resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: @@ -2128,7 +2154,6 @@ packages: /@types/glob@8.1.0: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} - requiresBuild: true dependencies: '@types/minimatch': 5.1.2 '@types/node': 20.11.30 @@ -2174,7 +2199,6 @@ packages: /@types/linkify-it@3.0.5: resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} - requiresBuild: true dev: true /@types/lodash@4.17.0: @@ -2186,7 +2210,6 @@ packages: /@types/markdown-it@12.2.3: resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} - requiresBuild: true dependencies: '@types/linkify-it': 3.0.5 '@types/mdurl': 1.0.5 @@ -2194,7 +2217,6 @@ packages: /@types/mdurl@1.0.5: resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} - requiresBuild: true dev: true /@types/mime@1.3.5: @@ -2205,7 +2227,6 @@ packages: /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - requiresBuild: true dev: true /@types/node@20.11.30: @@ -2252,7 +2273,6 @@ packages: /@types/rimraf@3.0.2: resolution: {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==} - requiresBuild: true dependencies: '@types/glob': 8.1.0 '@types/node': 20.11.30 @@ -2592,7 +2612,6 @@ packages: /abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - requiresBuild: true dev: true /abort-controller@3.0.0: @@ -2643,10 +2662,18 @@ packages: transitivePeerDependencies: - supports-color + /agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - requiresBuild: true dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 @@ -3160,7 +3187,6 @@ packages: /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - requiresBuild: true dev: true /body-parser@1.20.2: @@ -3288,7 +3314,6 @@ packages: /cacache@18.0.2: resolution: {integrity: sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==} engines: {node: ^16.14.0 || >=18.0.0} - requiresBuild: true dependencies: '@npmcli/fs': 3.1.0 fs-minipass: 3.0.3 @@ -3348,7 +3373,6 @@ packages: /catharsis@0.9.0: resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} engines: {node: '>= 10'} - requiresBuild: true dependencies: lodash: 4.17.21 dev: true @@ -3439,7 +3463,6 @@ packages: /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - requiresBuild: true dev: true /cli-boxes@2.2.1: @@ -3494,6 +3517,18 @@ packages: engines: {node: '>=0.8'} dev: true + /cloudevents@7.0.2: + resolution: {integrity: sha512-WiOqWsNkMZmMMZ6xa3kzx/MA+8+V+c5eGkStZIcik+Px2xCobmzcacw1EOGyfhODaQKkIv8TxXOOLzV69oXFqA==} + engines: {node: '>=16 <=20'} + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + json-bigint: 1.0.0 + process: 0.11.10 + util: 0.12.5 + uuid: 8.3.2 + dev: true + /cmd-shim@6.0.2: resolution: {integrity: sha512-+FFYbB0YLaAkhkcrjkyNLYDiOsFSfRjwjY19LXk/psmMx1z00xlCv7hhQoTGXXIKi+YXHL/iiFo8NqMVQX9nOw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4080,7 +4115,6 @@ packages: /entities@2.1.0: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - requiresBuild: true dev: true /env-paths@2.2.1: @@ -4091,7 +4125,6 @@ packages: /err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - requiresBuild: true dev: true /error-ex@1.3.2: @@ -4276,7 +4309,6 @@ packages: resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} engines: {node: '>=4.0'} hasBin: true - requiresBuild: true dependencies: esprima: 4.0.1 estraverse: 4.3.0 @@ -4799,7 +4831,7 @@ packages: openapi3-ts: 3.2.0 promise-breaker: 6.0.0 pump: 3.0.0 - qs: 6.12.0 + qs: 6.11.0 raw-body: 2.5.2 semver: 7.6.0 transitivePeerDependencies: @@ -5301,7 +5333,6 @@ packages: /fs-minipass@3.0.3: resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - requiresBuild: true dependencies: minipass: 7.0.4 dev: true @@ -5376,7 +5407,6 @@ packages: /gaxios@5.1.3: resolution: {integrity: sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==} engines: {node: '>=12'} - requiresBuild: true dependencies: extend: 3.0.2 https-proxy-agent: 5.0.1 @@ -5415,7 +5445,6 @@ packages: /gcp-metadata@5.3.0: resolution: {integrity: sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==} engines: {node: '>=12'} - requiresBuild: true dependencies: gaxios: 5.1.3 json-bigint: 1.0.0 @@ -5554,7 +5583,6 @@ packages: /glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} - requiresBuild: true dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5723,7 +5751,6 @@ packages: resolution: {integrity: sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==} engines: {node: '>=12.0.0'} hasBin: true - requiresBuild: true dependencies: node-forge: 1.3.1 dev: true @@ -5760,7 +5787,6 @@ packages: /gtoken@6.1.2: resolution: {integrity: sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==} engines: {node: '>=12.0.0'} - requiresBuild: true dependencies: gaxios: 5.1.3 google-p12-pem: 4.0.1 @@ -6068,6 +6094,14 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -6941,7 +6975,6 @@ packages: /js2xmlparser@4.0.2: resolution: {integrity: sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==} - requiresBuild: true dependencies: xmlcreate: 2.0.4 dev: true @@ -6954,7 +6987,6 @@ packages: resolution: {integrity: sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==} engines: {node: '>=12.0.0'} hasBin: true - requiresBuild: true dependencies: '@babel/parser': 7.24.1 '@jsdoc/salty': 0.2.7 @@ -7150,7 +7182,6 @@ packages: /klaw@3.0.0: resolution: {integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==} - requiresBuild: true dependencies: graceful-fs: 4.2.11 dev: true @@ -7190,7 +7221,6 @@ packages: /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} - requiresBuild: true dependencies: prelude-ls: 1.1.2 type-check: 0.3.2 @@ -7231,7 +7261,6 @@ packages: /linkify-it@3.0.3: resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} - requiresBuild: true dependencies: uc.micro: 1.0.6 dev: true @@ -7408,7 +7437,6 @@ packages: /make-fetch-happen@13.0.0: resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} engines: {node: ^16.14.0 || >=18.0.0} - requiresBuild: true dependencies: '@npmcli/agent': 2.2.1 cacache: 18.0.2 @@ -7440,7 +7468,6 @@ packages: /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} - requiresBuild: true peerDependencies: '@types/markdown-it': '*' markdown-it: '*' @@ -7452,7 +7479,6 @@ packages: /markdown-it@12.3.2: resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} hasBin: true - requiresBuild: true dependencies: argparse: 2.0.1 entities: 2.1.0 @@ -7484,7 +7510,6 @@ packages: /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - requiresBuild: true dev: true /media-typer@0.3.0: @@ -7607,7 +7632,6 @@ packages: /minipass-collect@2.0.1: resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} engines: {node: '>=16 || 14 >=14.17'} - requiresBuild: true dependencies: minipass: 7.0.4 dev: true @@ -7615,7 +7639,6 @@ packages: /minipass-fetch@3.0.4: resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - requiresBuild: true dependencies: minipass: 7.0.4 minipass-sized: 1.0.3 @@ -7627,7 +7650,6 @@ packages: /minipass-flush@1.0.5: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} engines: {node: '>= 8'} - requiresBuild: true dependencies: minipass: 3.3.6 dev: true @@ -7642,7 +7664,6 @@ packages: /minipass-pipeline@1.2.4: resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} engines: {node: '>=8'} - requiresBuild: true dependencies: minipass: 3.3.6 dev: true @@ -7650,7 +7671,6 @@ packages: /minipass-sized@1.0.3: resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} engines: {node: '>=8'} - requiresBuild: true dependencies: minipass: 3.3.6 dev: true @@ -7785,7 +7805,6 @@ packages: resolution: {integrity: sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==} engines: {node: ^16.14.0 || >=18.0.0} hasBin: true - requiresBuild: true dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 @@ -7813,7 +7832,6 @@ packages: resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true - requiresBuild: true dependencies: abbrev: 2.0.0 dev: true @@ -8050,7 +8068,6 @@ packages: /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} - requiresBuild: true dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -8141,7 +8158,6 @@ packages: /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} - requiresBuild: true dependencies: aggregate-error: 3.1.0 dev: true @@ -8162,7 +8178,7 @@ packages: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.2 + socks-proxy-agent: 8.0.3 transitivePeerDependencies: - supports-color dev: true @@ -8378,7 +8394,6 @@ packages: /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} - requiresBuild: true dev: true /prelude-ls@1.2.1: @@ -8417,7 +8432,6 @@ packages: /proc-log@3.0.0: resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - requiresBuild: true dev: true /process-nextick-args@2.0.1: @@ -8431,7 +8445,6 @@ packages: /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - dev: false /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} @@ -8462,7 +8475,6 @@ packages: /promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} - requiresBuild: true dependencies: err-code: 2.0.3 retry: 0.12.0 @@ -8491,9 +8503,8 @@ packages: /proto3-json-serializer@1.1.1: resolution: {integrity: sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==} engines: {node: '>=12.0.0'} - requiresBuild: true dependencies: - protobufjs: 7.2.4 + protobufjs: 7.2.6 dev: true /proto3-json-serializer@2.0.1: @@ -8508,7 +8519,6 @@ packages: resolution: {integrity: sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==} engines: {node: '>=12.0.0'} hasBin: true - requiresBuild: true peerDependencies: protobufjs: ^7.0.0 dependencies: @@ -8580,7 +8590,7 @@ packages: lru-cache: 7.18.3 pac-proxy-agent: 7.0.1 proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.2 + socks-proxy-agent: 8.0.3 transitivePeerDependencies: - supports-color dev: true @@ -8624,13 +8634,6 @@ packages: dependencies: side-channel: 1.0.6 - /qs@6.12.0: - resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.6 - dev: true - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -8890,7 +8893,6 @@ packages: /requizzle@0.2.4: resolution: {integrity: sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==} - requiresBuild: true dependencies: lodash: 4.17.21 dev: true @@ -8962,7 +8964,6 @@ packages: /retry-request@5.0.2: resolution: {integrity: sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==} engines: {node: '>=12'} - requiresBuild: true dependencies: debug: 4.3.4 extend: 3.0.2 @@ -8986,7 +8987,6 @@ packages: /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} - requiresBuild: true dev: true /retry@0.13.1: @@ -9314,11 +9314,11 @@ packages: engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} dev: true - /socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + /socks-proxy-agent@8.0.3: + resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 socks: 2.8.1 transitivePeerDependencies: @@ -9445,7 +9445,6 @@ packages: /ssri@10.0.5: resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - requiresBuild: true dependencies: minipass: 7.0.4 dev: true @@ -9993,7 +9992,6 @@ packages: /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} - requiresBuild: true dependencies: prelude-ls: 1.1.2 dev: true @@ -10105,14 +10103,12 @@ packages: /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - requiresBuild: true dev: true /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} hasBin: true - requiresBuild: true dev: true /unbox-primitive@1.0.2: @@ -10126,7 +10122,6 @@ packages: /underscore@1.13.6: resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} - requiresBuild: true dev: true /undici-types@5.26.5: @@ -10135,7 +10130,6 @@ packages: /unique-filename@3.0.0: resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - requiresBuild: true dependencies: unique-slug: 4.0.0 dev: true @@ -10143,7 +10137,6 @@ packages: /unique-slug@4.0.0: resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - requiresBuild: true dependencies: imurmurhash: 0.1.4 dev: true @@ -10221,6 +10214,16 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + dev: true + /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} @@ -10408,7 +10411,6 @@ packages: resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} engines: {node: ^16.13.0 || >=18.0.0} hasBin: true - requiresBuild: true dependencies: isexe: 3.1.1 dev: true @@ -10455,7 +10457,6 @@ packages: /word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - requiresBuild: true dev: true /wrap-ansi@6.2.0: @@ -10569,7 +10570,6 @@ packages: /xmlcreate@2.0.4: resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} - requiresBuild: true dev: true /y18n@5.0.8: diff --git a/turbo.json b/turbo.json index 0e3d248..2a12407 100644 --- a/turbo.json +++ b/turbo.json @@ -4,17 +4,11 @@ "dependsOn": ["^build"], "outputs": ["dist/**"] }, - "//#root:emulate": { - "dependsOn": ["^build"], - "cache": false, - "persistent": true - }, "deploy": { "dependsOn": ["build"] }, "lint": {}, "dev": { - // long-running "dependsOn": ["build"], "cache": false, "persistent": true