commit 5ac1c9bf71ee14bb5f1e1f4bc3da61fba09445b2 Author: Seth Trowbridge Date: Fri Jul 4 09:29:48 2025 -0400 init diff --git a/index.js b/index.js new file mode 100644 index 0000000..6a92acd --- /dev/null +++ b/index.js @@ -0,0 +1,57 @@ +/** @import * as TYPES from "./types" */ + + +/** @type {TYPES.DeskBuilder} */ +function Desk(parts, ...desks) +{ + for(let id in parts) + { + const name = parts[id]; + parts[id] = {name, work:[], time:0, need:[], make:[]} + } + + for(let i=0; i + { + const part = parts[p] + part.make.push(desk); + return part; + } ) + + desks[i] = desk; + } + + console.log(parts, desks); + +} + + +Desk +( + { + p1:"hey", + p2:"sup" + }, + ["Desk 2", "all", {p1:1, p2:6}, "p2"], + ["Desk 1", "all", {p1:1, p2:6}, "p2"] +) \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..db8bfee --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "checkJs": true + }, +} \ No newline at end of file diff --git a/types.ts b/types.ts new file mode 100644 index 0000000..8a7d593 --- /dev/null +++ b/types.ts @@ -0,0 +1,26 @@ +type PartBlueprint = string + +export type DeskBuilder= +< + Parts extends Record, + IDs extends keyof Parts, + Desks extends [ name:string, mode:"all"|"one", Record, ...make:Array][] +> +( + parts:Parts, + ...desks:Desks +) +=>void + +type UserBlueprint = string +export type UserBuilder= +< + Users extends Record, + IDs extends keyof Users, + Roles extends Record]> +> +( + users:Users, + roles:Roles +) +=>void \ No newline at end of file