This commit is contained in:
Gerimovich_Ilya 2023-12-24 15:22:48 +04:00
parent 733a37ed25
commit e2ad337348
9723 changed files with 1181601 additions and 0 deletions

20
lab3/.eslintrc.json Normal file

@ -0,0 +1,20 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": "airbnb-base",
"parserOptions": {
"ecmaVersion": 12,
"sourceType": "module"
},
"rules": {
"quotes": "off",
"indent": "off",
"no-console": "off",
"no-use-before-define": "off",
"no-alert": "off",
"no-restricted-globals": "off",
"quote-props": "off"
}
}

BIN
lab3/StreamerCircle.jpg Normal file

Binary file not shown.

After

(image error) Size: 41 KiB

12
lab3/_media.css Normal file

@ -0,0 +1,12 @@
.media {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start; }
.media-body {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1; }

28
lab3/css/banner.css Normal file

@ -0,0 +1,28 @@
#banner {
margin: 5px;
display: flex;
align-items: center;
flex-direction: row;
justify-content: space-around; /* распределяет элементы равномерно по горизонтали */
flex-wrap: nowrap; /* если вы хотите, чтобы все элементы были в одной линии и не переходили на новую линию. Если нужно переход на новую линию при нехватке места, укажите 'wrap' */
}
#banner img {
border: 1px solid #3c3c3f;
border-radius: 5px;
}
#banner img.banner-show {
width: 20%;
opacity: 1;
transition: opacity 1s, visibility 0s;
}
#banner img.banner-hide {
height: 0;
width: 0;
opacity: 0;
visibility: hidden;
transition: opacity 1s, visibility 0s 1s;
}

158
lab3/css/style.css Normal file

@ -0,0 +1,158 @@
header nav {
background-color: #292828;
}
html, body {
height: 100%;
margin: 0;
}
@media (min-width: 768px) {
header nav {
height: 64px;
}
container-fluid nav{
height: 100%;
width: 100%;
}
}
.full-page-div {
background-color: #ececec; /* Цвет фона */
padding: 1%; /* Внутренний отступ */
margin: 1%; /* Внешний отступ */
}
header nav a:hover {
text-decoration: underline;
}
footer {
background-color: #9c9c9c;
height: 32px;
color: #ffffff;
}
h1 {
font-size: 1.5em;
}
h2 {
font-size: 1.25em;
}
h3 {
font-size: 1.1em;
}
h4 {
font-size: 1.5px;
}
/* .container{
width: 500px;
height: 500px;
}*/
/* .container-fluid{
height: 100vh;
}
.full-page-div {
width: 100%;
height: calc(100vh - 56px); /* 56px - высота навигационной панели (navbar)
overflow-y: auto; Добавляет вертикальную прокрутку, если содержимое не помещается
} */
.card{
font-size: 19px;
}
.circle-container {
width: 100px;
height: 100px;
border-radius: 50%;
overflow: hidden; /* обрезаем лишнее изображение за пределами круга */
margin: auto; /* автоматическое выравнивание по горизонтали */
margin-top: 20px; /* опциональное выравнивание по вертикали (если нужно) */
}
.circle-container img {
width: 100%;
height: 100%;
object-fit: cover; /* сохраняем соотношение сторон и обрезаем изображение, чтобы оно полностью заполнило круг */
}
a{
margin-bottom: 2px;
margin-top: 2px;
}
/* .container-main {
flex: 1;
} */
.streamer-nickname {
padding-top: 5px;
padding-bottom: 5px;
font-size: 26px;
}
.online-indicator {
display: inline-flex;
align-items: center;
}
.dot {
width: 5px;
height: 5px;
background-color: red;
border-radius: 50%;
}
.online-count {
color: red;
font-weight: bold;
font-size: 13px;
}
/* .sidebar {
background-color: #f8f9fa;
height: 100vh;
} */
.video-thumbnail {
/* width: 1920px;
height: 1080px; */
max-width: 100%;
max-height: 100%;
width: 100%;
height: 100%;
}
.embed-responsive{
max-width: 100%;
max-height: 100%;
width: 1600px;
height: 800px;
}
img,
svg {
vertical-align: middle;
}
.btn-info{
color:rgb(22, 9, 93);
flex-wrap: nowrap;
justify-content: center;
}
.card-img-top{
max-width: 100%;
height: auto;
max-height: 500px;
}
.avatar-img{
max-width: 100%;
height: auto;
max-height: 40px;
}
.modal-dialog img{
max-width: 310px;
max-height: 200px;
object-fit: cover;
}
.fa-pencil{
margin-right: 15px;
}

67
lab3/data.json Normal file

File diff suppressed because one or more lines are too long

184
lab3/index.html Normal file

@ -0,0 +1,184 @@
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Streaming service</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="module" src="./node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
<link href="./node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link href="./node_modules/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet"/>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<header>
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="index.html">
Streaming-video service
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
<div class="navbar-nav">
<a class="nav-link" href="./page1.html">Главная страница</a>
<a class="nav-link" href="./page2.html">Поиск</a>
<a class="nav-link" href="./page3.html">Подписки</a>
<a class="nav-link" href="./page4.html">Вход/Регистрация</a>
</div>
<form class="col-12 col-md-auto mb-2 mb-md-0 me-md-3" role="search" action="./page2.html" method="get">
<input class="form-control" type="text" placeholder="Search" aria-label="Search">
</form>
</div>
</div>
</nav>
</header>
<div class="container-fluid ">
<div class="row">
<nav class="col-md-2 bg-dark sidebar">
<div class="d-flex flex-column align-items-center align-items-sm-start px-8 pt-3 text-white">
<h2>Стримеры онлайн</h2>
<div class="container">
<div class="row">
<div class="col">
<a href="page5channel.html" class="nav-link align-middle px-0">
<i class="fs-4 bi-house"></i> <span class="ms-1 d-none d-sm-inline">Streamer1</span>
</a>
</div>
<div class="col d-flex align-items-center justify-content-end">
<div class="online-indicator">
<div class="dot"></div>
<div class="online-count ml-1">1000</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<a href="page5channel.html" class="nav-link align-middle px-0">
<i class="fs-4 bi-house"></i> <span class="ms-1 d-none d-sm-inline">Straaaa2</span>
</a>
</div>
<div class="col d-flex align-items-center justify-content-end">
<div class="online-indicator">
<div class="dot"></div>
<div class="online-count ml-1">1702</div>
</div>
</div>
</div>
<div class="row">
<div class="col">
<a href="page6admin.html" class="nav-link align-middle px-0">
<i class="fs-4 bi-house"></i> <span class="ms-1 d-none d-sm-inline">admin</span>
</a>
</div>
<div class="col d-flex align-items-center justify-content-end">
<div class="online-indicator">
<div class="dot"></div>
<div class="online-count ml-1">902</div>
</div>
</div>
</div>
<hr class="featurette-divider">
<h2>Ваши подписки</h2>
<div class="container">
<div class="row">
<div class="col">
<a href="page5channel.html" class="nav-link align-middle px-0">
<i class="fs-4 bi-house"></i> <span class="ms-1 d-none d-sm-inline">The best channel</span>
</a>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col">
<a href="page5channel.html" class="nav-link align-middle px-0">
<i class="fs-4 bi-house"></i> <span class="ms-1 d-none d-sm-inline">Channelv2</span>
</a>
</div>
</div>
</div>
</div>
</nav>
<div id="items-update" class="modal fade" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false">
<div class="modal-dialog">
<form id="items-form" class="needs-validation" novalidate>
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="items-update-title"></h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="text-center">
<img id="image-preview" src="https://via.placeholder.com/200" class="rounded"
alt="placeholder">
</div>
<input id="items-line-id" type="number" hidden>
<div class="mb-2">
<label class="form-label" for="name">Название видео</label>
<input id="name" name="name" class="form-control" type = "text"
required>
</div>
<div class="mb-2">
<label class="form-label" for="description">Название канала</label>
<input id="description" name="description" class="form-control" type="text"
required>
</div>
<div class="mb-2">
<label class="form-label" for="image">Превью видео</label>
<input id="image" type="file" name="image" class="form-control" accept="image/*">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
<button type="submit" class="btn btn-primary">Сохранить</button>
</div>
</div>
</form>
</div>
</div>
</nav>
<main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-4">
<div class = "container-fluid justify-content-center">
<div class="full-page-div">
<div class="p-5 text-center">
<h1 class="display-4 fw-bold">Welcome to our streaming-video service</h1>
<p class="fs-5">Explore the whole streaming-video world!</p>
<a class="btn btn-outline-danger btn-lg" href="page1.html" role="button">Главная страница</a>
</div>
<div class="btn-group text-center" role="group">
<button id="items-add" class="btn btn-info">
Добавить видео</button>
<button class="btn btn-primary w-auto" type="button" onclick ="location.href='page6admin.html';">
Панель админа</button>
</div>
</div>
</div>
</main>
<footer class="footer mt-auto d-flex flex-shrink-0 justify-content-center align-items-center">
Copyright &copy;<script>document.write(new Date().getFullYear());</script> All rights reserved
</footer>
</div>
</div>
<script src="../assets/dist/js/bootstrap.bundle.min.js"></script>
<script src="sidebars.js"></script>
<script type = "module">
import validation from "./js/validation";
import { UpdateVideos, linesForm } from "./js/lines";
document.addEventListener('DOMContentLoaded', () => {
validation();
linesForm();
UpdateVideos();
});
</script>
</body>
</html>

48
lab3/js/banner.js Normal file

@ -0,0 +1,48 @@
// модуль для смены изображения в баннере по таймеру
import '../css/banner.css';
// указывается блок, в котором будет баннер
// блок должен содержать изображения
function myBanner(root) {
console.info("Loaded");
// получение всех изображений внутри баннера
const banners = document.querySelectorAll(`${root} img`);
// всем изображениям устанавливается класс banner-hide
// если были другие классы, то они будут удалены
for (let i = 0; i < banners.length; i += 1) {
banners[i].setAttribute("class", "banner-hide");
}
let old = banners.length - 1;
let current = 0;
let current2 = 1;
let current3 = 2;
// функция меняет изображения в цикле
// изображение с классом banner-show будет показано
// изображение с классом banner-hide будет скрыто
// функция запускает таймер, который через 5 секунд
// запускает функцию, снова создается таймер и т. д.
function loop() {
banners[current].setAttribute("class", "banner-show");
banners[old].setAttribute("class", "banner-hide");
console.info("Banner changed");
old = current;
current += 1;
if (current === banners.length) {
current = 0;
}
setTimeout(loop, 5000);
}
loop();
}
export default myBanner;

61
lab3/js/lines-modal.js Normal file

@ -0,0 +1,61 @@
// Модуль для работы с модальным окном
// импорт компонента Modal из bootstrap
import { Modal } from "bootstrap";
import { cntrls, imagePlaceholder } from "./lines-ui";
// поиск модального окна на странице
const modal = document.getElementById("items-update");
// если он найден, то создается экземпляр компонента Modal
// для программного управления модальным окном
const myModal = modal ? new Modal(modal, {}) : null;
// поиск тега с заголовком модального кона для его смены
const modalTitle = document.getElementById("items-update-title");
// обнуление значений модального окна, т. к.
// используется одно окно для всех операций
function resetValues() {
cntrls.lineId.value = "";
cntrls.itemName.value = "";
cntrls.itemDescription.value = "";
cntrls.itemImage.value = "";
// cntrls.itemImageAvatar.value = "";
cntrls.imagePreview.src = imagePlaceholder;
}
// функция для показа модального окна
// перед показом происходит заполнение формы для редактирования
// если объект item не пуст
export function showUpdateModal(item) {
console.info(item, modalTitle.innerHTML);
modalTitle.innerHTML = item === null ? "Добавить" : "Изменить";
console.info(item);
if (item) {
cntrls.lineId.value = item.id;
cntrls.itemName.value = item.name;
cntrls.itemDescription.value = item.description;
// заполнение превью
// Если пользователь выбрал изображение, то оно загружается
// в тэг image с id image - preview
// иначе устанавливается заглушка, адрес которой указан в imagePlaceholder
cntrls.imagePreview.src = item.image ? item.image : imagePlaceholder;
// cntrls.itemImageAvatar.src = item.imageAvatar ? item.imageAvatar : imagePlaceholder;
} else {
resetValues();
}
myModal.show();
}
// функция для скрытия модального окна
export function hideUpdateModal() {
resetValues();
// удаление класса was-validated для скрытия результатов валидации
cntrls.form.classList.remove("was-validated");
myModal.hide();
}

106
lab3/js/lines-rest-api.js Normal file

@ -0,0 +1,106 @@
// модуль для работы с REST API сервера
// адрес сервера
const serverUrl = "http://localhost:8081";
export function getRealDate() {
const date = new Date();
const year = date.getFullYear();
const month = `0${date.getMonth() + 1}`.slice(-2);
const day = `0${date.getDate()}`.slice(-2);
return `${year}-${month}-${day}`;
}
// функция возвращает объект нужной структуры для отправки на сервер
function createLineObject(itemName, itemDescription, itemImage) { // itemImageAvatar
return {
date: getRealDate(),
name: itemName,
description: itemDescription,
image: itemImage,
// imageAvatar: itemImageAvatar,
};
}
// // обращение к серверу для получения всех типов товара (get)
// export async function getAllItemTypes() {
// const response = await fetch(`${serverUrl}/items`);
// if (!response.ok) {
// throw response.statusText;
// }
// return response.json();
// }
// // обращение к серверу для получения записи по первичному ключу (id) (get)
// // id передается в качестве части пути URL get-запроса
// export async function getLine(id) {
// const response = await fetch(`${serverUrl}/lines/${id}?_expand=items`);
// if (!response.ok) {
// throw response.statusText;
// }
// return response.json();
// }
// обращение к серверу для получения всех записей (get)
export async function getAllLines() {
const response = await fetch(`${serverUrl}/lines`);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для создания записи (post)
// объект отправляется в теле запроса (body)
export async function createLine(itemName, description, image) { // imageAvatar
const itemObject = createLineObject(itemName, description, image);
const options = {
method: "POST",
body: JSON.stringify(itemObject),
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
};
const response = await fetch(`${serverUrl}/lines`, options);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для обновления записи по id (put)
// объект отправляется в теле запроса (body)
// id передается в качестве части пути URL get-запроса
export async function updateLine(id, itemName, description, image) { // imageAvatar
const itemObject = createLineObject(itemName, description, image);
const options = {
method: "PUT",
body: JSON.stringify(itemObject),
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
};
const response = await fetch(`${serverUrl}/lines/${id}`, options);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}
// обращение к серверу для удаления записи по id (delete)
// id передается в качестве части пути URL get-запроса
export async function deleteLine(id) {
const options = {
method: "DELETE",
};
const response = await fetch(`${serverUrl}/lines/${id}`, options);
if (!response.ok) {
throw response.statusText;
}
return response.json();
}

110
lab3/js/lines-ui.js Normal file

@ -0,0 +1,110 @@
// модуль для работы с элементами управления
// объект для удобного получения элементов
// при обращении к атрибуту объекта вызывается
// нужная функция для поиска элемента
export const cntrls = {
button: document.getElementById("items-add"),
table: document.querySelector("#items-table tbody"),
form: document.getElementById("items-form"),
lineId: document.getElementById("items-line-id"),
itemDate: document.getElementById("date"),
itemName: document.getElementById("name"),
itemDescription: document.getElementById("description"),
itemImage: document.getElementById("image"),
// itemImageAvatar: document.getElementById("imageAvatar"),
imagePreview: document.getElementById("image-preview"),
};
// Дефолтное превью
export const imagePlaceholder = "https://via.placeholder.com/210x100";
// функция создает тег option для select
// <option value="" selected>name</option>
export function createItemsOption(name, value = "", isSelected = false) {
const option = document.createElement("option");
option.value = value || "";
option.selected = isSelected;
option.text = name;
return option;
}
// функция создает ссылку (a) для таблицы
// содержимое тега a заполняется необходимой иконкой (icon)
// при нажатии вызывается callback
// ссылка "оборачивается" тегом td
// <td><a href="#" onclick="callback()"><i class="fa-solid icon"></i></a></td>
function createTableAnchor(icon, callback) {
const i = document.createElement("i");
console.info("icon", icon);
console.info("callback", callback);
i.classList.add("fa-solid", icon);
const a = document.createElement("a");
a.href = "#";
a.appendChild(i);
a.onclick = (event) => {
// чтобы в URL не добавлялась решетка
event.preventDefault();
event.stopPropagation();
callback();
};
const td = document.createElement("td");
td.appendChild(a);
return td;
}
export function createAnchor(icon, callback) {
const i = document.createElement("i");
i.classList.add("fa-solid", icon);
const a = document.createElement("a");
a.href = "#";
a.appendChild(i);
a.onclick = (event) => {
// чтобы в URL не добавлялась решетка
event.preventDefault();
event.stopPropagation();
callback(icon);
};
const div = document.createElement("div");
div.appendChild(a);
return a;
}
// функция создает колонку таблицы с текстом value
// <td>value</td>
function createTableColumn(value) {
const td = document.createElement("td");
td.textContent = value;
return td;
}
// функция создает строку таблицы
// <tr>
// <th scope="row">index + 1</th>
// <td>item.items.name</td>
// <td>parseFloat(item.price).toFixed(2))</td>
// <td>item.count</td>
// <td>parseFloat(item.sum).toFixed(2))</td>
// <td><a href="#" onclick="editCallback()"><i class="fa-solid fa-pencil"></i></a></td>
// <td><a href="#" onclick="editPageCallback()"><i class="fa-solid fa-pen-to-square"></i></a></td>
// <td><a href="#" onclick="deleteCallback()"><i class="fa-solid fa-trash"></i></a></td>
// </tr>
export function createTableRow(item, index, editCallback, deleteCallback) {
const rowNumber = document.createElement("th");
rowNumber.scope = "row";
rowNumber.textContent = index + 1;
const row = document.createElement("tr");
row.id = `line-${item.id}`;
row.appendChild(rowNumber);
row.appendChild(createTableColumn(item.date));
row.appendChild(createTableColumn(item.name));
row.appendChild(createTableColumn(item.description));
// редактировать в модальном окне
row.appendChild(createTableAnchor("fa-pencil", editCallback));
// удаление
row.appendChild(createTableAnchor("fa-trash", deleteCallback));
return row;
}

866
lab3/js/lines.js Normal file

@ -0,0 +1,866 @@
// модуль с логикой
import { hideUpdateModal, showUpdateModal } from "./lines-modal";
import {
// getAllItemTypes,
createLine, deleteLine, getAllLines, updateLine,
} from "./lines-rest-api";
import {
// createItemsOption,
cntrls, createTableRow, createAnchor, imagePlaceholder,
} from "./lines-ui";
async function drawLinesTable() {
console.info("Try to load data");
if (!cntrls.table) {
return;
}
// вызов метода REST API для получения всех записей
const data = await getAllLines();
// очистка содержимого table
// удаляется все, что находится между тегами <table></table>
// но не атрибуты
cntrls.table.innerHTML = "";
// цикл по результату ответа от сервера
// используется лямбда-выражение
// (item, index) => {} аналогично function(item, index) {}
data.forEach((item, index) => {
cntrls.table.appendChild(
createTableRow(
item,
index,
// функции передаются в качестве параметра
// это очень удобно, так как аргументы функций доступны только
// в данном месте кода и не передаются в сервисные модули
() => showUpdateModal(item),
() => removeLine(item.id),
),
);
});
}
async function addLine(itemName, description, image) { // + imageAvatar
console.info("Try to add item");
// вызов метода REST API для добавления записи
const data = await createLine(itemName, description, image);
console.info("Added");
console.info(data);
// загрузка и заполнение table
drawLinesTable();
console.info(window.location.pathname);
if (window.location.pathname === "/index.html") {
UpdateVideos();
}
}
async function editLine(id, itemName, description, image) { // imageAvatar
console.info("Try to update item");
// вызов метода REST API для обновления записи
const data = await updateLine(id, itemName, description, image);
console.info("Updated");
console.info(data);
// загрузка и заполнение table
drawLinesTable();
console.info(window.location.pathname);
if (window.location.pathname.toLowerCase() === "/index.html") {
UpdateVideos();
}
}
async function removeLine(id) {
if (!confirm("Do you really want to remove this item?")) {
console.info("Canceled");
return;
}
console.info("Try to remove item");
// вызов метода REST API для удаления записи
const data = await deleteLine(id);
console.info(data);
// загрузка и заполнение table
drawLinesTable();
console.info(window.location.pathname);
if (window.location.pathname === "/index.html") {
UpdateVideos();
}
}
// функция для получения содержимого файла в виде base64 строки
// https://ru.wikipedia.org/wiki/Base64
async function readFile(file) {
const reader = new FileReader();
// создание Promise-объекта для использования функции
// с помощью await (асинхронно) без коллбэков (callback)
// https://learn.javascript.ru/promise
return new Promise((resolve, reject) => {
// 2. "Возвращаем" содержимое когда файл прочитан
// через вызов resolve
// Если не использовать Promise, то всю работу по взаимодействию
// с REST API пришлось бы делать в обработчике (callback) функции
// onloadend
reader.onloadend = () => {
const fileContent = reader.result;
// Здесь могла бы быть работа с REST API
// Чтение заканчивает выполняться здесь
resolve(fileContent);
};
// 3. Возвращаем ошибку
reader.onerror = () => {
// Или здесь в случае ошибки
reject(new Error("oops, something went wrong with the file reader."));
};
// Шаг 1. Сначала читаем файл
// Чтение начинает выполняться здесь
reader.readAsDataURL(file);
});
}
// функция для обновления блока с превью выбранного изображения
async function updateImagePreview() {
// получение выбранного файла
// возможен выбор нескольких файлов, поэтому необходимо получить только первый
const file = cntrls.itemImage.files[0];
// чтение содержимого файла в виде base64 строки
const fileContent = await readFile(file);
console.info("base64 ", fileContent);
// обновление атрибута src для тега img с id image-preview
cntrls.imagePreview.src = fileContent;
}
// // функция для обновления блока с превью выбранного изображения для аватара
// async function updateImageAvatarPreview() {
// // получение выбранного файла
// // возможен выбор нескольких файлов, поэтому необходимо получить только первый
// const file = cntrls.itemImageAvatar.files[0];
// // чтение содержимого файла в виде base64 строки
// const fileContent = await readFile(file);
// console.info("base64 ", fileContent);
// // обновление атрибута src для тега img с id image-preview
// cntrls.imageAvatar.src = fileContent;
// }
// Функция для обработки создания и редактирования элементов таблицы через модальное окно
// Если хотите делать через страницу, то удалите эту функцию
export function linesForm() {
console.info("linesForm");
// загрузка и заполнение select со списком товаров
// drawItemsSelect();
// загрузка и заполнение table
drawLinesTable();
// Вызов функции обновления превью изображения при возникновении
// события oncahnge в тэге input с id image
cntrls.itemImage.addEventListener("change", () => updateImagePreview());
// cntrls.itemImageAvatar.addEventListener("change", () => updateImageAvatarPreview());
// обработчик события нажатия на кнопку для показа модального окна
cntrls.button.addEventListener("click", () => showUpdateModal(null));
// обработчик события отправки формы
// возникает при нажатии на кнопку (button) с типом submit
// кнопка должна находится внутри тега form
cntrls.form.addEventListener("submit", async (event) => {
console.info("Form onSubmit");
// отключение стандартного поведения формы при отправке
// при отправке страница обновляется и JS перестает работать
event.preventDefault();
event.stopPropagation();
// если форма не прошла валидацию, то ничего делать не нужно
if (!cntrls.form.checkValidity()) {
return;
}
let imageBase64 = "";
// Получение выбранного пользователем изображения в виде base64 строки
// Если пользователь ничего не выбрал, то не нужно сохранять в БД
// дефолтное изображение
if (cntrls.imagePreview.src !== imagePlaceholder) {
// Загрузка содержимого атрибута src тэга img с id image-preview
// Здесь выполняется HTTP запрос с типом GET
console.info("imagePreview.src");
console.info(cntrls.imagePreview.src);
const result = await fetch(cntrls.imagePreview.src);
// Получение из HTTP-ответа бинарного содержимого
const blob = await result.blob();
// Получение base64 строки для файла
// Здесь выполняется Promise из функции readFile
// Promise позволяет писать линейный код для работы с асинхронными методами
// без использования обработчиков (callback) с помощью await
imageBase64 = await readFile(blob);
}
// получение id строки для редактирования
// это значение содержится в скрытом input
const currentId = cntrls.lineId.value;
// если значение id не задано,
// то необходимо выполнить добавление записи
// иначе обновление записи
if (!currentId) {
await addLine(
cntrls.itemName.value,
cntrls.itemDescription.value,
imageBase64,
);
} else {
await editLine(
currentId,
cntrls.itemName.value,
cntrls.itemDescription.value,
imageBase64,
);
}
// после выполнения добавления/обновления модальное окно скрывается
hideUpdateModal();
});
}
/* <div class = "row">
<div class = "col mt-4">
<div class = "rectNews d-flex flex-column">
<img class ="imageNew1" src = "./images/New1.png" alt = "New1" width = "100%">
<div class = "rectNewsTextBox">
<span class = "rectNewsText">
<b>УлГТУ вошёл в топ-250 лучших вузов</b>
</span>
</div>
</div>
</div>
<div class = "col mt-4">
<div class = "rectNews d-flex flex-column position-relative">
<img src = "./images/New2.png" alt = "New2" width="100%">
<div class = "rectNewsTextBox">
<span class = "rectNewsText">
<b>Мосты в будущее будут видны из УлГТУ</b>
</span>
</div>
</div>
</div>
</div>
<div class ="row">
<div class ="col mt-5">
<div class = "rectNews d-flex flex-column position-relative">
<img src = "./images/New3.png" alt = "New3" width="100%">
<div class = "rectNewsTextBox">
<span class = "rectNewsText">
<b>Поправки в системе работы приёмной комиссии</b>
</span>
</div>
</div>
</div>
<div class = "col mt-5">
<div class = "rectNews d-flex flex-column position-relative">
<img src = "./images/New4.png" alt = "New4" width="100%">
<div class = "rectNewsTextBox">
<span class = "rectNewsText">
<b>Студенты возвращаются к учёбе после зимней сессии позже, чем раньше</b>
</span>
</div>
</div>
<span class = "d-flex"><p></p></span>
</div>
</div> */
// <div class="full-page-div">
// <div class="p-5 text-center">
// <h1 class="display-4 fw-bold">Welcome to our streaming service</h1>
// <p class="fs-5">Explore the whole streaming world!</p>
// <a class="btn btn-outline-danger btn-lg" href="page1.html" role="button">Главная страница</a>
// </div>
// <div class="p-5 text-bg-dark rounded-3">
// <h2>Популярные трансляции</h2>
// <div class="row">
// <div class="col-md-4">
// <div class="card mb-4 shadow-sm">
// <img src="png/streamer1.png" class="card-img-top" alt="Video 1">
// <div class="card-body">
// <div class="container">
// <div class="row">
// <div class="col-md-6">
// <p class="h-4 m-0 text-nowrap font-italic font-weight-bold" href="page5channel.html">Streamer1</p>
// <p class="fs-5 text-nowrap text-secondary">CS-3</p>
// </div>
// <div class="col-md-6 p-3 text-nowrap align-items-end d-flex">
// <a class="btn btn-secondary ms-auto" href="page5channel.html">Subscribe</a>
// </div>
// </div>
// </div>
// </div>
// </div>
// </div>
function clearVideos() {
const newsElements = document.querySelectorAll(".mainRow"); //mainRow
newsElements.forEach((element) => element.remove());
}
async function UpdateNews(div1, item) {
// const main2 = document.createElement("main");
// main2.setAttribute("class", "col-md-9 ml-sm-auto col-lg-10 px-4");
// const div2 = document.createElement("div");
// div2.setAttribute("class", "container-fluid d-flex justify-content-center");
// const div3 = document.createElement("div");
// div3.setAttribute("class", "full-page-div");
// const div4 = document.createElement("div");
// div4.setAttribute("class", "p-5 text-bg-dark rounded-3");
// const div5 = document.createElement("div");
// div5.setAttribute("class", "row");
// const div6 = document.createElement("div");
// div6.setAttribute("class", "col-md-4");
// const div7 = document.createElement("div");
// div7.setAttribute("class", "card mb-4 shadow-sm");
// const div8 = document.createElement("div");
// div8.setAttribute("class", "card-body");
// const div9= document.createElement("div");
// div9.setAttribute("class", "container");
// const div10 = document.createElement("div");
// div10.setAttribute("class", "col-md-6");
// const image = document.createElement("img");
// image.setAttribute("class", "card-img-top");
// image.setAttribute("src", item.image);
// image.setAttribute("width", "100%");
// image.setAttribute("alt", item.name);
// const span1 = document.createElement("p1");
// p1.setAttribute("class", "h-4 m-0 text-nowrap font-italic font-weight-bold");
// p1.textContent = item.description;
// const span2 = document.createElement("p2");
// p2.setAttribute("class", "fs-5 text-nowrap text-secondary");
const div2 = document.createElement("div");
div2.setAttribute("class", "col mb-4");
const div21 = document.createElement("div");
div21.setAttribute("class", "card mb-4 shadow-sm");
const div3 = document.createElement("div");
div3.setAttribute("class", "rectNews d-flex flex-column");
const image = document.createElement("img");
image.setAttribute("class", "rectNew");
image.setAttribute("src", item.image);
image.setAttribute("width", "100%");
image.setAttribute("alt", item.name);
const div4 = document.createElement("div");
div4.setAttribute("class", "rectNewsTextBox text-center");
const span1 = document.createElement("span");
span1.setAttribute("class", "rectNewsText");
span1.textContent = item.description;
div1.appendChild(div2);
div2.appendChild(div21);
div4.appendChild(createAnchor("fa-pencil", () => showUpdateModal(item)));
div4.appendChild(createAnchor("fa-trash", () => removeLine(item.id)));
div21.appendChild(div3);
div3.appendChild(image);
div3.appendChild(div4);
div4.appendChild(span1);
// div1.appendChild(div6);
// div6.appendChild(div7);
// p2.appendChild(createAnchor("fa-pencil", () => showUpdateModal(item)));
// p2.appendChild(createAnchor("fa-trash", () => removeLine(item.id)));
//div6.appendChild(image);
//div6.appendChild(div8);
//div8.appendChild(div9);
//div9.appendChild(div10);
//div10.appendChild(p2);
//div10.appendChild(p1);
}
// async function UpdateNew(div1, item) {
// const div2 = document.createElement("div");
// div2.setAttribute("class", "col mb-4");
// const div3 = document.createElement("div");
// div3.setAttribute("class", "rectNews d-flex flex-column");
// const image = document.createElement("img");
// image.setAttribute("class", "rectNew");
// image.setAttribute("src", item.image);
// image.setAttribute("width", "100%");
// image.setAttribute("alt", item.name);
// const div4 = document.createElement("div");
// div4.setAttribute("class", "rectNewsTextBox text-center");
// const span1 = document.createElement("span");
// span1.setAttribute("class", "rectNewsText");
// span1.textContent = item.description;
// div1.appendChild(div2);
// div4.appendChild(createAnchor("fa-pencil", () => showUpdateModal(item)));
// div4.appendChild(createAnchor("fa-trash", () => removeLine(item.id)));
// div2.appendChild(div3);
// div3.appendChild(image);
// div3.appendChild(div4);
// div4.appendChild(span1);
// }
export async function UpdateVideos() {
clearVideos();
console.info("UpdateVideos");
const data = await getAllLines();
const main2 = document.querySelector("main"); // Get the main element
main2.setAttribute("class", "mainDiv col-md-9 ml-sm-auto col-lg-10 px-4");
// const main3 = document.querySelector("div");
// main3.setAttribute("class", "p-5 text-bg-dark rounded-3");
// Create a single row for all videos
const div10 = document.createElement("div");
div10.setAttribute("class", "mainRow row");
// main2.appendChild(main3);
data.forEach((item) => {
// Create new elements for each item
const div11 = document.createElement("div");
div11.setAttribute("class", "col-md-4 mb-4"); // Adjusted class for better spacing
const div21 = document.createElement("div");
div21.setAttribute("class", "card mb-4 shadow-sm");
const image = document.createElement("img");
image.setAttribute("class", "card-img-top");
image.setAttribute("src", item.image);
image.setAttribute("alt", item.name);
const div3 = document.createElement("div");
div3.setAttribute("class", "card-body");
const container = document.createElement("div");
container.setAttribute("class", "container");
const row = document.createElement("div");
row.setAttribute("class", "row");
// Создаем тег для аватарки
// const avatarImage = document.createElement("img");
// avatarImage.setAttribute("class", "avatar-img");
// avatarImage.setAttribute("src", item.imageAvatar);
// avatarImage.setAttribute("alt", item.name);
const colLeft = document.createElement("div");
colLeft.setAttribute("class", "col-md-4");
const colCenter = document.createElement("div");
colCenter.setAttribute("class", "col-md-4");
const colRight = document.createElement("div");
colRight.setAttribute("class", "col-md-4 p-3 text-nowrap align-items-end d-flex");
const streamerName = document.createElement("p");
streamerName.setAttribute("class", "h-4 m-0 text-nowrap font-italic font-weight-bold");
streamerName.textContent = item.name;
const streamerDetails = document.createElement("p");
streamerDetails.setAttribute("class", "fs-5 text-nowrap text-secondary");
streamerDetails.textContent = item.description;
const subscribeButton = document.createElement("a");
subscribeButton.setAttribute("class", "btn btn-secondary ms-auto");
subscribeButton.setAttribute("href", "page5channel.html");
subscribeButton.textContent = "Subscribe";
//colLeft.appendChild(avatarImage);
colLeft.appendChild(streamerName); // center с аватаром
colLeft.appendChild(streamerDetails);
colLeft.appendChild(createAnchor("fa-pencil", () => showUpdateModal(item)));
colLeft.appendChild(createAnchor("fa-trash", () => removeLine(item.id)));
colRight.appendChild(subscribeButton);
row.appendChild(colLeft);
row.appendChild(colLeft);
row.appendChild(colCenter);
row.appendChild(colRight);
container.appendChild(row);
div3.appendChild(image);
div3.appendChild(container);
div21.appendChild(div3);
div11.appendChild(div21);
// Append the new elements to the row
div10.appendChild(div11);
});
// Append the row to the main content area
main2.appendChild(div10);
//console.info("UpdatedVideosSUccsesful");
}
// export async function UpdateVideos() {
// clearVideos();
// console.info("UpdateVideos");
// const data = await getAllLines();
// const main2 = document.querySelector("main"); // Get the main element
// main2.setAttribute("class", "col-md-9 ml-sm-auto col-lg-10 px-4");
// const div13 = document.querySelector("div");
// div13.setAttribute("class", "container-fluid d-flex justify-content-center");
// const div12 = document.createElement("div");
// div12.setAttribute("class", "full-page-div");
// const div11 = document.createElement("div");
// div11.setAttribute("class", "p-5 text-bg-dark rounded-3");
// const div10 = document.createElement("div");
// div10.setAttribute("class", "row");
// data.forEach((item) => {
// const div13 = document.createElement("div");
// div13.setAttribute("class", "container-fluid d-flex justify-content-center");
// const div12 = document.createElement("div");
// div12.setAttribute("class", "full-page-div");
// const div11 = document.createElement("div");
// div11.setAttribute("class", "p-5 text-bg-dark rounded-3");
// const div10 = document.createElement("div");
// div10.setAttribute("class", "row");
// main2.appendChild(div13);
// div13.appendChild(div12);
// div12.appendChild(div11);
// //div11.appendChild(div10);
// cntrls.form.addEventListener("submit", async (event) => {
// event.preventDefault();
// event.stopPropagation();
// });
// UpdateNew(div10, item);
// // Append the new elements to the main content area
// div11.appendChild(div10);
// });
// }
// export async function UpdateVideos() {
// clearVideos();
// console.info("UpdateVideos");
// const data = await getAllLines();
// const main2 = document.createElement("main");
// main2.setAttribute("class", "mainDiv col-md-9 ml-sm-auto col-lg-10 px-4");
// const div13 = document.createElement("div");
// div13.setAttribute("class", "container-fluid d-flex justify-content-center");
// const div12 = document.createElement("div");
// div12.setAttribute("class", "full-page-div");
// const div11 = document.createElement("div");
// div11.setAttribute("class", "p-5 text-bg-dark rounded-3");
// const div10 = document.createElement("div");
// div10.setAttribute("class", "row");
// document.body.appendChild(main2);
// main2.appendChild(div13);
// div13.appendChild(div12);
// div12.appendChild(div11);
// //div11.appendChild(div10);
// data.forEach((item) => {
// cntrls.form.addEventListener("submit", async (event) => {
// event.preventDefault();
// event.stopPropagation();
// });
// UpdateNew(div10, item);
// div11.appendChild(div10);
// });
// }
// async function drawItemsSelect() {
// // вызов метода REST API для получения списка типов товаров
// const data = await getAllItemTypes();
// // очистка содержимого select
// // удаляется все, что находится между тегами <select></select>
// // но не атрибуты
// cntrls.itemsType.innerHTML = "";
// // пустое значение
// cntrls.itemsType.appendChild(createItemsOption("Выберите значение", "", true));
// // цикл по результату ответа от сервера
// // используется лямбда-выражение
// // (item) => {} аналогично function(item) {}
// data.forEach((item) => {
// cntrls.itemsType.appendChild(createItemsOption(item.name, item.id));
// });
// }
// async function drawLinesTable() {
// console.info("Try to load data");
// if (!cntrls.table) {
// return;
// }
// // вызов метода REST API для получения всех записей
// const data = await getAllLines();
// // очистка содержимого table
// // удаляется все, что находится между тегами <table></table>
// // но не атрибуты
// cntrls.table.innerHTML = "";
// // цикл по результату ответа от сервера
// // используется лямбда-выражение
// // (item, index) => {} аналогично function(item, index) {}
// data.forEach((item, index) => {
// cntrls.table.appendChild(
// createTableRow(
// item,
// index,
// // функции передаются в качестве параметра
// // это очень удобно, так как аргументы функций доступны только
// // в данном месте кода и не передаются в сервисные модули
// () => showUpdateModal(item),
// () => location.assign(`page-edit.html?id=${item.id}`),
// () => removeLine(item.id),
// ),
// );
// });
// }
// async function addLine(item, price, views, image) {
// console.info("Try to add item");
// // вызов метода REST API для добавления записи
// const data = await createLine(item, price, views, image);
// console.info("Added");
// console.info(data);
// // загрузка и заполнение table
// drawLinesTable();
// }
// async function editLine(id, item, price, views, image) {
// console.info("Try to update item");
// // вызов метода REST API для обновления записи
// const data = await updateLine(id, item, price, views, image);
// console.info("Updated");
// console.info(data);
// // загрузка и заполнение table
// drawLinesTable();
// }
// async function removeLine(id) {
// if (!confirm("Do you really want to remove this item?")) {
// console.info("Canceled");
// return;
// }
// console.info("Try to remove item");
// // вызов метода REST API для удаления записи
// const data = await deleteLine(id);
// console.info(data);
// // загрузка и заполнение table
// drawLinesTable();
// }
// // функция для получения содержимого файла в виде base64 строки
// // https://ru.wikipedia.org/wiki/Base64
// async function readFile(file) {
// const reader = new FileReader();
// // создание Promise-объекта для использования функции
// // с помощью await (асинхронно) без коллбэков (callback)
// // https://learn.javascript.ru/promise
// return new Promise((resolve, reject) => {
// // 2. "Возвращаем" содержимое когда файл прочитан
// // через вызов resolve
// // Если не использовать Promise, то всю работу по взаимодействию
// // с REST API пришлось бы делать в обработчике (callback) функции
// // onloadend
// reader.onloadend = () => {
// const fileContent = reader.result;
// // Здесь могла бы быть работа с REST API
// // Чтение заканчивает выполняться здесь
// resolve(fileContent);
// };
// // 3. Возвращаем ошибку
// reader.onerror = () => {
// // Или здесь в случае ошибки
// reject(new Error("oops, something went wrong with the file reader."));
// };
// // Шаг 1. Сначала читаем файл
// // Чтение начинает выполняться здесь
// reader.readAsDataURL(file);
// });
// }
// // функция для обновления блока с превью выбранного изображения
// async function updateImagePreview() {
// // получение выбранного файла
// // возможен выбор нескольких файлов, поэтому необходимо получить только первый
// const file = cntrls.image.files[0];
// // чтение содержимого файла в виде base64 строки
// const fileContent = await readFile(file);
// console.info("base64 ", fileContent);
// // обновление атрибута src для тега img с id image-preview
// cntrls.imagePreview.src = fileContent;
// }
// // Функция для обработки создания и редактирования элементов таблицы через модальное окно
// // Если хотите делать через страницу, то удалите эту функцию
// export function linesForm() {
// console.info("linesForm");
// // загрузка и заполнение select со списком товаров
// drawItemsSelect();
// // загрузка и заполнение table
// drawLinesTable();
// // Вызов функции обновления превью изображения при возникновении
// // события oncahnge в тэге input с id image
// cntrls.image.addEventListener("change", () => updateImagePreview());
// // обработчик события нажатия на кнопку для показа модального окна
// cntrls.button.addEventListener("click", () => showUpdateModal(null));
// // обработчик события отправки формы
// // возникает при нажатии на кнопку (button) с типом submit
// // кнопка должна находится внутри тега form
// cntrls.form.addEventListener("submit", async (event) => {
// console.info("Form onSubmit");
// // отключение стандартного поведения формы при отправке
// // при отправке страница обновляется и JS перестает работать
// event.preventDefault();
// event.stopPropagation();
// // если форма не прошла валидацию, то ничего делать не нужно
// if (!cntrls.form.checkValidity()) {
// return;
// }
// let imageBase64 = "";
// // Получение выбранного пользователем изображения в виде base64 строки
// // Если пользователь ничего не выбрал, то не нужно сохранять в БД
// // дефолтное изображение
// if (cntrls.imagePreview.src !== imagePlaceholder) {
// // Загрузка содержимого атрибута src тэга img с id image-preview
// // Здесь выполняется HTTP запрос с типом GET
// const result = await fetch(cntrls.imagePreview.src);
// // Получение из HTTP-ответа бинарного содержимого
// const blob = await result.blob();
// // Получение base64 строки для файла
// // Здесь выполняется Promise из функции readFile
// // Promise позволяет писать линейный код для работы с асинхронными методами
// // без использования обработчиков (callback) с помощью await
// imageBase64 = await readFile(blob);
// }
// // получение id строки для редактирования
// // это значение содержится в скрытом input
// const currentId = cntrls.lineId.value;
// // если значение id не задано,
// // то необходимо выполнить добавление записи
// // иначе обновление записи
// if (!currentId) {
// await addLine(
// cntrls.itemsType.value,
// cntrls.price.value,
// cntrls.views.value,
// imageBase64,
// );
// } else {
// await editLine(
// currentId,
// cntrls.itemsType.value,
// cntrls.price.value,
// cntrls.views.value,
// imageBase64,
// );
// }
// // после выполнения добавления/обновления модальное окно скрывается
// hideUpdateModal();
// });
// }
// // Функция для обработки создания и редактирования элементов таблицы через страницу page-edit.html
// // Если хотите делать через модальное окно, то удалите эту функцию
// export async function linesPageForm() {
// console.info("linesPageForm");
// // загрузка и заполнение select со списком товаров
// drawItemsSelect();
// // func1 = (id) => {} аналогично function func1(id) {}
// const goBack = () => location.assign("/page6admin.html");
// // Вызов функции обновления превью изображения при возникновении
// // события onchange в тэге input с id image
// cntrls.image.addEventListener("change", () => updateImagePreview());
// // получение параметров GET-запроса из URL
// // параметры перечислены после символа ? (?id=1&color=black&...)
// const urlParams = new URLSearchParams(location.search);
// // получение значения конкретного параметра (id)
// // указан только при редактировании
// const currentId = urlParams.get("id");
// // если id задан
// if (currentId) {
// try {
// // вызов метода REST API для получения записи по первичному ключу(id)
// const line = await getLine(currentId);
// // заполнение формы для редактирования
// cntrls.itemsType.value = line.itemsId;
// cntrls.price.value = line.price;
// cntrls.views.value = line.views;
// // заполнение превью
// // Если пользователь выбрал изображение, то оно загружается
// // в тэг image с id image - preview
// // иначе устанавливается заглушка, адрес которой указан в imagePlaceholder
// cntrls.imagePreview.src = line.image ? line.image : imagePlaceholder;
// } catch {
// // в случае ошибки происходит возврат к page4
// goBack();
// }
// }
// // обработчик события отправки формы
// // возникает при нажатии на кнопку (button) с типом submit
// // кнопка должна находится внутри тега form
// cntrls.form.addEventListener("submit", async (event) => {
// console.info("Form onSubmit");
// // отключение стандартного поведения формы при отправке
// // при отправке страница обновляется и JS перестает работать
// event.preventDefault();
// event.stopPropagation();
// // если форма не прошла валидацию, то ничего делать не нужно
// if (!cntrls.form.checkValidity()) {
// return;
// }
// let imageBase64 = "";
// // Получение выбранного пользователем изображения в виде base64 строки
// // Если пользователь ничего не выбрал, то не нужно сохранять в БД
// // дефолтное изображение
// if (cntrls.imagePreview.src !== imagePlaceholder) {
// // Загрузка содержимого атрибута src тэга img с id image-preview
// // Здесь выполняется HTTP запрос с типом GET
// const result = await fetch(cntrls.imagePreview.src);
// // Получение из HTTP-ответа бинарного содержимого
// const blob = await result.blob();
// // Получение base64 строки для файла
// // Здесь выполняется Promise из функции readFile
// // Promise позволяет писать линейный код для работы с асинхронными методами
// // без использования обработчиков (callback) с помощью await
// imageBase64 = await readFile(blob);
// }
// // если значение параметра запроса не задано,
// // то необходимо выполнить добавление записи
// // иначе обновление записи
// if (!currentId) {
// await addLine(
// cntrls.itemsType.value,
// cntrls.price.value,
// cntrls.views.value,
// imageBase64,
// );
// } else {
// await editLine(
// currentId,
// cntrls.itemsType.value,
// cntrls.price.value,
// cntrls.views.value,
// imageBase64,
// );
// }
// // возврат к странице page4 (page6admin)
// goBack();
// });
// }

25
lab3/js/validation.js Normal file

@ -0,0 +1,25 @@
// модуль используется для валидации форма на странице
function validation() {
// поиск всех форма с классом .needs-validation
const forms = document.querySelectorAll("form.needs-validation");
for (let i = 0; i < forms.length; i += 1) {
const form = forms[i];
// для каждой формы добавляется обработчик события отправки
form.addEventListener("submit", (event) => {
// если форма не прошла валидацию
// то выключить стандартное действие
if (!form.checkValidity()) {
event.preventDefault();
// предотвращает распространение preventDefault
// на другие объекты
event.stopPropagation();
}
// добавляет к форме класс was-validated
form.classList.add("was-validated");
});
}
}
export default validation;

14
lab3/jsconfig.json Normal file

@ -0,0 +1,14 @@
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "Node",
"target": "ES2020",
"jsx": "preserve",
"strictNullChecks": true,
"strictFunctionTypes": true
},
"exclude": [
"node_modules",
"**/node_modules/*"
]
}

16
lab3/node_modules/.bin/acorn generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@"
else
exec node "$basedir/../acorn/bin/acorn" "$@"
fi

17
lab3/node_modules/.bin/acorn.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %*

28
lab3/node_modules/.bin/acorn.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
} else {
& "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../acorn/bin/acorn" $args
} else {
& "node$exe" "$basedir/../acorn/bin/acorn" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/esbuild generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../esbuild/bin/esbuild" "$@"
else
exec node "$basedir/../esbuild/bin/esbuild" "$@"
fi

17
lab3/node_modules/.bin/esbuild.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %*

28
lab3/node_modules/.bin/esbuild.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
} else {
& "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../esbuild/bin/esbuild" $args
} else {
& "node$exe" "$basedir/../esbuild/bin/esbuild" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/eslint generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../eslint/bin/eslint.js" "$@"
else
exec node "$basedir/../eslint/bin/eslint.js" "$@"
fi

17
lab3/node_modules/.bin/eslint.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\eslint\bin\eslint.js" %*

28
lab3/node_modules/.bin/eslint.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
} else {
& "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../eslint/bin/eslint.js" $args
} else {
& "node$exe" "$basedir/../eslint/bin/eslint.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/he generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../he/bin/he" "$@"
else
exec node "$basedir/../he/bin/he" "$@"
fi

17
lab3/node_modules/.bin/he.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\he\bin\he" %*

28
lab3/node_modules/.bin/he.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../he/bin/he" $args
} else {
& "$basedir/node$exe" "$basedir/../he/bin/he" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../he/bin/he" $args
} else {
& "node$exe" "$basedir/../he/bin/he" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/http-server generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../http-server/bin/http-server" "$@"
else
exec node "$basedir/../http-server/bin/http-server" "$@"
fi

17
lab3/node_modules/.bin/http-server.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\http-server\bin\http-server" %*

28
lab3/node_modules/.bin/http-server.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../http-server/bin/http-server" $args
} else {
& "$basedir/node$exe" "$basedir/../http-server/bin/http-server" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../http-server/bin/http-server" $args
} else {
& "node$exe" "$basedir/../http-server/bin/http-server" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/js-yaml generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../js-yaml/bin/js-yaml.js" "$@"
else
exec node "$basedir/../js-yaml/bin/js-yaml.js" "$@"
fi

17
lab3/node_modules/.bin/js-yaml.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\js-yaml\bin\js-yaml.js" %*

28
lab3/node_modules/.bin/js-yaml.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
} else {
& "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
} else {
& "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/json-server generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../json-server/lib/cli/bin.js" "$@"
else
exec node "$basedir/../json-server/lib/cli/bin.js" "$@"
fi

17
lab3/node_modules/.bin/json-server.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\json-server\lib\cli\bin.js" %*

28
lab3/node_modules/.bin/json-server.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../json-server/lib/cli/bin.js" $args
} else {
& "$basedir/node$exe" "$basedir/../json-server/lib/cli/bin.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../json-server/lib/cli/bin.js" $args
} else {
& "node$exe" "$basedir/../json-server/lib/cli/bin.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/json5 generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../json5/lib/cli.js" "$@"
else
exec node "$basedir/../json5/lib/cli.js" "$@"
fi

17
lab3/node_modules/.bin/json5.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\json5\lib\cli.js" %*

28
lab3/node_modules/.bin/json5.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args
} else {
& "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../json5/lib/cli.js" $args
} else {
& "node$exe" "$basedir/../json5/lib/cli.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/mime generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../mime/cli.js" "$@"
else
exec node "$basedir/../mime/cli.js" "$@"
fi

17
lab3/node_modules/.bin/mime.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %*

28
lab3/node_modules/.bin/mime.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../mime/cli.js" $args
} else {
& "$basedir/node$exe" "$basedir/../mime/cli.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../mime/cli.js" $args
} else {
& "node$exe" "$basedir/../mime/cli.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/mkdirp generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@"
else
exec node "$basedir/../mkdirp/bin/cmd.js" "$@"
fi

17
lab3/node_modules/.bin/mkdirp.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mkdirp\bin\cmd.js" %*

28
lab3/node_modules/.bin/mkdirp.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../mkdirp/bin/cmd.js" $args
} else {
& "$basedir/node$exe" "$basedir/../mkdirp/bin/cmd.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../mkdirp/bin/cmd.js" $args
} else {
& "node$exe" "$basedir/../mkdirp/bin/cmd.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/nanoid generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@"
else
exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@"
fi

17
lab3/node_modules/.bin/nanoid.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %*

28
lab3/node_modules/.bin/nanoid.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
} else {
& "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
} else {
& "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/node-which generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../which/bin/node-which" "$@"
else
exec node "$basedir/../which/bin/node-which" "$@"
fi

17
lab3/node_modules/.bin/node-which.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\which\bin\node-which" %*

28
lab3/node_modules/.bin/node-which.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
} else {
& "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../which/bin/node-which" $args
} else {
& "node$exe" "$basedir/../which/bin/node-which" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/npm-run-all generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../npm-run-all/bin/npm-run-all/index.js" "$@"
else
exec node "$basedir/../npm-run-all/bin/npm-run-all/index.js" "$@"
fi

17
lab3/node_modules/.bin/npm-run-all.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\npm-run-all\bin\npm-run-all\index.js" %*

28
lab3/node_modules/.bin/npm-run-all.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../npm-run-all/bin/npm-run-all/index.js" $args
} else {
& "$basedir/node$exe" "$basedir/../npm-run-all/bin/npm-run-all/index.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../npm-run-all/bin/npm-run-all/index.js" $args
} else {
& "node$exe" "$basedir/../npm-run-all/bin/npm-run-all/index.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/opener generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../opener/bin/opener-bin.js" "$@"
else
exec node "$basedir/../opener/bin/opener-bin.js" "$@"
fi

17
lab3/node_modules/.bin/opener.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\opener\bin\opener-bin.js" %*

28
lab3/node_modules/.bin/opener.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../opener/bin/opener-bin.js" $args
} else {
& "$basedir/node$exe" "$basedir/../opener/bin/opener-bin.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../opener/bin/opener-bin.js" $args
} else {
& "node$exe" "$basedir/../opener/bin/opener-bin.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/pidtree generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../pidtree/bin/pidtree.js" "$@"
else
exec node "$basedir/../pidtree/bin/pidtree.js" "$@"
fi

17
lab3/node_modules/.bin/pidtree.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\pidtree\bin\pidtree.js" %*

28
lab3/node_modules/.bin/pidtree.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../pidtree/bin/pidtree.js" $args
} else {
& "$basedir/node$exe" "$basedir/../pidtree/bin/pidtree.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../pidtree/bin/pidtree.js" $args
} else {
& "node$exe" "$basedir/../pidtree/bin/pidtree.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/resolve generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../resolve/bin/resolve" "$@"
else
exec node "$basedir/../resolve/bin/resolve" "$@"
fi

17
lab3/node_modules/.bin/resolve.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\resolve\bin\resolve" %*

28
lab3/node_modules/.bin/resolve.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../resolve/bin/resolve" $args
} else {
& "$basedir/node$exe" "$basedir/../resolve/bin/resolve" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../resolve/bin/resolve" $args
} else {
& "node$exe" "$basedir/../resolve/bin/resolve" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/rimraf generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../rimraf/bin.js" "$@"
else
exec node "$basedir/../rimraf/bin.js" "$@"
fi

17
lab3/node_modules/.bin/rimraf.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rimraf\bin.js" %*

28
lab3/node_modules/.bin/rimraf.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args
} else {
& "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../rimraf/bin.js" $args
} else {
& "node$exe" "$basedir/../rimraf/bin.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/rollup generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../rollup/dist/bin/rollup" "$@"
else
exec node "$basedir/../rollup/dist/bin/rollup" "$@"
fi

17
lab3/node_modules/.bin/rollup.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %*

28
lab3/node_modules/.bin/rollup.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args
} else {
& "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args
} else {
& "node$exe" "$basedir/../rollup/dist/bin/rollup" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/run-p generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../npm-run-all/bin/run-p/index.js" "$@"
else
exec node "$basedir/../npm-run-all/bin/run-p/index.js" "$@"
fi

17
lab3/node_modules/.bin/run-p.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\npm-run-all\bin\run-p\index.js" %*

28
lab3/node_modules/.bin/run-p.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../npm-run-all/bin/run-p/index.js" $args
} else {
& "$basedir/node$exe" "$basedir/../npm-run-all/bin/run-p/index.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../npm-run-all/bin/run-p/index.js" $args
} else {
& "node$exe" "$basedir/../npm-run-all/bin/run-p/index.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/run-s generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../npm-run-all/bin/run-s/index.js" "$@"
else
exec node "$basedir/../npm-run-all/bin/run-s/index.js" "$@"
fi

17
lab3/node_modules/.bin/run-s.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\npm-run-all\bin\run-s\index.js" %*

28
lab3/node_modules/.bin/run-s.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../npm-run-all/bin/run-s/index.js" $args
} else {
& "$basedir/node$exe" "$basedir/../npm-run-all/bin/run-s/index.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../npm-run-all/bin/run-s/index.js" $args
} else {
& "node$exe" "$basedir/../npm-run-all/bin/run-s/index.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/semver generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../semver/bin/semver.js" "$@"
else
exec node "$basedir/../semver/bin/semver.js" "$@"
fi

17
lab3/node_modules/.bin/semver.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver.js" %*

28
lab3/node_modules/.bin/semver.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
} else {
& "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../semver/bin/semver.js" $args
} else {
& "node$exe" "$basedir/../semver/bin/semver.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
lab3/node_modules/.bin/vite generated vendored Normal file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
else
exec node "$basedir/../vite/bin/vite.js" "$@"
fi

17
lab3/node_modules/.bin/vite.cmd generated vendored Normal file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %*

28
lab3/node_modules/.bin/vite.ps1 generated vendored Normal file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args
} else {
& "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../vite/bin/vite.js" $args
} else {
& "node$exe" "$basedir/../vite/bin/vite.js" $args
}
$ret=$LASTEXITCODE
}
exit $ret

4267
lab3/node_modules/.package-lock.json generated vendored Normal file

File diff suppressed because it is too large Load Diff

81
lab3/node_modules/.vite/deps/@popperjs_core.js generated vendored Normal file

@ -0,0 +1,81 @@
import {
afterMain,
afterRead,
afterWrite,
applyStyles_default,
arrow_default,
auto,
basePlacements,
beforeMain,
beforeRead,
beforeWrite,
bottom,
clippingParents,
computeStyles_default,
createPopper,
createPopper2,
createPopper3,
detectOverflow,
end,
eventListeners_default,
flip_default,
hide_default,
left,
main,
modifierPhases,
offset_default,
placements,
popper,
popperGenerator,
popperOffsets_default,
preventOverflow_default,
read,
reference,
right,
start,
top,
variationPlacements,
viewport,
write
} from "./chunk-IOJ6CEWC.js";
export {
afterMain,
afterRead,
afterWrite,
applyStyles_default as applyStyles,
arrow_default as arrow,
auto,
basePlacements,
beforeMain,
beforeRead,
beforeWrite,
bottom,
clippingParents,
computeStyles_default as computeStyles,
createPopper3 as createPopper,
createPopper as createPopperBase,
createPopper2 as createPopperLite,
detectOverflow,
end,
eventListeners_default as eventListeners,
flip_default as flip,
hide_default as hide,
left,
main,
modifierPhases,
offset_default as offset,
placements,
popper,
popperGenerator,
popperOffsets_default as popperOffsets,
preventOverflow_default as preventOverflow,
read,
reference,
right,
start,
top,
variationPlacements,
viewport,
write
};
//# sourceMappingURL=@popperjs_core.js.map

7
lab3/node_modules/.vite/deps/@popperjs_core.js.map generated vendored Normal file

@ -0,0 +1,7 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

23
lab3/node_modules/.vite/deps/_metadata.json generated vendored Normal file

@ -0,0 +1,23 @@
{
"hash": "db10e2f8",
"browserHash": "40eaf21b",
"optimized": {
"@popperjs/core": {
"src": "../../@popperjs/core/lib/index.js",
"file": "@popperjs_core.js",
"fileHash": "6a02c1fd",
"needsInterop": false
},
"bootstrap": {
"src": "../../bootstrap/dist/js/bootstrap.esm.js",
"file": "bootstrap.js",
"fileHash": "762c0016",
"needsInterop": false
}
},
"chunks": {
"chunk-IOJ6CEWC": {
"file": "chunk-IOJ6CEWC.js"
}
}
}

3676
lab3/node_modules/.vite/deps/bootstrap.js generated vendored Normal file

File diff suppressed because it is too large Load Diff

7
lab3/node_modules/.vite/deps/bootstrap.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

1556
lab3/node_modules/.vite/deps/chunk-IOJ6CEWC.js generated vendored Normal file

File diff suppressed because it is too large Load Diff

7
lab3/node_modules/.vite/deps/chunk-IOJ6CEWC.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

3
lab3/node_modules/.vite/deps/package.json generated vendored Normal file

@ -0,0 +1,3 @@
{
"type": "module"
}

@ -0,0 +1,81 @@
import {
afterMain,
afterRead,
afterWrite,
applyStyles_default,
arrow_default,
auto,
basePlacements,
beforeMain,
beforeRead,
beforeWrite,
bottom,
clippingParents,
computeStyles_default,
createPopper,
createPopper2,
createPopper3,
detectOverflow,
end,
eventListeners_default,
flip_default,
hide_default,
left,
main,
modifierPhases,
offset_default,
placements,
popper,
popperGenerator,
popperOffsets_default,
preventOverflow_default,
read,
reference,
right,
start,
top,
variationPlacements,
viewport,
write
} from "./chunk-IOJ6CEWC.js";
export {
afterMain,
afterRead,
afterWrite,
applyStyles_default as applyStyles,
arrow_default as arrow,
auto,
basePlacements,
beforeMain,
beforeRead,
beforeWrite,
bottom,
clippingParents,
computeStyles_default as computeStyles,
createPopper3 as createPopper,
createPopper as createPopperBase,
createPopper2 as createPopperLite,
detectOverflow,
end,
eventListeners_default as eventListeners,
flip_default as flip,
hide_default as hide,
left,
main,
modifierPhases,
offset_default as offset,
placements,
popper,
popperGenerator,
popperOffsets_default as popperOffsets,
preventOverflow_default as preventOverflow,
read,
reference,
right,
start,
top,
variationPlacements,
viewport,
write
};
//# sourceMappingURL=@popperjs_core.js.map

@ -0,0 +1,7 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

3676
lab3/node_modules/.vite/deps_temp_29f65a8a/bootstrap.js generated vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -0,0 +1,3 @@
{
"type": "module"
}

21
lab3/node_modules/@aashutoshrathi/word-wrap/LICENSE generated vendored Normal file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014-2016, Jon Schlinkert
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

182
lab3/node_modules/@aashutoshrathi/word-wrap/README.md generated vendored Normal file

@ -0,0 +1,182 @@
# word-wrap [![NPM version](https://img.shields.io/npm/v/word-wrap.svg?style=flat)](https://www.npmjs.com/package/word-wrap) [![NPM monthly downloads](https://img.shields.io/npm/dm/word-wrap.svg?style=flat)](https://npmjs.org/package/word-wrap) [![NPM total downloads](https://img.shields.io/npm/dt/word-wrap.svg?style=flat)](https://npmjs.org/package/word-wrap) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/word-wrap.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/word-wrap)
> Wrap words to a specified length.
## Install
Install with [npm](https://www.npmjs.com/):
```sh
$ npm install --save word-wrap
```
## Usage
```js
var wrap = require('word-wrap');
wrap('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.');
```
Results in:
```
Lorem ipsum dolor sit amet, consectetur adipiscing
elit, sed do eiusmod tempor incididunt ut labore
et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat.
```
## Options
![image](https://cloud.githubusercontent.com/assets/383994/6543728/7a381c08-c4f6-11e4-8b7d-b6ba197569c9.png)
### options.width
Type: `Number`
Default: `50`
The width of the text before wrapping to a new line.
**Example:**
```js
wrap(str, {width: 60});
```
### options.indent
Type: `String`
Default: `` (none)
The string to use at the beginning of each line.
**Example:**
```js
wrap(str, {indent: ' '});
```
### options.newline
Type: `String`
Default: `\n`
The string to use at the end of each line.
**Example:**
```js
wrap(str, {newline: '\n\n'});
```
### options.escape
Type: `function`
Default: `function(str){return str;}`
An escape function to run on each line after splitting them.
**Example:**
```js
var xmlescape = require('xml-escape');
wrap(str, {
escape: function(string){
return xmlescape(string);
}
});
```
### options.trim
Type: `Boolean`
Default: `false`
Trim trailing whitespace from the returned string. This option is included since `.trim()` would also strip the leading indentation from the first line.
**Example:**
```js
wrap(str, {trim: true});
```
### options.cut
Type: `Boolean`
Default: `false`
Break a word between any two letters when the word is longer than the specified width.
**Example:**
```js
wrap(str, {cut: true});
```
## About
### Related projects
* [common-words](https://www.npmjs.com/package/common-words): Updated list (JSON) of the 100 most common words in the English language. Useful for… [more](https://github.com/jonschlinkert/common-words) | [homepage](https://github.com/jonschlinkert/common-words "Updated list (JSON) of the 100 most common words in the English language. Useful for excluding these words from arrays.")
* [shuffle-words](https://www.npmjs.com/package/shuffle-words): Shuffle the words in a string and optionally the letters in each word using the… [more](https://github.com/jonschlinkert/shuffle-words) | [homepage](https://github.com/jonschlinkert/shuffle-words "Shuffle the words in a string and optionally the letters in each word using the Fisher-Yates algorithm. Useful for creating test fixtures, benchmarking samples, etc.")
* [unique-words](https://www.npmjs.com/package/unique-words): Return the unique words in a string or array. | [homepage](https://github.com/jonschlinkert/unique-words "Return the unique words in a string or array.")
* [wordcount](https://www.npmjs.com/package/wordcount): Count the words in a string. Support for english, CJK and Cyrillic. | [homepage](https://github.com/jonschlinkert/wordcount "Count the words in a string. Support for english, CJK and Cyrillic.")
### Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
### Contributors
| **Commits** | **Contributor** |
| --- | --- |
| 43 | [jonschlinkert](https://github.com/jonschlinkert) |
| 2 | [lordvlad](https://github.com/lordvlad) |
| 2 | [hildjj](https://github.com/hildjj) |
| 1 | [danilosampaio](https://github.com/danilosampaio) |
| 1 | [2fd](https://github.com/2fd) |
| 1 | [toddself](https://github.com/toddself) |
| 1 | [wolfgang42](https://github.com/wolfgang42) |
| 1 | [zachhale](https://github.com/zachhale) |
### Building docs
_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
To generate the readme, run the following command:
```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```
### Running tests
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
```sh
$ npm install && npm test
```
### Author
**Jon Schlinkert**
* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
### License
Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT License](LICENSE).
***
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 02, 2017._

50
lab3/node_modules/@aashutoshrathi/word-wrap/index.d.ts generated vendored Normal file

@ -0,0 +1,50 @@
/**
* Wrap words to a specified length.
*/
export = wrap;
declare function wrap(str: string, options?: wrap.IOptions): string;
declare namespace wrap {
export interface IOptions {
/**
* The width of the text before wrapping to a new line.
* @default ´50´
*/
width?: number;
/**
* The string to use at the beginning of each line.
* @default ´´ (none)
*/
indent?: string;
/**
* The string to use at the end of each line.
* @default ´\n´
*/
newline?: string;
/**
* An escape function to run on each line after splitting them.
* @default (str: string) => string;
*/
escape?: (str: string) => string;
/**
* Trim trailing whitespace from the returned string.
* This option is included since .trim() would also strip
* the leading indentation from the first line.
* @default true
*/
trim?: boolean;
/**
* Break a word between any two letters when the word is longer
* than the specified width.
* @default false
*/
cut?: boolean;
}
}

52
lab3/node_modules/@aashutoshrathi/word-wrap/index.js generated vendored Normal file

@ -0,0 +1,52 @@
/*!
* word-wrap <https://github.com/jonschlinkert/word-wrap>
*
* Copyright (c) 2014-2023, Jon Schlinkert.
* Released under the MIT License.
*/
function trimTabAndSpaces(str) {
const lines = str.split('\n');
const trimmedLines = lines.map((line) => line.trimEnd());
return trimmedLines.join('\n');
}
module.exports = function(str, options) {
options = options || {};
if (str == null) {
return str;
}
var width = options.width || 50;
var indent = (typeof options.indent === 'string')
? options.indent
: '';
var newline = options.newline || '\n' + indent;
var escape = typeof options.escape === 'function'
? options.escape
: identity;
var regexString = '.{1,' + width + '}';
if (options.cut !== true) {
regexString += '([\\s\u200B]+|$)|[^\\s\u200B]+?([\\s\u200B]+|$)';
}
var re = new RegExp(regexString, 'g');
var lines = str.match(re) || [];
var result = indent + lines.map(function(line) {
if (line.slice(-1) === '\n') {
line = line.slice(0, line.length - 1);
}
return escape(line);
}).join(newline);
if (options.trim === true) {
result = trimTabAndSpaces(result);
}
return result;
};
function identity(str) {
return str;
}

Some files were not shown because too many files have changed in this diff Show More