diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3878c88a8f..3d1eae59ba 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -104,26 +104,6 @@ jobs: - name: Build Web run: yarn nx build @affine/web - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: next-js - path: ./apps/web/.next - if-no-files-found: error - - build-web-desktop: - name: Build @affine/web (Desktop) - runs-on: ubuntu-latest - environment: development - - steps: - - uses: actions/checkout@v3 - - name: Setup Node.js - uses: ./.github/actions/setup-node - - - name: Export static resources - run: yarn nx export @affine/web - - - name: Upload static resources artifact uses: actions/upload-artifact@v3 with: name: next-js-static @@ -242,8 +222,8 @@ jobs: - name: Download artifact uses: actions/download-artifact@v3 with: - name: next-js - path: ./apps/web/.next + name: next-js-static + path: ./apps/web/out - name: Download storybook artifact uses: actions/download-artifact@v3 @@ -251,10 +231,6 @@ jobs: name: storybook path: ./apps/storybook/storybook-static - - name: Wait for Octobase Ready - run: | - node ./scripts/wait-3000-healthz.mjs - - name: Run playwright tests run: yarn e2e --forbid-only --shard=${{ matrix.shard }}/${{ strategy.job-total }} env: @@ -356,7 +332,7 @@ jobs: target: x86_64-pc-windows-msvc, test: true, } - needs: [build-web-desktop] + needs: [build-web] steps: - uses: actions/checkout@v3 - name: Setup Node.js diff --git a/apps/electron/project.json b/apps/electron/project.json new file mode 100644 index 0000000000..e5f25432e7 --- /dev/null +++ b/apps/electron/project.json @@ -0,0 +1,24 @@ +{ + "name": "@affine/electron", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "root": "apps/electron", + "sourceRoot": "apps/electron/src", + "targets": { + "build": { + "executor": "nx:run-script", + "dependsOn": [ + { + "projects": ["@affine/bookmark-block"], + "target": "build", + "params": "ignore" + }, + "^build" + ], + "options": { + "script": "build" + }, + "outputs": ["{projectRoot}/dist"] + } + } +} diff --git a/apps/web/next.config.mjs b/apps/web/next.config.mjs index 314d42f23e..83352b7a05 100644 --- a/apps/web/next.config.mjs +++ b/apps/web/next.config.mjs @@ -53,24 +53,9 @@ const profileTarget = { local: '127.0.0.1:3000', }; -const getRedirectConfig = profile => { - const target = profileTarget[profile || 'dev'] || profileTarget['dev']; - - return [ - [ - { source: '/api/:path*', destination: `http://${target}/api/:path*` }, - { - source: '/collaboration/:path*', - destination: `http://${target}/collaboration/:path*`, - }, - ], - target, - profile || 'dev', - ]; -}; - /** @type {import('next').NextConfig} */ const nextConfig = { + output: 'export', sentry: { hideSourceMaps: true, }, @@ -123,7 +108,6 @@ const nextConfig = { serverAPI: profileTarget[process.env.API_SERVER_PROFILE || 'dev'] ?? profileTarget.dev, - editorVersion: require('./package.json').dependencies['@blocksuite/editor'], editorFlags: blockSuiteFeatureFlags, ...buildFlags, }, @@ -162,13 +146,6 @@ const nextConfig = { return config; }, - rewrites: async () => { - const [profile, target, desc] = getRedirectConfig( - process.env.API_SERVER_PROFILE - ); - console.info(`API request proxy to [${desc} Server]: ` + target); - return profile; - }, basePath: process.env.NEXT_BASE_PATH, assetPrefix: process.env.NEXT_ASSET_PREFIX, pageExtensions: [ diff --git a/apps/web/package.json b/apps/web/package.json index 0c4e052fb3..36dd1cd754 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -5,8 +5,7 @@ "scripts": { "dev": "next dev", "build": "next build", - "export": "next export", - "start": "next start" + "start": "ts-node-esm server.mts" }, "dependencies": { "@affine-test/fixtures": "workspace:*", @@ -73,12 +72,14 @@ "eslint": "^8.43.0", "eslint-config-next": "^13.4.7", "eslint-plugin-unicorn": "^47.0.0", + "express": "^4.18.2", "next": "=13.4.2", "next-debug-local": "^0.1.5", "next-router-mock": "^0.9.7", "raw-loader": "^4.0.2", "redux": "^4.2.1", "swc-plugin-coverage-instrument": "^0.0.18", + "ts-node": "^10.9.1", "typescript": "^5.1.5", "webpack": "^5.88.0" }, diff --git a/apps/web/project.json b/apps/web/project.json new file mode 100644 index 0000000000..d722d6d90c --- /dev/null +++ b/apps/web/project.json @@ -0,0 +1,24 @@ +{ + "name": "@affine/web", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "root": "apps/web", + "sourceRoot": "apps/web/src", + "targets": { + "build": { + "executor": "nx:run-script", + "dependsOn": ["^build"], + "options": { + "script": "build" + }, + "outputs": ["{projectRoot}/out"] + }, + "dev": { + "executor": "nx:run-script", + "options": { + "script": "dev" + }, + "outputs": ["{projectRoot}/.next"] + } + } +} diff --git a/apps/web/server.mts b/apps/web/server.mts new file mode 100644 index 0000000000..b4a399149a --- /dev/null +++ b/apps/web/server.mts @@ -0,0 +1,34 @@ +// static server for web app +import express from 'express'; +const app = express(); + +const PORT = process.env.PORT || 8080; + +app.use('/', express.static('out')); + +app.use('/_debug/*', express.static('out/_debug/*.html')); +app.use( + '/workspace/*/all', + express.static('out/workspace/[workspaceId]/all.html') +); +app.use( + '/workspace/*/setting', + express.static('out/workspace/[workspaceId]/all.html') +); +app.use( + '/workspace/*/shared', + express.static('out/workspace/[workspaceId]/shared.html') +); +app.use( + '/workspace/*/trash', + express.static('out/workspace/[workspaceId]/trash.html') +); +app.use( + '/workspace/*/*', + express.static('out/workspace/[workspaceId]/[pageId].html') +); +app.use('/*', express.static('out/404.html')); + +app.listen(PORT, () => { + console.log(`Server is running on port ${PORT}`); +}); diff --git a/apps/web/src/components/root-app-sidebar/index.tsx b/apps/web/src/components/root-app-sidebar/index.tsx index aa565d78f7..2983901729 100644 --- a/apps/web/src/components/root-app-sidebar/index.tsx +++ b/apps/web/src/components/root-app-sidebar/index.tsx @@ -102,6 +102,7 @@ export const RootAppSidebar = ({ const t = useAFFiNEI18N(); const onClickNewPage = useCallback(async () => { const page = createPage(); + await page.waitForLoaded(); openPage(page.id); }, [createPage, openPage]); diff --git a/apps/web/src/layouts/workspace-layout.tsx b/apps/web/src/layouts/workspace-layout.tsx index 1ea9a4fd15..197c3f7489 100644 --- a/apps/web/src/layouts/workspace-layout.tsx +++ b/apps/web/src/layouts/workspace-layout.tsx @@ -282,14 +282,27 @@ export const WorkspaceLayoutInner: FC = ({ children }) => { currentWorkspace.blockSuiteWorkspace.meta._proxy.isEmpty = false; if (!router.query.pageId) { setCurrentPageId(pageId); - jumpToPage(currentWorkspace.id, pageId).catch(err => { - console.error(err); - }); + jumpToPage(currentWorkspace.id, pageId).catch(console.error); } } } //#endregion + if (currentPageId) { + const pageExist = + currentWorkspace.blockSuiteWorkspace.getPage(currentPageId); + if (router.pathname === '/[workspaceId]/[pageId]' && !pageExist) { + router.push('/404').catch(console.error); + } + } else if ( + router.pathname === '/[workspaceId]/[pageId]' && + typeof router.query.pageId === 'string' && + router.query.pageId !== currentPageId + ) { + setCurrentPageId(router.query.pageId); + jumpToPage(currentWorkspace.id, router.query.pageId).catch(console.error); + } + useEffect(() => { const backgroundProviders = currentWorkspace.blockSuiteWorkspace.providers.filter( @@ -307,9 +320,6 @@ export const WorkspaceLayoutInner: FC = ({ children }) => { }, [currentWorkspace]); useEffect(() => { - if (!currentWorkspace) { - return; - } const page = currentWorkspace.blockSuiteWorkspace.getPage( DEFAULT_HELLO_WORLD_PAGE_ID ); diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index d33bf2be10..6705fa73d1 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -18,7 +18,12 @@ "experimentalDecorators": true, "types": ["react/experimental"] }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "src/types/types.d.ts"], + "include": [ + "next-env.d.ts", + "src/**/*.ts", + "src/**/*.tsx", + "src/types/types.d.ts" + ], "exclude": ["node_modules"], "references": [ { @@ -55,6 +60,11 @@ }, { "path": "../../plugins/copilot" + }, + + // Static Server + { + "path": "./tsconfig.node.json" } ] } diff --git a/apps/web/tsconfig.node.json b/apps/web/tsconfig.node.json new file mode 100644 index 0000000000..0c45fae49f --- /dev/null +++ b/apps/web/tsconfig.node.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "outDir": "./lib" + }, + "include": ["server.mts"] +} diff --git a/nx.json b/nx.json index 83a865b299..5dc428433f 100644 --- a/nx.json +++ b/nx.json @@ -5,7 +5,7 @@ "default": { "runner": "nx-cloud", "options": { - "cacheableOperations": ["build", "test"], + "cacheableOperations": ["build", "test", "e2e", "lint"], "accessToken": "YmQ2NTg1ODktZTk5Mi00YzhiLTk2ZmUtNWQzMDg0NDBkOWM3fHJlYWQtb25seQ==" } } @@ -15,12 +15,15 @@ }, "namedInputs": { "default": ["{projectRoot}/**/*", "sharedGlobals"], - "packages": ["{workspaceRoot}/packages/**/*"], "sharedGlobals": [ "{workspaceRoot}/tsconfig.json", "{workspaceRoot}/nx.json" ], - "production": ["default"] + "production": [ + "default", + "!{projectRoot}/.eslintrc.json", + "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)" + ] }, "targetDefaults": { "build": { @@ -40,7 +43,6 @@ "{workspaceRoot/apps/electron/dist" ], "inputs": [ - "packages", { "runtime": "node -v" }, @@ -84,6 +86,7 @@ }, "e2e": { "dependsOn": ["^build"], + "outputs": ["{workspaceRoot}/.nyc_output", "{projectRoot}/test-results"], "inputs": [ { "runtime": "node -v" @@ -93,23 +96,51 @@ } ] }, - "export": { - "dependsOn": ["build"] - }, - "dev": { - "dependsOn": ["^dev"] - }, "e2e:coverage": { - "dependsOn": ["^build"] + "dependsOn": ["^build"], + "outputs": ["{workspaceRoot}/.nyc_output", "{projectRoot}/test-results"], + "inputs": [ + { + "runtime": "node -v" + }, + { + "runtime": "yarn playwright --version" + } + ] }, "test": { + "inputs": [ + { + "env": "ENABLE_PRELOADING" + } + ], "dependsOn": ["^build"] }, "test:ui": { + "inputs": [ + { + "env": "ENABLE_PRELOADING" + } + ], "dependsOn": ["^build"] }, "test:coverage": { + "inputs": [ + { + "env": "ENABLE_PRELOADING" + } + ], "dependsOn": ["^build"] } + }, + "generators": { + "@nx/react": { + "application": { + "babel": true + }, + "library": { + "unitTestRunner": "jest" + } + } } } diff --git a/package.json b/package.json index 9f65729bcf..6b2807272c 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,7 @@ "build:infra": "yarn nx run-many -t build -p plugin-infra infra", "build:plugins": "yarn nx run-many -t build -p @affine/bookmark-block", "build:storybook": "yarn nx build @affine/storybook", - "start:web": "yarn workspace @affine/web start", - "start:web-static": "yarn exec serve apps/web/out -l 8080", + "start:web-static": "yarn workspace @affine/web start", "start:storybook": "yarn exec serve apps/storybook/storybook-static -l 6006", "serve:test-static": "yarn exec serve tests/fixtures --cors -p 8081", "lint": "eslint . --ext .js,mjs,.ts,.tsx --cache", @@ -54,6 +53,7 @@ "@faker-js/faker": "^8.0.2", "@istanbuljs/schema": "^0.1.3", "@magic-works/i18n-codegen": "^0.5.0", + "@nx/vite": "16.3.2", "@perfsee/sdk": "^1.8.2", "@playwright/test": "=1.33.0", "@taplo/cli": "^0.5.2", @@ -90,6 +90,7 @@ "nyc": "^15.1.0", "prettier": "^2.8.8", "serve": "^14.2.0", + "ts-node": "^10.9.1", "typescript": "^5.1.5", "vite": "^4.3.9", "vite-plugin-istanbul": "^4.1.0", diff --git a/packages/cli/src/dev.ts b/packages/cli/src/dev.ts index b9a6366f0c..453bc49bf1 100755 --- a/packages/cli/src/dev.ts +++ b/packages/cli/src/dev.ts @@ -5,6 +5,7 @@ import * as path from 'node:path'; import { fileURLToPath } from 'node:url'; import * as p from '@clack/prompts'; +import { spawnSync } from 'child_process'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -57,7 +58,26 @@ if (dev.debugBlockSuite) { env.LOCAL_BLOCK_SUITE = ''; } -spawn('nx', ['dev', '@affine/web'], { +const packages = ['infra', 'plugin-infra']; + +spawnSync('nx', ['run-many', '-t', 'build', '-p', ...packages], { + env, + cwd, + stdio: 'inherit', + shell: true, +}); + +packages.forEach(pkg => { + const cwd = path.resolve(root, 'packages', pkg); + spawn('yarn', ['dev'], { + env, + cwd, + stdio: 'inherit', + shell: true, + }); +}); + +spawn('yarn', ['dev', '-p', '8080'], { env, cwd, stdio: 'inherit', diff --git a/packages/component/package.json b/packages/component/package.json index 84e3769e3b..59087299b5 100644 --- a/packages/component/package.json +++ b/packages/component/package.json @@ -7,10 +7,6 @@ "./theme/*": "./src/theme/*", "./*": "./src/components/*/index.tsx" }, - "scripts": { - "build": "yarn workspace @affine/i18n build", - "dev": "yarn workspace @affine/i18n dev" - }, "peerDependencies": { "@blocksuite/blocks": "*", "@blocksuite/editor": "*", diff --git a/packages/env/src/global.ts b/packages/env/src/global.ts index d48f720b82..225a37a325 100644 --- a/packages/env/src/global.ts +++ b/packages/env/src/global.ts @@ -87,7 +87,6 @@ export const publicRuntimeConfigSchema = buildFlagsSchema.extend({ gitVersion: z.string(), hash: z.string(), serverAPI: z.string(), - editorVersion: z.string(), editorFlags: blockSuiteFeatureFlags, }); @@ -173,7 +172,6 @@ function printBuildInfo() { 'Build date:', config.BUILD_DATE ? new Date(config.BUILD_DATE).toLocaleString() : 'Unknown' ); - console.log('Editor Version:', config.editorVersion); console.log('Version:', config.gitVersion); console.log( diff --git a/packages/i18n/project.json b/packages/i18n/project.json new file mode 100644 index 0000000000..42e3e95c77 --- /dev/null +++ b/packages/i18n/project.json @@ -0,0 +1,15 @@ +{ + "name": "i18n", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "sourceRoot": "packages/i18n/src", + "targets": { + "build": { + "executor": "nx:run-commands", + "options": { + "cwd": "packages/i18n", + "command": "node ./build.mjs" + } + } + } +} diff --git a/packages/infra/project.json b/packages/infra/project.json new file mode 100644 index 0000000000..943ce176f6 --- /dev/null +++ b/packages/infra/project.json @@ -0,0 +1,21 @@ +{ + "name": "infra", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "sourceRoot": "packages/infra/src", + "targets": { + "build": { + "executor": "@nx/vite:build", + "options": { + "outputPath": "packages/infra/dist" + } + }, + "serve": { + "executor": "@nx/vite:build", + "options": { + "outputPath": "packages/infra/dist", + "watch": true + } + } + } +} diff --git a/packages/plugin-infra/project.json b/packages/plugin-infra/project.json new file mode 100644 index 0000000000..1d6f16d6ee --- /dev/null +++ b/packages/plugin-infra/project.json @@ -0,0 +1,21 @@ +{ + "name": "plugin-infra", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "sourceRoot": "packages/plugin-infra/src", + "targets": { + "build": { + "executor": "@nx/vite:build", + "options": { + "outputPath": "packages/plugin-infra/dist" + } + }, + "serve": { + "executor": "@nx/vite:build", + "options": { + "outputPath": "packages/plugin-infra/dist", + "watch": true + } + } + } +} diff --git a/packages/y-indexeddb/project.json b/packages/y-indexeddb/project.json new file mode 100644 index 0000000000..2487000c2e --- /dev/null +++ b/packages/y-indexeddb/project.json @@ -0,0 +1,21 @@ +{ + "name": "y-indexeddb", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "sourceRoot": "packages/y-indexeddb/src", + "targets": { + "build": { + "executor": "@nx/vite:build", + "options": { + "outputPath": "packages/y-indexeddb/dist" + } + }, + "serve": { + "executor": "@nx/vite:build", + "options": { + "outputPath": "packages/y-indexeddb/dist", + "watch": true + } + } + } +} diff --git a/playwright.config.ts b/playwright.config.ts index f2ad7caee2..020fa8b332 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -65,7 +65,7 @@ const config: PlaywrightTestConfig = { }, // Intentionally not building the web, reminds you to run it by yourself. { - command: 'yarn run start:web -p 8080', + command: 'yarn run start:web-static', port: 8080, timeout: 120 * 1000, reuseExistingServer: !process.env.CI, diff --git a/plugins/bookmark-block/project.json b/plugins/bookmark-block/project.json new file mode 100644 index 0000000000..5eaf9abcdf --- /dev/null +++ b/plugins/bookmark-block/project.json @@ -0,0 +1,17 @@ +{ + "name": "@affine/bookmark-block", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "root": "plugins/bookmark-block", + "sourceRoot": "plugins/bookmark-block/src", + "targets": { + "build": { + "executor": "nx:run-script", + "dependsOn": ["^build"], + "options": { + "script": "build" + }, + "outputs": ["{workspaceRoot}/electron/dist/plugins/bookmark-block"] + } + } +} diff --git a/scripts/vitest/next-config-mock.ts b/scripts/vitest/next-config-mock.ts index ea001ad2e7..3f41511ca1 100644 --- a/scripts/vitest/next-config-mock.ts +++ b/scripts/vitest/next-config-mock.ts @@ -11,7 +11,6 @@ export default function getConfig() { BUILD_DATE: '2021-09-01T00:00:00.000Z', gitVersion: 'UNKNOWN', hash: 'UNKNOWN', - editorVersion: 'UNKNOWN', serverAPI: 'http://127.0.0.1:3000/', editorFlags: blockSuiteFeatureFlags, ...buildFlags, diff --git a/scripts/wait-3000-healthz.mjs b/scripts/wait-3000-healthz.mjs deleted file mode 100644 index a309ba8b96..0000000000 --- a/scripts/wait-3000-healthz.mjs +++ /dev/null @@ -1,37 +0,0 @@ -import http from 'node:http'; - -const options = { - hostname: 'localhost', - port: 3000, - path: '/api/healthz', - method: 'GET', -}; - -const maxAttempts = 5; -const timeout = 1000; -let attempts = 0; - -while (attempts < maxAttempts) { - await new Promise(resolve => setTimeout(resolve, timeout * (1 << attempts))); - await new Promise(resolve => { - const req = http.request(options, res => { - if (res.statusCode === 204) { - console.log('Server is ready'); - process.exit(0); - } else { - console.log(`Unexpected response: ${res.statusCode}`); - } - resolve(); - }); - - req.on('error', error => { - console.error(error); - resolve(); - }); - - req.end(); - attempts++; - }); -} - -process.exit(1); diff --git a/tests/parallels/blocksuite/editor.spec.ts b/tests/parallels/blocksuite/editor.spec.ts index 9eaf90e5dc..33adee75c4 100644 --- a/tests/parallels/blocksuite/editor.spec.ts +++ b/tests/parallels/blocksuite/editor.spec.ts @@ -14,6 +14,7 @@ const addDatabase = async (page: Page) => { await page.keyboard.press('a', { delay: 50 }); await page.keyboard.press('Enter', { delay: 50 }); }; + test('database is useable', async ({ page }) => { await openHomePage(page); await waitEditorLoad(page); @@ -24,7 +25,7 @@ test('database is useable', async ({ page }) => { expect(await title.innerText()).toBe('test title'); await addDatabase(page); const database = page.locator('.affine-database-table'); - expect(database).toBeVisible(); + await expect(database).toBeVisible(); await page.reload(); await waitEditorLoad(page); await newPage(page); @@ -34,7 +35,7 @@ test('database is useable', async ({ page }) => { expect(await title2.innerText()).toBe('test title2'); await addDatabase(page); const database2 = page.locator('.affine-database-table'); - expect(database2).toBeVisible(); + await expect(database2).toBeVisible(); }); test('link page is useable', async ({ page }) => { diff --git a/tests/parallels/debug-init-page.spec.ts b/tests/parallels/debug-init-page.spec.ts index 99ec2ed29f..7f12dfb835 100644 --- a/tests/parallels/debug-init-page.spec.ts +++ b/tests/parallels/debug-init-page.spec.ts @@ -2,7 +2,7 @@ import { test } from '@affine-test/kit/playwright'; import { expect } from '@playwright/test'; test('should have page0', async ({ page }) => { - await page.goto('http://localhost:8080/_debug/init-page'); + await page.goto('http://localhost:8080/_debug/init-page.html'); await page.waitForSelector('v-line'); const pageId = await page.evaluate(async () => { return globalThis.page.id; diff --git a/tests/parallels/router.spec.ts b/tests/parallels/router.spec.ts index be0d6533db..f0f35e7de3 100644 --- a/tests/parallels/router.spec.ts +++ b/tests/parallels/router.spec.ts @@ -10,7 +10,7 @@ test('goto not found page', async ({ page }) => { const currentUrl = page.url(); const invalidUrl = currentUrl.replace(/\/$/, '') + '/invalid'; await page.goto(invalidUrl); - expect(await page.getByTestId('notFound').isVisible()).toBeTruthy(); + await expect(page.getByTestId('notFound').isVisible()).toBeTruthy(); }); test('goto not found workspace', async ({ page }) => { diff --git a/yarn.lock b/yarn.lock index 4acb89194b..2b73698b32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -330,6 +330,7 @@ __metadata: "@faker-js/faker": ^8.0.2 "@istanbuljs/schema": ^0.1.3 "@magic-works/i18n-codegen": ^0.5.0 + "@nx/vite": 16.3.2 "@perfsee/sdk": ^1.8.2 "@playwright/test": =1.33.0 "@taplo/cli": ^0.5.2 @@ -366,6 +367,7 @@ __metadata: nyc: ^15.1.0 prettier: ^2.8.8 serve: ^14.2.0 + ts-node: ^10.9.1 typescript: ^5.1.5 vite: ^4.3.9 vite-plugin-istanbul: ^4.1.0 @@ -546,6 +548,7 @@ __metadata: eslint: ^8.43.0 eslint-config-next: ^13.4.7 eslint-plugin-unicorn: ^47.0.0 + express: ^4.18.2 graphql: ^16.7.1 jotai: ^2.2.1 jotai-devtools: ^0.6.0 @@ -564,6 +567,7 @@ __metadata: rxjs: ^7.8.1 swc-plugin-coverage-instrument: ^0.0.18 swr: ^2.1.5 + ts-node: ^10.9.1 typescript: ^5.1.5 webpack: ^5.88.0 y-protocols: ^1.0.5 @@ -2067,7 +2071,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0, @babel/core@npm:^7.20.12, @babel/core@npm:^7.20.2, @babel/core@npm:^7.20.7, @babel/core@npm:^7.22.5, @babel/core@npm:^7.7.5": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0, @babel/core@npm:^7.15.0, @babel/core@npm:^7.20.12, @babel/core@npm:^7.20.2, @babel/core@npm:^7.20.7, @babel/core@npm:^7.22.5, @babel/core@npm:^7.7.5": version: 7.22.5 resolution: "@babel/core@npm:7.22.5" dependencies: @@ -2476,7 +2480,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.18.6": +"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.14.5, @babel/plugin-proposal-class-properties@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" dependencies: @@ -2501,6 +2505,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-decorators@npm:^7.14.5": + version: 7.22.5 + resolution: "@babel/plugin-proposal-decorators@npm:7.22.5" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/plugin-syntax-decorators": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b3807b92b6ffcaba7519a9b2bb59e4b5530873234cd170ff5727414939334fbcae17bbe523df846a103e2fc8ed2d2890d0d9408f073cfc1e90c28ab565c358e5 + languageName: node + linkType: hard + "@babel/plugin-proposal-dynamic-import@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" @@ -2704,6 +2723,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-decorators@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-syntax-decorators@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 643c75a3b603320c499a0542ca97b5cced81e99de02ae9cbfca1a1ec6d938467546a65023b13df742e1b2f94ffe352ddfe908d14b9303fae7514ed9325886a97 + languageName: node + linkType: hard + "@babel/plugin-syntax-dynamic-import@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" @@ -2880,7 +2910,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.22.5, @babel/plugin-syntax-typescript@npm:^7.7.2": +"@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.22.5, @babel/plugin-syntax-typescript@npm:^7.3.3, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.22.5 resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" dependencies: @@ -3440,6 +3470,22 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-runtime@npm:^7.15.0": + version: 7.22.5 + resolution: "@babel/plugin-transform-runtime@npm:7.22.5" + dependencies: + "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-plugin-utils": ^7.22.5 + babel-plugin-polyfill-corejs2: ^0.4.3 + babel-plugin-polyfill-corejs3: ^0.8.1 + babel-plugin-polyfill-regenerator: ^0.5.0 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 52cf177045b5f61a6cfc36b45aa7629586dc00a28371a09ef03e877a627f520efd51817ad8cceabaaa25f266e069859b36a5ac5018afeaa7f37aafa9325df4d8 + languageName: node + linkType: hard + "@babel/plugin-transform-shorthand-properties@npm:^7.0.0, @babel/plugin-transform-shorthand-properties@npm:^7.18.6, @babel/plugin-transform-shorthand-properties@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" @@ -3557,7 +3603,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.20.2": +"@babel/preset-env@npm:^7.15.0, @babel/preset-env@npm:^7.20.2": version: 7.22.5 resolution: "@babel/preset-env@npm:7.22.5" dependencies: @@ -3761,7 +3807,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.13.0": +"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.15.0": version: 7.22.5 resolution: "@babel/preset-typescript@npm:7.22.5" dependencies: @@ -3798,7 +3844,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.0, @babel/runtime@npm:^7.16.7, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.0, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.16.7, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.22.5 resolution: "@babel/runtime@npm:7.22.5" dependencies: @@ -3818,7 +3864,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.21.5, @babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.7.2": +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.21.5, @babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.7.2": version: 7.22.5 resolution: "@babel/traverse@npm:7.22.5" dependencies: @@ -8282,6 +8328,24 @@ __metadata: languageName: node linkType: hard +"@nrwl/devkit@npm:16.3.2": + version: 16.3.2 + resolution: "@nrwl/devkit@npm:16.3.2" + dependencies: + "@nx/devkit": 16.3.2 + checksum: df0e57f56e0ece702d947acdec5f2ff73fd6693f64c90eb63bbd36d4c594692adebd785c15e7c26023695fad421ba23c19f904ecba03c3cff800d4e6e6ecc3d1 + languageName: node + linkType: hard + +"@nrwl/js@npm:16.3.2": + version: 16.3.2 + resolution: "@nrwl/js@npm:16.3.2" + dependencies: + "@nx/js": 16.3.2 + checksum: ab658dffb34c2b96efb8cd9ed9efb98f2250c2346837bf17fd4d403609270aaa9b8d75b8e88a318da65b6245afa269c5a579f3ce18f904742ff3d24efbdf9c65 + languageName: node + linkType: hard + "@nrwl/nx-cloud@npm:16.0.5": version: 16.0.5 resolution: "@nrwl/nx-cloud@npm:16.0.5" @@ -8302,6 +8366,24 @@ __metadata: languageName: node linkType: hard +"@nrwl/vite@npm:16.3.2": + version: 16.3.2 + resolution: "@nrwl/vite@npm:16.3.2" + dependencies: + "@nx/vite": 16.3.2 + checksum: b5a4ef03c79339080027e884c0d4db87bd2646b94c08e2f4aa3d6d77cee82eae2e665cbdf5b39f369b996fa05a917bc80a6c350a62e83ea03946a74ab0c8b05d + languageName: node + linkType: hard + +"@nrwl/workspace@npm:16.3.2": + version: 16.3.2 + resolution: "@nrwl/workspace@npm:16.3.2" + dependencies: + "@nx/workspace": 16.3.2 + checksum: f81cfa4857ec5979ab6e4731b16ebb779b656ff010b7fd70ff3ea5cbe6e4fa8f847f30a31c9c88346eb0f6016bfb68b3259f9def35cde6d616caa4428716f011 + languageName: node + linkType: hard + "@nuxtjs/opencollective@npm:0.3.2": version: 0.3.2 resolution: "@nuxtjs/opencollective@npm:0.3.2" @@ -8315,6 +8397,58 @@ __metadata: languageName: node linkType: hard +"@nx/devkit@npm:16.3.2": + version: 16.3.2 + resolution: "@nx/devkit@npm:16.3.2" + dependencies: + "@nrwl/devkit": 16.3.2 + ejs: ^3.1.7 + ignore: ^5.0.4 + semver: 7.3.4 + tmp: ~0.2.1 + tslib: ^2.3.0 + peerDependencies: + nx: ">= 15 <= 17" + checksum: 4062d383c814422565a436bdf676729e1cf787d43a3901c73d677a81d330f0019637c3116fe176f88e482dfc06fbc3784a1df27c4af20e6668514ee6733740b2 + languageName: node + linkType: hard + +"@nx/js@npm:16.3.2": + version: 16.3.2 + resolution: "@nx/js@npm:16.3.2" + dependencies: + "@babel/core": ^7.15.0 + "@babel/plugin-proposal-class-properties": ^7.14.5 + "@babel/plugin-proposal-decorators": ^7.14.5 + "@babel/plugin-transform-runtime": ^7.15.0 + "@babel/preset-env": ^7.15.0 + "@babel/preset-typescript": ^7.15.0 + "@babel/runtime": ^7.14.8 + "@nrwl/js": 16.3.2 + "@nx/devkit": 16.3.2 + "@nx/workspace": 16.3.2 + "@phenomnomnominal/tsquery": ~5.0.1 + babel-plugin-const-enum: ^1.0.1 + babel-plugin-macros: ^2.8.0 + babel-plugin-transform-typescript-metadata: ^0.3.1 + chalk: ^4.1.0 + fast-glob: 3.2.7 + fs-extra: ^11.1.0 + ignore: ^5.0.4 + js-tokens: ^4.0.0 + minimatch: 3.0.5 + semver: 7.3.4 + source-map-support: 0.5.19 + tslib: ^2.3.0 + peerDependencies: + verdaccio: ^5.0.4 + peerDependenciesMeta: + verdaccio: + optional: true + checksum: 7e41b2b153db0c7e863be9b92ef6875241f8b27bba53247eee0f0ba4845f5dbe7525e4a781a27a7f980636ed9229eec227c9c2800c57762ae8a0746cc247b855 + languageName: node + linkType: hard + "@nx/nx-darwin-arm64@npm:16.3.2": version: 16.3.2 resolution: "@nx/nx-darwin-arm64@npm:16.3.2" @@ -8385,6 +8519,52 @@ __metadata: languageName: node linkType: hard +"@nx/vite@npm:16.3.2": + version: 16.3.2 + resolution: "@nx/vite@npm:16.3.2" + dependencies: + "@nrwl/vite": 16.3.2 + "@nx/devkit": 16.3.2 + "@nx/js": 16.3.2 + "@phenomnomnominal/tsquery": ~5.0.1 + "@swc/helpers": ~0.5.0 + dotenv: ~10.0.0 + enquirer: ~2.3.6 + peerDependencies: + vite: ^4.3.4 + vitest: ">=0.31.0 <1.0.0" + checksum: a210d81dd53cd3cdf9b3d4bcbe67607df5e6285af9a55d65ebbb8394eb8566799930f0d532ae86530244c7d7ddaff3d5f28fbb95c72e1a1cd28a42811ad86d35 + languageName: node + linkType: hard + +"@nx/workspace@npm:16.3.2": + version: 16.3.2 + resolution: "@nx/workspace@npm:16.3.2" + dependencies: + "@nrwl/workspace": 16.3.2 + "@nx/devkit": 16.3.2 + "@parcel/watcher": 2.0.4 + chalk: ^4.1.0 + chokidar: ^3.5.1 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + dotenv: ~10.0.0 + figures: 3.2.0 + flat: ^5.0.2 + ignore: ^5.0.4 + minimatch: 3.0.5 + npm-run-path: ^4.0.1 + nx: 16.3.2 + open: ^8.4.0 + rxjs: ^7.8.0 + tmp: ~0.2.1 + tslib: ^2.3.0 + yargs: ^17.6.2 + yargs-parser: 21.1.1 + checksum: b3e7f4feba15bed701fa3481720b98901a08b4c7f412751116d356081558df174ac73952e8af324e3e6dacae6d62ba91076f785cc0aba32a48f60cdafcdf5a4e + languageName: node + linkType: hard + "@octokit/auth-token@npm:^3.0.0": version: 3.0.4 resolution: "@octokit/auth-token@npm:3.0.4" @@ -8691,6 +8871,17 @@ __metadata: languageName: node linkType: hard +"@phenomnomnominal/tsquery@npm:~5.0.1": + version: 5.0.1 + resolution: "@phenomnomnominal/tsquery@npm:5.0.1" + dependencies: + esquery: ^1.4.0 + peerDependencies: + typescript: ^3 || ^4 || ^5 + checksum: d8636ece9edb1212394427411870285c67709f0a047c61453ab602e9277cb49c85069d00d4734e4934a5857ab159f24baecac84fae2530ea88bd6aff570eee03 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -11471,7 +11662,7 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:0.5.1": +"@swc/helpers@npm:0.5.1, @swc/helpers@npm:~0.5.0": version: 0.5.1 resolution: "@swc/helpers@npm:0.5.1" dependencies: @@ -14048,6 +14239,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-const-enum@npm:^1.0.1": + version: 1.2.0 + resolution: "babel-plugin-const-enum@npm:1.2.0" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@babel/plugin-syntax-typescript": ^7.3.3 + "@babel/traverse": ^7.16.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fc840a71f6717a01b63853b8bc67f75c591ebacfd0d8739c68de02da5d6e48ea38086040427d553726c0e103d2e0ee8b4207827ef26b281247f671f868f78aae + languageName: node + linkType: hard + "babel-plugin-istanbul@npm:^6.1.1": version: 6.1.1 resolution: "babel-plugin-istanbul@npm:6.1.1" @@ -14073,6 +14277,17 @@ __metadata: languageName: node linkType: hard +"babel-plugin-macros@npm:^2.8.0": + version: 2.8.0 + resolution: "babel-plugin-macros@npm:2.8.0" + dependencies: + "@babel/runtime": ^7.7.2 + cosmiconfig: ^6.0.0 + resolve: ^1.12.0 + checksum: 59b09a21cf3ae1e14186c1b021917d004b49b953824b24953a54c6502da79e8051d4ac31cfd4a0ae7f6ea5ddf1f7edd93df4895dd3c3982a5b2431859c2889ac + languageName: node + linkType: hard + "babel-plugin-macros@npm:^3.1.0": version: 3.1.0 resolution: "babel-plugin-macros@npm:3.1.0" @@ -14163,6 +14378,15 @@ __metadata: languageName: node linkType: hard +"babel-plugin-transform-typescript-metadata@npm:^0.3.1": + version: 0.3.2 + resolution: "babel-plugin-transform-typescript-metadata@npm:0.3.2" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + checksum: 15aa2a05c9ec2817155cc15746e55e0e06dd57762e7fc1eea168ce9a65fd89372174ecc7506434b6abde367a264c5953f27468a0c3dcab2fb4a14bec1c719536 + languageName: node + linkType: hard + "babel-preset-current-node-syntax@npm:^1.0.0": version: 1.0.1 resolution: "babel-preset-current-node-syntax@npm:1.0.1" @@ -15048,7 +15272,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:3.5.3, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": +"chokidar@npm:3.5.3, chokidar@npm:^3.4.2, chokidar@npm:^3.5.1, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -15812,6 +16036,19 @@ __metadata: languageName: node linkType: hard +"cosmiconfig@npm:^6.0.0": + version: 6.0.0 + resolution: "cosmiconfig@npm:6.0.0" + dependencies: + "@types/parse-json": ^4.0.0 + import-fresh: ^3.1.0 + parse-json: ^5.0.0 + path-type: ^4.0.0 + yaml: ^1.7.2 + checksum: 8eed7c854b91643ecb820767d0deb038b50780ecc3d53b0b19e03ed8aabed4ae77271198d1ae3d49c3b110867edf679f5faad924820a8d1774144a87cb6f98fc + languageName: node + linkType: hard + "cosmiconfig@npm:^7.0.0": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" @@ -16931,7 +17168,7 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.8": +"ejs@npm:^3.1.7, ejs@npm:^3.1.8": version: 3.1.9 resolution: "ejs@npm:3.1.9" dependencies: @@ -18026,7 +18263,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2, esquery@npm:^1.5.0": +"esquery@npm:^1.4.0, esquery@npm:^1.4.2, esquery@npm:^1.5.0": version: 1.5.0 resolution: "esquery@npm:1.5.0" dependencies: @@ -20469,7 +20706,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.0.0, import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -27603,7 +27840,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.21.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:~1.22.1": +"resolve@npm:^1.1.6, resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.21.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:~1.22.1": version: 1.22.3 resolution: "resolve@npm:1.22.3" dependencies: @@ -27639,7 +27876,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.21.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.2#~builtin, resolve@patch:resolve@~1.22.1#~builtin": +"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.21.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.2#~builtin, resolve@patch:resolve@~1.22.1#~builtin": version: 1.22.3 resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=c3c19d" dependencies: @@ -28440,6 +28677,16 @@ __metadata: languageName: node linkType: hard +"source-map-support@npm:0.5.19": + version: 0.5.19 + resolution: "source-map-support@npm:0.5.19" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: c72802fdba9cb62b92baef18cc14cc4047608b77f0353e6c36dd993444149a466a2845332c5540d4a6630957254f0f68f4ef5a0120c33d2e83974c51a05afbac + languageName: node + linkType: hard + "source-map-support@npm:^0.5.13, source-map-support@npm:^0.5.16, source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -31512,7 +31759,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^1.10.0, yaml@npm:^1.10.2": +"yaml@npm:^1.10.0, yaml@npm:^1.10.2, yaml@npm:^1.7.2": version: 1.10.2 resolution: "yaml@npm:1.10.2" checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f