apps/web: check and pass env variables
convert next.config to mjs
This commit is contained in:
parent
ef071bbd8a
commit
27ad1e96dd
@ -7,4 +7,5 @@ module.exports = {
|
|||||||
project: './tsconfig.json',
|
project: './tsconfig.json',
|
||||||
tsconfigRootDir: __dirname,
|
tsconfigRootDir: __dirname,
|
||||||
},
|
},
|
||||||
|
root: true,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
# This Dockerfile is copy-pasted into our main docs at /docs/handbook/deploying-with-docker.
|
# This Dockerfile is copy-pasted into our main docs at /docs/handbook/deploying-with-docker.
|
||||||
# Make sure you update both files!
|
# Make sure you update both files!
|
||||||
|
|
||||||
FROM node:16-alpine AS builder
|
FROM node:alpine AS builder
|
||||||
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
|
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
|
||||||
RUN apk add --no-cache libc6-compat
|
RUN apk add --no-cache libc6-compat
|
||||||
RUN apk update
|
RUN apk update
|
||||||
# Set working directory
|
# Set working directory
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
RUN yarn global add turbo
|
RUN yarn global add turbo
|
||||||
|
RUN yarn global add dotenv-cli
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN turbo prune --scope=web --docker
|
RUN turbo prune --scope=web --docker
|
||||||
|
|
||||||
# Add lockfile and package.json's of isolated subworkspace
|
# Add lockfile and package.json's of isolated subworkspace
|
||||||
FROM node:16-alpine AS installer
|
FROM node:alpine AS installer
|
||||||
RUN apk add --no-cache libc6-compat
|
RUN apk add --no-cache libc6-compat
|
||||||
RUN apk update
|
RUN apk update
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
@ -28,18 +29,10 @@ RUN yarn install
|
|||||||
# Build the project
|
# Build the project
|
||||||
COPY --from=builder /app/out/full/ .
|
COPY --from=builder /app/out/full/ .
|
||||||
COPY turbo.json turbo.json
|
COPY turbo.json turbo.json
|
||||||
|
COPY .env .env
|
||||||
|
RUN yarn dotenv -e .env turbo run build --filter=web...
|
||||||
|
|
||||||
# Pass variables from .env
|
FROM node:alpine AS runner
|
||||||
ARG BASE_PATH
|
|
||||||
ARG APP_TITLE
|
|
||||||
ARG APP_DESCRIPTION
|
|
||||||
ENV BASE_PATH=${BASE_PATH}
|
|
||||||
ENV APP_TITLE=${APP_TITLE}
|
|
||||||
ENV APP_DESCRIPTION=${APP_DESCRIPTION}
|
|
||||||
|
|
||||||
RUN yarn turbo run build --filter=web...
|
|
||||||
|
|
||||||
FROM node:16-alpine AS runner
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
ENV NEXT_TELEMETRY_DISABLED 1
|
ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
import styles from './Form.module.scss';
|
import styles from './Form.module.scss';
|
||||||
|
import { publicRuntimeConfig } from '@/config/runtime';
|
||||||
|
import Button from '@/elements/Button';
|
||||||
|
import Error from '@/elements/Error';
|
||||||
|
import { H3 } from '@/elements/H';
|
||||||
|
import Input from '@/elements/Input';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import Button from 'elements/Button';
|
|
||||||
import Error from 'elements/Error';
|
|
||||||
import { H3 } from 'elements/H';
|
|
||||||
import Input from 'elements/Input';
|
|
||||||
import getConfig from 'next/config';
|
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
|
||||||
const { publicRuntimeConfig: config } = getConfig();
|
const { BASE_PATH, APP_TITLE } = publicRuntimeConfig;
|
||||||
|
|
||||||
export default function Form() {
|
export default function Form() {
|
||||||
const [hasError, setHasError] = useState(false);
|
const [hasError, setHasError] = useState(false);
|
||||||
@ -27,7 +27,7 @@ export default function Form() {
|
|||||||
.post('/signin', data)
|
.post('/signin', data)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
const url =
|
const url =
|
||||||
(window.location.pathname.replace(config.basePath, '') || '/') +
|
(window.location.pathname.replace(BASE_PATH, '') || '/') +
|
||||||
(window.location.search || '');
|
(window.location.search || '');
|
||||||
|
|
||||||
window.location.replace(url);
|
window.location.replace(url);
|
||||||
@ -37,7 +37,7 @@ export default function Form() {
|
|||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<H3>{config.appTitle}</H3>
|
<H3>{APP_TITLE}</H3>
|
||||||
<Input name="login" type="text" placeholder="Логин" required autoComplete="on" />
|
<Input name="login" type="text" placeholder="Логин" required autoComplete="on" />
|
||||||
<Input name="password" type="password" placeholder="Пароль" required autoComplete="on" />
|
<Input name="password" type="password" placeholder="Пароль" required autoComplete="on" />
|
||||||
{error}
|
{error}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import Form from './Form';
|
import Form from './Form';
|
||||||
import styles from './Login.module.scss';
|
import styles from './Login.module.scss';
|
||||||
import Logo from 'elements/Logo';
|
import Logo from '@/elements/Logo';
|
||||||
|
|
||||||
export default function Login() {
|
export default function Login() {
|
||||||
return (
|
return (
|
||||||
|
|||||||
14
apps/web/config/runtime.ts
Normal file
14
apps/web/config/runtime.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import type envSchema from './schema/env';
|
||||||
|
import getConfig from 'next/config';
|
||||||
|
import type { z } from 'zod';
|
||||||
|
|
||||||
|
type Config = z.infer<typeof envSchema>;
|
||||||
|
|
||||||
|
type RunTimeConfig = {
|
||||||
|
publicRuntimeConfig: Config;
|
||||||
|
serverRuntimeConfig: Config;
|
||||||
|
};
|
||||||
|
|
||||||
|
const { publicRuntimeConfig, serverRuntimeConfig } = getConfig() as RunTimeConfig;
|
||||||
|
|
||||||
|
export { publicRuntimeConfig, serverRuntimeConfig };
|
||||||
9
apps/web/config/schema/env.js
Normal file
9
apps/web/config/schema/env.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import { z } from 'zod';
|
||||||
|
|
||||||
|
const envSchema = z.object({
|
||||||
|
APP_DESCRIPTION: z.string(),
|
||||||
|
APP_TITLE: z.string(),
|
||||||
|
BASE_PATH: z.string().optional().default(''),
|
||||||
|
});
|
||||||
|
|
||||||
|
export default envSchema;
|
||||||
@ -1,25 +0,0 @@
|
|||||||
const path = require('path');
|
|
||||||
|
|
||||||
const runtimeConfig = {
|
|
||||||
appTitle: process.env.APP_TITLE,
|
|
||||||
description: process.env.APP_DESCRIPTION,
|
|
||||||
basePath: process.env.BASE_PATH,
|
|
||||||
};
|
|
||||||
|
|
||||||
/** @type {import('next').NextConfig} */
|
|
||||||
const nextConfig = {
|
|
||||||
basePath: process.env.BASE_PATH,
|
|
||||||
output: 'standalone',
|
|
||||||
reactStrictMode: true,
|
|
||||||
swcMinify: true,
|
|
||||||
eslint: {
|
|
||||||
ignoreDuringBuilds: true,
|
|
||||||
},
|
|
||||||
serverRuntimeConfig: runtimeConfig,
|
|
||||||
publicRuntimeConfig: runtimeConfig,
|
|
||||||
experimental: {
|
|
||||||
outputFileTracingRoot: path.join(__dirname, '../../'),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = nextConfig;
|
|
||||||
26
apps/web/next.config.mjs
Normal file
26
apps/web/next.config.mjs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import envSchema from './config/schema/env.js';
|
||||||
|
import { dirname, join } from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = dirname(__filename);
|
||||||
|
|
||||||
|
const runtimeConfig = envSchema.parse(process.env);
|
||||||
|
|
||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {
|
||||||
|
basePath: process.env.BASE_PATH,
|
||||||
|
eslint: {
|
||||||
|
ignoreDuringBuilds: true,
|
||||||
|
},
|
||||||
|
experimental: {
|
||||||
|
outputFileTracingRoot: join(__dirname, '../../'),
|
||||||
|
},
|
||||||
|
output: 'standalone',
|
||||||
|
publicRuntimeConfig: runtimeConfig,
|
||||||
|
reactStrictMode: true,
|
||||||
|
serverRuntimeConfig: runtimeConfig,
|
||||||
|
swcMinify: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
@ -2,6 +2,7 @@
|
|||||||
"name": "web",
|
"name": "web",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
@ -20,7 +21,8 @@
|
|||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"sass": "^1.69.3",
|
"sass": "^1.69.3",
|
||||||
"typescript": "5.2.2"
|
"typescript": "4.9.5",
|
||||||
|
"zod": "^3.22.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vchikalkin/eslint-config-awesome": "^1.1.2",
|
"@vchikalkin/eslint-config-awesome": "^1.1.2",
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import getConfig from 'next/config';
|
/* eslint-disable @typescript-eslint/explicit-member-accessibility */
|
||||||
|
import { serverRuntimeConfig } from '@/config/runtime';
|
||||||
import Document, { Head, Html, Main, NextScript } from 'next/document';
|
import Document, { Head, Html, Main, NextScript } from 'next/document';
|
||||||
|
|
||||||
const { serverRuntimeConfig: config } = getConfig();
|
const { BASE_PATH, APP_DESCRIPTION } = serverRuntimeConfig;
|
||||||
const { basePath = '', description } = config;
|
|
||||||
|
|
||||||
export default class MyDocument extends Document {
|
export default class MyDocument extends Document {
|
||||||
render() {
|
render() {
|
||||||
@ -10,13 +10,12 @@ export default class MyDocument extends Document {
|
|||||||
<Html lang="ru" translate="no">
|
<Html lang="ru" translate="no">
|
||||||
<Head>
|
<Head>
|
||||||
<meta charSet="utf-8" />
|
<meta charSet="utf-8" />
|
||||||
<meta name="description" content={description} />
|
<meta name="description" content={APP_DESCRIPTION} />
|
||||||
|
<link rel="apple-touch-icon" sizes="120x120" href={`${BASE_PATH}/apple-touch-icon.png`} />
|
||||||
<link rel="apple-touch-icon" sizes="120x120" href={`${basePath}/apple-touch-icon.png`} />
|
<link rel="icon" type="image/png" sizes="32x32" href={`${BASE_PATH}/favicon-32x32.png`} />
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href={`${basePath}/favicon-32x32.png`} />
|
<link rel="icon" type="image/png" sizes="16x16" href={`${BASE_PATH}/favicon-16x16.png`} />
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href={`${basePath}/favicon-16x16.png`} />
|
<link rel="manifest" href={`${BASE_PATH}/site.webmanifest`} />
|
||||||
<link rel="manifest" href={`${basePath}/site.webmanifest`} />
|
<link rel="mask-icon" href={`${BASE_PATH}/safari-pinned-tab.svg`} color="#5bbad5" />
|
||||||
<link rel="mask-icon" href={`${basePath}/safari-pinned-tab.svg`} color="#5bbad5" />
|
|
||||||
<meta name="msapplication-TileColor" content="#1c01a9" />
|
<meta name="msapplication-TileColor" content="#1c01a9" />
|
||||||
<meta name="theme-color" content="#ffffff" />
|
<meta name="theme-color" content="#ffffff" />
|
||||||
</Head>
|
</Head>
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
import Login from 'components/Login';
|
import Login from '@/components/Login';
|
||||||
import getConfig from 'next/config';
|
import { publicRuntimeConfig } from '@/config/runtime';
|
||||||
import Head from 'next/head';
|
import Head from 'next/head';
|
||||||
|
|
||||||
const { publicRuntimeConfig: config } = getConfig();
|
const { APP_DESCRIPTION } = publicRuntimeConfig;
|
||||||
|
|
||||||
function PageHead() {
|
function PageHead() {
|
||||||
return (
|
return (
|
||||||
<Head>
|
<Head>
|
||||||
<title>{`Вход - ${config.description}`}</title>
|
<title>{`Вход - ${APP_DESCRIPTION}`}</title>
|
||||||
</Head>
|
</Head>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -15,7 +15,7 @@ function PageHead() {
|
|||||||
export default function Home() {
|
export default function Home() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<PageHead title={config.description} />
|
<PageHead />
|
||||||
<Login />
|
<Login />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1,12 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
"$schema": "https://json.schemastore.org/tsconfig",
|
||||||
|
"display": "Next.js",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"baseUrl": ".",
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
"target": "es5",
|
|
||||||
"lib": [
|
|
||||||
"dom",
|
|
||||||
"dom.iterable",
|
|
||||||
"esnext"
|
|
||||||
],
|
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
@ -23,17 +19,12 @@
|
|||||||
{
|
{
|
||||||
"name": "next"
|
"name": "next"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"@/*": ["*"]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"include": [
|
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
|
||||||
"next-env.d.ts",
|
"exclude": ["node_modules"]
|
||||||
"**/*.ts",
|
|
||||||
"**/*.tsx",
|
|
||||||
"**/*.js",
|
|
||||||
"**/*.jsx",
|
|
||||||
".next/types/**/*.ts"
|
|
||||||
],
|
|
||||||
"exclude": [
|
|
||||||
"node_modules"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
0
apps/web/types/env.ts
Normal file
0
apps/web/types/env.ts
Normal file
14
package.json
14
package.json
@ -1,19 +1,21 @@
|
|||||||
{
|
{
|
||||||
"name": "Evo.Auth",
|
"name": "evo-auth",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"apps/*"
|
"apps/*"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "turbo run build",
|
"build": "dotenv -e .env turbo run build",
|
||||||
"dev": "turbo run dev --parallel",
|
"dev": "dotenv -e .env.local turbo run dev",
|
||||||
"lint": "turbo run lint",
|
"lint": "dotenv -e .env.local turbo run lint",
|
||||||
"lint:fix": "turbo run lint:fix",
|
"lint:fix": "dotenv -e .env.local turbo run lint:fix",
|
||||||
"clean": "turbo run clean",
|
"clean": "turbo run clean",
|
||||||
"format": "prettier --write \"**/*.{ts,tsx,md}\""
|
"format": "prettier --write \"**/*.{js,jsx,ts,tsx}\"",
|
||||||
|
"test": "dotenv -e .env.local turbo run test"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"dotenv-cli": "^7.3.0",
|
||||||
"prettier": "latest",
|
"prettier": "latest",
|
||||||
"turbo": "latest"
|
"turbo": "latest"
|
||||||
},
|
},
|
||||||
|
|||||||
10
turbo.json
10
turbo.json
@ -1,10 +1,15 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://turbo.build/schema.json",
|
"$schema": "https://turbo.build/schema.json",
|
||||||
|
"globalDependencies": [".env.*"],
|
||||||
"pipeline": {
|
"pipeline": {
|
||||||
"build": {
|
"build": {
|
||||||
"outputs": ["dist/**", ".next/**", "public/dist/**"],
|
"outputs": ["dist/**", ".next/**", "public/dist/**"],
|
||||||
"dependsOn": ["^build"]
|
"dependsOn": ["^build"]
|
||||||
},
|
},
|
||||||
|
"dev": {
|
||||||
|
"cache": false,
|
||||||
|
"persistent": true
|
||||||
|
},
|
||||||
"lint": {
|
"lint": {
|
||||||
"dependsOn": ["^build"],
|
"dependsOn": ["^build"],
|
||||||
"cache": false,
|
"cache": false,
|
||||||
@ -14,9 +19,8 @@
|
|||||||
"dependsOn": ["^build"],
|
"dependsOn": ["^build"],
|
||||||
"outputs": []
|
"outputs": []
|
||||||
},
|
},
|
||||||
"dev": {
|
"test": {
|
||||||
"cache": false,
|
"cache": false
|
||||||
"persistent": true
|
|
||||||
},
|
},
|
||||||
"clean": {
|
"clean": {
|
||||||
"cache": false
|
"cache": false
|
||||||
|
|||||||
90
yarn.lock
90
yarn.lock
@ -3265,12 +3265,22 @@ doctrine@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
|
|
||||||
dotenv-expand@10.0.0:
|
dotenv-cli@^7.3.0:
|
||||||
|
version "7.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/dotenv-cli/-/dotenv-cli-7.3.0.tgz#21e33e7944713001677658d68856063968edfbd2"
|
||||||
|
integrity sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==
|
||||||
|
dependencies:
|
||||||
|
cross-spawn "^7.0.3"
|
||||||
|
dotenv "^16.3.0"
|
||||||
|
dotenv-expand "^10.0.0"
|
||||||
|
minimist "^1.2.6"
|
||||||
|
|
||||||
|
dotenv-expand@10.0.0, dotenv-expand@^10.0.0:
|
||||||
version "10.0.0"
|
version "10.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37"
|
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37"
|
||||||
integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==
|
integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==
|
||||||
|
|
||||||
dotenv@16.3.1:
|
dotenv@16.3.1, dotenv@^16.3.0:
|
||||||
version "16.3.1"
|
version "16.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e"
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e"
|
||||||
integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==
|
integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==
|
||||||
@ -8015,47 +8025,47 @@ tsutils@^3.21.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.8.1"
|
tslib "^1.8.1"
|
||||||
|
|
||||||
turbo-darwin-64@1.6.3:
|
turbo-darwin-64@1.10.15:
|
||||||
version "1.6.3"
|
version "1.10.15"
|
||||||
resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.6.3.tgz#fad7e078784b0fafc0b1f75ce9378828918595f5"
|
resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.10.15.tgz#8f1d80ca91e46909a2c80e416e475bc44c91ef9f"
|
||||||
integrity sha512-QmDIX0Yh1wYQl0bUS0gGWwNxpJwrzZU2GIAYt3aOKoirWA2ecnyb3R6ludcS1znfNV2MfunP+l8E3ncxUHwtjA==
|
integrity sha512-Sik5uogjkRTe1XVP9TC2GryEMOJCaKE2pM/O9uLn4koQDnWKGcLQv+mDU+H+9DXvKLnJnKCD18OVRkwK5tdpoA==
|
||||||
|
|
||||||
turbo-darwin-arm64@1.6.3:
|
turbo-darwin-arm64@1.10.15:
|
||||||
version "1.6.3"
|
version "1.10.15"
|
||||||
resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.6.3.tgz#f0a32cae39e3fcd3da5e3129a94c18bb2e3ed6aa"
|
resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.15.tgz#4b6b29c9d10c8e286b27d372936c09a98f34449a"
|
||||||
integrity sha512-75DXhFpwE7CinBbtxTxH08EcWrxYSPFow3NaeFwsG8aymkWXF+U2aukYHJA6I12n9/dGqf7yRXzkF0S/9UtdyQ==
|
integrity sha512-xwqyFDYUcl2xwXyGPmHkmgnNm4Cy0oNzMpMOBGRr5x64SErS7QQLR4VHb0ubiR+VAb8M+ECPklU6vD1Gm+wekg==
|
||||||
|
|
||||||
turbo-linux-64@1.6.3:
|
turbo-linux-64@1.10.15:
|
||||||
version "1.6.3"
|
version "1.10.15"
|
||||||
resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.6.3.tgz#8ddc6ac55ef84641182fe5ff50647f1b355826b0"
|
resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.10.15.tgz#a892aae53946c68f311b2e71504af5b9768dd2c1"
|
||||||
integrity sha512-O9uc6J0yoRPWdPg9THRQi69K6E2iZ98cRHNvus05lZbcPzZTxJYkYGb5iagCmCW/pq6fL4T4oLWAd6evg2LGQA==
|
integrity sha512-dM07SiO3RMAJ09Z+uB2LNUSkPp3I1IMF8goH5eLj+d8Kkwoxd/+qbUZOj9RvInyxU/IhlnO9w3PGd3Hp14m/nA==
|
||||||
|
|
||||||
turbo-linux-arm64@1.6.3:
|
turbo-linux-arm64@1.10.15:
|
||||||
version "1.6.3"
|
version "1.10.15"
|
||||||
resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.6.3.tgz#846c1dc84d8dc741651906613c16acccba30428c"
|
resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.10.15.tgz#9d241414e75c7457ea8371c36c4b9700ec7ca553"
|
||||||
integrity sha512-dCy667qqEtZIhulsRTe8hhWQNCJO0i20uHXv7KjLHuFZGCeMbWxB8rsneRoY+blf8+QNqGuXQJxak7ayjHLxiA==
|
integrity sha512-MkzKLkKYKyrz4lwfjNXH8aTny5+Hmiu4SFBZbx+5C0vOlyp6fV5jZANDBvLXWiDDL4DSEAuCEK/2cmN6FVH1ow==
|
||||||
|
|
||||||
turbo-windows-64@1.6.3:
|
turbo-windows-64@1.10.15:
|
||||||
version "1.6.3"
|
version "1.10.15"
|
||||||
resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.6.3.tgz#89ac819fa76ad31d12fbfdeb3045bcebd0d308eb"
|
resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.10.15.tgz#7d19853634482f01b7c4ae8d5e255321a2f7582c"
|
||||||
integrity sha512-lKRqwL3mrVF09b9KySSaOwetehmGknV9EcQTF7d2dxngGYYX1WXoQLjFP9YYH8ZV07oPm+RUOAKSCQuDuMNhiA==
|
integrity sha512-3TdVU+WEH9ThvQGwV3ieX/XHebtYNHv9HARHauPwmVj3kakoALkpGxLclkHFBLdLKkqDvmHmXtcsfs6cXXRHJg==
|
||||||
|
|
||||||
turbo-windows-arm64@1.6.3:
|
turbo-windows-arm64@1.10.15:
|
||||||
version "1.6.3"
|
version "1.10.15"
|
||||||
resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.6.3.tgz#977607c9a51f0b76076c8b158bafce06ce813070"
|
resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.10.15.tgz#c7b0cf8732b02914b415577593afeda4155219fb"
|
||||||
integrity sha512-BXY1sDPEA1DgPwuENvDCD8B7Hb0toscjus941WpL8CVd10hg9pk/MWn9CNgwDO5Q9ks0mw+liDv2EMnleEjeNA==
|
integrity sha512-l+7UOBCbfadvPMYsX08hyLD+UIoAkg6ojfH+E8aud3gcA1padpjCJTh9gMpm3QdMbKwZteT5uUM+wyi6Rbbyww==
|
||||||
|
|
||||||
turbo@latest:
|
turbo@latest:
|
||||||
version "1.6.3"
|
version "1.10.15"
|
||||||
resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.6.3.tgz#ec26cc8907c38a9fd6eb072fb10dad254733543e"
|
resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.10.15.tgz#356731acb46991b4e337cce2f7ccd3279bc1f1a6"
|
||||||
integrity sha512-FtfhJLmEEtHveGxW4Ye/QuY85AnZ2ZNVgkTBswoap7UMHB1+oI4diHPNyqrQLG4K1UFtCkjOlVoLsllUh/9QRw==
|
integrity sha512-mKKkqsuDAQy1wCCIjCdG+jOCwUflhckDMSRoeBPcIL/CnCl7c5yRDFe7SyaXloUUkt4tUR0rvNIhVCcT7YeQpg==
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
turbo-darwin-64 "1.6.3"
|
turbo-darwin-64 "1.10.15"
|
||||||
turbo-darwin-arm64 "1.6.3"
|
turbo-darwin-arm64 "1.10.15"
|
||||||
turbo-linux-64 "1.6.3"
|
turbo-linux-64 "1.10.15"
|
||||||
turbo-linux-arm64 "1.6.3"
|
turbo-linux-arm64 "1.10.15"
|
||||||
turbo-windows-64 "1.6.3"
|
turbo-windows-64 "1.10.15"
|
||||||
turbo-windows-arm64 "1.6.3"
|
turbo-windows-arm64 "1.10.15"
|
||||||
|
|
||||||
type-check@^0.4.0, type-check@~0.4.0:
|
type-check@^0.4.0, type-check@~0.4.0:
|
||||||
version "0.4.0"
|
version "0.4.0"
|
||||||
@ -8141,6 +8151,11 @@ typedarray@^0.0.6:
|
|||||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||||
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
|
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
|
||||||
|
|
||||||
|
typescript@4.9.5:
|
||||||
|
version "4.9.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
|
||||||
|
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
|
||||||
|
|
||||||
typescript@5.2.2, typescript@^5.2.2:
|
typescript@5.2.2, typescript@^5.2.2:
|
||||||
version "5.2.2"
|
version "5.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
|
||||||
@ -8541,3 +8556,8 @@ yocto-queue@^0.1.0:
|
|||||||
version "0.1.0"
|
version "0.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||||
|
|
||||||
|
zod@^3.22.4:
|
||||||
|
version "3.22.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff"
|
||||||
|
integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user