Compare commits
No commits in common. "4e247f3f09becdd6f84e9c0326d6fcee12d70c1c" and "ae89ac642ec6d0465b1940dddc4504184b4f1ea6" have entirely different histories.
4e247f3f09
...
ae89ac642e
10
app.js
10
app.js
@ -1,8 +1,6 @@
|
|||||||
/** @import * as TYPES from "./graph.d.ts" */
|
/** @import * as TYPES from "./graph/types.ts" */
|
||||||
import * as FSHandle from "./store-directory-handle.js";
|
import * as FSHandle from "./store-directory-handle.js";
|
||||||
|
|
||||||
import "./graph.js";
|
|
||||||
|
|
||||||
import Styles from "./styles.js";
|
import Styles from "./styles.js";
|
||||||
const {DOM, Div, Tag} = Styles;
|
const {DOM, Div, Tag} = Styles;
|
||||||
|
|
||||||
@ -14,14 +12,14 @@ async function PickHandle()
|
|||||||
}
|
}
|
||||||
async function LoadHandleFiles()
|
async function LoadHandleFiles()
|
||||||
{
|
{
|
||||||
console.log("fetching setup.js", handle);
|
console.log("fetching room.js", handle);
|
||||||
if(handle)
|
if(handle)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await import("./user-data/setup.js"+"?bust="+Math.random());
|
const module = await import("./graph/room.js"+"?bust="+Math.random());
|
||||||
/** @type {Record<string, TYPES.GraphParts>} */
|
/** @type {Record<string, TYPES.GraphParts>} */
|
||||||
const read = BuildResults;
|
const read = module.default();
|
||||||
|
|
||||||
for(const roomKey in read)
|
for(const roomKey in read)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,16 +1,18 @@
|
|||||||
//@ts-check
|
//@ts-check
|
||||||
|
import CreateAllRooms, {Room} from "../../graph/graph.js";
|
||||||
|
|
||||||
Setup(
|
const user = {
|
||||||
{
|
|
||||||
room_01:Room({
|
|
||||||
user:{
|
|
||||||
u1:"Seth T",
|
u1:"Seth T",
|
||||||
u4:"Sarah S",
|
u4:"Sarah S",
|
||||||
u5:"Adam M",
|
u5:"Adam M",
|
||||||
u6:"Matt Y",
|
u6:"Matt Y",
|
||||||
u7:"Seth F",
|
u7:"Seth F",
|
||||||
u8:"Brittany F"
|
u8:"Brittany F"
|
||||||
},
|
};
|
||||||
|
|
||||||
|
export default CreateAllRooms({
|
||||||
|
room_01:Room({
|
||||||
|
user,
|
||||||
role:{
|
role:{
|
||||||
dev:["Development", "u1"],
|
dev:["Development", "u1"],
|
||||||
write:["Writing", "u5"],
|
write:["Writing", "u5"],
|
||||||
56
deep/mock-user-folder/setup.d.ts
vendored
56
deep/mock-user-folder/setup.d.ts
vendored
@ -1,56 +0,0 @@
|
|||||||
export type User = {name:string, id:string, desk:Set<Desk>};
|
|
||||||
export type Role = {name:string, id:string, user:User[]};
|
|
||||||
export type Desk = {name:string, id:string, need:Part[], time:number[], make:Part[], pass:Map<Pass, Scan>, role:Role[]};
|
|
||||||
export type Pass = {name:string, id:string, path:string, live:boolean, load:()=>Promise<void>, dump:()=>void};
|
|
||||||
export type Part = {name:string, id:string, pass:Map<Pass, {time:number, work:Work[], make:(user:User, data:string)=>Promise<void>}>, 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[], due_date?:Date}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export type GraphBuilder=
|
|
||||||
<
|
|
||||||
Users extends Record<string, string>,
|
|
||||||
Roles extends Record<string, [ name:string, ...users:Array<keyof Users>]>,
|
|
||||||
Parts extends Record<string, [ name:string, loop?:"loop"] >,
|
|
||||||
PartKeys = keyof Parts,
|
|
||||||
Desks extends Record<string, [ name:string, roles:Array<keyof Roles>, need:{[K in PartKeys]?: number}, ...make:Array<PartKeys>]>,
|
|
||||||
>
|
|
||||||
(
|
|
||||||
params:{
|
|
||||||
meta?:{name:string},
|
|
||||||
user:Users,
|
|
||||||
role:Roles,
|
|
||||||
part:Parts,
|
|
||||||
desk:Desks,
|
|
||||||
pass:Record<string, [name:string]>,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
=>GraphParts
|
|
||||||
|
|
||||||
|
|
||||||
export type GraphParts = {
|
|
||||||
Desk:Record<string, Desk>,
|
|
||||||
Part:Record<string, Part>,
|
|
||||||
User:Record<string, User>,
|
|
||||||
Role:Record<string, Role>,
|
|
||||||
Pass:Record<string, Pass>
|
|
||||||
Path:string
|
|
||||||
}
|
|
||||||
|
|
||||||
// export type MassBuilder=<Params extends Record<string, GraphParts>>(rooms:Params)=>()=>{
|
|
||||||
// [K in keyof Params]: GraphParts
|
|
||||||
// }
|
|
||||||
|
|
||||||
export type MassBuilder=<Params extends Record<string, GraphParts>>(rooms:Params)=>void
|
|
||||||
|
|
||||||
export type UserPassFile = Record<string, Array<[time:number, data:string, user?:User]>>
|
|
||||||
|
|
||||||
export type Scanner =(desk:Desk, pass:Pass)=>void;
|
|
||||||
|
|
||||||
declare global
|
|
||||||
{
|
|
||||||
const Setup: MassBuilder;
|
|
||||||
const Room: GraphBuilder;
|
|
||||||
const BuildResults: Record<string, GraphParts>
|
|
||||||
}
|
|
||||||
@ -1,5 +1,5 @@
|
|||||||
/** @import * as TYPES from "./graph.js" */
|
/** @import * as TYPES from "./types.ts" */
|
||||||
import * as FSAccess from "./store-directory-handle.js";
|
import * as FSAccess from "../store-directory-handle.js";
|
||||||
|
|
||||||
export const noop = "no-op";
|
export const noop = "no-op";
|
||||||
|
|
||||||
@ -207,11 +207,13 @@ export function Room({user, role, part, desk, pass})
|
|||||||
/** @type {TYPES.MassBuilder} */
|
/** @type {TYPES.MassBuilder} */
|
||||||
export default function MassBuild(params)
|
export default function MassBuild(params)
|
||||||
{
|
{
|
||||||
|
return ()=>{
|
||||||
Object.entries(params).forEach( ([roomFolderName, roomData])=>
|
Object.entries(params).forEach( ([roomFolderName, roomData])=>
|
||||||
{
|
{
|
||||||
roomData.Path = roomFolderName;
|
roomData.Path = roomFolderName;
|
||||||
});
|
});
|
||||||
globalThis.BuildResults = params;
|
return params;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @type {TYPES.Scanner} */
|
/** @type {TYPES.Scanner} */
|
||||||
@ -310,7 +312,3 @@ Loop parts:
|
|||||||
}
|
}
|
||||||
desk.pass.set(pass, {need_dirty:dirtyNeed, make_dirty:dirtyMake, need_empty:emptyNeed, make_empty:emptyMake, due_date:isFinite(stamp) ? new Date(stamp) : undefined})
|
desk.pass.set(pass, {need_dirty:dirtyNeed, make_dirty:dirtyMake, need_empty:emptyNeed, make_empty:emptyMake, due_date:isFinite(stamp) ? new Date(stamp) : undefined})
|
||||||
};
|
};
|
||||||
|
|
||||||
globalThis.Setup = MassBuild;
|
|
||||||
globalThis.Room = Room;
|
|
||||||
globalThis.BuildResults = {};
|
|
||||||
@ -35,19 +35,10 @@ export type GraphParts = {
|
|||||||
Path:string
|
Path:string
|
||||||
}
|
}
|
||||||
|
|
||||||
// export type MassBuilder=<Params extends Record<string, GraphParts>>(rooms:Params)=>()=>{
|
export type MassBuilder=<Params extends Record<string, GraphParts>>(rooms:Params)=>()=>{
|
||||||
// [K in keyof Params]: GraphParts
|
[K in keyof Params]: GraphParts
|
||||||
// }
|
}
|
||||||
|
|
||||||
export type MassBuilder=<Params extends Record<string, GraphParts>>(rooms:Params)=>void
|
|
||||||
|
|
||||||
export type UserPassFile = Record<string, Array<[time:number, data:string, user?:User]>>
|
export type UserPassFile = Record<string, Array<[time:number, data:string, user?:User]>>
|
||||||
|
|
||||||
export type Scanner =(desk:Desk, pass:Pass)=>void;
|
export type Scanner =(desk:Desk, pass:Pass)=>void;
|
||||||
|
|
||||||
declare global
|
|
||||||
{
|
|
||||||
const Setup: MassBuilder;
|
|
||||||
const Room: GraphBuilder;
|
|
||||||
const BuildResults: Record<string, GraphParts>
|
|
||||||
}
|
|
||||||
43
mock-user-folder/graph/room.js
Normal file
43
mock-user-folder/graph/room.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
//@ts-check
|
||||||
|
import CreateAllRooms, {Room} from "../../graph/graph.js";
|
||||||
|
|
||||||
|
const user = {
|
||||||
|
u1:"Seth T",
|
||||||
|
u4:"Sarah S",
|
||||||
|
u5:"Adam M",
|
||||||
|
u6:"Matt Y",
|
||||||
|
u7:"Seth F",
|
||||||
|
u8:"Brittany F"
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CreateAllRooms({
|
||||||
|
room_01:Room({
|
||||||
|
user,
|
||||||
|
role:{
|
||||||
|
dev:["Development", "u1"],
|
||||||
|
write:["Writing", "u5"],
|
||||||
|
admin:["Admin", "u4"]
|
||||||
|
},
|
||||||
|
part:{
|
||||||
|
p1:["Page title"],
|
||||||
|
p2:["Page slug"],
|
||||||
|
p3:["Page preview"],
|
||||||
|
p4:["Page Project"],
|
||||||
|
p5:["Page Corrections", "loop"],
|
||||||
|
},
|
||||||
|
desk:{
|
||||||
|
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" ]
|
||||||
|
},
|
||||||
|
pass:{
|
||||||
|
pass_01:["January"],
|
||||||
|
//pass_02:["February"],
|
||||||
|
//pass_03:["March"],
|
||||||
|
//pass_04:["April"],
|
||||||
|
//pass_05:["May"],
|
||||||
|
//pass_06:["June"],
|
||||||
|
//pass_07:["July"],
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
14
mock-user-folder/store/room_01/pass_01/u4.json
Normal file
14
mock-user-folder/store/room_01/pass_01/u4.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"p1": [
|
||||||
|
[
|
||||||
|
1762196165935,
|
||||||
|
"normal title"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"p2": [
|
||||||
|
[
|
||||||
|
1762196173135,
|
||||||
|
"normal slug"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
8
mock-user-folder/store/room_01/pass_02/u1.json
Normal file
8
mock-user-folder/store/room_01/pass_02/u1.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"p4": [
|
||||||
|
[
|
||||||
|
1762193485093,
|
||||||
|
"Make made Late"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
8
mock-user-folder/store/room_01/pass_02/u3.json
Normal file
8
mock-user-folder/store/room_01/pass_02/u3.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"p1":
|
||||||
|
[
|
||||||
|
[123456, "data"],
|
||||||
|
[4562358723, "more data"],
|
||||||
|
[789235072367, "even more data"]
|
||||||
|
]
|
||||||
|
}
|
||||||
8
mock-user-folder/store/room_01/pass_02/u5.json
Normal file
8
mock-user-folder/store/room_01/pass_02/u5.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"p1": [
|
||||||
|
[
|
||||||
|
1762186057868,
|
||||||
|
"Need made Early"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
14
mock-user-folder/store/room_01/pass_03/u4.json
Normal file
14
mock-user-folder/store/room_01/pass_03/u4.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"p4": [
|
||||||
|
[
|
||||||
|
1762196034794,
|
||||||
|
"Make made Early"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"p1": [
|
||||||
|
[
|
||||||
|
1762196047017,
|
||||||
|
"Need made Late"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
14
mock-user-folder/store/room_01/pass_04/u1.json
Normal file
14
mock-user-folder/store/room_01/pass_04/u1.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"p3": [
|
||||||
|
[
|
||||||
|
1762196236384,
|
||||||
|
"complete 3"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"p4": [
|
||||||
|
[
|
||||||
|
1762196245327,
|
||||||
|
"complete 4"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
14
mock-user-folder/store/room_01/pass_04/u5.json
Normal file
14
mock-user-folder/store/room_01/pass_04/u5.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"p1": [
|
||||||
|
[
|
||||||
|
1762196209704,
|
||||||
|
"complete 1"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"p2": [
|
||||||
|
[
|
||||||
|
1762196217319,
|
||||||
|
"complete 2"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
18
mock-user-folder/store/room_01/pass_05/u1.json
Normal file
18
mock-user-folder/store/room_01/pass_05/u1.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"p3": [
|
||||||
|
[
|
||||||
|
1762196341950,
|
||||||
|
"complete 3"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"p4": [
|
||||||
|
[
|
||||||
|
1762196348950,
|
||||||
|
"complete 4"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1762196393702,
|
||||||
|
"complete Later"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
18
mock-user-folder/store/room_01/pass_05/u5.json
Normal file
18
mock-user-folder/store/room_01/pass_05/u5.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"p1": [
|
||||||
|
[
|
||||||
|
1762196328127,
|
||||||
|
"complete 1"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"p2": [
|
||||||
|
[
|
||||||
|
1762196335342,
|
||||||
|
"complete 2"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1762196363079,
|
||||||
|
"complete Late"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
8
mock-user-folder/store/room_01/pass_07/u5.json
Normal file
8
mock-user-folder/store/room_01/pass_07/u5.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"p1": [
|
||||||
|
[
|
||||||
|
1762201681431,
|
||||||
|
"underway"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -21,12 +21,12 @@ async function Interceptor(event)
|
|||||||
const pathname = url.pathname.substring(1);
|
const pathname = url.pathname.substring(1);
|
||||||
let parts = pathname.split("/");
|
let parts = pathname.split("/");
|
||||||
|
|
||||||
if(parts[0] == "user-data")
|
if(parts[0] == "graph")
|
||||||
{
|
{
|
||||||
console.log("intercept:", pathname);
|
console.log("intercept:", pathname);
|
||||||
|
|
||||||
const handle = await FSAccess.getDirectoryHandle();
|
const handle = await FSAccess.getDirectoryHandle();
|
||||||
const text = await FSAccess.Read(handle, parts.slice(1));
|
const text = await FSAccess.Read(handle, parts);
|
||||||
if(text)
|
if(text)
|
||||||
{
|
{
|
||||||
console.log("successful intercept:", pathname);
|
console.log("successful intercept:", pathname);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user