typescriptification: part 1

typescript
Drake 2 years ago
parent d755b72ce7
commit 5804e5c130

2
dist/build.js vendored

File diff suppressed because one or more lines are too long

@ -16,13 +16,16 @@
"nests": "^2.3.1",
"rollup-plugin-jscc": "^2.0.0",
"rollup-plugin-visualizer": "^5.7.0",
"spitroast": "^1.4.2"
"spitroast": "^1.4.2",
"tslib": "^2.4.0"
},
"devDependencies": {
"@rollup/plugin-alias": "^3.1.9",
"@rollup/plugin-node-resolve": "^13.3.0",
"@rollup/plugin-typescript": "^8.4.0",
"@swc/core": "^1.2.215",
"rollup": "^2.73.0",
"rollup-plugin-swc3": "^0.3.0"
"rollup-plugin-swc3": "^0.3.0",
"typescript": "^4.8.2"
}
}

@ -8,6 +8,7 @@ import { visualizer } from "rollup-plugin-visualizer";
import TOML from "@ltd/j-toml";
import jscc from "rollup-plugin-jscc";
import { readFileSync as readFile, existsSync as fileExists } from "fs";
import typescript from '@rollup/plugin-typescript';
const projectRootDir = resolvePath(__dirname);
@ -48,6 +49,7 @@ export default defineConfig({
}
]
}),
typescript(),
nodeResolve(),
swc({
jsc: {
@ -55,8 +57,8 @@ export default defineConfig({
compress: true
},
parser: {
syntax: "ecmascript",
jsx: true
syntax: "typescript",
tsx: true
},
target: "es2022",
baseUrl: "./src"

@ -10,7 +10,6 @@ const React = findByProps("createElement");
export default {
React,
ReactDOM: findByProps("hydrate"),
//dispatch: findByProps("dirtyDispatch").__proto__,
idb,
nests
};

@ -11,12 +11,12 @@
import { idb, nests } from "./common";
import logger from "./utils/logger";
const ctxNest = nests.make(); //Plugin context nest (I would create this in index, but it's not a good idea to expose that)
const ctxNest: Nest<any> = nests.make(); //Plugin context nest (I would create this in index, but it's not a good idea to expose that)
let pluginNest;
let pluginNest: Nest<{plugins: any}>;
const pluginEval = (iife) => (0, eval)(iife); //defined as a separate function in case we want to do more things on plugin eval later
async function savePlugin(eve, { path, value }) {
const pluginEval = (iife: string) => (0, eval)(iife); //defined as a separate function in case we want to do more things on plugin eval later
async function savePlugin(eve: string, { path, value }: { path: string, value: any }) {
logger.debug(
["Plugins"],
`Got ${eve} event for plugin manager's nest with path ${path} and val ${value}`
@ -48,7 +48,7 @@ async function init() {
});
}
function add(iife) {
function add(iife: string) {
const exports = pluginEval(iife);
logger.debug(["Plugins"], `Adding ${exports.meta.name}`);
pluginNest.store.plugins[exports.meta.name] = {
@ -58,7 +58,7 @@ function add(iife) {
};
}
function del(name) {
function del(name: string) {
if (!!pluginNest.ghost.plugins[name]) {
logger.debug(["Plugins"], `Removing ${name}`);
delete pluginNest.store.plugins[name];
@ -67,7 +67,7 @@ function del(name) {
}
}
function toggle(name) {
function toggle(name: string) {
if (!!pluginNest.ghost.plugins[name]) {
if (pluginNest.ghost.plugins[name].enabled) {
logger.debug(["Plugins"], `Disabling ${name}`);

@ -6,14 +6,14 @@ const styleBg = `${styleBase} color: #1d1131; background-color: #aa8dd8; font-we
const styleTxt = `${styleBase} color: #E2EECE; font-weight: 500; font-size: 0.9em;`;
//TODO: make setting to save logs in idb, for debugging and troubleshooting purposes
function makeLogger(print, noDemoncord = false) {
return function (locs, ...message) {
message = message.join("");
function makeLogger(print: (...msg: string[]) => void, noDemoncord: boolean = false) {
return function(locs: string[], ...messages: string[]): void {
let message = messages.join("");
if (locs === undefined) {
locs = ["Default"];
makeLogger("warn")(
"Requested hierarchy has not been passed to logger function, defaulting to default string",
["Logger"]
makeLogger(console.warn)(
["Logger"],
"Requested hierarchy has not been passed to logger function, defaulting to default string"
);
}
if (typeof locs === "string") {
@ -21,7 +21,7 @@ function makeLogger(print, noDemoncord = false) {
locs = ["Default"];
}
let rawParts = ["Demoncord", ...locs, message];
let styleParts = [];
let styleParts: string[] = [];
let content = "";
if (noDemoncord) rawParts.splice(0, 1);

@ -1,12 +0,0 @@
//memory leaker
export function leak(mb) {
if (!window.beelzejuice) {
window.beelzejuice = {}; //weird fanfic reference; i've seen this name used multiple times for alcoholic beverages
}
const id = Math.random().toString(36).slice(2);
window.beelzejuice[id] = new Uint8Array(Math.floor(mb * 1024 * 1024)).fill(
666
);
return () => delete window.beelzejuice[id];
}

@ -0,0 +1,11 @@
//memory leaker
export function leak(mb: number): void {
if (!window.beelzejuice) {
window.beelzejuice = []; //weird fanfic reference; i've seen this name used multiple times for alcoholic beverages
}
const id = Math.random().toString(36).slice(2);
window.beelzejuice.push(new Uint8Array(Math.floor(mb * 1024 * 1024)).fill(
666
));
}

13
src/global.d.ts vendored

@ -0,0 +1,13 @@
interface Nest<Schema> {
ghost: Schema,
store: Schema,
on: (event: string, callback: (eve: string, { path, value }: { path: string, value: any }) => void) => void
}
declare const demon: {
summon: (mod: string) => any
}
interface Window {
beelzejuice: Uint8Array[]
}

@ -0,0 +1,86 @@
{
"compilerOptions": {
"paths": {
"nests/*": ["./node_modules/nests/esm/*"]
},
/* Visit https://aka.ms/tsconfig.json to read more about this file */
/* Language and Environment */
"target": "ESNext",
/* Modules */
"module": "ESNext" /* Specify what module code is generated. */,
// "rootDir": "./", /* Specify the root folder within your source files. */
"moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
// "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
// "resolveJsonModule": true, /* Enable importing .json files */
// "noResolve": true, /* Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project. */
/* JavaScript Support */
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
/* Emit */
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
// "outDir": "./", /* Specify an output folder for all emitted files. */
// "removeComments": true, /* Disable emitting comments. */
// "noEmit": true, /* Disable emitting files from a compilation. */
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
// "newLine": "crlf", /* Set the newline character for emitting files. */
// "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
// "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
// "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
/* Interop Constraints */
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
"esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
"forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
/* Type Checking */
"strict": true /* Enable all strict type-checking options. */,
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
// "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
// "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
// "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
// "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
// "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
/* Completeness */
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true /* Skip type checking all .d.ts files. */
},
"include": ["src/*", "src/**/*"],
"exclude": [],
}
Loading…
Cancel
Save