From ef1fb5505708cf6bb1a9454a4f604694215a0142 Mon Sep 17 00:00:00 2001 From: Seth Trowbridge Date: Wed, 5 Nov 2025 08:18:24 -0500 Subject: [PATCH] add typings/parsing --- graph/graph.js | 8 ++++---- graph/types.ts | 16 ++++++++++++---- mock-user-folder/graph/room.js | 14 ++++++++------ 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/graph/graph.js b/graph/graph.js index 71daf6d..45784d4 100644 --- a/graph/graph.js +++ b/graph/graph.js @@ -32,8 +32,9 @@ export function Room({user, role, part, desk, pass}) const PartList = part; for(let partId in part) { - const name = part[partId]; - PartList[partId] = /** @type {TYPES.Part} */({name, id:partId, need:[], make:[], pass:new Map()}); + const [name, loop] = part[partId]; + + PartList[partId] = /** @type {TYPES.Part} */({name, id:partId, need:[], make:[], pass:new Map(), loop:loop}); } // mutate desks @@ -42,7 +43,7 @@ export function Room({user, role, part, desk, pass}) const DeskList = desk; for(let deskId in desk) { - const [name, roleIDs, mode, needObj, ...makePartIDs] = desk[deskId]; + const [name, roleIDs, needObj, ...makePartIDs] = desk[deskId]; /** @type {TYPES.Part[]}*/ const need =[]; /** @type {number[]}*/ const time =[]; @@ -50,7 +51,6 @@ export function Room({user, role, part, desk, pass}) const deskObj = { name, id:deskId, - mode, need, time, make:[], diff --git a/graph/types.ts b/graph/types.ts index ac96f57..b1a119b 100644 --- a/graph/types.ts +++ b/graph/types.ts @@ -1,17 +1,25 @@ export type User = {name:string, id:string, desk:Set}; export type Role = {name:string, id:string, user:User[]}; -export type Desk = {name:string, id:string, need:Part[], time:number[], make:Part[], pass:Map, mode:string, role:Role[]}; +export type Desk = {name:string, id:string, need:Part[], time:number[], make:Part[], pass:Map, role:Role[]}; export type Pass = {name:string, id:string, path:string, live:boolean, load:()=>Promise, dump:()=>void}; -export type Part = {name:string, id:string, pass:MapPromise}>, need:Desk[], make:Desk[]}; +export type Part = {name:string, id:string, pass:MapPromise}>, need:Desk[], make:Desk[], loop?:boolean}; export type Work = [time:number, data:string, user:User]; export type Scan = {need_dirty:number[], make_dirty:number[], need_empty:number[], make_empty:number[]} +/* + +Loops: + - are considered clean when empty + - can receive a no-op value that considers them clean + +*/ + export type GraphBuilder= < Users extends Record, Roles extends Record]>, - Parts extends Record, - Desks extends Record, mode:"all"|"one", need:Partial>, ...make:Array]>, + Parts extends Record, + Desks extends Record, need:Partial>, ...make:Array]>, > ( params:{ diff --git a/mock-user-folder/graph/room.js b/mock-user-folder/graph/room.js index 6aa3d0e..1d79739 100644 --- a/mock-user-folder/graph/room.js +++ b/mock-user-folder/graph/room.js @@ -19,14 +19,16 @@ export default CreateAllRooms({ admin:["Admin", "u4"] }, part:{ - p1:"Page title", - p2:"Page slug", - p3:"Page preview", - p4:"Page Project", + p1:["Page title"], + p2:["Page slug"], + p3:["Page preview"], + p4:["Page Project"], + p5:["Page Corrections", "loop"], }, desk:{ - d1:["Write page metas", ["admin", "write"], "all", {}, "p1", "p2"], - d2:["Build Page preview", ["admin", "dev"], "all", {p1:1, p2:1}, "p3", "p4"] + d1:["Write page metas", ["admin", "write"], { }, "p1", "p2"], + d2:["Build Page preview", ["admin", "dev" ], {p1:1, p2:1, p5:1}, "p3", "p4"], + d3:["Proof Page", ["admin", "write"], {p3:1, p5:1 }, "p5" ] }, pass:{ pass_01:["January"],