feat: added gamedev
This commit is contained in:
@@ -21,7 +21,7 @@ export const options = {
|
|||||||
app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.png\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"stylesheet\" href=\"src/style.css\"\n " + head + "\n </head>\n <body id=\"background\" data-sveltekit-preload-data=\"hover\">\n <div class=\"background\">" + body + "</div>\n </body>\n</html>\n\n",
|
app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.png\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"stylesheet\" href=\"src/style.css\"\n " + head + "\n </head>\n <body id=\"background\" data-sveltekit-preload-data=\"hover\">\n <div class=\"background\">" + body + "</div>\n </body>\n</html>\n\n",
|
||||||
error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
|
error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
|
||||||
},
|
},
|
||||||
version_hash: "2x21hb"
|
version_hash: "fxalwd"
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function get_hooks() {
|
export async function get_hooks() {
|
||||||
|
|||||||
48
node_modules/.vite/deps/_metadata.json
generated
vendored
48
node_modules/.vite/deps/_metadata.json
generated
vendored
@@ -2,24 +2,24 @@
|
|||||||
"hash": "59b8483d",
|
"hash": "59b8483d",
|
||||||
"configHash": "128179c4",
|
"configHash": "128179c4",
|
||||||
"lockfileHash": "a4492988",
|
"lockfileHash": "a4492988",
|
||||||
"browserHash": "5274aa10",
|
"browserHash": "ccebbd50",
|
||||||
"optimized": {
|
"optimized": {
|
||||||
"svelte": {
|
"svelte": {
|
||||||
"src": "../../svelte/src/index-client.js",
|
"src": "../../svelte/src/index-client.js",
|
||||||
"file": "svelte.js",
|
"file": "svelte.js",
|
||||||
"fileHash": "30edb4ea",
|
"fileHash": "7e88f53b",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/animate": {
|
"svelte/animate": {
|
||||||
"src": "../../svelte/src/animate/index.js",
|
"src": "../../svelte/src/animate/index.js",
|
||||||
"file": "svelte_animate.js",
|
"file": "svelte_animate.js",
|
||||||
"fileHash": "efe49e75",
|
"fileHash": "e0aef126",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/easing": {
|
"svelte/easing": {
|
||||||
"src": "../../svelte/src/easing/index.js",
|
"src": "../../svelte/src/easing/index.js",
|
||||||
"file": "svelte_easing.js",
|
"file": "svelte_easing.js",
|
||||||
"fileHash": "6aef75b7",
|
"fileHash": "48603420",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/internal": {
|
"svelte/internal": {
|
||||||
@@ -31,73 +31,79 @@
|
|||||||
"svelte/internal/client": {
|
"svelte/internal/client": {
|
||||||
"src": "../../svelte/src/internal/client/index.js",
|
"src": "../../svelte/src/internal/client/index.js",
|
||||||
"file": "svelte_internal_client.js",
|
"file": "svelte_internal_client.js",
|
||||||
"fileHash": "d94966ec",
|
"fileHash": "7ef89f43",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/internal/disclose-version": {
|
"svelte/internal/disclose-version": {
|
||||||
"src": "../../svelte/src/internal/disclose-version.js",
|
"src": "../../svelte/src/internal/disclose-version.js",
|
||||||
"file": "svelte_internal_disclose-version.js",
|
"file": "svelte_internal_disclose-version.js",
|
||||||
"fileHash": "63eecaea",
|
"fileHash": "3762321e",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/internal/flags/legacy": {
|
"svelte/internal/flags/legacy": {
|
||||||
"src": "../../svelte/src/internal/flags/legacy.js",
|
"src": "../../svelte/src/internal/flags/legacy.js",
|
||||||
"file": "svelte_internal_flags_legacy.js",
|
"file": "svelte_internal_flags_legacy.js",
|
||||||
"fileHash": "93c2442d",
|
"fileHash": "23f9f177",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/internal/flags/tracing": {
|
"svelte/internal/flags/tracing": {
|
||||||
"src": "../../svelte/src/internal/flags/tracing.js",
|
"src": "../../svelte/src/internal/flags/tracing.js",
|
||||||
"file": "svelte_internal_flags_tracing.js",
|
"file": "svelte_internal_flags_tracing.js",
|
||||||
"fileHash": "e66f93f2",
|
"fileHash": "543c3929",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/legacy": {
|
"svelte/legacy": {
|
||||||
"src": "../../svelte/src/legacy/legacy-client.js",
|
"src": "../../svelte/src/legacy/legacy-client.js",
|
||||||
"file": "svelte_legacy.js",
|
"file": "svelte_legacy.js",
|
||||||
"fileHash": "e1a27bb6",
|
"fileHash": "fef1e3b8",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/motion": {
|
"svelte/motion": {
|
||||||
"src": "../../svelte/src/motion/index.js",
|
"src": "../../svelte/src/motion/index.js",
|
||||||
"file": "svelte_motion.js",
|
"file": "svelte_motion.js",
|
||||||
"fileHash": "1d8e2fab",
|
"fileHash": "0eb7fefe",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/reactivity": {
|
"svelte/reactivity": {
|
||||||
"src": "../../svelte/src/reactivity/index-client.js",
|
"src": "../../svelte/src/reactivity/index-client.js",
|
||||||
"file": "svelte_reactivity.js",
|
"file": "svelte_reactivity.js",
|
||||||
"fileHash": "77d9e53c",
|
"fileHash": "ff2358ad",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/reactivity/window": {
|
"svelte/reactivity/window": {
|
||||||
"src": "../../svelte/src/reactivity/window/index.js",
|
"src": "../../svelte/src/reactivity/window/index.js",
|
||||||
"file": "svelte_reactivity_window.js",
|
"file": "svelte_reactivity_window.js",
|
||||||
"fileHash": "a6e0d036",
|
"fileHash": "9eebd751",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/store": {
|
"svelte/store": {
|
||||||
"src": "../../svelte/src/store/index-client.js",
|
"src": "../../svelte/src/store/index-client.js",
|
||||||
"file": "svelte_store.js",
|
"file": "svelte_store.js",
|
||||||
"fileHash": "34081923",
|
"fileHash": "3830be79",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/transition": {
|
"svelte/transition": {
|
||||||
"src": "../../svelte/src/transition/index.js",
|
"src": "../../svelte/src/transition/index.js",
|
||||||
"file": "svelte_transition.js",
|
"file": "svelte_transition.js",
|
||||||
"fileHash": "98c02919",
|
"fileHash": "451a25c5",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"svelte/events": {
|
"svelte/events": {
|
||||||
"src": "../../svelte/src/events/index.js",
|
"src": "../../svelte/src/events/index.js",
|
||||||
"file": "svelte_events.js",
|
"file": "svelte_events.js",
|
||||||
"fileHash": "dd3ffcda",
|
"fileHash": "0566e234",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"clsx": {
|
"clsx": {
|
||||||
"src": "../../clsx/dist/clsx.mjs",
|
"src": "../../clsx/dist/clsx.mjs",
|
||||||
"file": "clsx.js",
|
"file": "clsx.js",
|
||||||
"fileHash": "de0643ec",
|
"fileHash": "029a0cae",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"devalue": {
|
||||||
|
"src": "../../devalue/index.js",
|
||||||
|
"file": "devalue.js",
|
||||||
|
"fileHash": "af3a9384",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -117,8 +123,11 @@
|
|||||||
"chunk-YERFD2CZ": {
|
"chunk-YERFD2CZ": {
|
||||||
"file": "chunk-YERFD2CZ.js"
|
"file": "chunk-YERFD2CZ.js"
|
||||||
},
|
},
|
||||||
"chunk-D2CNISQR": {
|
"chunk-X4Y3PAQF": {
|
||||||
"file": "chunk-D2CNISQR.js"
|
"file": "chunk-X4Y3PAQF.js"
|
||||||
|
},
|
||||||
|
"chunk-U7P2NEEE": {
|
||||||
|
"file": "chunk-U7P2NEEE.js"
|
||||||
},
|
},
|
||||||
"chunk-YGTFLEU5": {
|
"chunk-YGTFLEU5": {
|
||||||
"file": "chunk-YGTFLEU5.js"
|
"file": "chunk-YGTFLEU5.js"
|
||||||
@@ -129,9 +138,6 @@
|
|||||||
"chunk-X4XZK27Q": {
|
"chunk-X4XZK27Q": {
|
||||||
"file": "chunk-X4XZK27Q.js"
|
"file": "chunk-X4XZK27Q.js"
|
||||||
},
|
},
|
||||||
"chunk-U7P2NEEE": {
|
|
||||||
"file": "chunk-U7P2NEEE.js"
|
|
||||||
},
|
|
||||||
"chunk-RVAV4ZRS": {
|
"chunk-RVAV4ZRS": {
|
||||||
"file": "chunk-RVAV4ZRS.js"
|
"file": "chunk-RVAV4ZRS.js"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import {
|
||||||
|
clsx
|
||||||
|
} from "./chunk-U7P2NEEE.js";
|
||||||
import {
|
import {
|
||||||
append,
|
append,
|
||||||
assign_nodes,
|
assign_nodes,
|
||||||
@@ -147,9 +150,6 @@ import {
|
|||||||
invalid_raw_snippet_render,
|
invalid_raw_snippet_render,
|
||||||
true_default
|
true_default
|
||||||
} from "./chunk-X4XZK27Q.js";
|
} from "./chunk-X4XZK27Q.js";
|
||||||
import {
|
|
||||||
clsx
|
|
||||||
} from "./chunk-U7P2NEEE.js";
|
|
||||||
import {
|
import {
|
||||||
legacy_mode_flag
|
legacy_mode_flag
|
||||||
} from "./chunk-RVAV4ZRS.js";
|
} from "./chunk-RVAV4ZRS.js";
|
||||||
@@ -3894,4 +3894,4 @@ export {
|
|||||||
afterUpdate,
|
afterUpdate,
|
||||||
flushSync
|
flushSync
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=chunk-D2CNISQR.js.map
|
//# sourceMappingURL=chunk-X4Y3PAQF.js.map
|
||||||
698
node_modules/.vite/deps/devalue.js
generated
vendored
Normal file
698
node_modules/.vite/deps/devalue.js
generated
vendored
Normal file
@@ -0,0 +1,698 @@
|
|||||||
|
import "./chunk-UGBVNEQM.js";
|
||||||
|
|
||||||
|
// node_modules/devalue/src/utils.js
|
||||||
|
var escaped = {
|
||||||
|
"<": "\\u003C",
|
||||||
|
"\\": "\\\\",
|
||||||
|
"\b": "\\b",
|
||||||
|
"\f": "\\f",
|
||||||
|
"\n": "\\n",
|
||||||
|
"\r": "\\r",
|
||||||
|
" ": "\\t",
|
||||||
|
"\u2028": "\\u2028",
|
||||||
|
"\u2029": "\\u2029"
|
||||||
|
};
|
||||||
|
var DevalueError = class extends Error {
|
||||||
|
/**
|
||||||
|
* @param {string} message
|
||||||
|
* @param {string[]} keys
|
||||||
|
*/
|
||||||
|
constructor(message, keys) {
|
||||||
|
super(message);
|
||||||
|
this.name = "DevalueError";
|
||||||
|
this.path = keys.join("");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function is_primitive(thing) {
|
||||||
|
return Object(thing) !== thing;
|
||||||
|
}
|
||||||
|
var object_proto_names = Object.getOwnPropertyNames(
|
||||||
|
Object.prototype
|
||||||
|
).sort().join("\0");
|
||||||
|
function is_plain_object(thing) {
|
||||||
|
const proto = Object.getPrototypeOf(thing);
|
||||||
|
return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join("\0") === object_proto_names;
|
||||||
|
}
|
||||||
|
function get_type(thing) {
|
||||||
|
return Object.prototype.toString.call(thing).slice(8, -1);
|
||||||
|
}
|
||||||
|
function get_escaped_char(char) {
|
||||||
|
switch (char) {
|
||||||
|
case '"':
|
||||||
|
return '\\"';
|
||||||
|
case "<":
|
||||||
|
return "\\u003C";
|
||||||
|
case "\\":
|
||||||
|
return "\\\\";
|
||||||
|
case "\n":
|
||||||
|
return "\\n";
|
||||||
|
case "\r":
|
||||||
|
return "\\r";
|
||||||
|
case " ":
|
||||||
|
return "\\t";
|
||||||
|
case "\b":
|
||||||
|
return "\\b";
|
||||||
|
case "\f":
|
||||||
|
return "\\f";
|
||||||
|
case "\u2028":
|
||||||
|
return "\\u2028";
|
||||||
|
case "\u2029":
|
||||||
|
return "\\u2029";
|
||||||
|
default:
|
||||||
|
return char < " " ? `\\u${char.charCodeAt(0).toString(16).padStart(4, "0")}` : "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function stringify_string(str) {
|
||||||
|
let result = "";
|
||||||
|
let last_pos = 0;
|
||||||
|
const len = str.length;
|
||||||
|
for (let i = 0; i < len; i += 1) {
|
||||||
|
const char = str[i];
|
||||||
|
const replacement = get_escaped_char(char);
|
||||||
|
if (replacement) {
|
||||||
|
result += str.slice(last_pos, i) + replacement;
|
||||||
|
last_pos = i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return `"${last_pos === 0 ? str : result + str.slice(last_pos)}"`;
|
||||||
|
}
|
||||||
|
function enumerable_symbols(object) {
|
||||||
|
return Object.getOwnPropertySymbols(object).filter(
|
||||||
|
(symbol) => Object.getOwnPropertyDescriptor(object, symbol).enumerable
|
||||||
|
);
|
||||||
|
}
|
||||||
|
var is_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
|
||||||
|
function stringify_key(key) {
|
||||||
|
return is_identifier.test(key) ? "." + key : "[" + JSON.stringify(key) + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
// node_modules/devalue/src/uneval.js
|
||||||
|
var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$";
|
||||||
|
var unsafe_chars = /[<\b\f\n\r\t\0\u2028\u2029]/g;
|
||||||
|
var reserved = /^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/;
|
||||||
|
function uneval(value, replacer) {
|
||||||
|
const counts = /* @__PURE__ */ new Map();
|
||||||
|
const keys = [];
|
||||||
|
const custom = /* @__PURE__ */ new Map();
|
||||||
|
function walk(thing) {
|
||||||
|
if (typeof thing === "function") {
|
||||||
|
throw new DevalueError(`Cannot stringify a function`, keys);
|
||||||
|
}
|
||||||
|
if (!is_primitive(thing)) {
|
||||||
|
if (counts.has(thing)) {
|
||||||
|
counts.set(thing, counts.get(thing) + 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
counts.set(thing, 1);
|
||||||
|
if (replacer) {
|
||||||
|
const str2 = replacer(thing);
|
||||||
|
if (typeof str2 === "string") {
|
||||||
|
custom.set(thing, str2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const type = get_type(thing);
|
||||||
|
switch (type) {
|
||||||
|
case "Number":
|
||||||
|
case "BigInt":
|
||||||
|
case "String":
|
||||||
|
case "Boolean":
|
||||||
|
case "Date":
|
||||||
|
case "RegExp":
|
||||||
|
return;
|
||||||
|
case "Array":
|
||||||
|
thing.forEach((value2, i) => {
|
||||||
|
keys.push(`[${i}]`);
|
||||||
|
walk(value2);
|
||||||
|
keys.pop();
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "Set":
|
||||||
|
Array.from(thing).forEach(walk);
|
||||||
|
break;
|
||||||
|
case "Map":
|
||||||
|
for (const [key, value2] of thing) {
|
||||||
|
keys.push(
|
||||||
|
`.get(${is_primitive(key) ? stringify_primitive(key) : "..."})`
|
||||||
|
);
|
||||||
|
walk(value2);
|
||||||
|
keys.pop();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "Int8Array":
|
||||||
|
case "Uint8Array":
|
||||||
|
case "Uint8ClampedArray":
|
||||||
|
case "Int16Array":
|
||||||
|
case "Uint16Array":
|
||||||
|
case "Int32Array":
|
||||||
|
case "Uint32Array":
|
||||||
|
case "Float32Array":
|
||||||
|
case "Float64Array":
|
||||||
|
case "BigInt64Array":
|
||||||
|
case "BigUint64Array":
|
||||||
|
return;
|
||||||
|
case "ArrayBuffer":
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
if (!is_plain_object(thing)) {
|
||||||
|
throw new DevalueError(
|
||||||
|
`Cannot stringify arbitrary non-POJOs`,
|
||||||
|
keys
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (enumerable_symbols(thing).length > 0) {
|
||||||
|
throw new DevalueError(
|
||||||
|
`Cannot stringify POJOs with symbolic keys`,
|
||||||
|
keys
|
||||||
|
);
|
||||||
|
}
|
||||||
|
for (const key in thing) {
|
||||||
|
keys.push(stringify_key(key));
|
||||||
|
walk(thing[key]);
|
||||||
|
keys.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
walk(value);
|
||||||
|
const names = /* @__PURE__ */ new Map();
|
||||||
|
Array.from(counts).filter((entry) => entry[1] > 1).sort((a, b) => b[1] - a[1]).forEach((entry, i) => {
|
||||||
|
names.set(entry[0], get_name(i));
|
||||||
|
});
|
||||||
|
function stringify2(thing) {
|
||||||
|
if (names.has(thing)) {
|
||||||
|
return names.get(thing);
|
||||||
|
}
|
||||||
|
if (is_primitive(thing)) {
|
||||||
|
return stringify_primitive(thing);
|
||||||
|
}
|
||||||
|
if (custom.has(thing)) {
|
||||||
|
return custom.get(thing);
|
||||||
|
}
|
||||||
|
const type = get_type(thing);
|
||||||
|
switch (type) {
|
||||||
|
case "Number":
|
||||||
|
case "String":
|
||||||
|
case "Boolean":
|
||||||
|
return `Object(${stringify2(thing.valueOf())})`;
|
||||||
|
case "RegExp":
|
||||||
|
return `new RegExp(${stringify_string(thing.source)}, "${thing.flags}")`;
|
||||||
|
case "Date":
|
||||||
|
return `new Date(${thing.getTime()})`;
|
||||||
|
case "Array":
|
||||||
|
const members = (
|
||||||
|
/** @type {any[]} */
|
||||||
|
thing.map(
|
||||||
|
(v, i) => i in thing ? stringify2(v) : ""
|
||||||
|
)
|
||||||
|
);
|
||||||
|
const tail = thing.length === 0 || thing.length - 1 in thing ? "" : ",";
|
||||||
|
return `[${members.join(",")}${tail}]`;
|
||||||
|
case "Set":
|
||||||
|
case "Map":
|
||||||
|
return `new ${type}([${Array.from(thing).map(stringify2).join(",")}])`;
|
||||||
|
case "Int8Array":
|
||||||
|
case "Uint8Array":
|
||||||
|
case "Uint8ClampedArray":
|
||||||
|
case "Int16Array":
|
||||||
|
case "Uint16Array":
|
||||||
|
case "Int32Array":
|
||||||
|
case "Uint32Array":
|
||||||
|
case "Float32Array":
|
||||||
|
case "Float64Array":
|
||||||
|
case "BigInt64Array":
|
||||||
|
case "BigUint64Array": {
|
||||||
|
const typedArray = thing;
|
||||||
|
return `new ${type}([${typedArray.toString()}])`;
|
||||||
|
}
|
||||||
|
case "ArrayBuffer": {
|
||||||
|
const ui8 = new Uint8Array(thing);
|
||||||
|
return `new Uint8Array([${ui8.toString()}]).buffer`;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
const obj = `{${Object.keys(thing).map((key) => `${safe_key(key)}:${stringify2(thing[key])}`).join(",")}}`;
|
||||||
|
const proto = Object.getPrototypeOf(thing);
|
||||||
|
if (proto === null) {
|
||||||
|
return Object.keys(thing).length > 0 ? `Object.assign(Object.create(null),${obj})` : `Object.create(null)`;
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const str = stringify2(value);
|
||||||
|
if (names.size) {
|
||||||
|
const params = [];
|
||||||
|
const statements = [];
|
||||||
|
const values = [];
|
||||||
|
names.forEach((name, thing) => {
|
||||||
|
params.push(name);
|
||||||
|
if (custom.has(thing)) {
|
||||||
|
values.push(
|
||||||
|
/** @type {string} */
|
||||||
|
custom.get(thing)
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (is_primitive(thing)) {
|
||||||
|
values.push(stringify_primitive(thing));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const type = get_type(thing);
|
||||||
|
switch (type) {
|
||||||
|
case "Number":
|
||||||
|
case "String":
|
||||||
|
case "Boolean":
|
||||||
|
values.push(`Object(${stringify2(thing.valueOf())})`);
|
||||||
|
break;
|
||||||
|
case "RegExp":
|
||||||
|
values.push(thing.toString());
|
||||||
|
break;
|
||||||
|
case "Date":
|
||||||
|
values.push(`new Date(${thing.getTime()})`);
|
||||||
|
break;
|
||||||
|
case "Array":
|
||||||
|
values.push(`Array(${thing.length})`);
|
||||||
|
thing.forEach((v, i) => {
|
||||||
|
statements.push(`${name}[${i}]=${stringify2(v)}`);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "Set":
|
||||||
|
values.push(`new Set`);
|
||||||
|
statements.push(
|
||||||
|
`${name}.${Array.from(thing).map((v) => `add(${stringify2(v)})`).join(".")}`
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case "Map":
|
||||||
|
values.push(`new Map`);
|
||||||
|
statements.push(
|
||||||
|
`${name}.${Array.from(thing).map(([k, v]) => `set(${stringify2(k)}, ${stringify2(v)})`).join(".")}`
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
values.push(
|
||||||
|
Object.getPrototypeOf(thing) === null ? "Object.create(null)" : "{}"
|
||||||
|
);
|
||||||
|
Object.keys(thing).forEach((key) => {
|
||||||
|
statements.push(
|
||||||
|
`${name}${safe_prop(key)}=${stringify2(thing[key])}`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
statements.push(`return ${str}`);
|
||||||
|
return `(function(${params.join(",")}){${statements.join(
|
||||||
|
";"
|
||||||
|
)}}(${values.join(",")}))`;
|
||||||
|
} else {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function get_name(num) {
|
||||||
|
let name = "";
|
||||||
|
do {
|
||||||
|
name = chars[num % chars.length] + name;
|
||||||
|
num = ~~(num / chars.length) - 1;
|
||||||
|
} while (num >= 0);
|
||||||
|
return reserved.test(name) ? `${name}0` : name;
|
||||||
|
}
|
||||||
|
function escape_unsafe_char(c) {
|
||||||
|
return escaped[c] || c;
|
||||||
|
}
|
||||||
|
function escape_unsafe_chars(str) {
|
||||||
|
return str.replace(unsafe_chars, escape_unsafe_char);
|
||||||
|
}
|
||||||
|
function safe_key(key) {
|
||||||
|
return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? key : escape_unsafe_chars(JSON.stringify(key));
|
||||||
|
}
|
||||||
|
function safe_prop(key) {
|
||||||
|
return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? `.${key}` : `[${escape_unsafe_chars(JSON.stringify(key))}]`;
|
||||||
|
}
|
||||||
|
function stringify_primitive(thing) {
|
||||||
|
if (typeof thing === "string") return stringify_string(thing);
|
||||||
|
if (thing === void 0) return "void 0";
|
||||||
|
if (thing === 0 && 1 / thing < 0) return "-0";
|
||||||
|
const str = String(thing);
|
||||||
|
if (typeof thing === "number") return str.replace(/^(-)?0\./, "$1.");
|
||||||
|
if (typeof thing === "bigint") return thing + "n";
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
// node_modules/devalue/src/base64.js
|
||||||
|
function encode64(arraybuffer) {
|
||||||
|
const dv = new DataView(arraybuffer);
|
||||||
|
let binaryString = "";
|
||||||
|
for (let i = 0; i < arraybuffer.byteLength; i++) {
|
||||||
|
binaryString += String.fromCharCode(dv.getUint8(i));
|
||||||
|
}
|
||||||
|
return binaryToAscii(binaryString);
|
||||||
|
}
|
||||||
|
function decode64(string) {
|
||||||
|
const binaryString = asciiToBinary(string);
|
||||||
|
const arraybuffer = new ArrayBuffer(binaryString.length);
|
||||||
|
const dv = new DataView(arraybuffer);
|
||||||
|
for (let i = 0; i < arraybuffer.byteLength; i++) {
|
||||||
|
dv.setUint8(i, binaryString.charCodeAt(i));
|
||||||
|
}
|
||||||
|
return arraybuffer;
|
||||||
|
}
|
||||||
|
var KEY_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||||
|
function asciiToBinary(data) {
|
||||||
|
if (data.length % 4 === 0) {
|
||||||
|
data = data.replace(/==?$/, "");
|
||||||
|
}
|
||||||
|
let output = "";
|
||||||
|
let buffer = 0;
|
||||||
|
let accumulatedBits = 0;
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
buffer <<= 6;
|
||||||
|
buffer |= KEY_STRING.indexOf(data[i]);
|
||||||
|
accumulatedBits += 6;
|
||||||
|
if (accumulatedBits === 24) {
|
||||||
|
output += String.fromCharCode((buffer & 16711680) >> 16);
|
||||||
|
output += String.fromCharCode((buffer & 65280) >> 8);
|
||||||
|
output += String.fromCharCode(buffer & 255);
|
||||||
|
buffer = accumulatedBits = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (accumulatedBits === 12) {
|
||||||
|
buffer >>= 4;
|
||||||
|
output += String.fromCharCode(buffer);
|
||||||
|
} else if (accumulatedBits === 18) {
|
||||||
|
buffer >>= 2;
|
||||||
|
output += String.fromCharCode((buffer & 65280) >> 8);
|
||||||
|
output += String.fromCharCode(buffer & 255);
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
function binaryToAscii(str) {
|
||||||
|
let out = "";
|
||||||
|
for (let i = 0; i < str.length; i += 3) {
|
||||||
|
const groupsOfSix = [void 0, void 0, void 0, void 0];
|
||||||
|
groupsOfSix[0] = str.charCodeAt(i) >> 2;
|
||||||
|
groupsOfSix[1] = (str.charCodeAt(i) & 3) << 4;
|
||||||
|
if (str.length > i + 1) {
|
||||||
|
groupsOfSix[1] |= str.charCodeAt(i + 1) >> 4;
|
||||||
|
groupsOfSix[2] = (str.charCodeAt(i + 1) & 15) << 2;
|
||||||
|
}
|
||||||
|
if (str.length > i + 2) {
|
||||||
|
groupsOfSix[2] |= str.charCodeAt(i + 2) >> 6;
|
||||||
|
groupsOfSix[3] = str.charCodeAt(i + 2) & 63;
|
||||||
|
}
|
||||||
|
for (let j = 0; j < groupsOfSix.length; j++) {
|
||||||
|
if (typeof groupsOfSix[j] === "undefined") {
|
||||||
|
out += "=";
|
||||||
|
} else {
|
||||||
|
out += KEY_STRING[groupsOfSix[j]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
// node_modules/devalue/src/constants.js
|
||||||
|
var UNDEFINED = -1;
|
||||||
|
var HOLE = -2;
|
||||||
|
var NAN = -3;
|
||||||
|
var POSITIVE_INFINITY = -4;
|
||||||
|
var NEGATIVE_INFINITY = -5;
|
||||||
|
var NEGATIVE_ZERO = -6;
|
||||||
|
|
||||||
|
// node_modules/devalue/src/parse.js
|
||||||
|
function parse(serialized, revivers) {
|
||||||
|
return unflatten(JSON.parse(serialized), revivers);
|
||||||
|
}
|
||||||
|
function unflatten(parsed, revivers) {
|
||||||
|
if (typeof parsed === "number") return hydrate(parsed, true);
|
||||||
|
if (!Array.isArray(parsed) || parsed.length === 0) {
|
||||||
|
throw new Error("Invalid input");
|
||||||
|
}
|
||||||
|
const values = (
|
||||||
|
/** @type {any[]} */
|
||||||
|
parsed
|
||||||
|
);
|
||||||
|
const hydrated = Array(values.length);
|
||||||
|
function hydrate(index, standalone = false) {
|
||||||
|
if (index === UNDEFINED) return void 0;
|
||||||
|
if (index === NAN) return NaN;
|
||||||
|
if (index === POSITIVE_INFINITY) return Infinity;
|
||||||
|
if (index === NEGATIVE_INFINITY) return -Infinity;
|
||||||
|
if (index === NEGATIVE_ZERO) return -0;
|
||||||
|
if (standalone) throw new Error(`Invalid input`);
|
||||||
|
if (index in hydrated) return hydrated[index];
|
||||||
|
const value = values[index];
|
||||||
|
if (!value || typeof value !== "object") {
|
||||||
|
hydrated[index] = value;
|
||||||
|
} else if (Array.isArray(value)) {
|
||||||
|
if (typeof value[0] === "string") {
|
||||||
|
const type = value[0];
|
||||||
|
const reviver = revivers == null ? void 0 : revivers[type];
|
||||||
|
if (reviver) {
|
||||||
|
return hydrated[index] = reviver(hydrate(value[1]));
|
||||||
|
}
|
||||||
|
switch (type) {
|
||||||
|
case "Date":
|
||||||
|
hydrated[index] = new Date(value[1]);
|
||||||
|
break;
|
||||||
|
case "Set":
|
||||||
|
const set = /* @__PURE__ */ new Set();
|
||||||
|
hydrated[index] = set;
|
||||||
|
for (let i = 1; i < value.length; i += 1) {
|
||||||
|
set.add(hydrate(value[i]));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "Map":
|
||||||
|
const map = /* @__PURE__ */ new Map();
|
||||||
|
hydrated[index] = map;
|
||||||
|
for (let i = 1; i < value.length; i += 2) {
|
||||||
|
map.set(hydrate(value[i]), hydrate(value[i + 1]));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "RegExp":
|
||||||
|
hydrated[index] = new RegExp(value[1], value[2]);
|
||||||
|
break;
|
||||||
|
case "Object":
|
||||||
|
hydrated[index] = Object(value[1]);
|
||||||
|
break;
|
||||||
|
case "BigInt":
|
||||||
|
hydrated[index] = BigInt(value[1]);
|
||||||
|
break;
|
||||||
|
case "null":
|
||||||
|
const obj = /* @__PURE__ */ Object.create(null);
|
||||||
|
hydrated[index] = obj;
|
||||||
|
for (let i = 1; i < value.length; i += 2) {
|
||||||
|
obj[value[i]] = hydrate(value[i + 1]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "Int8Array":
|
||||||
|
case "Uint8Array":
|
||||||
|
case "Uint8ClampedArray":
|
||||||
|
case "Int16Array":
|
||||||
|
case "Uint16Array":
|
||||||
|
case "Int32Array":
|
||||||
|
case "Uint32Array":
|
||||||
|
case "Float32Array":
|
||||||
|
case "Float64Array":
|
||||||
|
case "BigInt64Array":
|
||||||
|
case "BigUint64Array": {
|
||||||
|
const TypedArrayConstructor = globalThis[type];
|
||||||
|
const base64 = value[1];
|
||||||
|
const arraybuffer = decode64(base64);
|
||||||
|
const typedArray = new TypedArrayConstructor(arraybuffer);
|
||||||
|
hydrated[index] = typedArray;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "ArrayBuffer": {
|
||||||
|
const base64 = value[1];
|
||||||
|
const arraybuffer = decode64(base64);
|
||||||
|
hydrated[index] = arraybuffer;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
throw new Error(`Unknown type ${type}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const array = new Array(value.length);
|
||||||
|
hydrated[index] = array;
|
||||||
|
for (let i = 0; i < value.length; i += 1) {
|
||||||
|
const n = value[i];
|
||||||
|
if (n === HOLE) continue;
|
||||||
|
array[i] = hydrate(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const object = {};
|
||||||
|
hydrated[index] = object;
|
||||||
|
for (const key in value) {
|
||||||
|
const n = value[key];
|
||||||
|
object[key] = hydrate(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return hydrated[index];
|
||||||
|
}
|
||||||
|
return hydrate(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// node_modules/devalue/src/stringify.js
|
||||||
|
function stringify(value, reducers) {
|
||||||
|
const stringified = [];
|
||||||
|
const indexes = /* @__PURE__ */ new Map();
|
||||||
|
const custom = [];
|
||||||
|
if (reducers) {
|
||||||
|
for (const key of Object.getOwnPropertyNames(reducers)) {
|
||||||
|
custom.push({ key, fn: reducers[key] });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const keys = [];
|
||||||
|
let p = 0;
|
||||||
|
function flatten(thing) {
|
||||||
|
if (typeof thing === "function") {
|
||||||
|
throw new DevalueError(`Cannot stringify a function`, keys);
|
||||||
|
}
|
||||||
|
if (indexes.has(thing)) return indexes.get(thing);
|
||||||
|
if (thing === void 0) return UNDEFINED;
|
||||||
|
if (Number.isNaN(thing)) return NAN;
|
||||||
|
if (thing === Infinity) return POSITIVE_INFINITY;
|
||||||
|
if (thing === -Infinity) return NEGATIVE_INFINITY;
|
||||||
|
if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO;
|
||||||
|
const index2 = p++;
|
||||||
|
indexes.set(thing, index2);
|
||||||
|
for (const { key, fn } of custom) {
|
||||||
|
const value2 = fn(thing);
|
||||||
|
if (value2) {
|
||||||
|
stringified[index2] = `["${key}",${flatten(value2)}]`;
|
||||||
|
return index2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let str = "";
|
||||||
|
if (is_primitive(thing)) {
|
||||||
|
str = stringify_primitive2(thing);
|
||||||
|
} else {
|
||||||
|
const type = get_type(thing);
|
||||||
|
switch (type) {
|
||||||
|
case "Number":
|
||||||
|
case "String":
|
||||||
|
case "Boolean":
|
||||||
|
str = `["Object",${stringify_primitive2(thing)}]`;
|
||||||
|
break;
|
||||||
|
case "BigInt":
|
||||||
|
str = `["BigInt",${thing}]`;
|
||||||
|
break;
|
||||||
|
case "Date":
|
||||||
|
const valid = !isNaN(thing.getDate());
|
||||||
|
str = `["Date","${valid ? thing.toISOString() : ""}"]`;
|
||||||
|
break;
|
||||||
|
case "RegExp":
|
||||||
|
const { source, flags } = thing;
|
||||||
|
str = flags ? `["RegExp",${stringify_string(source)},"${flags}"]` : `["RegExp",${stringify_string(source)}]`;
|
||||||
|
break;
|
||||||
|
case "Array":
|
||||||
|
str = "[";
|
||||||
|
for (let i = 0; i < thing.length; i += 1) {
|
||||||
|
if (i > 0) str += ",";
|
||||||
|
if (i in thing) {
|
||||||
|
keys.push(`[${i}]`);
|
||||||
|
str += flatten(thing[i]);
|
||||||
|
keys.pop();
|
||||||
|
} else {
|
||||||
|
str += HOLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
str += "]";
|
||||||
|
break;
|
||||||
|
case "Set":
|
||||||
|
str = '["Set"';
|
||||||
|
for (const value2 of thing) {
|
||||||
|
str += `,${flatten(value2)}`;
|
||||||
|
}
|
||||||
|
str += "]";
|
||||||
|
break;
|
||||||
|
case "Map":
|
||||||
|
str = '["Map"';
|
||||||
|
for (const [key, value2] of thing) {
|
||||||
|
keys.push(
|
||||||
|
`.get(${is_primitive(key) ? stringify_primitive2(key) : "..."})`
|
||||||
|
);
|
||||||
|
str += `,${flatten(key)},${flatten(value2)}`;
|
||||||
|
keys.pop();
|
||||||
|
}
|
||||||
|
str += "]";
|
||||||
|
break;
|
||||||
|
case "Int8Array":
|
||||||
|
case "Uint8Array":
|
||||||
|
case "Uint8ClampedArray":
|
||||||
|
case "Int16Array":
|
||||||
|
case "Uint16Array":
|
||||||
|
case "Int32Array":
|
||||||
|
case "Uint32Array":
|
||||||
|
case "Float32Array":
|
||||||
|
case "Float64Array":
|
||||||
|
case "BigInt64Array":
|
||||||
|
case "BigUint64Array": {
|
||||||
|
const typedArray = thing;
|
||||||
|
const base64 = encode64(typedArray.buffer);
|
||||||
|
str = '["' + type + '","' + base64 + '"]';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "ArrayBuffer": {
|
||||||
|
const arraybuffer = thing;
|
||||||
|
const base64 = encode64(arraybuffer);
|
||||||
|
str = `["ArrayBuffer","${base64}"]`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
if (!is_plain_object(thing)) {
|
||||||
|
throw new DevalueError(
|
||||||
|
`Cannot stringify arbitrary non-POJOs`,
|
||||||
|
keys
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (enumerable_symbols(thing).length > 0) {
|
||||||
|
throw new DevalueError(
|
||||||
|
`Cannot stringify POJOs with symbolic keys`,
|
||||||
|
keys
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (Object.getPrototypeOf(thing) === null) {
|
||||||
|
str = '["null"';
|
||||||
|
for (const key in thing) {
|
||||||
|
keys.push(stringify_key(key));
|
||||||
|
str += `,${stringify_string(key)},${flatten(thing[key])}`;
|
||||||
|
keys.pop();
|
||||||
|
}
|
||||||
|
str += "]";
|
||||||
|
} else {
|
||||||
|
str = "{";
|
||||||
|
let started = false;
|
||||||
|
for (const key in thing) {
|
||||||
|
if (started) str += ",";
|
||||||
|
started = true;
|
||||||
|
keys.push(stringify_key(key));
|
||||||
|
str += `${stringify_string(key)}:${flatten(thing[key])}`;
|
||||||
|
keys.pop();
|
||||||
|
}
|
||||||
|
str += "}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stringified[index2] = str;
|
||||||
|
return index2;
|
||||||
|
}
|
||||||
|
const index = flatten(value);
|
||||||
|
if (index < 0) return `${index}`;
|
||||||
|
return `[${stringified.join(",")}]`;
|
||||||
|
}
|
||||||
|
function stringify_primitive2(thing) {
|
||||||
|
const type = typeof thing;
|
||||||
|
if (type === "string") return stringify_string(thing);
|
||||||
|
if (thing instanceof String) return stringify_string(thing.toString());
|
||||||
|
if (thing === void 0) return UNDEFINED.toString();
|
||||||
|
if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO.toString();
|
||||||
|
if (type === "bigint") return `["BigInt","${thing}"]`;
|
||||||
|
return String(thing);
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
parse,
|
||||||
|
stringify,
|
||||||
|
uneval,
|
||||||
|
unflatten
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=devalue.js.map
|
||||||
7
node_modules/.vite/deps/devalue.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/devalue.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
4
node_modules/.vite/deps/svelte.js
generated
vendored
4
node_modules/.vite/deps/svelte.js
generated
vendored
@@ -6,7 +6,8 @@ import {
|
|||||||
flushSync,
|
flushSync,
|
||||||
onDestroy,
|
onDestroy,
|
||||||
onMount
|
onMount
|
||||||
} from "./chunk-D2CNISQR.js";
|
} from "./chunk-X4Y3PAQF.js";
|
||||||
|
import "./chunk-U7P2NEEE.js";
|
||||||
import {
|
import {
|
||||||
hydrate,
|
hydrate,
|
||||||
mount,
|
mount,
|
||||||
@@ -21,7 +22,6 @@ import {
|
|||||||
untrack
|
untrack
|
||||||
} from "./chunk-QCBUMAKQ.js";
|
} from "./chunk-QCBUMAKQ.js";
|
||||||
import "./chunk-X4XZK27Q.js";
|
import "./chunk-X4XZK27Q.js";
|
||||||
import "./chunk-U7P2NEEE.js";
|
|
||||||
import "./chunk-RVAV4ZRS.js";
|
import "./chunk-RVAV4ZRS.js";
|
||||||
import "./chunk-UGBVNEQM.js";
|
import "./chunk-UGBVNEQM.js";
|
||||||
export {
|
export {
|
||||||
|
|||||||
4
node_modules/.vite/deps/svelte_internal_client.js
generated
vendored
4
node_modules/.vite/deps/svelte_internal_client.js
generated
vendored
@@ -102,7 +102,8 @@ import {
|
|||||||
validate_store,
|
validate_store,
|
||||||
validate_void_dynamic_element,
|
validate_void_dynamic_element,
|
||||||
wrap_snippet
|
wrap_snippet
|
||||||
} from "./chunk-D2CNISQR.js";
|
} from "./chunk-X4Y3PAQF.js";
|
||||||
|
import "./chunk-U7P2NEEE.js";
|
||||||
import {
|
import {
|
||||||
append,
|
append,
|
||||||
comment,
|
comment,
|
||||||
@@ -183,7 +184,6 @@ import {
|
|||||||
user_pre_effect
|
user_pre_effect
|
||||||
} from "./chunk-QCBUMAKQ.js";
|
} from "./chunk-QCBUMAKQ.js";
|
||||||
import "./chunk-X4XZK27Q.js";
|
import "./chunk-X4XZK27Q.js";
|
||||||
import "./chunk-U7P2NEEE.js";
|
|
||||||
import "./chunk-RVAV4ZRS.js";
|
import "./chunk-RVAV4ZRS.js";
|
||||||
import "./chunk-UGBVNEQM.js";
|
import "./chunk-UGBVNEQM.js";
|
||||||
export {
|
export {
|
||||||
|
|||||||
4
node_modules/.vite/deps/svelte_motion.js
generated
vendored
4
node_modules/.vite/deps/svelte_motion.js
generated
vendored
@@ -11,7 +11,8 @@ import {
|
|||||||
loop,
|
loop,
|
||||||
raf,
|
raf,
|
||||||
writable
|
writable
|
||||||
} from "./chunk-D2CNISQR.js";
|
} from "./chunk-X4Y3PAQF.js";
|
||||||
|
import "./chunk-U7P2NEEE.js";
|
||||||
import "./chunk-YGTFLEU5.js";
|
import "./chunk-YGTFLEU5.js";
|
||||||
import {
|
import {
|
||||||
deferred,
|
deferred,
|
||||||
@@ -22,7 +23,6 @@ import {
|
|||||||
source
|
source
|
||||||
} from "./chunk-QCBUMAKQ.js";
|
} from "./chunk-QCBUMAKQ.js";
|
||||||
import "./chunk-X4XZK27Q.js";
|
import "./chunk-X4XZK27Q.js";
|
||||||
import "./chunk-U7P2NEEE.js";
|
|
||||||
import "./chunk-RVAV4ZRS.js";
|
import "./chunk-RVAV4ZRS.js";
|
||||||
import {
|
import {
|
||||||
__privateAdd,
|
__privateAdd,
|
||||||
|
|||||||
4
node_modules/.vite/deps/svelte_reactivity.js
generated
vendored
4
node_modules/.vite/deps/svelte_reactivity.js
generated
vendored
@@ -11,11 +11,11 @@ import {
|
|||||||
createSubscriber
|
createSubscriber
|
||||||
} from "./chunk-QKODC7H5.js";
|
} from "./chunk-QKODC7H5.js";
|
||||||
import "./chunk-7RQDXF5S.js";
|
import "./chunk-7RQDXF5S.js";
|
||||||
import "./chunk-D2CNISQR.js";
|
import "./chunk-X4Y3PAQF.js";
|
||||||
|
import "./chunk-U7P2NEEE.js";
|
||||||
import "./chunk-YGTFLEU5.js";
|
import "./chunk-YGTFLEU5.js";
|
||||||
import "./chunk-QCBUMAKQ.js";
|
import "./chunk-QCBUMAKQ.js";
|
||||||
import "./chunk-X4XZK27Q.js";
|
import "./chunk-X4XZK27Q.js";
|
||||||
import "./chunk-U7P2NEEE.js";
|
|
||||||
import "./chunk-RVAV4ZRS.js";
|
import "./chunk-RVAV4ZRS.js";
|
||||||
import "./chunk-UGBVNEQM.js";
|
import "./chunk-UGBVNEQM.js";
|
||||||
export {
|
export {
|
||||||
|
|||||||
4
node_modules/.vite/deps/svelte_reactivity_window.js
generated
vendored
4
node_modules/.vite/deps/svelte_reactivity_window.js
generated
vendored
@@ -3,7 +3,8 @@ import {
|
|||||||
} from "./chunk-MAVRAI4X.js";
|
} from "./chunk-MAVRAI4X.js";
|
||||||
import "./chunk-QKODC7H5.js";
|
import "./chunk-QKODC7H5.js";
|
||||||
import "./chunk-7RQDXF5S.js";
|
import "./chunk-7RQDXF5S.js";
|
||||||
import "./chunk-D2CNISQR.js";
|
import "./chunk-X4Y3PAQF.js";
|
||||||
|
import "./chunk-U7P2NEEE.js";
|
||||||
import "./chunk-YGTFLEU5.js";
|
import "./chunk-YGTFLEU5.js";
|
||||||
import {
|
import {
|
||||||
get,
|
get,
|
||||||
@@ -14,7 +15,6 @@ import {
|
|||||||
import {
|
import {
|
||||||
true_default
|
true_default
|
||||||
} from "./chunk-X4XZK27Q.js";
|
} from "./chunk-X4XZK27Q.js";
|
||||||
import "./chunk-U7P2NEEE.js";
|
|
||||||
import "./chunk-RVAV4ZRS.js";
|
import "./chunk-RVAV4ZRS.js";
|
||||||
import {
|
import {
|
||||||
__privateAdd,
|
__privateAdd,
|
||||||
|
|||||||
4
node_modules/.vite/deps/svelte_store.js
generated
vendored
4
node_modules/.vite/deps/svelte_store.js
generated
vendored
@@ -7,7 +7,8 @@ import {
|
|||||||
readable,
|
readable,
|
||||||
readonly,
|
readonly,
|
||||||
writable
|
writable
|
||||||
} from "./chunk-D2CNISQR.js";
|
} from "./chunk-X4Y3PAQF.js";
|
||||||
|
import "./chunk-U7P2NEEE.js";
|
||||||
import "./chunk-YGTFLEU5.js";
|
import "./chunk-YGTFLEU5.js";
|
||||||
import {
|
import {
|
||||||
effect_root,
|
effect_root,
|
||||||
@@ -15,7 +16,6 @@ import {
|
|||||||
render_effect
|
render_effect
|
||||||
} from "./chunk-QCBUMAKQ.js";
|
} from "./chunk-QCBUMAKQ.js";
|
||||||
import "./chunk-X4XZK27Q.js";
|
import "./chunk-X4XZK27Q.js";
|
||||||
import "./chunk-U7P2NEEE.js";
|
|
||||||
import "./chunk-RVAV4ZRS.js";
|
import "./chunk-RVAV4ZRS.js";
|
||||||
import "./chunk-UGBVNEQM.js";
|
import "./chunk-UGBVNEQM.js";
|
||||||
|
|
||||||
|
|||||||
BIN
resume.pdf
Normal file
BIN
resume.pdf
Normal file
Binary file not shown.
@@ -12,14 +12,22 @@
|
|||||||
<title>Jeremy Janella | Computer Scientist</title>
|
<title>Jeremy Janella | Computer Scientist</title>
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<div id="name-card" class="align-right card">
|
<div class="align-right card">
|
||||||
<p id="HeyIm">Hey! My name is</p>
|
<p id="HeyIm">Hey! My name is</p>
|
||||||
<span use:animateTyping={["Jeremy Janella"]} id="jeremymaxxing"></span>
|
<span use:animateTyping={["Jeremy Janella"]} id="jeremymaxxing"></span>
|
||||||
<p>An experienced full stack developer, cybersecurity enthusiast, and computer science student at the University of Toronto active in CTFs, hackathons, programming competitions, and indie developer of the soon-to-be-released game Subterworks</p>
|
<p style="padding: 10px;">An experienced full stack developer, cybersecurity enthusiast, and <span style="color: orangered;">Co-Op Computer Science Student at the University of Toronto</span> active in CTFs, hackathons, programming competitions, and indie developer of the soon-to-be-released game Subterstrike</p>
|
||||||
<p>This site is still being ported!</p>
|
<p>This site is still being ported! More of my projects are listed on my <a href="./resume.pdf">resume</a></p>
|
||||||
<!-- <p>Computer nerd, gamer, mountain biker, adventurer, hard sci-fi enjoyer, ethics enjoyer, swimmer, jumper</p> -->
|
<!-- <p>Computer nerd, gamer, mountain biker, adventurer, hard sci-fi enjoyer, ethics enjoyer, swimmer, jumper</p> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="align-left card">
|
||||||
|
<h1>Subterstrike Game Development</h1>
|
||||||
|
<p class="indent">I am currently developing an underground-submarine openworld multiplayer physics inspired game. As a gamer and enjoyer of large, rich maps and depth to gameplay, I would really like to say thats what I started out trying to create. Instead, the story goes that I had this random idea for terrain manipulation. Games like Minecraft and Terraria use squares and cubes, which just feels boring in my opinion. I thought I could do something much more <i>visceral</i> As a sort of tech-demo/proof of concept I programmed a shape that could be modified by boolean geomerty operations, mainly union and subtract with a second polygon. This led to a very interesting, but quickly boring "game" to hop around in. However, since I could drill through and place prettymuch any shape I wanted to, it felt like I could "fly" through the land, much like a submarine "flies" through water.<br/><br/>I implemented some modularly built vehicles with use of graphs theory and object oriented programming, and terrain generation using cellular noise. The reason I used cellular noise is because if you look at the lines between cells, they form a network without dead ends. Then by applying an algorithm using a density function on depth I am able to fine tune the width and density of the caves without impacting their interconnectedness. By using this method chunks can generate completely independant of their neighbor, which is optimal.<br/><br/>"Multiplayer is the hardest part of game dev, maybe release that later" I have been told by a lot of people. However, as a hobby-server configurer and network security nerd, I thought I could take it on. I was right, however as a network security nerd I have more layers of firewalls than I do braincells. Every single time I have an issue with networking, its a firewall. Once I found which ports were blocked, yes multiplayer was easy.<br/><br/>The result? I could fly drilling vehicles through terrain, pop out of the ground or into random caves, mine materials, play hide and seek with friends, and even orbit the planet. One of the things important to me in this game was accurate phyiscs: thrust, torque, gravity, mass, all the fun stuff. While I am a physics minor, I am more importantly a heavy player of physics and rocket science games such as Kerbal Space Program. I was able to glide through AP physics simply because it <i>just part of the games world</i>, it included everything we would learn in the classroom. Realistic phyiscs also added to the depth of gameplay I was looking for.<br/><br/> After some formal computer science education, I discovered new ways to more efficiently implement many of the algorithms I had initially generated and rewrote them ...multiple times. Currently everything runs <i>buttery smooth</i> and framerates are high due to efficienct caching of unloaded chunks, multithreaded chunk generation, gpu accelerated compute shaders to modify chunk density, enhanced use of object oriented programing and graph algorithms to build massive modular vehicles, authoritative server networking to disable hackers, and other performance tweaks.<br/><br/> So this sounds amazing, wheres the game? Well, a game needs graphics, audio, a sound track. As much as I'd love to release it now, its unplayable for these reasons along with a few minor implementations left such as NPC's and reworking the tech tree. Currently I am contracting a graphical artist and sound designer. Alpha tests have been a lot of fun, and investors have appeared. The finish line is close.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- <p>Computer Science Student, Interested in Cyber Security, Networiking, Open source, and always learning something new</p>-->
|
<!-- <p>Computer Science Student, Interested in Cyber Security, Networiking, Open source, and always learning something new</p>-->
|
||||||
|
|
||||||
<!-- Game dev, servers experiements, cyberpatriot, linux, ai serversresume-->
|
<!-- Game dev, servers experiements, cyberpatriot, linux, ai serversresume-->
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
#name-card {
|
|
||||||
background-color: #222;
|
|
||||||
}
|
|
||||||
|
|
||||||
#projects-card {
|
#projects-card {
|
||||||
background-color: maroon;
|
background-color: maroon;
|
||||||
}
|
}
|
||||||
@@ -19,18 +15,26 @@ button {
|
|||||||
|
|
||||||
.card {
|
.card {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
min-width: 55vw;
|
min-width: 65vw;
|
||||||
max-width: 70vw;
|
max-width: 75vw;
|
||||||
width: min-content;
|
width: min-content;
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
|
background-color: #222;
|
||||||
}
|
}
|
||||||
.align-right {
|
.align-right {
|
||||||
float: right;
|
float: right;
|
||||||
border-left: 0.8rem solid orangered;
|
border-left: 0.8rem solid orangered;
|
||||||
|
padding-right: 20px;
|
||||||
}
|
}
|
||||||
.align-left {
|
.align-left {
|
||||||
margin-right: 25%;
|
float: left;
|
||||||
|
border-right: 0.8rem solid orangered;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.indent {
|
||||||
|
text-indent: 6mm;
|
||||||
}
|
}
|
||||||
|
|
||||||
#HeyIm {
|
#HeyIm {
|
||||||
@@ -39,6 +43,7 @@ button {
|
|||||||
margin: 10px;
|
margin: 10px;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
@@ -54,6 +59,7 @@ body {
|
|||||||
font-size: 5rem;
|
font-size: 5rem;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
margin: 20px;
|
margin: 20px;
|
||||||
|
padding: 0px;
|
||||||
text-shadow: 2px 2px orangered, -2px -2px cornflowerblue;
|
text-shadow: 2px 2px orangered, -2px -2px cornflowerblue;
|
||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
|
|||||||
@@ -5,5 +5,8 @@ export default defineConfig({
|
|||||||
plugins: [sveltekit()],
|
plugins: [sveltekit()],
|
||||||
server: {
|
server: {
|
||||||
allowedHosts: true,
|
allowedHosts: true,
|
||||||
|
fs: {
|
||||||
|
allow: ['./resume.pdf']
|
||||||
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user