From 7541bb1293b05faef8631c74985dbd84e26986e7 Mon Sep 17 00:00:00 2001 From: Alfex4936 <ikr@kakao.com> Date: Wed, 15 Mar 2023 19:46:41 +0900 Subject: [PATCH] Organize project builders --- .gitignore | 4 + .gitlab-ci.yml | 26 +- README.md | 84 +- docs/.gitignore | 1 + {public => docs}/01_ko.html | 0 {public => docs}/02_ko.html | 0 {public => docs}/03_ko.html | 0 {public => docs}/04_ko.html | 0 {public => docs}/06_ko.html | 0 {public => docs}/07_ko.html | 0 {public => docs}/08_ko.html | 0 {public => docs}/09_ko.html | 0 {public => docs}/10_ko.html | 0 {public => docs}/11_ko.html | 0 {public => docs}/12_ko.html | 0 {public => docs}/13_ko.html | 0 {public => docs}/14_ko.html | 0 {public => docs}/15_ko.html | 0 {public => docs}/16_ko.html | 0 {public => docs}/TOC_ko.html | 0 {public => docs}/android-chrome-192x192.png | Bin {public => docs}/android-chrome-512x512.png | Bin {public => docs}/apple-touch-icon.png | Bin {public => docs}/chapter_1_ko.html | 0 {public => docs}/cover.jpg | Bin {public => docs}/divider-line.svg | 0 {public => docs}/favicon-16x16.png | Bin {public => docs}/favicon-32x32.png | Bin {public => docs}/favicon.ico | Bin {public => docs}/ferris.png | Bin {public => docs}/ferris_lofi.png | Bin {public => docs}/index.html | 0 {public => docs}/intro.png | Bin {public => docs}/intro.webp | Bin {public => docs}/site.webmanifest | 0 {public => docs}/sitemap.xml | 0 {public => docs}/social.jpg | Bin {public => docs}/tour.css | 0 {public => docs}/tour.js | 40 +- {public => docs}/webassembly/ferris.png | Bin {public => docs}/webassembly/tour.css | 0 fast.py | 20 + frontend/.eslintrc.js | 16 + frontend/.gitignore | 5 + frontend/Dockerfile | 39 + frontend/Makefile | 24 + frontend/README.md | 3 + frontend/generate.js | 352 ++ frontend/lessons/README.md | 4 + frontend/lessons/ko/chapter_0.yaml | 168 + frontend/lessons/ko/chapter_1.yaml | 224 ++ frontend/lessons/ko/common_words.yaml | 9 + frontend/make.bat | 75 + frontend/run.sh | 9 + package-lock.json | 2747 ++++++++++++++++ package.json | 28 + public/CNAME | 1 - public/images/hylee_512.jpg | Bin 51474 -> 0 bytes public/style.css | 26 - src-ui/.gitignore | 10 + src-ui/Cargo.lock | 3196 +++++++++++++++++++ src-ui/Cargo.toml | 30 + src-ui/build.rs | 3 + src-ui/icons/128x128.png | Bin 0 -> 3512 bytes src-ui/icons/128x128@2x.png | Bin 0 -> 7012 bytes src-ui/icons/32x32.png | Bin 0 -> 974 bytes src-ui/icons/Square107x107Logo.png | Bin 0 -> 2863 bytes src-ui/icons/Square142x142Logo.png | Bin 0 -> 3858 bytes src-ui/icons/Square150x150Logo.png | Bin 0 -> 3966 bytes src-ui/icons/Square284x284Logo.png | Bin 0 -> 7737 bytes src-ui/icons/Square30x30Logo.png | Bin 0 -> 903 bytes src-ui/icons/Square310x310Logo.png | Bin 0 -> 8591 bytes src-ui/icons/Square44x44Logo.png | Bin 0 -> 1299 bytes src-ui/icons/Square71x71Logo.png | Bin 0 -> 2011 bytes src-ui/icons/Square89x89Logo.png | Bin 0 -> 2468 bytes src-ui/icons/StoreLogo.png | Bin 0 -> 1523 bytes src-ui/icons/icon.icns | Bin 0 -> 32947 bytes src-ui/icons/icon.ico | Bin 0 -> 67646 bytes src-ui/icons/icon.png | Bin 0 -> 14183 bytes src-ui/rustfmt.toml | 13 + src-ui/src/main.rs | 15 + src-ui/tauri.conf.json | 52 + 82 files changed, 7094 insertions(+), 130 deletions(-) create mode 100644 .gitignore create mode 100644 docs/.gitignore rename {public => docs}/01_ko.html (100%) rename {public => docs}/02_ko.html (100%) rename {public => docs}/03_ko.html (100%) rename {public => docs}/04_ko.html (100%) rename {public => docs}/06_ko.html (100%) rename {public => docs}/07_ko.html (100%) rename {public => docs}/08_ko.html (100%) rename {public => docs}/09_ko.html (100%) rename {public => docs}/10_ko.html (100%) rename {public => docs}/11_ko.html (100%) rename {public => docs}/12_ko.html (100%) rename {public => docs}/13_ko.html (100%) rename {public => docs}/14_ko.html (100%) rename {public => docs}/15_ko.html (100%) rename {public => docs}/16_ko.html (100%) rename {public => docs}/TOC_ko.html (100%) rename {public => docs}/android-chrome-192x192.png (100%) rename {public => docs}/android-chrome-512x512.png (100%) rename {public => docs}/apple-touch-icon.png (100%) rename {public => docs}/chapter_1_ko.html (100%) rename {public => docs}/cover.jpg (100%) rename {public => docs}/divider-line.svg (100%) rename {public => docs}/favicon-16x16.png (100%) rename {public => docs}/favicon-32x32.png (100%) rename {public => docs}/favicon.ico (100%) rename {public => docs}/ferris.png (100%) rename {public => docs}/ferris_lofi.png (100%) rename {public => docs}/index.html (100%) rename {public => docs}/intro.png (100%) rename {public => docs}/intro.webp (100%) rename {public => docs}/site.webmanifest (100%) rename {public => docs}/sitemap.xml (100%) rename {public => docs}/social.jpg (100%) rename {public => docs}/tour.css (100%) rename {public => docs}/tour.js (71%) rename {public => docs}/webassembly/ferris.png (100%) rename {public => docs}/webassembly/tour.css (100%) create mode 100644 fast.py create mode 100644 frontend/.eslintrc.js create mode 100644 frontend/.gitignore create mode 100644 frontend/Dockerfile create mode 100644 frontend/Makefile create mode 100644 frontend/README.md create mode 100644 frontend/generate.js create mode 100644 frontend/lessons/README.md create mode 100644 frontend/lessons/ko/chapter_0.yaml create mode 100644 frontend/lessons/ko/chapter_1.yaml create mode 100644 frontend/lessons/ko/common_words.yaml create mode 100644 frontend/make.bat create mode 100644 frontend/run.sh create mode 100644 package-lock.json create mode 100644 package.json delete mode 100644 public/CNAME delete mode 100644 public/images/hylee_512.jpg delete mode 100644 public/style.css create mode 100644 src-ui/.gitignore create mode 100644 src-ui/Cargo.lock create mode 100644 src-ui/Cargo.toml create mode 100644 src-ui/build.rs create mode 100644 src-ui/icons/128x128.png create mode 100644 src-ui/icons/128x128@2x.png create mode 100644 src-ui/icons/32x32.png create mode 100644 src-ui/icons/Square107x107Logo.png create mode 100644 src-ui/icons/Square142x142Logo.png create mode 100644 src-ui/icons/Square150x150Logo.png create mode 100644 src-ui/icons/Square284x284Logo.png create mode 100644 src-ui/icons/Square30x30Logo.png create mode 100644 src-ui/icons/Square310x310Logo.png create mode 100644 src-ui/icons/Square44x44Logo.png create mode 100644 src-ui/icons/Square71x71Logo.png create mode 100644 src-ui/icons/Square89x89Logo.png create mode 100644 src-ui/icons/StoreLogo.png create mode 100644 src-ui/icons/icon.icns create mode 100644 src-ui/icons/icon.ico create mode 100644 src-ui/icons/icon.png create mode 100644 src-ui/rustfmt.toml create mode 100644 src-ui/src/main.rs create mode 100644 src-ui/tauri.conf.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b673156 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +.vscode +lessons.json +target \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7110e99..aff1224 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,13 +1,13 @@ -image: alpine:latest - -pages: - stage: deploy - script: - - echo 'Nothing to do...' - artifacts: - paths: - - public - only: - - master - tags: - - pages +image: alpine:latest + +pages: + stage: deploy + script: + - echo 'Hello' + artifacts: + paths: + - docs + only: + - master + tags: + - pages diff --git a/README.md b/README.md index 0a36586..4fe0886 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,17 @@ - - ---- - -Example plain HTML site using GitLab Pages. - -Learn more about GitLab Pages at https://pages.gitlab.io and the official -documentation https://docs.gitlab.com/ce/user/project/pages/. - ---- - -<!-- START doctoc generated TOC please keep comment here to allow auto update --> -<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> -**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - -- [GitLab CI](#gitlab-ci) -- [GitLab User or Group Pages](#gitlab-user-or-group-pages) -- [Did you fork this project?](#did-you-fork-this-project) -- [Troubleshooting](#troubleshooting) - -<!-- END doctoc generated TOC please keep comment here to allow auto update --> - -## GitLab CI - -This project's static Pages are built by [GitLab CI][ci], following the steps -defined in [`.gitlab-ci.yml`](.gitlab-ci.yml): - -``` -image: alpine:latest - -pages: - stage: deploy - script: - - echo 'Nothing to do...' - artifacts: - paths: - - public - only: - - master -``` - -The above example expects to put all your HTML files in the `public/` directory. - -## GitLab User or Group Pages - -To use this project as your user/group website, you will need one additional -step: just rename your project to `namespace.gitlab.io`, where `namespace` is -your `username` or `groupname`. This can be done by navigating to your -project's **Settings**. - -Read more about [user/group Pages][userpages] and [project Pages][projpages]. - -## Did you fork this project? - -If you forked this project for your own use, please go to your project's -**Settings** and remove the forking relationship, which won't be necessary -unless you want to contribute back to the upstream project. - -## Troubleshooting - -1. CSS is missing! That means that you have wrongly set up the CSS URL in your - HTML files. Have a look at the [index.html] for an example. - -[ci]: https://about.gitlab.com/gitlab-ci/ -[index.html]: https://gitlab.com/pages/plain-html/blob/master/public/index.html -[userpages]: https://docs.gitlab.com/ce/user/project/pages/introduction.html#user-or-group-pages -[projpages]: https://docs.gitlab.com/ce/user/project/pages/introduction.html#project-pages +# Rust Tutorial + +[@메인 소스 관리](https://github.com/Hi-Rust/hi-rust.github.io) + +자기주도프로젝트 최석원 + +## > public + +결과물 + +## > frontend + +프론트엔드 builder + +## > src-ui + +Windows / Mac / Linux 빌드 바이너리 builder \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..84edb23 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +CNAME diff --git a/public/01_ko.html b/docs/01_ko.html similarity index 100% rename from public/01_ko.html rename to docs/01_ko.html diff --git a/public/02_ko.html b/docs/02_ko.html similarity index 100% rename from public/02_ko.html rename to docs/02_ko.html diff --git a/public/03_ko.html b/docs/03_ko.html similarity index 100% rename from public/03_ko.html rename to docs/03_ko.html diff --git a/public/04_ko.html b/docs/04_ko.html similarity index 100% rename from public/04_ko.html rename to docs/04_ko.html diff --git a/public/06_ko.html b/docs/06_ko.html similarity index 100% rename from public/06_ko.html rename to docs/06_ko.html diff --git a/public/07_ko.html b/docs/07_ko.html similarity index 100% rename from public/07_ko.html rename to docs/07_ko.html diff --git a/public/08_ko.html b/docs/08_ko.html similarity index 100% rename from public/08_ko.html rename to docs/08_ko.html diff --git a/public/09_ko.html b/docs/09_ko.html similarity index 100% rename from public/09_ko.html rename to docs/09_ko.html diff --git a/public/10_ko.html b/docs/10_ko.html similarity index 100% rename from public/10_ko.html rename to docs/10_ko.html diff --git a/public/11_ko.html b/docs/11_ko.html similarity index 100% rename from public/11_ko.html rename to docs/11_ko.html diff --git a/public/12_ko.html b/docs/12_ko.html similarity index 100% rename from public/12_ko.html rename to docs/12_ko.html diff --git a/public/13_ko.html b/docs/13_ko.html similarity index 100% rename from public/13_ko.html rename to docs/13_ko.html diff --git a/public/14_ko.html b/docs/14_ko.html similarity index 100% rename from public/14_ko.html rename to docs/14_ko.html diff --git a/public/15_ko.html b/docs/15_ko.html similarity index 100% rename from public/15_ko.html rename to docs/15_ko.html diff --git a/public/16_ko.html b/docs/16_ko.html similarity index 100% rename from public/16_ko.html rename to docs/16_ko.html diff --git a/public/TOC_ko.html b/docs/TOC_ko.html similarity index 100% rename from public/TOC_ko.html rename to docs/TOC_ko.html diff --git a/public/android-chrome-192x192.png b/docs/android-chrome-192x192.png similarity index 100% rename from public/android-chrome-192x192.png rename to docs/android-chrome-192x192.png diff --git a/public/android-chrome-512x512.png b/docs/android-chrome-512x512.png similarity index 100% rename from public/android-chrome-512x512.png rename to docs/android-chrome-512x512.png diff --git a/public/apple-touch-icon.png b/docs/apple-touch-icon.png similarity index 100% rename from public/apple-touch-icon.png rename to docs/apple-touch-icon.png diff --git a/public/chapter_1_ko.html b/docs/chapter_1_ko.html similarity index 100% rename from public/chapter_1_ko.html rename to docs/chapter_1_ko.html diff --git a/public/cover.jpg b/docs/cover.jpg similarity index 100% rename from public/cover.jpg rename to docs/cover.jpg diff --git a/public/divider-line.svg b/docs/divider-line.svg similarity index 100% rename from public/divider-line.svg rename to docs/divider-line.svg diff --git a/public/favicon-16x16.png b/docs/favicon-16x16.png similarity index 100% rename from public/favicon-16x16.png rename to docs/favicon-16x16.png diff --git a/public/favicon-32x32.png b/docs/favicon-32x32.png similarity index 100% rename from public/favicon-32x32.png rename to docs/favicon-32x32.png diff --git a/public/favicon.ico b/docs/favicon.ico similarity index 100% rename from public/favicon.ico rename to docs/favicon.ico diff --git a/public/ferris.png b/docs/ferris.png similarity index 100% rename from public/ferris.png rename to docs/ferris.png diff --git a/public/ferris_lofi.png b/docs/ferris_lofi.png similarity index 100% rename from public/ferris_lofi.png rename to docs/ferris_lofi.png diff --git a/public/index.html b/docs/index.html similarity index 100% rename from public/index.html rename to docs/index.html diff --git a/public/intro.png b/docs/intro.png similarity index 100% rename from public/intro.png rename to docs/intro.png diff --git a/public/intro.webp b/docs/intro.webp similarity index 100% rename from public/intro.webp rename to docs/intro.webp diff --git a/public/site.webmanifest b/docs/site.webmanifest similarity index 100% rename from public/site.webmanifest rename to docs/site.webmanifest diff --git a/public/sitemap.xml b/docs/sitemap.xml similarity index 100% rename from public/sitemap.xml rename to docs/sitemap.xml diff --git a/public/social.jpg b/docs/social.jpg similarity index 100% rename from public/social.jpg rename to docs/social.jpg diff --git a/public/tour.css b/docs/tour.css similarity index 100% rename from public/tour.css rename to docs/tour.css diff --git a/public/tour.js b/docs/tour.js similarity index 71% rename from public/tour.js rename to docs/tour.js index 42438da..0a7313e 100644 --- a/public/tour.js +++ b/docs/tour.js @@ -2,6 +2,7 @@ const setupKeys = () => { // Mobile swipe left/right let xDown = null; let yDown = null; + const swipeThreshold = 10; // swipe sensitivity const handleTouchStart = e => { xDown = e.touches[0].clientX; @@ -13,30 +14,27 @@ const setupKeys = () => { return; } - const xUp = e.touches[0].clientX; - const yUp = e.touches[0].clientY; + const xDiff = xDown - e.touches[0].clientX; + const yDiff = yDown - e.touches[0].clientY; - const xDiff = xDown - xUp; - const yDiff = yDown - yUp; + // alert(Math.abs(xDiff)); - if (Math.abs(xDiff) > Math.abs(yDiff)) { - if (xDiff > 0) { - const link = document.querySelector(".next a"); - if (link) { - link.click(); - } - } else { - const link = document.querySelector(".back a"); - if (link) { - link.click(); - } - } + if (Math.abs(xDiff) > swipeThreshold && Math.abs(xDiff) > Math.abs(yDiff)) { + const direction = xDiff > 0 ? "next" : "back"; + triggerLinkClick(direction); } xDown = null; yDown = null; }; + const triggerLinkClick = direction => { + const link = document.querySelector(`.${direction} a`); + if (link) { + link.click(); + } + }; + document.addEventListener("touchstart", handleTouchStart, false); document.addEventListener("touchmove", handleTouchMove, false); @@ -45,21 +43,17 @@ const setupKeys = () => { if (e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) { return; } - let link; if (e.key === "Right" || e.key === "ArrowRight") { - link = document.querySelector(".next a"); + triggerLinkClick("next"); } if (e.key === "Left" || e.key === "ArrowLeft") { - link = document.querySelector(".back a"); - } - if (link) { - link.click(); + triggerLinkClick("back"); } }); }; // in code block, should not be same -const codeElement = document.querySelector("iframe"); +const codeElement = document.querySelector("code"); if (codeElement) { setupKeys(); codeElement.addEventListener("load", () => { diff --git a/public/webassembly/ferris.png b/docs/webassembly/ferris.png similarity index 100% rename from public/webassembly/ferris.png rename to docs/webassembly/ferris.png diff --git a/public/webassembly/tour.css b/docs/webassembly/tour.css similarity index 100% rename from public/webassembly/tour.css rename to docs/webassembly/tour.css diff --git a/fast.py b/fast.py new file mode 100644 index 0000000..23a7531 --- /dev/null +++ b/fast.py @@ -0,0 +1,20 @@ +import uvicorn +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from fastapi.staticfiles import StaticFiles + +app = FastAPI(title="Rust tutorial", description="Rust tutorial", version="1.0.0") +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_methods=["GET"], + allow_headers=["*"], + allow_credentials=True, +) + + +app.mount("/", StaticFiles(directory="public", html=True), name="static") + +if __name__ == "__main__": + # standalone + uvicorn.run(app, host="0.0.0.0", port=8089, log_level="info") diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js new file mode 100644 index 0000000..8cd59e0 --- /dev/null +++ b/frontend/.eslintrc.js @@ -0,0 +1,16 @@ +module.exports = { + env: { + browser: true, + commonjs: true, + es2021: true, + node: true, + }, + extends: [ + 'airbnb-base', + ], + parserOptions: { + ecmaVersion: 12, + }, + rules: { + }, +}; diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..c4786b9 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,5 @@ +lessons.json +docs/*.html +node_modules +.vscode +node_modules \ No newline at end of file diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..60eec85 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,39 @@ +# Use a smaller base image +FROM node:alpine as base + +RUN apk --no-cache add pkgconfig autoconf automake libtool nasm build-base zlib-dev + +# Set the working directory to /app +WORKDIR /app + +# Copy package.json and yarn.lock files to the container +COPY package.json yarn.lock ./ + +# Install dependencies +RUN yarn install --production && \ + yarn cache clean + +# Use a separate build stage to compile the application +FROM base as build + +# Copy the rest of the application files to the container +COPY . . + +# Build the application +RUN npm run build && \ + npm prune --production + +# Use a minimal base image for the final image +FROM node:alpine + +# Set the working directory to /app +WORKDIR /app + +# Copy the application files from the build stage to the final image +COPY --from=build /app . + +# Expose port 8089 for the application +EXPOSE 8089 + +# Start the application when the container starts +CMD ["npm", "run", "serve"] diff --git a/frontend/Makefile b/frontend/Makefile new file mode 100644 index 0000000..58e5d36 --- /dev/null +++ b/frontend/Makefile @@ -0,0 +1,24 @@ +serve: clean + @node generate.js lessons docs beta + @node generate.js wasm docs/webassembly beta + @cd docs && python3 -m http.server 8080 +test: clean + @node generate.js lessons docs + @node generate.js wasm docs/webassembly + @cd docs && python3 -m http.server 8080 +publish: clean + git branch -D gh-pages + git checkout -b gh-pages + @node generate.js lessons docs + @node generate.js wasm docs/webassembly + mv docs/* . + git add . || true + git commit -m 'generating new html' || true + git push -f origin gh-pages || true + git checkout master +lint: + #prettier --write lessons/*/*.yaml + #prettier --write wasm/*/*.yaml +clean: + @rm docs/*.html 2> /dev/null || true + @rm docs/webassembly/*.html 2> /dev/null || true diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..22d1f2f --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,3 @@ +# Rust Tutorial Frontend + +자기주도프로젝트 최석원 \ No newline at end of file diff --git a/frontend/generate.js b/frontend/generate.js new file mode 100644 index 0000000..27ca4bc --- /dev/null +++ b/frontend/generate.js @@ -0,0 +1,352 @@ +const showdown = require("showdown"); +const fs = require("fs"); +const yaml = require("js-yaml"); + +const lessonSource = process.argv[2]; +const targetDir = process.argv[3]; + +/** + * @param {number} num + * @returns {string} + */ +function pad(num) { + const s = `${num}`; + return s.padStart(2, "0"); +} + +/** + * @param {string} lang + * @param {number} i + * @param {boolean} isBeta currently unused + * @param {string} chapter + * @returns {string} + */ +function getFileName(lang, i, isBeta, chapter) { + if (i === 0 && lang === "ko") { + return "index.html"; + } + // let fileName = `${pad(i)}_${lang}.html`; + let fileName = `${pad(i)}_${lang}.html`; + if (chapter !== undefined && chapter !== null) { + fileName = `chapter_${chapter}_${lang}.html`; + } + return fileName; +} + +/** + * @param {string} source + * @returns {string[]} + */ +const getDirectories = source => + fs + .readdirSync(source, { withFileTypes: true }) + .filter(dirent => dirent.isDirectory()) + .map(dirent => dirent.name); + +/** + * @param {string} path + * @returns {any} + */ +const getYaml = path => yaml.load(fs.readFileSync(path)); + +const languages = getDirectories(lessonSource); +const commonWords = {}; +const chapters = []; + +languages.forEach(lang => { + // const lang = languages[x]; + const langDir = `${lessonSource}/${lang}`; + commonWords[lang] = getYaml(`${langDir}/common_words.yaml`); + const languageFiles = fs + .readdirSync(langDir, { withFileTypes: true }) + .filter(f => f.isFile() && f.name.indexOf("chapter_") === 0) + .map(f => f.name); + languageFiles.forEach(l => { + const chap = parseInt(l.substring(8, l.indexOf(".")), 10); + if (chapters[chap] === undefined) { + chapters[chap] = {}; + } + chapters[chap][lang] = getYaml(`${langDir}/${l}`); + }); +}); + +const pages = []; + +chapters.forEach((c, x) => { + for (let i = 0; i < c.ko.length; i += 1) { + const page = {}; + if (i === 0 && x !== 0) { + page.chapter = x; + } + Object.keys(c).forEach(lang => { + page[lang] = c[lang][i]; + }); + pages.push(page); + } +}); + +const lessons = { + common_words: commonWords, + pages, +}; + +const converter = new showdown.Converter(); + +/** + * @param {string[]} words + * @param {string} lang + * @param {string} w + * @returns {string} + */ +function getWord(words, lang, w) { + if (words[lang][w]) { + return words[lang][w]; + } + return words.ko[w]; +} + +/** + * + * @param {string[]} words + * @param {string} lang + * @returns {string} + */ +const getHead = (words, lang) => `<!DOCTYPE html> + <html lang="${lang}"> + <head> + <title>Rust 튜토리얼 - 자기주도프로젝트</title> + + <meta charset="UTF-8"> + <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> + <meta content="utf-8" http-equiv="encoding"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="keywords" content="Rust, Programming, Learning"> + <meta name="description" content="Rust tutorial website based on tour_of_rust"> + <meta name="theme-color" content="#ff6801"/> + <meta http-equiv="Cache-Control" content="max-age=3600"> + + <link rel="stylesheet" href="tour.css"> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css"> + <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script> + + <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> + <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> + <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> + <link rel="manifest" href="./site.webmanifest"> + + <script src="./tour.js" defer></script> + <script>hljs.highlightAll();</script> + </head>`; + +/** + * @param {Array} lessons + * @param {string} lang + * @param {string} title + * @param {string} code + * @param {string} content + * @param {number} index + * @param {boolean} isLast + * @param {string[]} words + * @param {boolean} isBeta + * @returns + */ +function template( + lessonsData, + lang, + title, + code, + content, + index, + isLast, + words, + isBeta +) { + return `${getHead(words, lang)} + <body> + <div class="tour"> + <div class="header"> + <span class="title"><a href="${getFileName( + lang, + 0, + isBeta, + lessonsData[0]?.chapter + )}">${getWord(words, lang, "tor")}</a></span> + <span class="nav"> + <span class="toc"><a href="TOC_${lang}.html">${getWord( + words, + lang, + "toc" + )}</a></span> + </div> + <div class="page"> + <h1>${title}</h1> + ${content} + <div class="bottomnav"> + ${ + index !== 0 + ? `<span class="back"><a href="${ + isBeta ? "beta_" : "" + }${getFileName( + lang, + index - 1, + isBeta, + lessonsData[index - 1]?.chapter + )}" rel="prev">❮ ${getWord( + words, + lang, + "previous" + )}</a></span>` + : "" + } + ${ + isLast + ? "" + : `<span class="next"><a href="${ + isBeta ? "beta_" : "" + }${getFileName( + lang, + index + 1, + isBeta, + lessonsData[index + 1]?.chapter + )}" rel="next">${getWord( + words, + lang, + "next" + )} ❯</a></span>` + } + </div> + </div> + ${ + code + ? `<div class="code"> + <iframe id="rust-playground" width="100%" src="${code}" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe> + </div>` + : '<div class="code"><center><img src="/ferris_lofi.png" alt="Mascot Ferris" width="300" height="236"></center></div>' + } + </div> + <!-- <script> + document.addEventListener("DOMContentLoaded", function() { + // Select the widget's text element using its XPath + const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div'; + const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; + + // Change the text content of the element + widgetText.textContent = "New Text"; + }); + </script> --> + </body> +</html>`; +} + +languages.forEach(lang => { + let c = 0; + const words = lessons.common_words; + const langLessons = lessons.pages.filter(x => { + return true; + }); + const betaLessons = lessons.pages.filter(() => true); + + langLessons.forEach((lesson, i) => { + let fileName = getFileName(lang, i, false, lesson?.chapter); + if (i === 0 && lang === "ko") { + fileName = "index.html"; + } + + let lessonTitle = `[${getWord(words, lang, "untranslated")}] ${ + lesson.ko.title + }`; + let lessonContent = converter.makeHtml(lesson.ko.content_markdown); + let lessonCode = lesson.ko.code; + if (lesson[lang]) { + let targetLang = lang; + if (lesson[lang].clone) { + targetLang = lesson[lang].clone; + } + lessonTitle = lesson[targetLang].title; + + let content = lesson[targetLang].content_html; + if (!content) { + content = converter.makeHtml(lesson[targetLang].content_markdown); + } + lessonContent = content; + lessonCode = lesson[targetLang].code || lesson.ko.code; + + if (lesson[lang].clone) { + if (lesson[lang].code) { + lessonCode = lesson[lang].code; + } + } + } + + fs.writeFileSync( + `${targetDir}/${fileName}`, + template( + langLessons, + lang, + lessonTitle, + lessonCode, + lessonContent, + c, + i === langLessons.length - 1, + words, + false + ) + ); + c += 1; + }); + + const fileName = `TOC_${lang}.html`; + fs.writeFileSync( + `${targetDir}/${fileName}`, + `${getHead(words, lang)} + <body> + <div class="tour"> + <div class="header"> + <span class="title"><a href="${getFileName(lang, 0)}">${getWord( + words, + lang, + "tor" + )}</a></span> + <span class="nav"> + </span> + </div> + <div> + <h1>${getWord(words, lang, "lessons")}</h1> + <ul> + ${langLessons + .map((x, i) => { + let targetLang = lang; + if (x[lang] && x[lang].clone) { + targetLang = x[lang].clone; + } + let s = `<li><a href="${getFileName(lang, i, false, x.chapter)}">${ + x[targetLang] + ? x[targetLang].title + : `[${getWord(words, targetLang, "untranslated")}] ${ + x.ko.title + }` + }</a></li>`; + if (x.chapter !== undefined) { + s = `</ul><h3><a href="${getFileName( + lang, + i, + false, + x.chapter + )}">${ + x[targetLang] + ? x[targetLang].title + : `[${getWord(words, targetLang, "untranslated")}] ${ + x.ko.title + }` + }</a></h3><ul>`; + } + return s; + }) + .join("\n")} + </ul> + </div> + </div> + </body> + </html>` + ); +}); diff --git a/frontend/lessons/README.md b/frontend/lessons/README.md new file mode 100644 index 0000000..e59c1c7 --- /dev/null +++ b/frontend/lessons/README.md @@ -0,0 +1,4 @@ +## 챕터 + +| Chapter | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | +| ------- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | diff --git a/frontend/lessons/ko/chapter_0.yaml b/frontend/lessons/ko/chapter_0.yaml new file mode 100644 index 0000000..660fbc4 --- /dev/null +++ b/frontend/lessons/ko/chapter_0.yaml @@ -0,0 +1,168 @@ +- title: >- + Hello World! + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F%20C-family%20%EC%96%B8%EC%96%B4%2C%20%EB%A9%94%EC%9D%B8%20%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C%20%EC%8B%9C%EC%9E%91%ED%95%A8%0Afn%20main()%20%7B%0A%20%20%20%20println!(%22Hello%20%EB%9F%AC%EC%8A%A4%ED%8A%B8%F0%9F%A6%80%22)%3B%20%2F%2F%20%EC%A3%BC%EC%84%9D%0A%7D%0A + content_markdown: | + <img src="/intro.webp" alt="Welcome to Rust" style="width: 100%; margin-bottom: 20px; border-radius: 10px;"> + + Mirror 1: [http://rust-study.ajousw.kr/](http://rust-study.ajousw.kr/index.html) + + Mirror 2: [https://hi-rust.github.io/](https://hi-rust.github.io/index.html) + + Binary: [Windows](https://github.com/Alfex4936/Rust-Tutorial/releases/download/v1.0.0/Rust.Tutorial_1.0.0_x64_Windows.msi) | [Mac](https://) | [Linux](https://) - TODO + + + **자기주도프로젝트 🎉** + + 안녕하세요. 자기주도프로젝트 Rust 튜토리얼 영상을 위한 웹사이트입니다. + + `프로그래밍 기초 지식이 있는 분들을 타겟`으로 만들었습니다. (C & Python) + + 키보드 <span class="emoji">⬅️</span>/<span class="emoji">➡️</span> 버튼으로 페이지를 이동할 수 있습니다. + + 질문이 있다면 <code>ikr@kakao.com</code> 로 메일 남겨주세요. + + - Rust 언어 소개 + - Rust 언어 기본 문법 + - Rust 언어 고급 (비동기, Unsafe, 매크로 등) + - Rust 언어 간단한 유저 라이브러리 제작 및 업로드 + - Rust 언어로 Python 언어 라이브러리 제작 + - Rust 언어 웹 프레임워크를 이용한 카카오톡 챗봇 서버 제작 +- title: >- + Rust 언어 소개 + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0A++++%2F%2F+%EC%83%81%ED%99%A9%3A+%EC%86%8C%EC%9C%A0%EA%B6%8C+%EC%9D%B4%EC%A0%84%ED%95%98%EA%B8%B0%0A++++let+mut+x+%3D+String%3A%3Afrom%28%22hello%22%29%3B%0A++++let+y+%3D+x%3B+%2F%2F+x%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%B4+y%EB%A1%9C+%EC%9D%B4%EC%A0%84%EB%90%A8%0A++++println%21%28%22%7B%7D%22%2C+y%29%3B+%2F%2F+%EA%B2%B0%EA%B3%BC%3A+hello%0A+++++++++++++++++++++++%2F%2F+println%21%28%22%7B%7D%22%2C+x%29%3B+%2F%2F+%EC%98%A4%EB%A5%98%3A+%60x%60%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%B4+y%EB%A1%9C+%EC%9D%B4%EC%A0%84%EB%90%98%EC%96%B4+%EB%8D%94+%EC%9D%B4%EC%83%81+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%97%86%EC%9D%8C%0A%0A++++%2F%2F+%EC%83%81%ED%99%A9%3A+%EB%8C%80%EC%97%AC%ED%95%98%EA%B8%B0%0A++++let+v+%3D+vec%21%5B1%2C+2%2C+3%5D%3B%0A++++let+s+%3D+sum%28%26v%29%3B+%2F%2F+v%EB%A5%BC+%EB%B6%88%EB%B3%80%EC%9C%BC%EB%A1%9C+%EB%8C%80%EC%97%AC%ED%95%98%EA%B3%A0+%ED%95%A9%EA%B3%84%EB%A5%BC+%EA%B5%AC%ED%95%9C%EB%8B%A4.%0A++++println%21%28%22%7B%7D%22%2C+s%29%3B+%2F%2F+%EA%B2%B0%EA%B3%BC%3A+6%0A%0A++++let+k+%3D+v%3B%0A++++%2F%2F+println%21%28%22%7B%3A%23%3F%7D%22%2C+v%29%3B+%2F%2F+error%5BE0382%5D%3A+borrow+of+moved+value%3A+%60v%60%0A%7D%0A%0Afn+sum%28v%3A+%26Vec%3Ci32%3E%29+-%3E+i32+%7B%0A++++let+mut+result+%3D+0%3B%0A++++for+i+in+v+%7B%0A++++++++result+%2B%3D+*i%3B%0A++++%7D%0A++++result%0A%7D%0A + content_markdown: | + <div align="center"> + <p> + <img src="https://user-images.githubusercontent.com/2356749/223437049-ef50db6b-1ba4-4087-b67f-efeca5569201.png" alt="Rust logo" style="width: 20%; margin-bottom: 20px; border-radius: 10px;"> + </p> + <h3>Rust official logo</h3> + </div> + + > I burnt out; ran out of emotional energy to be effective in my role as technical lead for the project mid way through 2013 (at the tail end of my divorce, and while recovering from a surgery -- not a great time in my life), so I took a break, switched off the Rust team - Graydon Hoare + + Rust는 Firefox 브라우저로 유명한 Mozilla의 개발자 [Graydon Hoare에 의해 2006년](https://arxiv.org/pdf/2206.05503&ved=2ahUKEwjT9o-23NX9AhVw5XMBHYQQB74QFnoECBwQAQ&usg=AOvVaw1uVD6znXuafpUqPN3jkm9C)에 첫 시작된 <s>지금은 Swift 언어 기여자</s> + + 안전하고 빠른 시스템 개발을 위한 언어로, 다음과 같은 이유에서 다양한 분야에서 점점 더 많이 사용: + + <div align="center"> + <p> + <img src="https://user-images.githubusercontent.com/2356749/224587883-afa83e65-f531-46d4-9580-c341052a0981.png"> + </p> + <h3>소유권 및 빌리기 예제</h3> + </div> + + - <b>안전성</b>: 메모리 안정성과 스레드 안전성을 강조하는 언어, Rust 컴파일러는 실행 시간 오류를 줄이기 위해 메모리 오류를 검출하고, 이를 방지하기 위해 안전한 코드를 작성할 수 있도록 도움 + - <b>높은 성능</b>: 꽤 많은 경우에서 C와 비슷한 수준의 성능을 낼 수도 있음, LLVM을 사용하여 코드를 컴파일하고 최적화하여 빠른 실행 속도를 제공 + - <b>확장성</b>: 다양한 운영 체제와 아키텍처를 지원, 크로스 플랫폼 개발에 적합하며, 다양한 분야에서 사용 + - <b>생산성</b>: 코드의 가독성을 강조하며, 표준 라이브러리와 함께 제공되는 Cargo를 통해 의존성 관리와 빌드 자동화를 지원 + - <b>지속 가능성</b>: 대형 기업들이 개발하고 사용하고 있으며, 다양한 커뮤니티와 생태계가 활발하게 운영 + + <div align="center"> + <p> + <img src="https://user-images.githubusercontent.com/2356749/224588206-b98317ef-be24-450e-b825-cc98bf7984bb.png"> + </p> + <h3>CPU time 벤치마크</h3> + </div> +- title: >- + Rust 언어 소개 cont'd + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%23!%5Ballow(dead_code)%5D%0A%0A%2F%2F%20%EC%84%9C%EB%A1%9C%20%EB%8B%A4%EB%A5%B8%20%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84%20%EA%B0%80%EC%A7%84%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EC%B0%B8%EC%A1%B0%EB%A5%BC%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%EA%B5%AC%EC%A1%B0%EC%B2%B4%0Astruct%20Foo%3C'a%2C%20'b%3E%20%7B%0A%20%20%20%20x%3A%20%26'a%20i32%2C%0A%20%20%20%20y%3A%20%26'b%20i32%2C%0A%7D%0A%0A%2F%2F%20Foo%20%EA%B5%AC%EC%A1%B0%EC%B2%B4%EB%A5%BC%20%EA%B0%80%EC%A0%B8%EC%99%80%EC%84%9C%20x%EC%99%80%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%EB%9D%BC%EC%9D%B4%ED%94%84%20%ED%83%80%EC%9E%84%EC%9D%84%20%EA%B0%80%EC%A7%84%20%EC%B0%B8%EC%A1%B0%EB%A5%BC%20%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94%20%ED%95%A8%EC%88%98%0Afn%20get_x%3C'a%2C%20'b%3E(foo%3A%20%26Foo%3C'a%2C%20'b%3E)%20-%3E%20%26'a%20i32%20%7B%0A%20%20%20%20foo.x%0A%7D%0A%0A%2F%2F%20%EC%9B%90%EC%8B%9C%20%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC%20%EA%B0%80%EC%A0%B8%EC%99%80%20%EC%9E%84%EC%9D%98%EC%9D%98%20%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84%20%EA%B0%80%EC%A7%84%20%EC%B0%B8%EC%A1%B0%EB%A5%BC%20%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94%20unsafe%20%ED%95%A8%EC%88%98%0Aunsafe%20fn%20deref_raw%3C'a%3E(ptr%3A%20*const%20i32)%20-%3E%20%26'a%20i32%20%7B%0A%20%20%20%20%26*ptr%20%2F%2F%20dereference%20raw%20pointer%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20let%20x%20%3D%2010%3B%0A%20%20%20%20let%20y%20%3D%2020%3B%0A%0A%20%20%20%20%2F%2F%20x%EC%99%80%20y%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%B0%B8%EC%A1%B0%EB%A5%BC%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20Foo%20%EA%B5%AC%EC%A1%B0%EC%B2%B4%20%EB%A7%8C%EB%93%A4%EA%B8%B0%0A%20%20%20%20let%20foo%20%3D%20Foo%20%7B%20x%3A%20%26x%2C%20y%3A%20%26y%20%7D%3B%0A%0A%20%20%20%20%2F%2F%20get_x%20%ED%98%B8%EC%B6%9C%ED%95%98%EB%A9%B4%EC%84%9C%20foo.x%EC%99%80%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84%20%EA%B0%80%EC%A7%84%20x%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%B0%B8%EC%A1%B0%20%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0%0A%20%20%20%20let%20r1%20%3D%20get_x(%26foo)%3B%0A%0A%20%20%20%20%2F%2F%20r1%EC%97%90%EC%84%9C%20%EC%9B%90%EC%8B%9C(raw)%20%ED%8F%AC%EC%9D%B8%ED%84%B0%20%EB%A7%8C%EB%93%A4%EA%B8%B0%0A%20%20%20%20let%20ptr%20%3D%20r1%20as%20*const%20i32%3B%0A%0A%20%20%20%20%2F%2F%20deref_raw%20%ED%98%B8%EC%B6%9C%ED%95%B4%EC%84%9C%20%EC%9E%84%EC%9D%98%EC%9D%98%20%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%20'a%EB%A5%BC%20%EA%B0%80%EC%A7%84%20r1%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%B0%B8%EC%A1%B0%20%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0%0A%20%20%20%20let%20r2%20%3D%20unsafe%20%7B%20deref_raw(ptr)%20%7D%3B%0A%0A%20%20%20%20%2F%2F%20r1%EA%B3%BC%20r2%EC%9D%98%20%EA%B0%92%EC%9D%84%20%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0%0A%20%20%20%20println!(%22r1%20%3D%20%7B%7D%2C%20r2%20%3D%20%7B%7D%22%2C%20r1%2C%20r2)%3B%20%20%2F%2F%20r1%20%3D%2010%2C%20r2%20%3D%2010%0A%7D%0A + content_markdown: | + <div align="center"> + <p> + <img src="https://user-images.githubusercontent.com/2356749/223428889-67c3ad26-41e4-4469-b008-ec2c0b493e42.png"> + </p> + <h3>Stackoverflow survey @ 2022</h3> + </div> + + 2022년 Stack Overflow 개발자 설문조사 기준으로 Rust는 "가장 사랑받는 언어" 부문에서 `7년 연속`으로 1위를 차지할 정도입니다. + + 실제 예로 IT 대기업들 Facebook, Google, Mozilla 등이 Rust를 사용하고 있습니다. + + - `Facebook`은 Rust를 기반으로 하는 Libra, 디지털 자산을 위한 글로벌 금융 시스템을 구축하는 것을 목표 블록체인 프로젝트를 진행, HHVM, API etc + - `Google`은 안드로이드 운영 체제의 새로운 버전에 Rust를 도입, crosvm, Fuchsia OS, etc + - `Discord`, Discord의 크로스 플랫폼 클라이언트 애플리케이션인 Discord Desktop은 Rust로 작성된 인터페이스 레이어로 구성, Discord Desktop의 인터페이스 레이어는 Chromium Embedded Framework (CEF)을 사용하며, Rust 코드는 CEF의 C++ 래퍼에서 호출됨. 또한 대규모 분산 시스템 처리에 쓰임 + - `Mozilla`는 Firefox 브라우저의 일부를 Rust로 작성하여 메모리 안정성을 강화했으며, Rust를 사용하여 Servo라는 웹 렌더링 엔진을 개발, 또한 Rust로 작성된 Cranelift 프로젝트를 통해 LLVM 대체를 위한 컴파일러 및 라이브러리를 제공, 또한 Mozilla의 모바일 운영 체제인 Firefox OS에서 Rust를 사용하는 것도 고려 + - `Linux`, C언어만 좋아하는 linus torvald가 linux kernel 6.1부터 공식 지원 언어로 추가 + - `Amazon`, Bottlerocket 운영 체제와 AWS 니트로 시스템, etc + - `Dropbox`, 클라우드 스토리지 회사인 드롭박스는 Rust를 사용하여 안전하고 효율적인 파일 검색 및 동기화 엔진을 구축 (exa byte storage) + + <div align="center"> + <p> + <img src="https://user-images.githubusercontent.com/2356749/223660836-5a3dd239-4ddb-432b-9a4a-2e6ac90816ee.png"> + </p> + </div> + + 이제 Rust 팬처럼만 이야기 하지 말고 Rust 언어가 전체적으로 어떻게 작동하는지 자세히 알아보겠습니다. + + --- + + `Rust`는 메모리 안정성, 스레드 안전성, 코드 가독성 등을 강조하는 언어입니다. + + `가비지 컬렉션이나 런타임 오버헤드 없이` 메모리를 안전하게 보호할 수 있어 최신 컴퓨팅에서 매우 유용합니다. + + 이러한 기능 덕분에 Rust는 빠르고 안정적이며 효율적인 소프트웨어를 작성하는 데 완벽한 언어입니다. + + 객체 지향 프로그래밍을 지원하지만, 이를 구현하는 방식이 다릅니다. + + "트레잇(trait)"이라는 개념을 사용하여 `객체 지향 프로그래밍`을 구현하고 `연산자 오버로딩을 지원`하며, 이를 통해 객체 지향적인 코드를 작성할 수 있습니다. + + `암묵적인 타입 변환`을 지원하지 않습니다. Rust에서는 `C와 직접적으로 상호작용`할 수 있는 Foreign Function Interface(FFI)가 제공됩니다. + + Rust는 LLVM(컴파일러 인프라스트럭처) 프로젝트의 일부로 개발되어 `LLVM`을 사용하여 코드를 컴파일하고 최적화하여 빠른 실행 속도를 제공합니다. + + Rust는 또한 npm처럼 `패키지 매니저 Cargo`를 내장해 의존성 관리와 빌드 자동화를 지원합니다. + + <div align="center"> + <p> + <img src="https://doc.rust-lang.org/cargo/images/Cargo-Logo-Small.png"> + </p> + </div> +- title: >- + Rust 언어 설치 + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=curl%20--proto%20'%3Dhttps'%20--tlsv1.2%20-sSf%20https%3A%2F%2Fsh.rustup.rs%20%7C%20sh + content_markdown: | + [https://rustup.rs/](https://rustup.rs/) + + [`Microsoft C++ Build Tools`](https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/) + + [@Link](https://www.rust-lang.org/tools/install) + + <div align="center"> + <p> + <img src="https://user-images.githubusercontent.com/2356749/223654372-637cbfd5-06f3-4c20-b97c-aefcdbbdafe6.png"> + </p> + </div> + + <div align="center"> + <p> + <img src="https://user-images.githubusercontent.com/2356749/223654483-ba1db2fa-cc6b-4104-93ca-456852d2b4e5.png"> + </p> + </div> +- title: >- + Chapter 0 - 마무리 + content_markdown: | + Rust 소스코드는 `.rs` 확장자를 가집니다. + + ```rust + fn main() { + println!("Hello, world!"); + } + ``` + + 위 코드는 가장 간단한 Rust 프로그램입니다. + + main 함수를 정의하고, println! 매크로를 사용하여 "Hello, world!"를 출력하도록 되어 있습니다. + + 위 코드를 hello.rs라는 이름으로 저장한 뒤, 터미널에서 다음과 같은 명령어를 입력해보세요. + + ```bash + $ rustc hello.rs + $ ./hello + $ Hello, world! (stdout) + ``` + + `Google evcxr` - [Rust REPL](https://github.com/evcxr/evcxr) diff --git a/frontend/lessons/ko/chapter_1.yaml b/frontend/lessons/ko/chapter_1.yaml new file mode 100644 index 0000000..b0c2359 --- /dev/null +++ b/frontend/lessons/ko/chapter_1.yaml @@ -0,0 +1,224 @@ +- title: Chapter 1 - The Basics + content_markdown: > + 무슨 언어를 배우든 똑같이 기본부터 살펴보겠습니다. (변수, 함수, 클래스 등) + + + Rust 언어 비공식이지만 거의 흔하게 쓰이는 마스코트, 게(crab)의 이름은 **Ferris** 입니다. + + + <pre><code>let ferris = crab!()</code></pre> + + + 또한 Rust를 사용하거나, 기여하거나 관심이 있는 사람들을 **Rustacean**[러스테이션] 라고 부릅니다. +- title: The Rust Playground + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20main()%20%7B%0A%20%20%20%20println!(%22Welcome%20to%20the%20playground!%20You%20can%20modify%20the%20code%20in%20here.%22)%3B%0A%7D%0A + content_markdown: > + 이 웹사이트에서는 [Rust + Playground](https://play.rust-lang.org) 를 사용하여 온라인에서 직접 실행해 볼 수 있습니다. + + + 우측에서 보다시피 <code>println()</code>도 아닌 <code>println!()</code> 와 같은 코드를 사용하여 stdout에 출력하는 것을 볼 수 있습니다. + + + `!` 이것은 매크로 (Macro)라는 Rust 언어의 특별한 기능 중 하나인데 우선은 생김새만 알고 나중에 뭔지 알아보겠습니다. + + + Rust 언어는 쉽게 작성할 수 있도록 (syntactic sugar) 도와주지만 사실은 컴파일러가 아래처럼 처리합니다. + + + (`cargo inspect` 명령어) + + + <pre><code class="rust">#![feature(prelude_import)] + + + #[prelude_import] + + use std::prelude::rust_2018::*; + + + #[macro_use] + + extern crate std; + + + fn main() { + { + ::std::io::_print(format_args!("Welcome to the playground! You can modify the code in here.\n")); + }; + } + </code></pre> + +- title: 변수 + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn%20main()%20%7B%0A%20%20%20%20%2F%2F%20let%20%ED%82%A4%EC%9B%8C%EB%93%9C%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%84%A0%EC%96%B8%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%20%20%20%20let%20x%20%3D%205%3B%20%2F%2F%20x%EC%97%90%205%EB%9D%BC%EB%8A%94%20%EA%B0%92%EC%9D%84%20%ED%95%A0%EB%8B%B9%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%20%20%20%20let%20y%3A%20f32%20%3D%203.14%3B%20%2F%2F%20y%EC%97%90%203.14%EB%9D%BC%EB%8A%94%20%EA%B0%92%EC%9D%84%20%ED%95%A0%EB%8B%B9%ED%95%98%EB%A9%B0%2C%20f32%20%ED%83%80%EC%9E%85%EC%9D%84%20%EB%AA%85%EC%8B%9C%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%A7%80%EC%A0%95%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%0A%20%20%20%20%2F%2F%20Rust%EB%8A%94%20%EB%8C%80%EB%B6%80%EB%B6%84%EC%9D%98%20%EA%B2%BD%EC%9A%B0%20%EB%B3%80%EC%88%98%EC%9D%98%20%ED%83%80%EC%9E%85%EC%9D%84%20%EC%B6%94%EB%A1%A0%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%20%20%20%20%2F%2F%20%EB%A7%8C%EC%95%BD%20%ED%83%80%EC%9E%85%EC%9D%84%20%EB%AA%85%EC%8B%9C%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%A7%80%EC%A0%95%ED%95%98%EA%B3%A0%20%EC%8B%B6%EB%8B%A4%EB%A9%B4%20%EB%8B%A4%EC%9D%8C%EA%B3%BC%20%EA%B0%99%EC%9D%B4%20%EC%9E%91%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%20%20%20%20let%20z%3A%20i64%20%3D%20100%3B%0A%0A%20%20%20%20%2F%2F%20%EB%B3%80%EC%88%98%EC%9D%98%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EC%97%AC%EB%9F%AC%20%EB%B2%88%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EA%B0%92%EC%9D%84%20%ED%95%A0%EB%8B%B9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%20%20%20%20let%20mut%20count%20%3D%200%3B%0A%20%20%20%20count%20%3D%201%3B%0A%20%20%20%20count%20%3D%202%3B%0A%0A%20%20%20%20%2F%2F%20%EB%B3%80%EC%88%98%EC%9D%98%20%ED%83%80%EC%9E%85%EC%9D%84%20%EB%B3%80%EA%B2%BD%ED%95%98%EC%97%AC%20%EC%9E%AC%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%20%20%20%20let%20x%20%3D%20%22hello%22%3B%20%2F%2F%20x%EB%8A%94%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%ED%83%80%EC%9E%85%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%20%20%20%20let%20x%20%3D%205%3B%20%2F%2F%20x%EB%8A%94%20%EC%A0%95%EC%88%98%20%ED%83%80%EC%9E%85%EC%9C%BC%EB%A1%9C%20%EB%B3%80%EA%B2%BD%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%0A%20%20%20%20%2F%2F%20%EB%B3%80%EC%88%98%EC%9D%98%20%EC%9D%B4%EB%A6%84%EC%9D%80%20snake_case%EB%A1%9C%20%EC%9E%91%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%20%20%20%20let%20first_name%20%3D%20%22Choi%22%3B%0A%20%20%20%20let%20last_name%20%3D%20%22Blah%22%3B%0A%0A%20%20%20%20%2F%2F%20%EB%B3%80%EC%88%98%EC%9D%98%20%EA%B0%92%EC%9D%84%20%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%20%20%20%20println!(%22x%20is%20%7B%7D%22%2C%20x)%3B%20%2F%2F%20%22x%20is%205%22%EA%B0%80%20%EC%B6%9C%EB%A0%A5%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%7D%0A + content_markdown: > + Rust에서는 `let` 키워드를 사용하여 변수를 선언합니다. + + <div align="center"> + <p> + <img src="https://user-images.githubusercontent.com/2356749/223641752-4b38e61f-82f4-450d-b778-526cb7ad618c.png"> + </p> + </div> + + 값을 할당할 때, Rust는 거의 대부분 변수의 타입을 추론할 수 있습니다. + + + 만약 Rust가 추론하지 못하면 변수의 선언 시 타입을 추가할 수 있습니다. + + + 변수의 이름을 여러 번 사용하여 값을 할당할 수 있습니다. + + + 이를 "shadowing"이라고 하며, 변수의 타입은 재할당될 때마다 변경됩니다. + + + 변수의 이름은 항상 `snake_case`로 작성합니다. + +- title: 변수 업데이트 + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20main()%20%7B%0A%20%20%20%20let%20mut%20x%20%3D%2042%3B%0A%20%20%20%20println!(%22%7B%7D%22%2C%20x)%3B%0A%20%20%20%20x%20%3D%2013%3B%0A%20%20%20%20println!(%22%7B%7D%22%2C%20x)%3B%0A%7D%0A + content_markdown: > + Rust는 변수가 변경 가능한지 여부에 대해 많은 주의를 기울입니다. + + * **mutable (가변)** - 컴파일러는 해당 변수에 대해 `쓰거나 읽을 수` 있도록 허용합니다. + + * **immutable (불변)** - 컴파일러는 해당 변수에 대해서 `읽기만` 가능하도록 허용합니다. + + + 가변 값은 **mut** 키워드로 구분됩니다. + +- title: 기본 타입 + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20main()%20%7B%0A%20%20%20%20let%20x%20%3D%2012%3B%20%2F%2F%20by%20default%20this%20is%20i32%0A%20%20%20%20let%20a%20%3D%2012u8%3B%0A%20%20%20%20let%20b%20%3D%204.3%3B%20%2F%2F%20by%20default%20this%20is%20f64%0A%20%20%20%20let%20c%20%3D%204.3f32%3B%0A%20%20%20%20let%20bv%20%3D%20true%3B%0A%20%20%20%20let%20t%20%3D%20(13%2C%20false)%3B%0A%20%20%20%20let%20sentence%20%3D%20%22hello%20world!%22%3B%0A%20%20%20%20println!(%0A%20%20%20%20%20%20%20%20%22%7B%7D%20%7B%7D%20%7B%7D%20%7B%7D%20%7B%7D%20%7B%7D%20%7B%7D%20%7B%7D%22%2C%0A%20%20%20%20%20%20%20%20x%2C%20a%2C%20b%2C%20c%2C%20bv%2C%20t.0%2C%20t.1%2C%20sentence%0A%20%20%20%20)%3B%0A%7D%0A + content_markdown: > + Rust는 다양한 익숙한 유형을 제공합니다: + + + * booleans - `bool`로 참/거짓을 나타냅니다. + + * unsigned integers (부호 없는 정수) - 음이 아닌 정수를 나타내는 `u8`, `u16`, `u32`, `u64`, `u128`입니다. + + * signed integers (부호 있는 정수) - 정수를 나타내는 `i8`, `i16`, `i32`, `i64`, `i128`입니다. + + * pointer sized integers - 메모리에서 색인과 항목의 크기를 나타내는 `usize`, `isize`입니다. + + * floating point - `f32` `f64` + + * tuple - 고정된 값의 시퀀스를 스택에 전달하는 `(value, value, ...)` 입니다. + + * arrays - 컴파일 시점에서 크기가 고정되어 있는 비슷한 요소의 집합으로 `[value, value, ...]` 입니다. + + * slices - 런타임에 길이가 알려진 비슷한 요소의 집합입니다. + + * `str`(문자열 슬라이스) - 런타임에 길이가 알려진 텍스트입니다. + + + 다른 언어에서 사용하는 것보다 텍스트는 더 복잡할 수 있습니다. + + Rust가 시스템 프로그래밍 언어이기 때문에, 기존에 익숙하지 않은 메모리 문제에 대해서도 신경쓰고 있습니다. + + 이에 대해서는 나중에 자세히 다룰 예정입니다. + + + 숫자형은 숫자 끝에 유형을 명시하여 명시적으로 지정할 수 있습니다(예: `13u32`, `2u8`). +- title: Basic Type Conversion + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20main()%20%7B%0A%20%20%20%20let%20a%20%3D%2013u8%3B%0A%20%20%20%20let%20b%20%3D%207u32%3B%0A%20%20%20%20let%20c%20%3D%20a%20as%20u32%20%2B%20b%3B%0A%20%20%20%20println!(%22%7B%7D%22%2C%20c)%3B%0A%0A%20%20%20%20let%20t%20%3D%20true%3B%0A%20%20%20%20println!(%22%7B%7D%22%2C%20t%20as%20u8)%3B%0A%7D%0A + content_markdown: > + Rust는 숫자 변수 타입에 대해 알고 있어야하며, `u8`를 `u32`로 쉽게 사용할 수 없습니다. + + + 다행히 Rust는 **as** 키워드를 사용하여 숫자형을 쉽게 변환할 수 있습니다. +- title: Constants + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=const%20PI%3A%20f32%20%3D%203.14159%3B%0A%0Afn%20main()%20%7B%0A%20%20%20%20println!(%0A%20%20%20%20%20%20%20%20%22To%20make%20an%20apple%20%7B%7D%20from%20scratch%2C%20you%20must%20first%20create%20a%20universe.%22%2C%0A%20%20%20%20%20%20%20%20PI%0A%20%20%20%20)%3B%0A%7D%0A + content_markdown: > + 상수는 변수와 달리 곳곳에서 사용되는 공통된 값을 효율적으로 지정하는 데 사용됩니다. + + + 변수와 같은 곳에서 값이 복사되는 대신, 상수는 컴파일 시간에 사용되는 위치에서 직접 값을 대체합니다. + + + 변수와 달리, 상수는 항상 명시적인 유형을 가져야 합니다. + + + 상수 이름은 항상 `SCREAMING_SNAKE_CASE`로 지정됩니다. +- title: Arrays + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20main()%20%7B%0A%20%20%20%20let%20nums%3A%20%5Bi32%3B%203%5D%20%3D%20%5B1%2C%202%2C%203%5D%3B%0A%20%20%20%20println!(%22%7B%3A%3F%7D%22%2C%20nums)%3B%0A%20%20%20%20println!(%22%7B%7D%22%2C%20nums%5B1%5D)%3B%0A%7D%0A + content_markdown: > + *배열*은 동일한 유형의 데이터 요소들의 **고정된 길이 집합**입니다. + + + *배열*의 데이터 유형은 `[T;N]` 입니다. + + (T는 요소의 유형이고, N은 컴파일 시간에 알려진 고정 길이) + + + 개별 요소는 `[x]` 연산자를 사용하여 가져올 수 있습니다. + + 여기서 x는 원하는 요소의 *usize* 인덱스(0부터 시작)입니다. + + + 가변 길이의 컬렉션, 즉 가변 배열은 나중에 **Vectors**에 대한 챕터에서 소개됩니다. +- title: Functions + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20add(x%3A%20i32%2C%20y%3A%20i32)%20-%3E%20i32%20%7B%0A%20%20%20%20return%20x%20%2B%20y%3B%0A%7D%0A%0Afn%20subtract(x%3A%20i32%2C%20y%3A%20i32)%20-%3E%20i32%20%7B%0A%20%20%20%20x%20-%20y%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20println!(%2242%20%2B%2013%20%3D%20%7B%7D%22%2C%20add(42%2C%2013))%3B%0A%20%20%20%20println!(%2242%20-%2013%20%3D%20%7B%7D%22%2C%20subtract(42%2C%2013))%3B%0A%7D%0A + content_markdown: > + 함수는 매개변수 (parameter)가 없거나 여러 개일 수 있습니다. + + + 이 예제에서 *add* 함수는 `i32`(32비트 길이의 부호 있는 정수)형 두 개의 인수를 취합니다. + + + *subtract* 함수에서와 같이 표현식만 반환하려면 `return` 키워드와 세미콜론을 삭제할 수 있습니다. + + + 함수 이름은 항상 `snake_case`로 지정됩니다. + + + 힌트: 함수를 정의하는 경우, 해당 함수가 수신하는 데이터를 매개변수 (parameter)라고합니다. + + 그 함수를 호출하고 데이터를 전달하면 인수(argument)라고합니다. +- title: Multiple Return Values + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20swap(x%3A%20i32%2C%20y%3A%20i32)%20-%3E%20(i32%2C%20i32)%20%7B%0A%20%20%20%20return%20(y%2C%20x)%3B%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20%2F%2F%20return%20a%20tuple%20of%20return%20values%0A%20%20%20%20let%20result%20%3D%20swap(123%2C%20321)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20result.0%2C%20result.1)%3B%0A%0A%20%20%20%20%2F%2F%20destructure%20the%20tuple%20into%20two%20variables%20names%0A%20%20%20%20let%20(a%2C%20b)%20%3D%20swap(result.0%2C%20result.1)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20a%2C%20b)%3B%0A%7D%0A + content_markdown: > + 함수는 값의 **튜플**을 반환하여 여러 값을 반환할 수 있습니다. + + + 튜플 요소는 인덱스 번호를 사용하여 참조할 수 있습니다. + + + Rust는 여러 형식의 destructuring을 지원합니다. + + 우리는 더 많은 형태로 볼 것이며, 이를 통해 데이터 구조의 하위 요소를 직관적으로 추출할 수 있습니다. +- title: Returning Nothing + content_markdown: > + 함수에 대해 반환 유형이 지정되어 있지 않으면, *unit*이라고도 하는 빈 튜플을 반환합니다. + + + 빈 튜플은 `()`로 나타낼 수 있습니다. + + + `()`을 사용하는 것은 드문 경우이지만 충분히 자주 출현하기 때문에 무슨 일이 일어나는지 알아둘 가치가 있습니다. + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20make_nothing()%20-%3E%20()%20%7B%0A%20%20%20%20return%20()%3B%0A%7D%0A%0A%2F%2F%20the%20return%20type%20is%20implied%20as%20()%0Afn%20make_nothing2()%20%7B%0A%20%20%20%20%2F%2F%20this%20function%20will%20return%20()%20if%20nothing%20is%20specified%20to%20return%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20let%20a%20%3D%20make_nothing()%3B%0A%20%20%20%20let%20b%20%3D%20make_nothing2()%3B%0A%0A%20%20%20%20%2F%2F%20Printing%20a%20debug%20string%20for%20a%20and%20b%0A%20%20%20%20%2F%2F%20Because%20it's%20hard%20to%20print%20nothingness%0A%20%20%20%20println!(%22The%20value%20of%20a%3A%20%7B%3A%3F%7D%22%2C%20a)%3B%0A%20%20%20%20println!(%22The%20value%20of%20b%3A%20%7B%3A%3F%7D%22%2C%20b)%3B%0A%7D%0A +- title: Chapter 1 - 마무리 + content_markdown: > + Rust의 기초는 그렇게 나쁘지 않죠? + + 시스템 프로그래밍 언어로서, Rust는 메모리 내 값을 매우 신경쓰며, + + 수정이 가능한지 불가능한지 여부, 그리고 수학 연산이 의도한 대로 수행되는지 확인합니다. + + + 참고: + + * [Youtube: Rust Cast - Rust의 기본 숫자 유형에 대한 더 깊은 이해](https://www.youtube.com/watch?v=n5TRBkbystY) + + * [Website: Rust Book 2018 - 기본 데이터 유형에 대한 자세한 설명](https://doc.rust-lang.org/1.30.0/book/2018-edition/ch03-02-data-types.html) + + * [Website: Rust Cheat Sheet - Data Types](https://cheats.rs/#basic-types) diff --git a/frontend/lessons/ko/common_words.yaml b/frontend/lessons/ko/common_words.yaml new file mode 100644 index 0000000..325128d --- /dev/null +++ b/frontend/lessons/ko/common_words.yaml @@ -0,0 +1,9 @@ +chapter: 챕터 +tor: Rust 튜토리얼 +next: 다음 +previous: 이전 +toc: 목차 +lessons: 강의 +untranslated: 번역 미정 +welcometothe: Welcome to the +presstocontinue: Press to Continue diff --git a/frontend/make.bat b/frontend/make.bat new file mode 100644 index 0000000..fc419ef --- /dev/null +++ b/frontend/make.bat @@ -0,0 +1,75 @@ +@echo off + +if ["%~1"] == [""] ( + goto :help +) + +if "%~1" == "serve" ( + goto :serve +) + +if "%~1" == "test" ( + goto :test +) + +if "%~1" == "publish" ( + goto :publish +) + +if "%~1" == "lint" ( + goto :lint +) + +if "%~1" == "clean" ( + goto :clean +) + +:help +echo Usage: +echo make.bat [options] +echo. +echo Options: +echo serve Start the Python webserver +echo test Start the test Python webserver +echo publish Publish the website via Github pages +echo lint Run Prettier +echo clean Remove docs and wasm html pages +exit /b 0 + +:serve +call :clean +call node generate.js lessons docs +@REM beta +@REM call node generate.js wasm docs\webassembly beta +call cd docs && python -m http.server 8080 +exit /b 0 + +:test +call :clean +call node generate.js lessons docs +call node generate.js wasm docs\webassembly +call cd docs && python -m http.server 8080 +exit /b 0 + +:publish +call :clean +call git branch -D gh-pages +call git checkout -b gh-pages +call node generate.js lessons docs +call node generate.js wasm docs/webassembly +call mv docs\* . +call git add . || true +call git commit -m 'generating new html' || true +call git push -f origin gh-pages || true +call git checkout master +exit /b 0 + +:lint +call prettier --write .\lessons\*\*.yaml +call prettier --write .\wasm\*\*.yaml +exit /b 0 + +:clean +del .\docs\*.html +del .\docs\webassembly\*.html +exit /b 0 \ No newline at end of file diff --git a/frontend/run.sh b/frontend/run.sh new file mode 100644 index 0000000..89ab465 --- /dev/null +++ b/frontend/run.sh @@ -0,0 +1,9 @@ +#!/bin/bash +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" + +export +cd /home/dev/Rust-Tutorial/rust_tutorial +export NODE_ENV=production +npm run serve diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5808328 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2747 @@ +{ + "name": "rust", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "rust", + "version": "1.0.0", + "dependencies": { + "js-yaml": "^4.1.0", + "showdown": "^2.1.0" + }, + "devDependencies": { + "@tauri-apps/cli": "^1.2.3", + "eslint": "^8.35.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-plugin-import": "^2.27.5", + "nodemon": "^2.0.21", + "prettier": "^2.8.4", + "rimraf": "^4.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", + "integrity": "sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.2.3.tgz", + "integrity": "sha512-erxtXuPhMEGJPBtnhPILD4AjuT81GZsraqpFvXAmEJZ2p8P6t7MVBifCL8LznRknznM3jn90D3M8RNBP3wcXTw==", + "dev": true, + "bin": { + "tauri": "tauri.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "1.2.3", + "@tauri-apps/cli-darwin-x64": "1.2.3", + "@tauri-apps/cli-linux-arm-gnueabihf": "1.2.3", + "@tauri-apps/cli-linux-arm64-gnu": "1.2.3", + "@tauri-apps/cli-linux-arm64-musl": "1.2.3", + "@tauri-apps/cli-linux-x64-gnu": "1.2.3", + "@tauri-apps/cli-linux-x64-musl": "1.2.3", + "@tauri-apps/cli-win32-ia32-msvc": "1.2.3", + "@tauri-apps/cli-win32-x64-msvc": "1.2.3" + } + }, + "node_modules/@tauri-apps/cli-darwin-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-phJN3fN8FtZZwqXg08bcxfq1+X1JSDglLvRxOxB7VWPq+O5SuB8uLyssjJsu+PIhyZZnIhTGdjhzLSFhSXfLsw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-darwin-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.2.3.tgz", + "integrity": "sha512-jFZ/y6z8z6v4yliIbXKBXA7BJgtZVMsITmEXSuD6s5+eCOpDhQxbRkr6CA+FFfr+/r96rWSDSgDenDQuSvPAKw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.2.3.tgz", + "integrity": "sha512-C7h5vqAwXzY0kRGSU00Fj8PudiDWFCiQqqUNI1N+fhCILrzWZB9TPBwdx33ZfXKt/U4+emdIoo/N34v3TiAOmQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.2.3.tgz", + "integrity": "sha512-buf1c8sdkuUzVDkGPQpyUdAIIdn5r0UgXU6+H5fGPq/Xzt5K69JzXaeo6fHsZEZghbV0hOK+taKV4J0m30UUMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-musl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.2.3.tgz", + "integrity": "sha512-x88wPS9W5xAyk392vc4uNHcKBBvCp0wf4H9JFMF9OBwB7vfd59LbQCFcPSu8f0BI7bPrOsyHqspWHuFL8ojQEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.2.3.tgz", + "integrity": "sha512-ZMz1jxEVe0B4/7NJnlPHmwmSIuwiD6ViXKs8F+OWWz2Y4jn5TGxWKFg7DLx5OwQTRvEIZxxT7lXHi5CuTNAxKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.2.3.tgz", + "integrity": "sha512-B/az59EjJhdbZDzawEVox0LQu2ZHCZlk8rJf85AMIktIUoAZPFbwyiUv7/zjzA/sY6Nb58OSJgaPL2/IBy7E0A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-ia32-msvc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.2.3.tgz", + "integrity": "sha512-ypdO1OdC5ugNJAKO2m3sb1nsd+0TSvMS9Tr5qN/ZSMvtSduaNwrcZ3D7G/iOIanrqu/Nl8t3LYlgPZGBKlw7Ng==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-x64-msvc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.2.3.tgz", + "integrity": "sha512-CsbHQ+XhnV/2csOBBDVfH16cdK00gNyNYUW68isedmqcn8j+s0e9cQ1xXIqi+Hue3awp8g3ImYN5KPepf3UExw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.5.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.0.tgz", + "integrity": "sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^7.4.1", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz", + "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/nodemon": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz", + "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.1.tgz", + "integrity": "sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==", + "dev": true, + "dependencies": { + "lru-cache": "^7.14.1", + "minipass": "^4.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz", + "integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==", + "dev": true, + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/showdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", + "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", + "dependencies": { + "commander": "^9.0.0" + }, + "bin": { + "showdown": "bin/showdown.js" + }, + "funding": { + "type": "individual", + "url": "https://www.paypal.me/tiviesantos" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a31d855 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "rust", + "private": true, + "version": "1.0.0", + "scripts": { + "lint:lessons": "prettier --write ./frontend/lessons/*/*.yaml", + "lint": "npm run lint:lessons && npm run lint:webassembly && eslint --fix generate.js docs/", + "prebuild": "npm run clean", + "build": "node ./frontend/generate.js ./frontend/lessons docs", + "serve": "npm run build && python fast.py", + "clean": "rimraf --glob ./docs/*.html", + "watch": "nodemon -w ./frontend/lessons/**/* -e yaml --exec npm run serve", + "tauri": "tauri" + }, + "dependencies": { + "js-yaml": "^4.1.0", + "showdown": "^2.1.0" + }, + "devDependencies": { + "@tauri-apps/cli": "^1.2.3", + "eslint": "^8.35.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-plugin-import": "^2.27.5", + "nodemon": "^2.0.21", + "prettier": "^2.8.4", + "rimraf": "^4.4.0" + } +} \ No newline at end of file diff --git a/public/CNAME b/public/CNAME deleted file mode 100644 index 21c0f8d..0000000 --- a/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -rust-tutorial.site \ No newline at end of file diff --git a/public/images/hylee_512.jpg b/public/images/hylee_512.jpg deleted file mode 100644 index b8a2560909a1aa0a0361d3f93fa2be4b528f7b3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51474 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~+n_vEqYt~B0= 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 IwEO>?0IPs0fB*mh diff --git a/public/style.css b/public/style.css deleted file mode 100644 index aecafa5..0000000 --- a/public/style.css +++ /dev/null @@ -1,26 +0,0 @@ -body { - font-family: 나눔고딕; - margin: auto; - padding-left: 20px; - max-width: 1280px; - background-color: lightgray; - -} - -li { - font-size: 11pt; - margin: 4px; -} - -table { - width: 95%; - border: 2px solid #777777; - font-size: 10pt; -} - -th, td { - border: 1px solid grey; - padding-left: 3px; - padding-right: 3px; -} - diff --git a/src-ui/.gitignore b/src-ui/.gitignore new file mode 100644 index 0000000..270a92d --- /dev/null +++ b/src-ui/.gitignore @@ -0,0 +1,10 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ +WixTools + +# These are backup files generated by rustfmt +**/*.rs.bk + +config.json +bundle.json diff --git a/src-ui/Cargo.lock b/src-ui/Cargo.lock new file mode 100644 index 0000000..d6424f4 --- /dev/null +++ b/src-ui/Cargo.lock @@ -0,0 +1,3196 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Rust-Tutorial" +version = "1.0.0" +dependencies = [ + "serde", + "serde_json", + "tauri", + "tauri-build", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "anyhow" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" + +[[package]] +name = "atk" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" +dependencies = [ + "atk-sys", + "bitflags", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "3.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffdb39cb703212f3c11973452c2861b972f757b021158f3516ba10f2fa8b2c1" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "bytemuck" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cairo-rs" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +dependencies = [ + "bitflags", + "cairo-sys-rs", + "glib", + "libc", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +dependencies = [ + "glib-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "cargo_toml" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497049e9477329f8f6a559972ee42e117487d01d1e8c2cc9f836ea6fa23a9e1a" +dependencies = [ + "serde", + "toml", +] + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c" +dependencies = [ + "byteorder", + "uuid 0.8.2", +] + +[[package]] +name = "cfg-expr" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-expr" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cocoa" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation", + "foreign-types", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa 0.4.8", + "matches", + "phf 0.8.0", + "proc-macro2", + "quote", + "smallvec", + "syn", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "ctor" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + +[[package]] +name = "dtoa-short" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c" + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "field-offset" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "filetime" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "windows-sys 0.45.0", +] + +[[package]] +name = "flate2" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" + +[[package]] +name = "futures-executor" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" + +[[package]] +name = "futures-macro" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-task" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" + +[[package]] +name = "futures-util" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" +dependencies = [ + "futures-core", + "futures-macro", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +dependencies = [ + "bitflags", + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "gdk-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps 6.0.3", +] + +[[package]] +name = "gdkx11-sys" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps 6.0.3", + "x11", +] + +[[package]] +name = "generator" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33a20a288a94683f5f4da0adecdbe095c94a77c295e514cc6484e9394dd8376e" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "windows 0.44.0", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gio" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-io", + "gio-sys", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", + "winapi", +] + +[[package]] +name = "glib" +version = "0.15.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" +dependencies = [ + "anyhow", + "heck 0.4.1", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glib-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +dependencies = [ + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + +[[package]] +name = "gobject-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +dependencies = [ + "glib-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "gtk" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" +dependencies = [ + "atk", + "bitflags", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "once_cell", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps 6.0.3", +] + +[[package]] +name = "gtk3-macros" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f518afe90c23fba585b2d7697856f9e6a7bbc62f65588035e66f6afb01a2e9" +dependencies = [ + "anyhow", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "html5ever" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.6", +] + +[[package]] +name = "http-range" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" + +[[package]] +name = "ico" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031530fe562d8c8d71c0635013d6d155bbfe8ba0aa4b4d2d24ce8af6b71047bd" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ignore" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" +dependencies = [ + "crossbeam-utils", + "globset", + "lazy_static", + "log", + "memchr", + "regex", + "same-file", + "thread_local", + "walkdir", + "winapi-util", +] + +[[package]] +name = "image" +version = "0.24.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-rational", + "num-traits", +] + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "infer" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20b2b533137b9cad970793453d4f921c2e91312a6d88b1085c07bc15fc51bb3b" +dependencies = [ + "cfb", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfa919a82ea574332e2de6e74b4c36e74d41982b335080fa59d4ef31be20fdf3" +dependencies = [ + "libc", + "windows-sys 0.45.0", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "javascriptcore-rs" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" +dependencies = [ + "bitflags", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 5.0.0", +] + +[[package]] +name = "jni" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "json-patch" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce" +dependencies = [ + "serde", + "serde_json", + "treediff", +] + +[[package]] +name = "kuchiki" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" +dependencies = [ + "cssparser", + "html5ever", + "matches", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" + +[[package]] +name = "line-wrap" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" +dependencies = [ + "safemem", +] + +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "loom" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "markup5ever" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" +dependencies = [ + "log", + "phf 0.8.0", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "ndk" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "open" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ecf2487e799604735754d2c5896106785987b441b5aee58f242e4d4963179a" +dependencies = [ + "pathdiff", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pango" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +dependencies = [ + "bitflags", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps 6.0.3", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.45.0", +] + +[[package]] +name = "paste" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "plist" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffac6a51110e97610dd3ac73e34a65b27e56a1e305df41bad1f616d8e1cb22f4" +dependencies = [ + "base64 0.21.0", + "indexmap", + "line-wrap", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" +dependencies = [ + "bitflags", + "crc32fast", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc053f057dd768a56f62cd7e434c42c831d296968997e9ac1f76ea7c2d14c41" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f851a03551ceefd30132e447f07f96cb7011d6b658374f3aed847333adb5559" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.8", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.36.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd5c6ff11fecd55b40746d1995a02f2eb375bf8c00d192d521ee09f42bef37bc" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.45.0", +] + +[[package]] +name = "rustversion" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "selectors" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +dependencies = [ + "bitflags", + "cssparser", + "derive_more", + "fxhash", + "log", + "matches", + "phf 0.8.0", + "phf_codegen", + "precomputed-hash", + "servo_arc", + "smallvec", + "thin-slice", +] + +[[package]] +name = "semver" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.156" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.156" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" +dependencies = [ + "itoa 1.0.6", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395627de918015623b32e7669714206363a7fc00382bf477e72c1f7533e8eafc" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "soup2" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +dependencies = [ + "bitflags", + "gio", + "glib", + "libc", + "once_cell", + "soup2-sys", +] + +[[package]] +name = "soup2-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +dependencies = [ + "bitflags", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps 5.0.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "state" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" +dependencies = [ + "loom", +] + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" +dependencies = [ + "cfg-expr 0.9.1", + "heck 0.3.3", + "pkg-config", + "toml", + "version-compare 0.0.11", +] + +[[package]] +name = "system-deps" +version = "6.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" +dependencies = [ + "cfg-expr 0.11.0", + "heck 0.4.1", + "pkg-config", + "toml", + "version-compare 0.1.1", +] + +[[package]] +name = "tao" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac8e6399427c8494f9849b58694754d7cc741293348a6836b6c8d2c5aa82d8e6" +dependencies = [ + "bitflags", + "cairo-rs", + "cc", + "cocoa", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dispatch", + "gdk", + "gdk-pixbuf", + "gdk-sys", + "gdkx11-sys", + "gio", + "glib", + "glib-sys", + "gtk", + "image", + "instant", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc", + "once_cell", + "parking_lot", + "paste", + "png", + "raw-window-handle", + "scopeguard", + "serde", + "unicode-segmentation", + "uuid 1.3.0", + "windows 0.39.0", + "windows-implement", + "x11-dl", +] + +[[package]] +name = "tar" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tauri" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe7e0f1d535e7cbbbab43c82be4fc992b84f9156c16c160955617e0260ebc449" +dependencies = [ + "anyhow", + "cocoa", + "dirs-next", + "embed_plist", + "encoding_rs", + "flate2", + "futures-util", + "glib", + "glob", + "gtk", + "heck 0.4.1", + "http", + "ignore", + "objc", + "once_cell", + "open", + "percent-encoding", + "rand 0.8.5", + "raw-window-handle", + "regex", + "semver", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "state", + "tar", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "tempfile", + "thiserror", + "tokio", + "url", + "uuid 1.3.0", + "webkit2gtk", + "webview2-com", + "windows 0.39.0", +] + +[[package]] +name = "tauri-build" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8807c85d656b2b93927c19fe5a5f1f1f348f96c2de8b90763b3c2d561511f9b4" +dependencies = [ + "anyhow", + "cargo_toml", + "heck 0.4.1", + "json-patch", + "semver", + "serde_json", + "tauri-utils", + "winres", +] + +[[package]] +name = "tauri-codegen" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14388d484b6b1b5dc0f6a7d6cc6433b3b230bec85eaa576adcdf3f9fafa49251" +dependencies = [ + "base64 0.13.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "regex", + "semver", + "serde", + "serde_json", + "sha2", + "tauri-utils", + "thiserror", + "time", + "uuid 1.3.0", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069319e5ecbe653a799b94b0690d9f9bf5d00f7b1d3989aa331c524d4e354075" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-runtime" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c507d954d08ac8705d235bc70ec6975b9054fb95ff7823af72dbb04186596f3b" +dependencies = [ + "gtk", + "http", + "http-range", + "rand 0.8.5", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror", + "uuid 1.3.0", + "webview2-com", + "windows 0.39.0", +] + +[[package]] +name = "tauri-runtime-wry" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36b1c5764a41a13176a4599b5b7bd0881bea7d94dfe45e1e755f789b98317e30" +dependencies = [ + "cocoa", + "gtk", + "percent-encoding", + "rand 0.8.5", + "raw-window-handle", + "tauri-runtime", + "tauri-utils", + "uuid 1.3.0", + "webkit2gtk", + "webview2-com", + "windows 0.39.0", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5abbc109a6eb45127956ffcc26ef0e875d160150ac16cfa45d26a6b2871686f1" +dependencies = [ + "brotli", + "ctor", + "glob", + "heck 0.4.1", + "html5ever", + "infer", + "json-patch", + "kuchiki", + "memchr", + "phf 0.10.1", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "serde_with", + "thiserror", + "url", + "walkdir", + "windows 0.39.0", +] + +[[package]] +name = "tempfile" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" +dependencies = [ + "cfg-if", + "fastrand", + "redox_syscall", + "rustix", + "windows-sys 0.42.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thin-slice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" + +[[package]] +name = "thiserror" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +dependencies = [ + "itoa 1.0.6", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" +dependencies = [ + "autocfg", + "bytes", + "memchr", + "num_cpus", + "pin-project-lite", + "windows-sys 0.45.0", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" + +[[package]] +name = "toml_edit" +version = "0.19.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc18466501acd8ac6a3f615dd29a3438f8ca6bb3b19537138b3106e575621274" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "treediff" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" +dependencies = [ + "serde_json", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "unicode-bidi" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524b68aca1d05e03fdf03fcdce2c6c94b6daf6d16861ddaa7e4f2b6638a9052c" + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" + +[[package]] +name = "uuid" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version-compare" +version = "0.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" + +[[package]] +name = "version-compare" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "webkit2gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup2", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" +dependencies = [ + "atk-sys", + "bitflags", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pango-sys", + "pkg-config", + "soup2-sys", + "system-deps 6.0.3", +] + +[[package]] +name = "webview2-com" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows 0.39.0", + "windows-implement", +] + +[[package]] +name = "webview2-com-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "webview2-com-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" +dependencies = [ + "regex", + "serde", + "serde_json", + "thiserror", + "windows 0.39.0", + "windows-bindgen", + "windows-metadata", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +dependencies = [ + "windows-implement", + "windows_aarch64_msvc 0.39.0", + "windows_i686_gnu 0.39.0", + "windows_i686_msvc 0.39.0", + "windows_x86_64_gnu 0.39.0", + "windows_x86_64_msvc 0.39.0", +] + +[[package]] +name = "windows" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-bindgen" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" +dependencies = [ + "windows-metadata", + "windows-tokens", +] + +[[package]] +name = "windows-implement" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" +dependencies = [ + "syn", + "windows-tokens", +] + +[[package]] +name = "windows-metadata" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-tokens" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_i686_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "winnow" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d020b441f92996c80d94ae9166e8501e59c7bb56121189dc9eab3bd8216966" +dependencies = [ + "memchr", +] + +[[package]] +name = "winres" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" +dependencies = [ + "toml", +] + +[[package]] +name = "wry" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c1ad8e2424f554cc5bdebe8aa374ef5b433feff817aebabca0389961fc7ef98" +dependencies = [ + "base64 0.13.1", + "block", + "cocoa", + "core-graphics", + "crossbeam-channel", + "dunce", + "gdk", + "gio", + "glib", + "gtk", + "html5ever", + "http", + "kuchiki", + "libc", + "log", + "objc", + "objc_id", + "once_cell", + "serde", + "serde_json", + "sha2", + "soup2", + "tao", + "thiserror", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows 0.39.0", + "windows-implement", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "xattr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +dependencies = [ + "libc", +] diff --git a/src-ui/Cargo.toml b/src-ui/Cargo.toml new file mode 100644 index 0000000..2c97bf3 --- /dev/null +++ b/src-ui/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "Rust-Tutorial" +version = "1.0.0" +description = "Rust embedded" +authors = ["Seok Won Choi <ikr@kakao.com>"] +license = "MIT" +repository = "" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[build-dependencies] +tauri-build = { version = "1.2", features = [] } + +[dependencies] +tauri = { version = "1.2", features = ["shell-open"] } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" + +[features] +# this feature is used for production builds or when `devPath` points to the filesystem +# DO NOT REMOVE!! +custom-protocol = ["tauri/custom-protocol"] + +[profile.release] +panic = "abort" # Strip expensive panic clean-up logic +codegen-units = 1 # Compile crates one after another so the compiler can optimize better +lto = true # Enables link to optimizations +opt-level = "s" # Optimize for binary size +strip = true # Remove debug symbols diff --git a/src-ui/build.rs b/src-ui/build.rs new file mode 100644 index 0000000..50c721e --- /dev/null +++ b/src-ui/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/src-ui/icons/128x128.png b/src-ui/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..6be5e50e9b9ae84d9e2ee433f32ef446495eaf3b GIT binary patch literal 3512 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 Q7#J8lUHx3vIVCg!03lqF%m4rY literal 0 HcmV?d00001 diff --git a/src-ui/icons/128x128@2x.png b/src-ui/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e81becee571e96f76aa5667f9324c05e5e7a4479 GIT binary patch literal 7012 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�_wChW*RH@@SB1S6 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 literal 0 HcmV?d00001 diff --git a/src-ui/icons/32x32.png b/src-ui/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..a437dd51741e9e56e14b5d6024493cb2abfd5259 GIT binary patch literal 974 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|NtNage(c!@6@aFBupZSkfJR9T^xl_H+M9WMyDrPWE(h45?sz8|IjID?nhbVc=EQ z)f1#8STB``o>=4=qB%j>#Mbcy=c{=P#Y`tSo%|+zVVR-lw28Ci>MDVU^Auc8DXl$l z`R6vq-?xvkO?x}}z_;&zD&L=<KQq6fUY0|<Y1U7Zcr|<B{#}P%pXsX}Pzx35eed@p zaBAG_hKvI@R&A0nK6m{P(~H-6k{wwO)>xdY740tn6~i6TvS;h+&-F*`J=Fe7uTz*B zKL5LMf-L`gyThxPEZ(FBe7NJB^I>ye``l?M$CVZwI+Duoo1!AbxnZu>jh2^nllzY5 znWps}E6%#i*xhHL&U4eRQN=@3=}l%_X>;uK$0t~4tU0&s>rDPNEw>z*Iylap&e$&E zsOPvms(@i~%hn9%ZJr{Gj{7Qa+uz&saz6VB*CeeU3Ux7xrkQe+J6G)Va15L$udQ(V z-P9uUzl=h$N)uiw=Rfn_w@TsCimCP=EjK*4{ib$7`Wf*9PptBTCdVW(nWzezrp&TQ zt9p02lQm_1^{iMwV~JBYtR|mX$0RJcOXzUl^UN6@2g<4yq)zq7th{&syzJL|`9J5} zuFkpW&R2Uq(__iQ#P8kl6O6KbI$}9q@G`#tY1zJ4=iSd+JMQ1NYE^ykt-tZN#gU|R z=WU!W4sUrb2^Xcw_hrgNf1X(It9^Cbx<fwKn3&Hm{-dJTQj+>^zv<rhu6YZb=5r*T za9aJnI^RjQxboV}EpO~*?U|9K#3(aaNqV=#{Njt;M?5{86g&SO_TGB=rU7?rX3@>1 zncEXS$#~t_r7U&xj*-jJ`CIR>m!-_UGXJ{#ALg=8RVPjJ?urXE?quo+_{zEA#q^x! z4Ef`U5BP;O41Y?Vadc>y&T{b6+_!t1*Rt_jvGb^F+<*PIeCM<!yIu>F8+{6tZF7+9 z(u(+PTQy@sPn=!qp6WL@O5XIT_5ZFZF#674#CAkMfN}E#K|kJbx$eqP&RZgFiBEQZ zJ74r|S^3UyHgY#k&S7|H`9NP%xB9PhvqVR6^M!v&R%%<?l(S11IR$>&PT2c4G@`@q za!aq_(pAqKk4@?Dem664)~!#^Z~TobGi6-YA!YnKynoSq>*Y$*Q|Gm=oaDZD|8(y= zw#oZDo_M%42~QJwZL-Q(PuC$~_up9A<Wqdb2}hL@1$!=bFW<akRYYWi_#&2x*RCJ6 jefapX(USiUkH)9mDqVI%U+NkI0|SGntDnm{r-UW|71zIl literal 0 HcmV?d00001 diff --git a/src-ui/icons/Square107x107Logo.png b/src-ui/icons/Square107x107Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca4f27198838968bd60ed7d371bfa23496b7fe5 GIT binary patch literal 2863 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 literal 0 HcmV?d00001 diff --git a/src-ui/icons/Square142x142Logo.png b/src-ui/icons/Square142x142Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b81f820394d1504ff4b4091473a8263542c9edc4 GIT binary patch literal 3858 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 literal 0 HcmV?d00001 diff --git a/src-ui/icons/Square150x150Logo.png b/src-ui/icons/Square150x150Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..624c7bfba0498dcebbc8a020fe06f08cfff2384a GIT binary patch literal 3966 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 ac8Bn<oAgbMV;LA27(8A5T-G@yGywn}jacRY literal 0 HcmV?d00001 diff --git a/src-ui/icons/Square284x284Logo.png b/src-ui/icons/Square284x284Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c021d2ba76619c08969ab688db3b27f29257aa6f GIT binary patch literal 7737 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 literal 0 HcmV?d00001 diff --git a/src-ui/icons/Square30x30Logo.png b/src-ui/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..621970023096ed9f494ba18ace15421a45cd65fa GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0y~yV2}f04mJh`25W<Lix?OfI14-?iy0WWg+Z8+Vb&Z8 z1_lPk;vjb?hIQv;UNSH+u%tWsIx;Y9?C1WI$jZRLEaU0o7*fIbHq5)|mV>}sx40df zI{Or+AAGuo=bl9Ps+=0;qNWGJN9-6MvD{EMm~-F>OM-sWWZx&DT8yVAOJ_`6qqOq! z;`a(FD(!D3g{vl{RsH(<dS)KuhxLpP`5hncIu~DB*Hhs2V5X_&?*BKB_(ZVt{&uii zIWKA(V<F4B>yH&!{^%y{vflIHd>v=7w9TX^;Ttp!C(rtG(^oCy&~EoX9SJ(d4YD3V z{62Lv-Q&7uT)y4Nb+5&FcDj$v)^*0Y?_bHt%;NePdF^KS0v@d!u|-pywGL+6ZnNxH zH%VQe#m<_rHJ9&wgZ^0-f4lpRo)>B#PrH1-ui1B{UhT1~FV{TH`M<$saiX^4)nwOo z_4Aw}vkR9Ud-$TuxNzk!ZJ*NIUu%P_XV@2ZB$v*UmEM=U(#!6T^_sU1feQ>cCQacE zZ=2!C-csT0z?Q!)bSr~)Y0idU%~QHh*u}ozz-oD;c1FD6!`m4?9*bp`bH@CdH!D)H zXTr*eW#WzZezrI;#b)Wus(!x8cY>GE&*dCV3;bU7^v;kt=vADeeatI7h)wCv=A*B} zl`i{C<8#oz+<wfi!^wGuh>-Wze>2&neJ-9+i)D}34OExmve|e~Txj#H%N}bVTRNAn z{FPXC@ar8_7U|Bm&yQ!#bi5U`OQz-c#-^#peOFFx7Cqj1>+eh9>HJ?9J>4^#FHGIK zcgy#GAJo>wD$kkt)mq1O4m-PyvhDFx@p}G8Ube1TwsD@sMSWqF7%kTH>eER}l|FKB z^FEhs(=&^G;!)jCXRR*fJUU_7v~F3DNm)*BzQttzio%vV^;Z{jeBZJm)pW-iw}6JJ zac?KLzMaUx-ktVU#!HDO#7=l$g>VJm#`g~r&G=+LSSF<xhRCif-t_xpw)Dy(X%_FM z*=PAg6n+;4UJ}`n!?xzgnPLTR9$Q^a`87{&tvXSwyD95mJ?mc;F_8`vg%5Jta<6Qr zsU9_zPf`1lcCJ6m_C||^ntI*+qPOcdPd1;^Y?OX>Z?;C~A$z9Zm-XAaqo#A*{<Lg4 z=hNu!-<A1K+w#5EEc%sMcFNcJx{bd&yL|oLADTh$U;ICDG=EZYYFb#G$_xeu1_n=8 KKbLh*2~7Z?6p?iR literal 0 HcmV?d00001 diff --git a/src-ui/icons/Square310x310Logo.png b/src-ui/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bc04839491e66c07b16ab03743c0c53b4109cc GIT binary patch literal 8591 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 literal 0 HcmV?d00001 diff --git a/src-ui/icons/Square44x44Logo.png b/src-ui/icons/Square44x44Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d5fbfb2ab4e57e8a75620cded43bddc1a15daa99 GIT binary patch literal 1299 zcmeAS@N?(olHy`uVBq!ia0y~yV9)_!4mJh`2Dz3fMg|53&H|6fVg?3oVGw3ym^DX& zfq{XsILO_JVcj{ImkbOHEa{HEjtmSN`?>!lvNABRtnhSk45?sz8xcF{mYcx4i4oyi zQ$uz*F4&Z#8d}+4b7S{YEoOC&YNivM2h<&^n_}lD+!Q`y$2g(=jTOIJWlw8!QPTr0 z_0&C+tnM;bES>14(D-@FeP(-S|MTvvpTC~RxZ}93lE4Sf#=}_??{%$SUwm=P^9{=1 zyds257VtW4VOYpjo^pM|OLOTz54ukDE3kialQ?c4@#R*lg{N%HrtL0w_cig{m}%g; zm8I>+OuH~e{+1mA{&BW<Z^@J$=z253ZrUW?3#^i!o;sSY*ET2~cxGl9*D%LJ@%5$k z;sOVzdNn)?(R7Jbx*zx~<lq$lm7LNOtPfeNJNqa__2OpViI<iIHuz`0bG>yZrX}+r zpKis<o=<F6%{&Y2Z5M1W%gFFslI?Qq>RCetex8f}cQ7pS_5QwT(o~KO>~r>)Cq%wk z=6g~mu`91TZENQj)*nB9uRGfC$26=uk+-iX^7;4wD@t@dnG%*LH}1dE7Lp;gaAKd| z{Nkl9nMT@SdG|{A^XEJ?*Z-fPI_ZH^Qpf((b)VUckGQOIS!8Gz?zUytyqO;!uJ>F2 z;of{jmOZnj+sa=byOu7>@J9P^c4~)mgLojjRBSts)tNwD9h<lf2j#Bs_-o@A@l9CD zTqf0vH(D}0*fsjzcBMaWzpi<r|3^_R#AJKe>1{84K8n6+=xwpw<h?1P>raD-DDxy& zyM~QwH)B4g82Lr9Z98&I#!P(Q(n+EX%<ngsKYh8_Ytc8oX!k8s5~r;W_HZki%(=m| z?4{tdkPio5Yn{`1e(~ZlrGu?4pT1^IJ^y*hy+_JEACohp4Ysrdm+mMs-n-;QnUnM4 zmxZax&68MH?@JPsj1l8AKN&Y$NG7&br{cw5mfvn$PHj}<zf{GU>-D4HHitcfl6`^y zzT(L_mC15CO=evSPDtlf1xX$hTkyzfw%N9s!IypKA3n6gS!Lsq&nm|2N*?X4?_}z} zH0R&rhg*x?mgrs(d^#yNh}9)zl}c%i=Ec;EV5d;F!|{KnzF;_8oUkd8<Av}`w?+3; zPtLo@l;yd7`^z6&T3VfMRQ{>Wd2Y0FhTZ+jb*r5hPLj3veXZ(WxSP2p^2X13j%IeJ zKhN3STj}M+Vg6_DpI7JChe|(Bytz#Mq1xH+O!_Nrbz1Gtr%K=4;J^9Hm0uj%SC8%B zmFg_}cW|ZGtbN~2x`GyU^l3bg4$3yZ=c!Yh9k8?RuA`vk_RMa#Oe4)%_ryz$IlAQK z{`^)dcAml*b!gMvCHu@5F>svCH8s1t{`m2~cDC`^zcv`1Gpcvatn*!JS<<d>;hWr_ z%V&fg^Zpz>VzyvUK;q4k`!e!V6_tZR54qT{>fSPA=Z{Y^Momxpw}_v+o}${4=*X92 z(;~O8<d+DawpF*1tjwHU>Z#_rdiHgB{zpGeGU&PEdnIgnnq3Z4i~m;dfL%O1_7%@; z?7B3(I;EB~Rmc|I4_&RWys5t~`1<rWtsCxW$nSah>YO>BNXajbn3n<zJ?fWC$=IeG z`O?1Ia4Gv!#V-o-Zg=LrbDB2sr&8<JnW~=RM<rgoQD=!d_wl0f4d$Zze`NkWyW-jq z6SHb#$V28;0?H<Z55({FevkC{Ru;PTooT?H+TWVmcWvJ-d|<yKMD|mfouLr}0|SGn LtDnm{r-UW|uN74} literal 0 HcmV?d00001 diff --git a/src-ui/icons/Square71x71Logo.png b/src-ui/icons/Square71x71Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..63440d7984936a9caa89275928d8dce97e4d033b GIT binary patch literal 2011 zcmeAS@N?(olHy`uVBq!ia0y~yU~mUv4mJh`hR_XB@(c_NoCO|{#S9GG!XV7ZFl&wk z0|NtNage(c!@6@aFBupZSkfJR9T^xl_H+M9WMyDrFYt7645?szJ3BV-wwu85^i0c_ z?s9j8r#Pi5*LF>9uQ74ZnZMv1=b||Zr#N-yD}Y%qId#}G-s}rG72NF6c2oEUtJHx_ zp1JAMCTZRFey6i@imZdZ!ZhDN?^ow%-kf=p_rM&>;%8@O7T*;t@SR}2+WW^QF1b65 z57#~t{8gR#YD)5iP2A2uI`(frTJ>Fm>)ENJj)7Sl6wDkK89YDg;qD-PG;3kReo@sc zQ#+N*-<y4Su6BcCk@|u4AKBUti*<=KIH&3LZ4&X{b1c5Lz`J3w`O&EFycS8z9xd2v z;(jei#wo|y<WAAUEMsB!cVW>#K8d6`GdS;@cl~UdQr}Vo6K&QXw~p?%?)x96_hNDA z4VJfem_+sXc3m?2SCeNKxXn<^RB@90<rt@Z>(@P;zHV_qsljDg&M7C4a*4K!CVPl* zp3j+Yz*e?J<%UU@ii@|+zt55>3k(XcoUMLj@N~-Ki*G)0eTrolcK;}LDQ*A4n#M=@ z&8kN`H%F@`{%P6X@BZu_tN8UU`6GP~t5T!Ce_FusA?>w+aw5mmNfv4=V%$#))dd&d z+3leC=t1z6<C3P_C)>OekM*!rF`bItnr`CuRa*M_qX)b>2X16(+(?RXe7^Q!?|+4? zyPHn)d{f%^!bo#lM0Ee>8Or71@l8dt6{g*%eqQ=|(&|yCL%M2X#Oo=Ioz;aOp2c(; zl`-G`_<?a@bn>|+i&^$nT=^+2VNtGqSNx-OyZ6++alA7Ej`nSiW!HVs@$cdpcS~XG zv;|ky_KBb3O$hRFXzNrsd#Wyfxd}&q%Y<@^`Q6^Up6hm6+0OA&v%UC`V~L!=*Xk|e z7Up?css%iqK~|j71wyvRrRUTLzT|w&V|r@E<tzhv>EtON);1R!ypd{J5o;xPJzZx` zl;2b5^?_EMe2=%p&8t52xBB$%%=x{#O&8Bi2ne=S6fU$5ZRhuy6VbP6nxlvR7Ps<x zPR=<Er|K51I?uzI_u1a@P+{4+$<cFeSGU)hbd;r>5}xQ(bmU`Wx9gn~&U)K}4si&% z{hA>EuS8d9?IF#XM-#c5^;*Rrh8)R#z@_3cyD)6h?+x-!X@yRL`^>nM7f9B9&fobx z;pmNN9iNpm#RR7(A9;Lk-N!u^dM`N|JeSRI{>i=K!D@C_?mZmyzR0bO5S<ZGo|`z& z`DN{;61fKtq7O*%EH7NS+wy8tYGSVC6ThrgetR@;_U6^Cyv1ew^GDS3KG#>9E&OLL zkV>xDbLyqUs(*bx6%~gpPWx`yCevfwd1%5>7xR5<*so@-yT!$t@z7g4JC{{6toLXC zP1WPy8O0`CO;~eryPe^OHi59_c6;`Mqf1H@*RCqk-tM(oYR%kP*PSJ_948g2-DKg; zxw~qawa2?F>1RA#7bp2faV9+sV!2(k;^_p7QttJf(|){I6jIipylmDRPIZshy=*n7 zKPLFvn;!aju$gQ1SId<*921Vp=^bQvu>5bG!_Nx`Ywt-|Nv!7oBa*;Xcjly}X^=s@ zjLY0^(cKQ&B0oX`mt3FFcyV2?NutBr{?rJuXWhzQURu=cG&A6E{bHoM_*mhqsrFTG zWF<__u3nlp+2Dzv<m_K&(-yC7vGiTD!}U~#Ki|TK<yOZmRPNuel{CNDoBiR5pT2_f z&e^e#az6BbROt#|bC4nVl5VlJlUGmlv3))h(uElh3O)aJFTU<l^~3G=Wg8h4Tlsx1 z2-UazDT#e^KC$z&W_eM1+1`^go8l$10%vP{=5~Jaj-_h3;7-R^RuiTi?w{k-I_YF{ zwRTV3X0fQ|<!g1`9}s*qqj|IE0{H`XSl`&k<TdYn-W{eKmGCUdM=JbH>hwbbIfY9; zY+0x1I3rzAWlv<)Bo%|k_gjB`pMJLUmc@?auRrjra(!#;il|Bpe|q{i`*~F!{qk2U zq>kswZ})Y4oWOb8A@J|Th1*=ZAEuqi+AI`${dy+*?o**GZ(guZ?7e5IVH2Bt_58{= zU;Fj+t_fzaGF}URW7p|@#rgAt@Lk>i{!Tr^IiGL$%~OZjcC<V@dN@Qr)UGD$Oa0EX zk*OzGMb~pLUvA2HPwHBVbk^P;t|b4>UuFwypO##k^J=o)RZg8m^$ju(i~+&&#S4}P zZ_N7jDE5td=t0A<r_KSom*27OElqf}zu|SnmF0}bdmi0g7AIjkSuAPewXLBQi?_6v zFP^J;Vs8w$i1^y9bXTGGpT0C*+90OBO>X9l{vOt-e}9YLea*SGbzz#vS(OC};nNmg zR<QAXmYYBI@4x6^X{NgiL{GNr-nK9)Q}&2XYJ3#japqA#L7dE-(n*gFn5YPy)5&*B zb@^1Go-RE@;8IpPuTMhu)Tx2b6|T2=W~I6$CAKS1Xi5@Y*AWy~@=onYf$06@-HKDC zG7M+_vv20zSw1<6dy2T?_E`05&nNF#g4REO^DJrVJT(zcw)if?%|dMjyZ9?B-xu5J z%Aa(McKPIb?JQ?x;XcpVcXYmZ`5Q7^FYaFQX!7>h5V_<%HX<x*m2~FSoS$ENY{Bmb z>GwGKe_OZ7u5b;WVR3mvz|zgp<yXuibGCIC-*ujKu&r?dcjK3~yQ{@g&VlQ|pSynW ZUwoV~fBT%OPYetU44$rjF6*2UngHfcuJ8Z= literal 0 HcmV?d00001 diff --git a/src-ui/icons/Square89x89Logo.png b/src-ui/icons/Square89x89Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f705af2f2e044682ac042b37dba6682a0c8a6b GIT binary patch literal 2468 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 literal 0 HcmV?d00001 diff --git a/src-ui/icons/StoreLogo.png b/src-ui/icons/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..455638826192851ad1ae604d66f2ca352979442c GIT binary patch literal 1523 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 literal 0 HcmV?d00001 diff --git a/src-ui/icons/icon.icns b/src-ui/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..a2d421562f6ba759bf575dddc0f3805bd1e92f64 GIT binary patch literal 32947 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 literal 0 HcmV?d00001 diff --git a/src-ui/icons/icon.ico b/src-ui/icons/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8a8f98d9c594ea6e9a4e397baa045736bc2b09fa GIT binary patch literal 67646 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 literal 0 HcmV?d00001 diff --git a/src-ui/icons/icon.png b/src-ui/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e1cd2619e0b5ec089cbba5ec7b03ddf2b1dfceb6 GIT binary patch literal 14183 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 TRLxmk2NLjf^>bP0l+XkKL@CUO literal 0 HcmV?d00001 diff --git a/src-ui/rustfmt.toml b/src-ui/rustfmt.toml new file mode 100644 index 0000000..d962cda --- /dev/null +++ b/src-ui/rustfmt.toml @@ -0,0 +1,13 @@ +max_width = 100 +hard_tabs = false +tab_spaces = 2 +newline_style = "Auto" +use_small_heuristics = "Default" +reorder_imports = true +reorder_modules = true +remove_nested_parens = true +edition = "2021" +merge_derives = true +use_try_shorthand = false +use_field_init_shorthand = false +force_explicit_abi = true diff --git a/src-ui/src/main.rs b/src-ui/src/main.rs new file mode 100644 index 0000000..ad611dd --- /dev/null +++ b/src-ui/src/main.rs @@ -0,0 +1,15 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command +#[tauri::command] +fn greet(name: &str) -> String { + format!("Hello, {}! You've been greeted from Rust Tutorial!", name) +} + +fn main() { + tauri::Builder::default() + .invoke_handler(tauri::generate_handler![]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/src-ui/tauri.conf.json b/src-ui/tauri.conf.json new file mode 100644 index 0000000..d23f543 --- /dev/null +++ b/src-ui/tauri.conf.json @@ -0,0 +1,52 @@ +{ + "build": { + "beforeDevCommand": "", + "beforeBuildCommand": "", + "devPath": "../docs", + "distDir": "../docs", + "withGlobalTauri": true + }, + "package": { + "productName": "Rust Tutorial", + "version": "1.0.0" + }, + "tauri": { + "allowlist": { + "all": false, + "shell": { + "all": false, + "open": true + } + }, + "bundle": { + "active": true, + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "identifier": "dev.seok", + "targets": "all" + }, + "security": { + "csp": null + }, + "updater": { + "active": false + }, + "windows": [ + { + "fullscreen": true, + "resizable": true, + "maximized": true, + "transparent": false, + "title": "Rust Tutorial", + "width": 1680, + "height": 900, + "decorations": true + } + ] + } +} \ No newline at end of file -- GitLab