mirror of
https://github.com/darkwire/darkwire.io.git
synced 2025-07-25 13:26:26 +00:00
Merge cf5ada67d29046f47e554dd49840191861db0fc0 into 047c4549888c8c5ad2be39a8260554a0215520ce
This commit is contained in:
commit
2b8f799597
@ -3,6 +3,8 @@
|
|||||||
!yarn.lock
|
!yarn.lock
|
||||||
!docker-entrypoint.sh
|
!docker-entrypoint.sh
|
||||||
!build.sh
|
!build.sh
|
||||||
|
!start.sh
|
||||||
|
!default.conf
|
||||||
!server/*
|
!server/*
|
||||||
!client/*
|
!client/*
|
||||||
**/node_modules/*
|
**/node_modules/*
|
51
.github/workflows/docker-image.yml
vendored
Normal file
51
.github/workflows/docker-image.yml
vendored
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
name: Build and Push Docker Image (Daily)
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 0 * * *" # Daily at midnight (UTC)
|
||||||
|
workflow_dispatch: # Allows manual triggering of the workflow
|
||||||
|
inputs:
|
||||||
|
trigger-build:
|
||||||
|
description: 'Trigger a manual build and push'
|
||||||
|
default: 'true'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_and_push_multiarch:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 42 # Job will timeout after 42 minutes
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# Step 1: Check out the repository code
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# Step 2: Log in to Docker Hub using secrets
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
|
||||||
|
# Step 3: Create and use a new builder with multi-platform support
|
||||||
|
- name: Set up Docker Buildx (Multi-Arch Builder)
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
with:
|
||||||
|
driver-opts: image=moby/buildkit:master
|
||||||
|
platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7
|
||||||
|
|
||||||
|
# Step 4: Set up QEMU (for multi-platform emulation)
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
with:
|
||||||
|
platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7
|
||||||
|
|
||||||
|
# Step 5: Build and Push Docker Image with multi-platform support (No cache)
|
||||||
|
- name: Build and Push Docker Image (Multi-Arch)
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: . # Path to Dockerfile in repository
|
||||||
|
push: true # Push image after build
|
||||||
|
tags: noxcis/darkwire:terra-firma # Tag for all platforms
|
||||||
|
platforms: linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7 # Platforms to build for
|
||||||
|
no-cache: true # Disable caching to force a fresh build
|
57
Dockerfile
57
Dockerfile
@ -1,35 +1,40 @@
|
|||||||
FROM node:18-bullseye-slim
|
# builder: Builder For Darkwore
|
||||||
|
FROM --platform=$BUILDPLATFORM node:current-alpine AS builder
|
||||||
|
|
||||||
USER node:node
|
|
||||||
|
|
||||||
WORKDIR /home/node
|
|
||||||
|
|
||||||
# Server environmental variables will be put into server/.env
|
|
||||||
ENV MAILGUN_API_KEY=api-key \
|
|
||||||
MAILGUN_DOMAIN=darkwire.io \
|
|
||||||
ABUSE_TO_EMAIL_ADDRESS=abuse@darkwire.io \
|
|
||||||
ABUSE_FROM_EMAIL_ADDRESS="Darkwire <no-reply@darkwire.io>" \
|
|
||||||
CLIENT_DIST_DIRECTORY='client/dist/'\
|
|
||||||
ROOM_HASH_SECRET='some-uuid'\
|
|
||||||
SITE_URL=https://darkwire.io \
|
|
||||||
STORE_BACKEND=memory
|
|
||||||
|
|
||||||
# Client configuration will be put into client/.env
|
# Client configuration will be put into client/.env
|
||||||
ENV TZ=UTC \
|
ENV TZ=UTC \
|
||||||
VITE_API_HOST=localhost \
|
VITE_COMMIT_SHA=terra-firma
|
||||||
VITE_API_PROTOCOL=http \
|
|
||||||
VITE_API_PORT=3001 \
|
|
||||||
VITE_COMMIT_SHA=some_sha \
|
|
||||||
VITE_MAX_FILE_SIZE=4
|
|
||||||
|
|
||||||
COPY --chown=node:node . .
|
WORKDIR /opt/app
|
||||||
|
COPY . .
|
||||||
|
RUN npm install -g yarn@latest --force \
|
||||||
|
&& yarn install --flat --production --no-cache \
|
||||||
|
&& yarn build --no-cache \
|
||||||
|
&& rm -rf /opt/app/node_modules \
|
||||||
|
&& yarn cache clean \
|
||||||
|
&& yarn autoclean --force
|
||||||
|
|
||||||
RUN yarn && yarn build
|
# final: Final Darkwire Image
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
STOPSIGNAL SIGINT
|
WORKDIR /opt/app
|
||||||
EXPOSE 3001
|
|
||||||
HEALTHCHECK --interval=30s --timeout=30s --start-period=10s --retries=3 \
|
|
||||||
CMD [ "curl", "-f", "${VITE_API_PROTOCOL}://localhost:${VITE_API_PORT}", "||", "exit", "1" ]
|
|
||||||
|
|
||||||
ENTRYPOINT [ "docker-entrypoint.sh" ]
|
RUN apk add --no-cache nginx yarn openssl iptables
|
||||||
CMD ["yarn", "start"]
|
COPY --from=builder /opt/app/client/dist /opt/app/client/dist
|
||||||
|
COPY --from=builder /opt/app/server /opt/app/server
|
||||||
|
COPY package.json /opt/app/package.json
|
||||||
|
COPY default.conf /etc/nginx/http.d/
|
||||||
|
COPY start.sh /opt/app/start.sh
|
||||||
|
|
||||||
|
|
||||||
|
RUN chmod +x /opt/app/start.sh
|
||||||
|
|
||||||
|
|
||||||
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD \
|
||||||
|
sh -c 'pgrep nginx > /dev/null && pgrep node > /dev/null' || exit 1
|
||||||
|
|
||||||
|
CMD ["/opt/app/start.sh", "start" ]
|
||||||
|
|
||||||
|
STOPSIGNAL SIGTERM
|
||||||
|
6
build.sh
6
build.sh
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
api_host=$API_HOST
|
api_host=$API_HOST
|
||||||
|
|
||||||
@ -9,11 +9,15 @@ fi
|
|||||||
|
|
||||||
echo "building client..."
|
echo "building client..."
|
||||||
cd client
|
cd client
|
||||||
|
yarn install
|
||||||
|
yarn upgrade
|
||||||
yarn --production=false
|
yarn --production=false
|
||||||
yarn build
|
yarn build
|
||||||
cd ../
|
cd ../
|
||||||
|
|
||||||
echo "building server..."
|
echo "building server..."
|
||||||
cd server
|
cd server
|
||||||
|
yarn install
|
||||||
|
yarn upgrade
|
||||||
yarn --production=false
|
yarn --production=false
|
||||||
yarn build
|
yarn build
|
@ -4,7 +4,6 @@ VITE_API_HOST=localhost
|
|||||||
VITE_API_PROTOCOL=http
|
VITE_API_PROTOCOL=http
|
||||||
VITE_API_PORT=3001
|
VITE_API_PORT=3001
|
||||||
VITE_COMMIT_SHA=some_sha
|
VITE_COMMIT_SHA=some_sha
|
||||||
|
|
||||||
# To display darkwire version
|
# To display darkwire version
|
||||||
VITE_COMMIT_SHA=some_sha
|
VITE_COMMIT_SHA=some_sha
|
||||||
|
|
@ -13,13 +13,13 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@react-hookz/web": "^20.0.2",
|
"@react-hookz/web": "^20.1.0",
|
||||||
"@reduxjs/toolkit": "^1.9.1",
|
"@reduxjs/toolkit": "^1.9.1",
|
||||||
"bootstrap": "^4.6.2",
|
"bootstrap": "^5.3.0",
|
||||||
"classnames": "^2.3.2",
|
"classnames": "^2.3.2",
|
||||||
"jquery": "3",
|
"jquery": "^3.7.1",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"nanoid": "^4.0.0",
|
"nanoid": "^4.0.2",
|
||||||
"randomcolor": "^0.6.2",
|
"randomcolor": "^0.6.2",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
@ -32,7 +32,7 @@
|
|||||||
"react-tooltip": "^5.2.0",
|
"react-tooltip": "^5.2.0",
|
||||||
"redux": "^4.2.0",
|
"redux": "^4.2.0",
|
||||||
"redux-thunk": "^2.4.2",
|
"redux-thunk": "^2.4.2",
|
||||||
"sanitize-html": "^2.7.3",
|
"sanitize-html": "^2.11.0",
|
||||||
"socket.io-client": "^4.5.4",
|
"socket.io-client": "^4.5.4",
|
||||||
"tinycon": "^0.6.8"
|
"tinycon": "^0.6.8"
|
||||||
},
|
},
|
||||||
@ -45,24 +45,22 @@
|
|||||||
"coverage": "TZ=UTC vitest --coverage --watch=false"
|
"coverage": "TZ=UTC vitest --coverage --watch=false"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@testing-library/jest-dom": "^5.16.5",
|
"@testing-library/jest-dom": "^6.1.6",
|
||||||
"@testing-library/react": "^13.4.0",
|
"@testing-library/react": "^14.1.2",
|
||||||
"@testing-library/user-event": "^14.4.3",
|
"@testing-library/user-event": "^14.4.3",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.46.0",
|
"@typescript-eslint/eslint-plugin": "^6.16.0",
|
||||||
"@typescript-eslint/parser": "^5.46.0",
|
"@typescript-eslint/parser": "^6.16.0",
|
||||||
"@vitejs/plugin-react": "^3.0.0",
|
"@vitejs/plugin-react": "^4.2.1",
|
||||||
"@vitest/coverage-istanbul": "^0.25.7",
|
|
||||||
"eslint": "^8.29.0",
|
"eslint": "^8.29.0",
|
||||||
"eslint-config-prettier": "^6.11.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-prettier": "^3.1.3",
|
"eslint-plugin-prettier": "^5.1.2",
|
||||||
"eslint-plugin-react": "^7.31.11",
|
"eslint-plugin-react": "^7.31.11",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"jest-environment-jsdom-sixteen": "^1.0.3",
|
|
||||||
"jest-fetch-mock": "^3.0.3",
|
"jest-fetch-mock": "^3.0.3",
|
||||||
"prettier": "^2.0.5",
|
"prettier": "^3.1.1",
|
||||||
"sass": "^1.56.2",
|
"sass": "^1.56.2",
|
||||||
"typescript": "^4.9.4",
|
"typescript": "^5.3.3",
|
||||||
"vitest": "^0.25.7",
|
"vitest": "^1.1.0",
|
||||||
"vitest-fetch-mock": "^0.2.1"
|
"vitest-fetch-mock": "^0.2.1"
|
||||||
},
|
},
|
||||||
"browserslist": {
|
"browserslist": {
|
||||||
|
@ -14,4 +14,4 @@
|
|||||||
"background_color": "#ffffff",
|
"background_color": "#ffffff",
|
||||||
"scope": "/",
|
"scope": "/",
|
||||||
"description": "Secure and encrypted web chat with Darkwire.io"
|
"description": "Secure and encrypted web chat with Darkwire.io"
|
||||||
}
|
}
|
@ -21,17 +21,26 @@ const Nav = ({ members, roomId, userId, roomLocked, toggleLockRoom, openModal, i
|
|||||||
});
|
});
|
||||||
|
|
||||||
const newRoom = () => {
|
const newRoom = () => {
|
||||||
$('.navbar-collapse').collapse('hide');
|
const navbarCollapse = document.querySelector('.navbar-collapse');
|
||||||
|
if (navbarCollapse && navbarCollapse.classList.contains('show')) {
|
||||||
|
new bootstrap.Collapse(navbarCollapse).hide();
|
||||||
|
}
|
||||||
window.open(`/${nanoid()}`);
|
window.open(`/${nanoid()}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleSettingsClick = () => {
|
const handleSettingsClick = () => {
|
||||||
$('.navbar-collapse').collapse('hide');
|
const navbarCollapse = document.querySelector('.navbar-collapse');
|
||||||
|
if (navbarCollapse && navbarCollapse.classList.contains('show')) {
|
||||||
|
new bootstrap.Collapse(navbarCollapse).hide();
|
||||||
|
}
|
||||||
openModal('Settings');
|
openModal('Settings');
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleAboutClick = () => {
|
const handleAboutClick = () => {
|
||||||
$('.navbar-collapse').collapse('hide');
|
const navbarCollapse = document.querySelector('.navbar-collapse');
|
||||||
|
if (navbarCollapse && navbarCollapse.classList.contains('show')) {
|
||||||
|
new bootstrap.Collapse(navbarCollapse).hide();
|
||||||
|
}
|
||||||
openModal('About');
|
openModal('About');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { Copy } from 'react-feather';
|
import { Clipboard } from 'react-feather'; // Import Clipboard icon for the copy button
|
||||||
import { Tooltip } from 'react-tooltip';
|
import { Tooltip } from 'react-tooltip';
|
||||||
|
|
||||||
const RoomLink = ({ roomId, translations }) => {
|
const RoomLink = ({ roomId, translations }) => {
|
||||||
|
const [currentRoomId, setCurrentRoomId] = React.useState(roomId);
|
||||||
const [showTooltip, setShowTooltip] = React.useState(false);
|
const [showTooltip, setShowTooltip] = React.useState(false);
|
||||||
|
const [tooltipMessage, setTooltipMessage] = React.useState('');
|
||||||
const mountedRef = React.useRef(true);
|
const mountedRef = React.useRef(true);
|
||||||
|
|
||||||
const roomUrl = `${window.location.origin}/${roomId}`;
|
const roomUrl = `${window.location.origin}/${currentRoomId}`;
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
mountedRef.current = true;
|
mountedRef.current = true;
|
||||||
@ -16,8 +18,9 @@ const RoomLink = ({ roomId, translations }) => {
|
|||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const handleClick = async () => {
|
const handleCopyClick = async () => {
|
||||||
await navigator.clipboard.writeText(roomUrl);
|
await navigator.clipboard.writeText(roomUrl);
|
||||||
|
setTooltipMessage(translations.copyButtonTooltip);
|
||||||
setShowTooltip(true);
|
setShowTooltip(true);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (mountedRef.current) {
|
if (mountedRef.current) {
|
||||||
@ -26,34 +29,68 @@ const RoomLink = ({ roomId, translations }) => {
|
|||||||
}, 2000);
|
}, 2000);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleRefreshClick = () => {
|
||||||
|
window.location.href = roomUrl; // Reload the page with the current room URL
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleRoomIdChange = (e) => {
|
||||||
|
setCurrentRoomId(e.target.value);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form>
|
<div>
|
||||||
<div className="form-group">
|
<form>
|
||||||
|
<div className="form-group">
|
||||||
|
<div className="input-group">
|
||||||
|
<input id="room-url" className="form-control" type="text" readOnly value={roomUrl} />
|
||||||
|
<div className="input-group-append">
|
||||||
|
<button
|
||||||
|
id="copy-room"
|
||||||
|
data-testid="copy-room-button"
|
||||||
|
className="copy-room btn btn-secondary"
|
||||||
|
type="button"
|
||||||
|
onClick={handleCopyClick}
|
||||||
|
>
|
||||||
|
<Clipboard />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{showTooltip && (
|
||||||
|
<Tooltip
|
||||||
|
anchorId="copy-room"
|
||||||
|
content={tooltipMessage}
|
||||||
|
place="top"
|
||||||
|
events={[]}
|
||||||
|
isOpen={true}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div className="form-group mt-3">
|
||||||
|
<label htmlFor="current-room-id">Change Room ID</label>
|
||||||
<div className="input-group">
|
<div className="input-group">
|
||||||
<input id="room-url" className="form-control" type="text" readOnly value={roomUrl} />
|
<input
|
||||||
|
id="current-room-id"
|
||||||
|
className="form-control"
|
||||||
|
type="text"
|
||||||
|
value={currentRoomId}
|
||||||
|
onChange={handleRoomIdChange}
|
||||||
|
/>
|
||||||
<div className="input-group-append">
|
<div className="input-group-append">
|
||||||
<button
|
<button
|
||||||
id="copy-room"
|
id="refresh-room-id"
|
||||||
data-testid="copy-room-button"
|
data-testid="refresh-room-id-button"
|
||||||
className="copy-room btn btn-secondary"
|
className="btn btn-primary" // Change button class for visibility
|
||||||
type="button"
|
type="button"
|
||||||
onClick={handleClick}
|
onClick={handleRefreshClick}
|
||||||
>
|
>
|
||||||
<Copy />
|
Go {/* Replace icon with text */}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{showTooltip && (
|
|
||||||
<Tooltip
|
|
||||||
anchorId="copy-room"
|
|
||||||
content={translations.copyButtonTooltip}
|
|
||||||
place="top"
|
|
||||||
events={[]}
|
|
||||||
isOpen={true}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,8 +10,7 @@ const Welcome = ({ roomId, translations, close }) => {
|
|||||||
<li>Support on all modern browsers (Chrome, Firefox, Safari, Safari iOS, Android)</li>
|
<li>Support on all modern browsers (Chrome, Firefox, Safari, Safari iOS, Android)</li>
|
||||||
<li>Slash commands (/nick, /me, /clear)</li>
|
<li>Slash commands (/nick, /me, /clear)</li>
|
||||||
<li>Room owners can lock the room, preventing anyone else from joining</li>
|
<li>Room owners can lock the room, preventing anyone else from joining</li>
|
||||||
<li>Front-end rewritten in React.js and Redux</li>
|
<li>Send files</li>
|
||||||
<li>Send files up to 4 MB</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<div>
|
<div>
|
||||||
You can learn more{' '}
|
You can learn more{' '}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* istanbul ignore file */
|
/* istanbul ignore file */
|
||||||
export const MAX_FILE_SIZE = import.meta.VITE_MAX_FILE_SIZE || 4;
|
export const MAX_FILE_SIZE = import.meta.VITE_MAX_FILE_SIZE;
|
||||||
export const COMMIT_SHA = import.meta.env.VITE_COMMIT_SHA;
|
export const COMMIT_SHA = import.meta.env.VITE_COMMIT_SHA;
|
||||||
|
|
||||||
export default import.meta.env.NODE_ENV;
|
export default import.meta.env.NODE_ENV;
|
||||||
|
@ -25,6 +25,7 @@ button
|
|||||||
button.btn-link.btn-plain
|
button.btn-link.btn-plain
|
||||||
padding: 0px
|
padding: 0px
|
||||||
color: white
|
color: white
|
||||||
|
background-color: black
|
||||||
text-decoration: none
|
text-decoration: none
|
||||||
color: white
|
color: white
|
||||||
&:hover, &:focus
|
&:hover, &:focus
|
||||||
|
4328
client/yarn.lock
4328
client/yarn.lock
File diff suppressed because it is too large
Load Diff
32
default.conf
Normal file
32
default.conf
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name localhost;
|
||||||
|
ssl_certificate /opt/app/certs/selfsigned.crt;
|
||||||
|
ssl_certificate_key /opt/app/certs/selfsigned.key;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:3001;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection 'upgrade';
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_cache_bypass $http_upgrade;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set security headers
|
||||||
|
add_header X-Content-Type-Options nosniff;
|
||||||
|
add_header X-Frame-Options DENY;
|
||||||
|
add_header X-XSS-Protection "1; mode=block";
|
||||||
|
|
||||||
|
# Disable server version information
|
||||||
|
server_tokens off;
|
||||||
|
|
||||||
|
# Deny access to hidden files
|
||||||
|
location ~ /\. {
|
||||||
|
deny all;
|
||||||
|
access_log off;
|
||||||
|
log_not_found off;
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,17 @@
|
|||||||
version: '3.0'
|
|
||||||
services:
|
services:
|
||||||
darkwire.io:
|
darkwire:
|
||||||
build:
|
build: .
|
||||||
context: .
|
#image: noxcis/darkwire:test
|
||||||
networks:
|
cap_add:
|
||||||
- db
|
- NET_ADMIN
|
||||||
|
- SYS_MODULE
|
||||||
|
|
||||||
ports:
|
ports:
|
||||||
- 3001:3001
|
- 3002:80
|
||||||
networks:
|
- 4001:443
|
||||||
db:
|
- 5001:3001
|
||||||
|
sysctls:
|
||||||
|
- net.ipv4.ip_forward=1
|
||||||
|
- net.ipv4.conf.all.src_valid_mark=1
|
||||||
|
|
||||||
|
@ -1,40 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# We use this file to translate environmental variables to .env files used by the application
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
|
|
||||||
echo "
|
|
||||||
TZ=UTC
|
|
||||||
VITE_API_HOST=$VITE_API_HOST
|
|
||||||
VITE_API_PROTOCOL=$VITE_API_PROTOCOL
|
|
||||||
VITE_API_PORT=$VITE_API_PORT
|
|
||||||
VITE_COMMIT_SHA=$VITE_COMMIT_SHA
|
|
||||||
|
|
||||||
# To display darkwire version
|
|
||||||
VITE_COMMIT_SHA=$VITE_COMMIT_SHA
|
|
||||||
|
|
||||||
# Set max transferable file size in MB
|
|
||||||
VITE_MAX_FILE_SIZE=$VITE_MAX_FILE_SIZE
|
|
||||||
" > client/.env
|
|
||||||
|
|
||||||
|
|
||||||
echo"
|
|
||||||
MAILGUN_API_KEY=$MAILGUN_API_KEY
|
|
||||||
MAILGUN_DOMAIN=$MAILGUN_DOMAIN
|
|
||||||
ABUSE_TO_EMAIL_ADDRESS=$ABUSE_TO_EMAIL_ADDRESS
|
|
||||||
ABUSE_FROM_EMAIL_ADDRESS=$ABUSE_FROM_EMAIL_ADDRESS
|
|
||||||
|
|
||||||
CLIENT_DIST_DIRECTORY='client/dist/'
|
|
||||||
|
|
||||||
ROOM_HASH_SECRET=$ROOM_HASH_SECRET
|
|
||||||
|
|
||||||
SITE_URL=$SITE_URL
|
|
||||||
|
|
||||||
# Store configuration
|
|
||||||
STORE_BACKEND=$STORE_BACKEND
|
|
||||||
STORE_HOST=$STORE_HOST
|
|
||||||
" > server/.env
|
|
||||||
|
|
||||||
exec "$@"
|
|
@ -25,6 +25,7 @@
|
|||||||
"lint": "cd server && yarn lint && cd ../client && yarn lint"
|
"lint": "cd server && yarn lint && cd ../client && yarn lint"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"concurrently": "^4.1.0"
|
"concurrently": "^8.2.2"
|
||||||
}
|
},
|
||||||
|
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
||||||
}
|
}
|
||||||
|
@ -14,19 +14,19 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dotenv": "^8.0.0",
|
"@socket.io/redis-adapter": "^8.2.1",
|
||||||
|
"dotenv": "^16.3.1",
|
||||||
"kcors": "^2.2.2",
|
"kcors": "^2.2.2",
|
||||||
"koa": "^2.3.0",
|
"koa": "^2.3.0",
|
||||||
"koa-body": "^2.3.0",
|
"koa-body": "^2.3.0",
|
||||||
"koa-router": "^7.2.1",
|
"koa-router": "^12.0.1",
|
||||||
"koa-send": "^5.0.0",
|
"koa-send": "^5.0.1",
|
||||||
"koa-static": "^5.0.0",
|
"koa-static": "^5.0.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"mailgun-js": "^0.22.0",
|
|
||||||
"moment": "^2.18.1",
|
"moment": "^2.18.1",
|
||||||
"redis": "^4.5.1",
|
"redis": "^4.5.1",
|
||||||
"socket.io": "^4.5.4",
|
"socket.io": "^4.5.4",
|
||||||
"socket.io-redis": "^6.1.1"
|
"socket.io-adapter": "^2.5.2"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "echo 'Nothing to build here.'",
|
"build": "echo 'Nothing to build here.'",
|
||||||
@ -38,10 +38,10 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint": "^8.29.0",
|
"eslint": "^8.29.0",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^5.1.2",
|
||||||
"jest": "^29.3.1",
|
"jest": "^29.3.1",
|
||||||
"nodemon": "^2.0.20",
|
"nodemon": "^3.0.2",
|
||||||
"prettier": "^2.8.1"
|
"prettier": "^3.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,9 @@ if (store.hasSocketAdapter) {
|
|||||||
io.adapter(store.getSocketAdapter());
|
io.adapter(store.getSocketAdapter());
|
||||||
}
|
}
|
||||||
|
|
||||||
const roomHashSecret = process.env.ROOM_HASH_SECRET;
|
|
||||||
|
const roomHashSecret = process.env.ROOM_HASH_SECRET || crypto.randomBytes(256).toString('hex');
|
||||||
|
|
||||||
|
|
||||||
const getRoomIdHash = id => {
|
const getRoomIdHash = id => {
|
||||||
if (env === 'development') {
|
if (env === 'development') {
|
||||||
|
3493
server/yarn.lock
3493
server/yarn.lock
File diff suppressed because it is too large
Load Diff
109
start.sh
Normal file
109
start.sh
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
generate_self_signed_ssl() {
|
||||||
|
local key_file="certs/selfsigned.key"
|
||||||
|
local cert_file="certs/selfsigned.crt"
|
||||||
|
local csr_file="certs/selfsigned.csr"
|
||||||
|
local config_file="certs/openssl.cnf"
|
||||||
|
local days_valid=365
|
||||||
|
|
||||||
|
mkdir -p certs
|
||||||
|
|
||||||
|
cat > "$config_file" <<EOF
|
||||||
|
[req]
|
||||||
|
default_bits = 2048
|
||||||
|
prompt = no
|
||||||
|
default_md = sha256
|
||||||
|
distinguished_name = dn
|
||||||
|
req_extensions = req_ext
|
||||||
|
x509_extensions = v3_ca
|
||||||
|
|
||||||
|
[dn]
|
||||||
|
C = US
|
||||||
|
ST = FL
|
||||||
|
L = Miami
|
||||||
|
O = NoxCorp
|
||||||
|
OU = GhostWorks
|
||||||
|
CN = Noxcis
|
||||||
|
|
||||||
|
[req_ext]
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
IP.1 = 127.0.0.1
|
||||||
|
|
||||||
|
[v3_ca]
|
||||||
|
basicConstraints = critical, CA:TRUE, pathlen:0
|
||||||
|
keyUsage = critical, digitalSignature, keyEncipherment
|
||||||
|
extendedKeyUsage = serverAuth
|
||||||
|
EOF
|
||||||
|
|
||||||
|
openssl genpkey -algorithm RSA -out "$key_file"
|
||||||
|
openssl req -new -key "$key_file" -out "$csr_file" -config "$config_file"
|
||||||
|
openssl x509 -req -days "$days_valid" -in "$csr_file" -signkey "$key_file" \
|
||||||
|
-out "$cert_file" -extfile "$config_file" -extensions req_ext -extensions v3_ca
|
||||||
|
}
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Function to allow only private IP ranges for incoming connections
|
||||||
|
allow_private_ips_only() {
|
||||||
|
# Flush existing iptables rules
|
||||||
|
iptables -F
|
||||||
|
iptables -X
|
||||||
|
|
||||||
|
# Allow loopback traffic
|
||||||
|
iptables -A INPUT -i lo -j ACCEPT
|
||||||
|
iptables -A OUTPUT -o lo -j ACCEPT
|
||||||
|
|
||||||
|
# Allow established and related connections
|
||||||
|
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
||||||
|
|
||||||
|
# Allow traffic from private IP ranges
|
||||||
|
iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT
|
||||||
|
iptables -A INPUT -s 172.16.0.0/12 -j ACCEPT
|
||||||
|
iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT
|
||||||
|
|
||||||
|
# Drop all other traffic
|
||||||
|
iptables -A INPUT -j DROP
|
||||||
|
|
||||||
|
# Allow outgoing traffic to private IP ranges
|
||||||
|
iptables -A OUTPUT -d 10.0.0.0/8 -j ACCEPT
|
||||||
|
iptables -A OUTPUT -d 172.16.0.0/12 -j ACCEPT
|
||||||
|
iptables -A OUTPUT -d 192.168.0.0/16 -j ACCEPT
|
||||||
|
|
||||||
|
# Drop all other outgoing traffic
|
||||||
|
iptables -A OUTPUT -j DROP
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Graceful shutdown function
|
||||||
|
shutdown_nginx() {
|
||||||
|
echo "Shutting down Nginx..."
|
||||||
|
nginx -s quit
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Trap SIGTERM signal and call shutdown_nginx
|
||||||
|
trap 'shutdown_nginx' SIGTERM
|
||||||
|
|
||||||
|
|
||||||
|
generate_self_signed_ssl >> /dev/null 2>&1
|
||||||
|
echo '
|
||||||
|
██████╗ █████╗ ██████╗ ██╗ ██╗██╗ ██╗██╗██████╗ ███████╗
|
||||||
|
██╔══██╗██╔══██╗██╔══██╗██║ ██╔╝██║ ██║██║██╔══██╗██╔════╝
|
||||||
|
██║ ██║███████║██████╔╝█████╔╝ ██║ █╗ ██║██║██████╔╝█████╗
|
||||||
|
██║ ██║██╔══██║██╔══██╗██╔═██╗ ██║███╗██║██║██╔══██╗██╔══╝
|
||||||
|
██████╔╝██║ ██║██║ ██║██║ ██╗╚███╔███╔╝██║██║ ██║███████╗
|
||||||
|
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚══╝╚══╝ ╚═╝╚═╝ ╚═╝╚══════╝
|
||||||
|
Dockerized by NOXCIS
|
||||||
|
'
|
||||||
|
# Start the server
|
||||||
|
allow_private_ips_only
|
||||||
|
yarn start &
|
||||||
|
nginx &
|
||||||
|
# Wait indefinitely to handle SIGTERM
|
||||||
|
wait
|
||||||
|
|
13
torrc
Normal file
13
torrc
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
##### Do not edit. #####
|
||||||
|
UseBridges 1
|
||||||
|
AutomapHostsOnResolve 1
|
||||||
|
VirtualAddrNetwork 10.192.0.0/10
|
||||||
|
User tor
|
||||||
|
DataDirectory /var/lib/tor
|
||||||
|
SocksPort auto
|
||||||
|
TransPort 10.2.0.3:59040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort
|
||||||
|
ClientTransportPlugin webtunnel exec ./client
|
||||||
|
%include /etc/tor/torrc.d/*.conf
|
||||||
|
|
||||||
|
|
||||||
|
|
672
yarn.lock
672
yarn.lock
@ -2,567 +2,201 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
ansi-regex@^2.0.0:
|
"@babel/runtime@^7.21.0":
|
||||||
version "2.1.1"
|
version "7.23.7"
|
||||||
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.7.tgz#dd7c88deeb218a0f8bd34d5db1aa242e0f203193"
|
||||||
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
|
integrity sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==
|
||||||
|
|
||||||
ansi-regex@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz"
|
|
||||||
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
|
|
||||||
|
|
||||||
ansi-styles@^3.2.1:
|
|
||||||
version "3.2.1"
|
|
||||||
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
|
|
||||||
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
color-convert "^1.9.0"
|
regenerator-runtime "^0.14.0"
|
||||||
|
|
||||||
camelcase@^5.0.0:
|
ansi-regex@^5.0.1:
|
||||||
version "5.3.1"
|
version "5.0.1"
|
||||||
resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
|
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
||||||
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
|
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
||||||
|
|
||||||
chalk@^2.4.2:
|
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
||||||
version "2.4.2"
|
version "4.3.0"
|
||||||
resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
|
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
|
||||||
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-styles "^3.2.1"
|
color-convert "^2.0.1"
|
||||||
escape-string-regexp "^1.0.5"
|
|
||||||
supports-color "^5.3.0"
|
|
||||||
|
|
||||||
cliui@^4.0.0:
|
chalk@^4.1.2:
|
||||||
version "4.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz"
|
|
||||||
integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
|
|
||||||
dependencies:
|
|
||||||
string-width "^2.1.1"
|
|
||||||
strip-ansi "^4.0.0"
|
|
||||||
wrap-ansi "^2.0.0"
|
|
||||||
|
|
||||||
code-point-at@^1.0.0:
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
|
|
||||||
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
|
|
||||||
|
|
||||||
color-convert@^1.9.0:
|
|
||||||
version "1.9.3"
|
|
||||||
resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
|
|
||||||
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
|
|
||||||
dependencies:
|
|
||||||
color-name "1.1.3"
|
|
||||||
|
|
||||||
color-name@1.1.3:
|
|
||||||
version "1.1.3"
|
|
||||||
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
|
|
||||||
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
|
||||||
|
|
||||||
concurrently@^4.1.0:
|
|
||||||
version "4.1.2"
|
version "4.1.2"
|
||||||
resolved "https://registry.npmjs.org/concurrently/-/concurrently-4.1.2.tgz"
|
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
||||||
integrity sha512-Kim9SFrNr2jd8/0yNYqDTFALzUX1tvimmwFWxmp/D4mRI+kbqIIwE2RkBDrxS2ic25O1UgQMI5AtBqdtX3ynYg==
|
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk "^2.4.2"
|
ansi-styles "^4.1.0"
|
||||||
date-fns "^1.30.1"
|
supports-color "^7.1.0"
|
||||||
lodash "^4.17.15"
|
|
||||||
read-pkg "^4.0.1"
|
|
||||||
rxjs "^6.5.2"
|
|
||||||
spawn-command "^0.0.2-1"
|
|
||||||
supports-color "^4.5.0"
|
|
||||||
tree-kill "^1.2.1"
|
|
||||||
yargs "^12.0.5"
|
|
||||||
|
|
||||||
cross-spawn@^6.0.0:
|
cliui@^8.0.1:
|
||||||
version "6.0.5"
|
version "8.0.1"
|
||||||
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz"
|
resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
|
||||||
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
|
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
nice-try "^1.0.4"
|
string-width "^4.2.0"
|
||||||
path-key "^2.0.1"
|
strip-ansi "^6.0.1"
|
||||||
semver "^5.5.0"
|
wrap-ansi "^7.0.0"
|
||||||
shebang-command "^1.2.0"
|
|
||||||
which "^1.2.9"
|
|
||||||
|
|
||||||
date-fns@^1.30.1:
|
color-convert@^2.0.1:
|
||||||
version "1.30.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz"
|
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
|
||||||
integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
|
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
|
||||||
|
|
||||||
decamelize@^1.2.0:
|
|
||||||
version "1.2.0"
|
|
||||||
resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
|
|
||||||
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
|
|
||||||
|
|
||||||
end-of-stream@^1.1.0:
|
|
||||||
version "1.4.4"
|
|
||||||
resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz"
|
|
||||||
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
once "^1.4.0"
|
color-name "~1.1.4"
|
||||||
|
|
||||||
error-ex@^1.3.1:
|
color-name@~1.1.4:
|
||||||
version "1.3.2"
|
version "1.1.4"
|
||||||
resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
|
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||||
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
|
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||||
|
|
||||||
|
concurrently@^8.2.2:
|
||||||
|
version "8.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784"
|
||||||
|
integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==
|
||||||
dependencies:
|
dependencies:
|
||||||
is-arrayish "^0.2.1"
|
chalk "^4.1.2"
|
||||||
|
date-fns "^2.30.0"
|
||||||
|
lodash "^4.17.21"
|
||||||
|
rxjs "^7.8.1"
|
||||||
|
shell-quote "^1.8.1"
|
||||||
|
spawn-command "0.0.2"
|
||||||
|
supports-color "^8.1.1"
|
||||||
|
tree-kill "^1.2.2"
|
||||||
|
yargs "^17.7.2"
|
||||||
|
|
||||||
escape-string-regexp@^1.0.5:
|
date-fns@^2.30.0:
|
||||||
version "1.0.5"
|
version "2.30.0"
|
||||||
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
|
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
|
||||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
|
||||||
|
|
||||||
execa@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz"
|
|
||||||
integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
cross-spawn "^6.0.0"
|
"@babel/runtime" "^7.21.0"
|
||||||
get-stream "^4.0.0"
|
|
||||||
is-stream "^1.1.0"
|
|
||||||
npm-run-path "^2.0.0"
|
|
||||||
p-finally "^1.0.0"
|
|
||||||
signal-exit "^3.0.0"
|
|
||||||
strip-eof "^1.0.0"
|
|
||||||
|
|
||||||
find-up@^3.0.0:
|
emoji-regex@^8.0.0:
|
||||||
|
version "8.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
||||||
|
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
||||||
|
|
||||||
|
escalade@^3.1.1:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
|
||||||
|
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
|
||||||
|
|
||||||
|
get-caller-file@^2.0.5:
|
||||||
|
version "2.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||||
|
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||||
|
|
||||||
|
has-flag@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
||||||
|
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
||||||
|
|
||||||
|
is-fullwidth-code-point@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz"
|
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
|
||||||
integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
|
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
|
||||||
dependencies:
|
|
||||||
locate-path "^3.0.0"
|
|
||||||
|
|
||||||
get-caller-file@^1.0.1:
|
lodash@^4.17.21:
|
||||||
version "1.0.3"
|
|
||||||
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz"
|
|
||||||
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
|
|
||||||
|
|
||||||
get-stream@^4.0.0:
|
|
||||||
version "4.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz"
|
|
||||||
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
|
|
||||||
dependencies:
|
|
||||||
pump "^3.0.0"
|
|
||||||
|
|
||||||
has-flag@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz"
|
|
||||||
integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=
|
|
||||||
|
|
||||||
has-flag@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
|
|
||||||
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
|
|
||||||
|
|
||||||
hosted-git-info@^2.1.4:
|
|
||||||
version "2.8.8"
|
|
||||||
resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz"
|
|
||||||
integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
|
|
||||||
|
|
||||||
invert-kv@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz"
|
|
||||||
integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
|
|
||||||
|
|
||||||
is-arrayish@^0.2.1:
|
|
||||||
version "0.2.1"
|
|
||||||
resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
|
|
||||||
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
|
||||||
|
|
||||||
is-fullwidth-code-point@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
|
|
||||||
integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
|
|
||||||
dependencies:
|
|
||||||
number-is-nan "^1.0.0"
|
|
||||||
|
|
||||||
is-fullwidth-code-point@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
|
|
||||||
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
|
|
||||||
|
|
||||||
is-stream@^1.1.0:
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"
|
|
||||||
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
|
|
||||||
|
|
||||||
isexe@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
|
|
||||||
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
|
|
||||||
|
|
||||||
json-parse-better-errors@^1.0.1:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
|
|
||||||
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
|
|
||||||
|
|
||||||
lcid@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz"
|
|
||||||
integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
|
|
||||||
dependencies:
|
|
||||||
invert-kv "^2.0.0"
|
|
||||||
|
|
||||||
locate-path@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz"
|
|
||||||
integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
|
|
||||||
dependencies:
|
|
||||||
p-locate "^3.0.0"
|
|
||||||
path-exists "^3.0.0"
|
|
||||||
|
|
||||||
lodash@^4.17.15:
|
|
||||||
version "4.17.21"
|
version "4.17.21"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||||
|
|
||||||
map-age-cleaner@^0.1.1:
|
regenerator-runtime@^0.14.0:
|
||||||
version "0.1.3"
|
version "0.14.1"
|
||||||
resolved "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
|
||||||
integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
|
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
|
||||||
dependencies:
|
|
||||||
p-defer "^1.0.0"
|
|
||||||
|
|
||||||
mem@^4.0.0:
|
|
||||||
version "4.3.0"
|
|
||||||
resolved "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz"
|
|
||||||
integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
|
|
||||||
dependencies:
|
|
||||||
map-age-cleaner "^0.1.1"
|
|
||||||
mimic-fn "^2.0.0"
|
|
||||||
p-is-promise "^2.0.0"
|
|
||||||
|
|
||||||
mimic-fn@^2.0.0:
|
|
||||||
version "2.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
|
|
||||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
|
||||||
|
|
||||||
nice-try@^1.0.4:
|
|
||||||
version "1.0.5"
|
|
||||||
resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz"
|
|
||||||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
|
||||||
|
|
||||||
normalize-package-data@^2.3.2:
|
|
||||||
version "2.5.0"
|
|
||||||
resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
|
|
||||||
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
|
|
||||||
dependencies:
|
|
||||||
hosted-git-info "^2.1.4"
|
|
||||||
resolve "^1.10.0"
|
|
||||||
semver "2 || 3 || 4 || 5"
|
|
||||||
validate-npm-package-license "^3.0.1"
|
|
||||||
|
|
||||||
npm-run-path@^2.0.0:
|
|
||||||
version "2.0.2"
|
|
||||||
resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz"
|
|
||||||
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
|
|
||||||
dependencies:
|
|
||||||
path-key "^2.0.0"
|
|
||||||
|
|
||||||
number-is-nan@^1.0.0:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
|
|
||||||
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
|
|
||||||
|
|
||||||
once@^1.3.1, once@^1.4.0:
|
|
||||||
version "1.4.0"
|
|
||||||
resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
|
|
||||||
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
|
|
||||||
dependencies:
|
|
||||||
wrappy "1"
|
|
||||||
|
|
||||||
os-locale@^3.0.0:
|
|
||||||
version "3.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz"
|
|
||||||
integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
|
|
||||||
dependencies:
|
|
||||||
execa "^1.0.0"
|
|
||||||
lcid "^2.0.0"
|
|
||||||
mem "^4.0.0"
|
|
||||||
|
|
||||||
p-defer@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz"
|
|
||||||
integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
|
|
||||||
|
|
||||||
p-finally@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz"
|
|
||||||
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
|
|
||||||
|
|
||||||
p-is-promise@^2.0.0:
|
|
||||||
version "2.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz"
|
|
||||||
integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
|
|
||||||
|
|
||||||
p-limit@^2.0.0:
|
|
||||||
version "2.3.0"
|
|
||||||
resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
|
|
||||||
integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
|
|
||||||
dependencies:
|
|
||||||
p-try "^2.0.0"
|
|
||||||
|
|
||||||
p-locate@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz"
|
|
||||||
integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
|
|
||||||
dependencies:
|
|
||||||
p-limit "^2.0.0"
|
|
||||||
|
|
||||||
p-try@^2.0.0:
|
|
||||||
version "2.2.0"
|
|
||||||
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
|
|
||||||
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
|
||||||
|
|
||||||
parse-json@^4.0.0:
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz"
|
|
||||||
integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
|
|
||||||
dependencies:
|
|
||||||
error-ex "^1.3.1"
|
|
||||||
json-parse-better-errors "^1.0.1"
|
|
||||||
|
|
||||||
path-exists@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"
|
|
||||||
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
|
|
||||||
|
|
||||||
path-key@^2.0.0, path-key@^2.0.1:
|
|
||||||
version "2.0.1"
|
|
||||||
resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz"
|
|
||||||
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
|
||||||
|
|
||||||
path-parse@^1.0.6:
|
|
||||||
version "1.0.6"
|
|
||||||
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz"
|
|
||||||
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
|
|
||||||
|
|
||||||
pify@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz"
|
|
||||||
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
|
|
||||||
|
|
||||||
pump@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz"
|
|
||||||
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
|
|
||||||
dependencies:
|
|
||||||
end-of-stream "^1.1.0"
|
|
||||||
once "^1.3.1"
|
|
||||||
|
|
||||||
read-pkg@^4.0.1:
|
|
||||||
version "4.0.1"
|
|
||||||
resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz"
|
|
||||||
integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc=
|
|
||||||
dependencies:
|
|
||||||
normalize-package-data "^2.3.2"
|
|
||||||
parse-json "^4.0.0"
|
|
||||||
pify "^3.0.0"
|
|
||||||
|
|
||||||
require-directory@^2.1.1:
|
require-directory@^2.1.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
|
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||||
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
|
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
|
||||||
|
|
||||||
require-main-filename@^1.0.1:
|
rxjs@^7.8.1:
|
||||||
version "1.0.1"
|
version "7.8.1"
|
||||||
resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz"
|
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
|
||||||
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
|
integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
|
||||||
|
|
||||||
resolve@^1.10.0:
|
|
||||||
version "1.17.0"
|
|
||||||
resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz"
|
|
||||||
integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
path-parse "^1.0.6"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
rxjs@^6.5.2:
|
shell-quote@^1.8.1:
|
||||||
version "6.5.5"
|
version "1.8.1"
|
||||||
resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz"
|
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
|
||||||
integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==
|
integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
|
||||||
|
|
||||||
|
spawn-command@0.0.2:
|
||||||
|
version "0.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e"
|
||||||
|
integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==
|
||||||
|
|
||||||
|
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||||
|
version "4.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||||
|
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
emoji-regex "^8.0.0"
|
||||||
|
is-fullwidth-code-point "^3.0.0"
|
||||||
|
strip-ansi "^6.0.1"
|
||||||
|
|
||||||
"semver@2 || 3 || 4 || 5", semver@^5.5.0:
|
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||||
version "5.7.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||||
|
|
||||||
set-blocking@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
|
|
||||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
|
||||||
|
|
||||||
shebang-command@^1.2.0:
|
|
||||||
version "1.2.0"
|
|
||||||
resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz"
|
|
||||||
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
|
|
||||||
dependencies:
|
dependencies:
|
||||||
shebang-regex "^1.0.0"
|
ansi-regex "^5.0.1"
|
||||||
|
|
||||||
shebang-regex@^1.0.0:
|
supports-color@^7.1.0:
|
||||||
version "1.0.0"
|
version "7.2.0"
|
||||||
resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz"
|
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
||||||
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
|
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
|
||||||
|
|
||||||
signal-exit@^3.0.0:
|
|
||||||
version "3.0.3"
|
|
||||||
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz"
|
|
||||||
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
|
||||||
|
|
||||||
spawn-command@^0.0.2-1:
|
|
||||||
version "0.0.2-1"
|
|
||||||
resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz"
|
|
||||||
integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=
|
|
||||||
|
|
||||||
spdx-correct@^3.0.0:
|
|
||||||
version "3.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz"
|
|
||||||
integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
spdx-expression-parse "^3.0.0"
|
has-flag "^4.0.0"
|
||||||
spdx-license-ids "^3.0.0"
|
|
||||||
|
|
||||||
spdx-exceptions@^2.1.0:
|
supports-color@^8.1.1:
|
||||||
version "2.3.0"
|
version "8.1.1"
|
||||||
resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz"
|
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
|
||||||
integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
|
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
|
||||||
|
|
||||||
spdx-expression-parse@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz"
|
|
||||||
integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
spdx-exceptions "^2.1.0"
|
has-flag "^4.0.0"
|
||||||
spdx-license-ids "^3.0.0"
|
|
||||||
|
|
||||||
spdx-license-ids@^3.0.0:
|
tree-kill@^1.2.2:
|
||||||
version "3.0.5"
|
|
||||||
resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz"
|
|
||||||
integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
|
|
||||||
|
|
||||||
string-width@^1.0.1:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
|
|
||||||
integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
|
|
||||||
dependencies:
|
|
||||||
code-point-at "^1.0.0"
|
|
||||||
is-fullwidth-code-point "^1.0.0"
|
|
||||||
strip-ansi "^3.0.0"
|
|
||||||
|
|
||||||
string-width@^2.0.0, string-width@^2.1.1:
|
|
||||||
version "2.1.1"
|
|
||||||
resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz"
|
|
||||||
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
|
||||||
dependencies:
|
|
||||||
is-fullwidth-code-point "^2.0.0"
|
|
||||||
strip-ansi "^4.0.0"
|
|
||||||
|
|
||||||
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
|
|
||||||
version "3.0.1"
|
|
||||||
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
|
|
||||||
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
|
|
||||||
dependencies:
|
|
||||||
ansi-regex "^2.0.0"
|
|
||||||
|
|
||||||
strip-ansi@^4.0.0:
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"
|
|
||||||
integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
|
|
||||||
dependencies:
|
|
||||||
ansi-regex "^3.0.0"
|
|
||||||
|
|
||||||
strip-eof@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz"
|
|
||||||
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
|
|
||||||
|
|
||||||
supports-color@^4.5.0:
|
|
||||||
version "4.5.0"
|
|
||||||
resolved "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz"
|
|
||||||
integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
|
|
||||||
dependencies:
|
|
||||||
has-flag "^2.0.0"
|
|
||||||
|
|
||||||
supports-color@^5.3.0:
|
|
||||||
version "5.5.0"
|
|
||||||
resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
|
|
||||||
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
|
|
||||||
dependencies:
|
|
||||||
has-flag "^3.0.0"
|
|
||||||
|
|
||||||
tree-kill@^1.2.1:
|
|
||||||
version "1.2.2"
|
version "1.2.2"
|
||||||
resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz"
|
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
|
||||||
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
|
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
|
||||||
|
|
||||||
tslib@^1.9.0:
|
tslib@^2.1.0:
|
||||||
version "1.11.1"
|
version "2.6.2"
|
||||||
resolved "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
|
||||||
integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==
|
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
|
||||||
|
|
||||||
validate-npm-package-license@^3.0.1:
|
wrap-ansi@^7.0.0:
|
||||||
version "3.0.4"
|
version "7.0.0"
|
||||||
resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"
|
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||||
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
|
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
spdx-correct "^3.0.0"
|
ansi-styles "^4.0.0"
|
||||||
spdx-expression-parse "^3.0.0"
|
string-width "^4.1.0"
|
||||||
|
strip-ansi "^6.0.0"
|
||||||
|
|
||||||
which-module@^2.0.0:
|
y18n@^5.0.5:
|
||||||
version "2.0.0"
|
version "5.0.8"
|
||||||
resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz"
|
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
||||||
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
|
||||||
|
|
||||||
which@^1.2.9:
|
yargs-parser@^21.1.1:
|
||||||
version "1.3.1"
|
version "21.1.1"
|
||||||
resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz"
|
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
|
||||||
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
|
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
|
||||||
|
|
||||||
|
yargs@^17.7.2:
|
||||||
|
version "17.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
|
||||||
|
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
|
||||||
dependencies:
|
dependencies:
|
||||||
isexe "^2.0.0"
|
cliui "^8.0.1"
|
||||||
|
escalade "^3.1.1"
|
||||||
wrap-ansi@^2.0.0:
|
get-caller-file "^2.0.5"
|
||||||
version "2.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz"
|
|
||||||
integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
|
|
||||||
dependencies:
|
|
||||||
string-width "^1.0.1"
|
|
||||||
strip-ansi "^3.0.1"
|
|
||||||
|
|
||||||
wrappy@1:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
|
|
||||||
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
|
||||||
|
|
||||||
"y18n@^3.2.1 || ^4.0.0":
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz"
|
|
||||||
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
|
||||||
|
|
||||||
yargs-parser@^11.1.1:
|
|
||||||
version "11.1.1"
|
|
||||||
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz"
|
|
||||||
integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
|
|
||||||
dependencies:
|
|
||||||
camelcase "^5.0.0"
|
|
||||||
decamelize "^1.2.0"
|
|
||||||
|
|
||||||
yargs@^12.0.5:
|
|
||||||
version "12.0.5"
|
|
||||||
resolved "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz"
|
|
||||||
integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
|
|
||||||
dependencies:
|
|
||||||
cliui "^4.0.0"
|
|
||||||
decamelize "^1.2.0"
|
|
||||||
find-up "^3.0.0"
|
|
||||||
get-caller-file "^1.0.1"
|
|
||||||
os-locale "^3.0.0"
|
|
||||||
require-directory "^2.1.1"
|
require-directory "^2.1.1"
|
||||||
require-main-filename "^1.0.1"
|
string-width "^4.2.3"
|
||||||
set-blocking "^2.0.0"
|
y18n "^5.0.5"
|
||||||
string-width "^2.0.0"
|
yargs-parser "^21.1.1"
|
||||||
which-module "^2.0.0"
|
|
||||||
y18n "^3.2.1 || ^4.0.0"
|
|
||||||
yargs-parser "^11.1.1"
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user