begin work on gui
This commit is contained in:
parent
8685b03f0c
commit
8f9d19d161
|
@ -0,0 +1,23 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="HtmlUnknownTag" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="myValues">
|
||||
<value>
|
||||
<list size="9">
|
||||
<item index="0" class="java.lang.String" itemvalue="nobr" />
|
||||
<item index="1" class="java.lang.String" itemvalue="noembed" />
|
||||
<item index="2" class="java.lang.String" itemvalue="comment" />
|
||||
<item index="3" class="java.lang.String" itemvalue="noscript" />
|
||||
<item index="4" class="java.lang.String" itemvalue="embed" />
|
||||
<item index="5" class="java.lang.String" itemvalue="script" />
|
||||
<item index="6" class="java.lang.String" itemvalue="f-grid" />
|
||||
<item index="7" class="java.lang.String" itemvalue="f-item" />
|
||||
<item index="8" class="java.lang.String" itemvalue="f-row" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
<option name="myCustomValuesEnabled" value="true" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectTasksOptions" suppressed-tasks="SCSS" />
|
||||
</project>
|
35
index.js
35
index.js
|
@ -1,5 +1,12 @@
|
|||
const express = require("express");
|
||||
const { join: joinPath } = require("path");
|
||||
const homeDir = require("os").homedir();
|
||||
const fs = require("fs/promises");
|
||||
const sass = require("sass");
|
||||
|
||||
const FACTORIO_DATA_DIR = process.env["FACTORIO_DATA_DIR"] ?? `${homeDir}/.steam/steam/steamapps/common/Factorio/data`;
|
||||
|
||||
const exists = path => fs.stat(path).then(() => true, () => false);
|
||||
|
||||
const app = express();
|
||||
|
||||
|
@ -11,6 +18,34 @@ app.get("/data.json", (_req, res) => {
|
|||
res.sendFile(joinPath(__dirname, "build/data.json"));
|
||||
});
|
||||
|
||||
app.get(/.*\.css$/, async (req, res) => {
|
||||
const strippedFilepath = joinPath("public", req.path.slice(0, -4));
|
||||
const isScss = await exists(strippedFilepath + ".scss");
|
||||
const isSass = await exists(strippedFilepath + ".sass");
|
||||
|
||||
try {
|
||||
if (isScss) {
|
||||
res.type('css').send(sass.compile(strippedFilepath + ".scss").css);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isSass) {
|
||||
res.type('css').send(sass.compile(strippedFilepath + ".sass").css);
|
||||
return;
|
||||
}
|
||||
} catch(e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
res.type('css').send("body { background: red; }");
|
||||
});
|
||||
|
||||
app.get(/__.*__/, async (req, res) => {
|
||||
const [ , mod, path ] = /^\/__(.+?)__\/(.+)/.exec(req.path);
|
||||
const data = await fs.readFile(joinPath(FACTORIO_DATA_DIR, mod, path));
|
||||
res.type('png').send(data);
|
||||
})
|
||||
|
||||
app.listen(
|
||||
Number(process.env["PORT"] ?? 8080),
|
||||
function () {
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"express": "^5.0.1",
|
||||
"sass": "^1.83.1",
|
||||
"wasmoon": "^1.16.0"
|
||||
},
|
||||
"type": "commonjs"
|
||||
"type": "commonjs",
|
||||
"scripts": {
|
||||
"run": "node index.js"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,65 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Factorio recipes</title>
|
||||
<script type="text/javascript">
|
||||
fetch("data.json")
|
||||
.then(d => d.json())
|
||||
.then(console.log);
|
||||
</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Titillium+Web:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700&display=swap" rel="stylesheet" />
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
worms!
|
||||
<div id="item-list">
|
||||
<div>
|
||||
<button><img src="__base__/graphics/icons/low-density-structure.png" class="item" /></button>
|
||||
@
|
||||
<button><img src="__base__/graphics/icons/low-density-structure.png" class="item" /></button>
|
||||
*
|
||||
<input value="4" />
|
||||
</div>
|
||||
<f-grid>
|
||||
<f-row>
|
||||
<f-item name="basic-oil-processing"></f-item>
|
||||
<f-item name="advanced-oil-processing"></f-item>
|
||||
</f-row>
|
||||
<f-row>
|
||||
<f-item name="iron-gear-wheel"></f-item>
|
||||
<f-item name="iron-stick"></f-item>
|
||||
<f-item name="copper-cable"></f-item>
|
||||
<f-item name="barrel"></f-item>
|
||||
<f-item name="electronic-circuit"></f-item>
|
||||
<f-item name="advanced-circuit"></f-item>
|
||||
<f-item name="processing-unit"></f-item>
|
||||
<f-item name="engine-unit"></f-item>
|
||||
<f-item name="electric-engine-unit"></f-item>
|
||||
<f-item name="flying-robot-frame"></f-item>
|
||||
<f-item name="low-density-structure"></f-item>
|
||||
<f-item name="rocket-fuel"></f-item>
|
||||
<f-item name="rocket-fuel" id="test-item"></f-item>
|
||||
</f-row>
|
||||
<f-row id="test-row"></f-row>
|
||||
</f-grid>
|
||||
<!--<div>
|
||||
<div class="spacer"></div>
|
||||
<button><img src="__base__/graphics/icons/low-density-structure.png" class="item" /></button>
|
||||
@
|
||||
<input value="4" disabled />
|
||||
<button><img src="__base__/graphics/icons/low-density-structure.png" class="item" /></button>
|
||||
=
|
||||
<input value="4" disabled />
|
||||
<button><img src="__base__/graphics/icons/low-density-structure.png" class="item" /></button>
|
||||
+
|
||||
<input value="4" disabled />
|
||||
<button><img src="__base__/graphics/icons/low-density-structure.png" class="item" /></button>
|
||||
->
|
||||
<input value="4" disabled />
|
||||
<button><img src="__base__/graphics/icons/low-density-structure.png" class="item" /></button>
|
||||
+
|
||||
<input value="4" disabled />
|
||||
<button><img src="__base__/graphics/icons/low-density-structure.png" class="item" /></button>
|
||||
</div>-->
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,112 @@
|
|||
const ticksInSecond = 60;
|
||||
|
||||
class FactorioItemElement extends HTMLElement {
|
||||
static observedAttributes = [ "name" ];
|
||||
|
||||
async connectedCallback() {
|
||||
const name = this.getAttribute("name");
|
||||
|
||||
const button = document.createElement("button");
|
||||
const img = document.createElement("img");
|
||||
img.setAttribute("src", await this.getImagePath(name));
|
||||
img.setAttribute("alt", name);
|
||||
button.appendChild(img);
|
||||
button.setAttribute("title", name);
|
||||
this.appendChild(button);
|
||||
}
|
||||
|
||||
async attributeChangedCallback(attribute, _oldValue, newValue) {
|
||||
await dataPromise;
|
||||
await new Promise(setTimeout); // skip one 'frame' to wait for the connectCallback to run
|
||||
if (attribute === "name") {
|
||||
if (this.children.length > 0) {
|
||||
const button = this.firstElementChild;
|
||||
const img = button.firstElementChild;
|
||||
img.setAttribute("src", await this.getImagePath(newValue));
|
||||
button.setAttribute("title", newValue);
|
||||
img.setAttribute("alt", newValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async getImagePath(name) {
|
||||
await dataPromise;
|
||||
|
||||
const recipe = data.recipe[name];
|
||||
const item = data.item[name];
|
||||
|
||||
if (!item) {
|
||||
if (recipe) {
|
||||
return recipe.icon ?? null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
return item.icon;
|
||||
}
|
||||
|
||||
static new(name) {
|
||||
const elem = document.createElement("f-item");
|
||||
elem.setAttribute("name", name);
|
||||
return elem;
|
||||
}
|
||||
}
|
||||
class NoTextElement extends HTMLElement {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.observer = new MutationObserver(mutations => {
|
||||
mutations.forEach(m => {
|
||||
m.addedNodes.forEach(n => {
|
||||
if (n.nodeType === Node.TEXT_NODE) {
|
||||
this.removeChild(n);
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
this.observer.observe(this, {
|
||||
childList: true,
|
||||
subtree: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
window.customElements.define("f-item", FactorioItemElement);
|
||||
window.customElements.define("f-grid", class extends NoTextElement {});
|
||||
window.customElements.define("f-row", class extends NoTextElement {});
|
||||
|
||||
let data = null;
|
||||
const dataPromise = Promise.all([
|
||||
new Promise(res => {
|
||||
window.addEventListener("load", res);
|
||||
}),
|
||||
fetch("data.json").then(d => d.json()),
|
||||
]).then(([_, resData]) => {
|
||||
data = resData;
|
||||
console.log(data.recipe);
|
||||
console.log(data.item);
|
||||
// console.log(data.furnace);
|
||||
// console.log(data["assembling-machine"]);
|
||||
// console.log(data.module);
|
||||
// console.log(data.planet);
|
||||
// console.log(data.resource);
|
||||
// console.log(data.generator);
|
||||
// console.log(data["burner-generator"]);
|
||||
// console.log(data.boiler);
|
||||
// console.log(data.quality);
|
||||
// console.log(data["rocket-silo"]);
|
||||
// console.log(data.plant);
|
||||
// console.log(data["mining-drill"]);
|
||||
|
||||
// document.body
|
||||
|
||||
console.log(data.recipe["rocket-silo"]);
|
||||
console.log(data.item["rocket-silo"]);
|
||||
const testRow = document.getElementById("test-row");
|
||||
testRow.appendChild((i = document.createElement("f-item"), i.setAttribute("name", "uranium-processing"), i));
|
||||
testRow.appendChild(FactorioItemElement.new("uranium-235"));
|
||||
testRow.appendChild(FactorioItemElement.new("uranium-238"));
|
||||
testRow.appendChild(FactorioItemElement.new("uranium-fuel-cell"));
|
||||
testRow.appendChild(FactorioItemElement.new("depleted-uranium-fuel-cell"));
|
||||
document.getElementById("test-item").setAttribute("name", "rocket-part");
|
||||
});
|
|
@ -0,0 +1,140 @@
|
|||
$bg: #3F3F3F;
|
||||
$btn: #313131;
|
||||
$btn-hov: #e39827;
|
||||
$btn-act: #DB7900;
|
||||
$inp: #818181;
|
||||
$inp-act: #F0DAB2;
|
||||
$inp-dis: #303030;
|
||||
$inp-dis-col: #818181;
|
||||
$item-shadow-color: #000;
|
||||
$grid-bg: #242324;
|
||||
$shadow-offset: 2px;
|
||||
$shadow-blur: 2px;
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
/* margin: 0;*/
|
||||
background: $bg;
|
||||
font-family: "Titillium Web", sans-serif;
|
||||
color: #ffffffee;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
button {
|
||||
all: unset;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
padding: 2px;
|
||||
background-image: url("assets/item-button-9pr.png");
|
||||
background-repeat: no-repeat;
|
||||
background-origin: padding-box;
|
||||
background-position: center center;
|
||||
background-size: contain;
|
||||
//border-image-
|
||||
//background: $btn;
|
||||
//box-shadow:
|
||||
// 0 ( $shadow-offset) $shadow-blur #454545 inset,
|
||||
// 0 (-$shadow-offset) $shadow-blur #191919 inset,
|
||||
// ( $shadow-offset) 0 $shadow-blur #212121 inset,
|
||||
// (-$shadow-offset) 0 $shadow-blur #212121 inset;
|
||||
//border-radius: 4px;
|
||||
|
||||
&:hover {
|
||||
background-image: url("assets/item-button-hover.png");
|
||||
// box-shadow:
|
||||
// 0 ( $shadow-offset) $shadow-blur #454545 inset,
|
||||
// 0 (-$shadow-offset) $shadow-blur #191919 inset,
|
||||
// ( $shadow-offset) 0 $shadow-blur #212121 inset,
|
||||
// (-$shadow-offset) 0 $shadow-blur #212121 inset,
|
||||
// 0 0 5px #888 inset;
|
||||
// background: $btn-hov;
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-image: url("assets/item-button-pressed.png");
|
||||
// background: $btn-act;
|
||||
// box-shadow:
|
||||
// 0 (-$shadow-offset+1) $shadow-blur #454545 inset,
|
||||
// 0 ( $shadow-offset+1) $shadow-blur #191919 inset,
|
||||
// ( $shadow-offset) 0 $shadow-blur #212121 inset,
|
||||
// (-$shadow-offset) 0 $shadow-blur #212121 inset,
|
||||
// 0 0 5px #111 inset;
|
||||
}
|
||||
|
||||
//&:focus-visible {
|
||||
// outline: 2px solid white;
|
||||
//}
|
||||
|
||||
f-item & {
|
||||
padding: 3px;
|
||||
margin: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
f-item img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
object-position: 0 0;
|
||||
filter: drop-shadow(0 0 4px $item-shadow-color);
|
||||
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
vertical-align: middle;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
f-grid {
|
||||
display: block;
|
||||
max-width: 400px;
|
||||
//background: $grid-bg;
|
||||
background-image: url("assets/empty-square-76x76.png");
|
||||
background-repeat: repeat;
|
||||
background-size: 40px 40px;
|
||||
f-row {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
input {
|
||||
all: unset;
|
||||
display: inline-block;
|
||||
background: $inp;
|
||||
padding: 2px;
|
||||
height: 32px;
|
||||
width: 64px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
color: black;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
box-shadow:
|
||||
0 (-$shadow-offset) $shadow-blur #454545 inset,
|
||||
0 ( $shadow-offset) $shadow-blur #191919 inset,
|
||||
( $shadow-offset) 0 $shadow-blur #212121 inset,
|
||||
(-$shadow-offset) 0 $shadow-blur #212121 inset;
|
||||
border-radius: 4px;
|
||||
|
||||
&::selection {
|
||||
background: $btn-hov;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
background: $inp-act;
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
background: $inp-dis;
|
||||
color: $inp-dis-col;
|
||||
}
|
||||
}
|
||||
|
||||
.spacer {
|
||||
display: inline-block;
|
||||
content: "";
|
||||
width: 32px;
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
const { LuaFactory } = require('wasmoon');
|
||||
|
||||
const main = async () => {
|
||||
const luaFactory = new LuaFactory();
|
||||
const lua = await luaFactory.createEngine({ enableProxy: false });
|
||||
|
||||
lua.global.set("data", { a: 1, b: 2 });
|
||||
await lua.doString("print(11, data.a)").catch(console.error);
|
||||
await lua.doString("print(12, pairs(data))").catch(console.error);
|
||||
|
||||
lua.global.set("getData", () => ({ a: 1, b: 2 }));
|
||||
await lua.doString("data = getData()");
|
||||
await lua.doString("print(21, data.a)").catch(console.error);
|
||||
await lua.doString("print(22, pairs(data))").catch(console.error);
|
||||
|
||||
lua.global.set("data", { data: { a: 1, b: 2 } });
|
||||
await lua.doString("data = data.data");
|
||||
await lua.doString("print(31, data.a)").catch(console.error);
|
||||
await lua.doString("print(32, pairs(data))").catch(console.error);
|
||||
|
||||
await lua.doString("data = { a = 1, b = 2 }");
|
||||
await lua.doString("print(41, data.a)").catch(console.error);
|
||||
await lua.doString("print(42, pairs(data))").catch(console.error);
|
||||
};
|
||||
|
||||
main().catch(console.error);
|
183
yarn.lock
183
yarn.lock
|
@ -2,6 +2,95 @@
|
|||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@parcel/watcher-android-arm64@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a"
|
||||
integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==
|
||||
|
||||
"@parcel/watcher-darwin-arm64@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f"
|
||||
integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==
|
||||
|
||||
"@parcel/watcher-darwin-x64@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb"
|
||||
integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==
|
||||
|
||||
"@parcel/watcher-freebsd-x64@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82"
|
||||
integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==
|
||||
|
||||
"@parcel/watcher-linux-arm-glibc@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42"
|
||||
integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==
|
||||
|
||||
"@parcel/watcher-linux-arm-musl@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4"
|
||||
integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==
|
||||
|
||||
"@parcel/watcher-linux-arm64-glibc@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03"
|
||||
integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==
|
||||
|
||||
"@parcel/watcher-linux-arm64-musl@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732"
|
||||
integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==
|
||||
|
||||
"@parcel/watcher-linux-x64-glibc@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d"
|
||||
integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==
|
||||
|
||||
"@parcel/watcher-linux-x64-musl@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef"
|
||||
integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==
|
||||
|
||||
"@parcel/watcher-win32-arm64@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154"
|
||||
integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==
|
||||
|
||||
"@parcel/watcher-win32-ia32@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220"
|
||||
integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==
|
||||
|
||||
"@parcel/watcher-win32-x64@2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7"
|
||||
integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==
|
||||
|
||||
"@parcel/watcher@^2.4.1":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10"
|
||||
integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==
|
||||
dependencies:
|
||||
detect-libc "^1.0.3"
|
||||
is-glob "^4.0.3"
|
||||
micromatch "^4.0.5"
|
||||
node-addon-api "^7.0.0"
|
||||
optionalDependencies:
|
||||
"@parcel/watcher-android-arm64" "2.5.0"
|
||||
"@parcel/watcher-darwin-arm64" "2.5.0"
|
||||
"@parcel/watcher-darwin-x64" "2.5.0"
|
||||
"@parcel/watcher-freebsd-x64" "2.5.0"
|
||||
"@parcel/watcher-linux-arm-glibc" "2.5.0"
|
||||
"@parcel/watcher-linux-arm-musl" "2.5.0"
|
||||
"@parcel/watcher-linux-arm64-glibc" "2.5.0"
|
||||
"@parcel/watcher-linux-arm64-musl" "2.5.0"
|
||||
"@parcel/watcher-linux-x64-glibc" "2.5.0"
|
||||
"@parcel/watcher-linux-x64-musl" "2.5.0"
|
||||
"@parcel/watcher-win32-arm64" "2.5.0"
|
||||
"@parcel/watcher-win32-ia32" "2.5.0"
|
||||
"@parcel/watcher-win32-x64" "2.5.0"
|
||||
|
||||
"@types/emscripten@1.39.10":
|
||||
version "1.39.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.10.tgz#da6e58a6171b46a41d3694f812d845d515c77e18"
|
||||
|
@ -36,6 +125,13 @@ body-parser@^2.0.1:
|
|||
raw-body "^3.0.0"
|
||||
type-is "~1.6.18"
|
||||
|
||||
braces@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
|
||||
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
|
||||
dependencies:
|
||||
fill-range "^7.1.1"
|
||||
|
||||
bytes@3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
|
||||
|
@ -57,6 +153,13 @@ call-bound@^1.0.2:
|
|||
call-bind-apply-helpers "^1.0.1"
|
||||
get-intrinsic "^1.2.6"
|
||||
|
||||
chokidar@^4.0.0:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30"
|
||||
integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
|
||||
dependencies:
|
||||
readdirp "^4.0.1"
|
||||
|
||||
content-disposition@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.0.0.tgz#844426cb398f934caefcbb172200126bc7ceace2"
|
||||
|
@ -117,6 +220,11 @@ destroy@1.2.0, destroy@^1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
||||
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
||||
|
||||
detect-libc@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||
integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
|
||||
|
||||
dunder-proto@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
|
||||
|
@ -206,6 +314,13 @@ express@^5.0.1:
|
|||
utils-merge "1.0.1"
|
||||
vary "~1.1.2"
|
||||
|
||||
fill-range@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
|
||||
integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
|
||||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
finalhandler@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.0.0.tgz#9d3c79156dfa798069db7de7dd53bc37546f564b"
|
||||
|
@ -297,6 +412,11 @@ iconv-lite@0.6.3:
|
|||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3.0.0"
|
||||
|
||||
immutable@^5.0.2:
|
||||
version "5.0.3"
|
||||
resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.3.tgz#aa037e2313ea7b5d400cd9298fa14e404c933db1"
|
||||
integrity sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==
|
||||
|
||||
inherits@2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
|
@ -307,6 +427,23 @@ ipaddr.js@1.9.1:
|
|||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
|
||||
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
||||
|
||||
is-extglob@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
||||
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
|
||||
|
||||
is-glob@^4.0.3:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
|
||||
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
|
||||
dependencies:
|
||||
is-extglob "^2.1.1"
|
||||
|
||||
is-number@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||
|
||||
is-promise@4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3"
|
||||
|
@ -337,6 +474,14 @@ methods@~1.1.2:
|
|||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
|
||||
|
||||
micromatch@^4.0.5:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
|
||||
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
|
||||
dependencies:
|
||||
braces "^3.0.3"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
mime-db@1.52.0:
|
||||
version "1.52.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
|
||||
|
@ -381,6 +526,11 @@ negotiator@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a"
|
||||
integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==
|
||||
|
||||
node-addon-api@^7.0.0:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
|
||||
integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
|
||||
|
||||
object-inspect@^1.13.3:
|
||||
version "1.13.3"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a"
|
||||
|
@ -410,6 +560,11 @@ path-to-regexp@^8.0.0:
|
|||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4"
|
||||
integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==
|
||||
|
||||
picomatch@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
proxy-addr@~2.0.7:
|
||||
version "2.0.7"
|
||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
|
||||
|
@ -440,6 +595,11 @@ raw-body@^3.0.0:
|
|||
iconv-lite "0.6.3"
|
||||
unpipe "1.0.0"
|
||||
|
||||
readdirp@^4.0.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.1.tgz#bd115327129672dc47f87408f05df9bd9ca3ef55"
|
||||
integrity sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==
|
||||
|
||||
router@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/router/-/router-2.0.0.tgz#8692720b95de83876870d7bc638dd3c7e1ae8a27"
|
||||
|
@ -463,6 +623,17 @@ safe-buffer@5.2.1:
|
|||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sass@^1.83.1:
|
||||
version "1.83.1"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.83.1.tgz#dee1ab94b47a6f9993d3195d36f556bcbda64846"
|
||||
integrity sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==
|
||||
dependencies:
|
||||
chokidar "^4.0.0"
|
||||
immutable "^5.0.2"
|
||||
source-map-js ">=0.6.2 <2.0.0"
|
||||
optionalDependencies:
|
||||
"@parcel/watcher" "^2.4.1"
|
||||
|
||||
send@^1.0.0, send@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/send/-/send-1.1.0.tgz#4efe6ff3bb2139b0e5b2648d8b18d4dec48fc9c5"
|
||||
|
@ -536,11 +707,23 @@ side-channel@^1.0.6:
|
|||
side-channel-map "^1.0.1"
|
||||
side-channel-weakmap "^1.0.2"
|
||||
|
||||
"source-map-js@>=0.6.2 <2.0.0":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
|
||||
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
|
||||
|
||||
statuses@2.0.1, statuses@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
|
||||
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
|
||||
|
||||
to-regex-range@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
|
||||
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
|
||||
dependencies:
|
||||
is-number "^7.0.0"
|
||||
|
||||
toidentifier@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
|
||||
|
|
Loading…
Reference in New Issue