diff --git a/graph/graph.js b/graph/graph.js index d868535..37d9ecd 100644 --- a/graph/graph.js +++ b/graph/graph.js @@ -1,7 +1,7 @@ /** @import * as TYPES from "./types.ts" */ /** @type {TYPES.GraphBuilder} */ -function Builder({user, role, part, desk, pass}, folderName) +export function Room({user, role, part, desk, pass}) { // mutate users @@ -116,7 +116,7 @@ function Builder({user, role, part, desk, pass}, folderName) const [userID, userObject] = userData[i]; try { - const resp = await fetch(`./room/${folderName}/${passID}/${userID}.json`); + const resp = await fetch(`./room/${context.Path}/${passID}/${userID}.json`); /** @type {TYPES.UserPassFile} */ const json = await resp.json(); @@ -168,26 +168,28 @@ function Builder({user, role, part, desk, pass}, folderName) PassList[passID] = passObj; } - return { + const context = { + Path:"", Desk:DeskList, Part:PartList, User:UserList, Role:RoleList, Pass:PassList - }; + } + + return context; } -/** @type {TYPES.MassDscription} */ -export default function Graph(params) -{ +/** @type {TYPES.MassBuilder} */ +export default function MassBuild(params) +{ return ()=>{ Object.entries(params).forEach( ([roomFolderName, roomData])=> { - params[roomFolderName] = Builder(roomData, roomFolderName); + roomData.Path = roomFolderName; }); return params; } - } /** @type {TYPES.Scanner} */ diff --git a/graph/types.ts b/graph/types.ts index 2008c4f..d0cb5bc 100644 --- a/graph/types.ts +++ b/graph/types.ts @@ -21,24 +21,23 @@ export type GraphBuilder= part:Parts, desk:Desks, pass:Record, - }, - folderName:string + } ) =>GraphParts + export type GraphParts = { Desk:Record, Part:Record, User:Record, Role:Record, Pass:Record + Path:string } -export type MassDscription= -( - params:Record[0]> -) -=>()=>Record +export type MassBuilder=>(rooms:Params)=>()=>{ + [K in keyof Params]: GraphParts +} export type UserPassFile = Record> diff --git a/mock-user-folder/data/room.js b/mock-user-folder/data/room.js index 819a2e5..b7d7198 100644 --- a/mock-user-folder/data/room.js +++ b/mock-user-folder/data/room.js @@ -1,27 +1,25 @@ -import Graph from "../../graph/graph.js"; +//@ts-check +import Rooms, {Room} from "../../graph/graph.js"; import User from "./user.js"; -export default Graph( - { - room_01:{ - user:User, - role: - { - dev:["Development", "u1"] - }, - part: - { - p1:"hey", - p2:"sup" - }, - desk: - { - d1:["Desk 01", ["dev"], "one", {p1:3}, "p2"] - }, - pass:{ - pass_01:["pass 01"], - pass_02:["pass 02"] - } +export default Rooms({ + room_01:Room({ + user:User, + role:{ + dev:["Development", "u1"] + }, + part:{ + p1:"hey", + p2:"sup" + }, + desk:{ + d1:["Desk 01", ["dev"], "one", {p1:3}, "p1"] + }, + pass:{ + pass_01:["pass 01"], + pass_02:["pass 02"] } - } -); \ No newline at end of file + }) +}) + +