|
export const safe = (props) => {
|
|
// do not render more than the limit of things to prevent infinite loops
|
|
const thingtime = getThingtime()
|
|
|
|
const uuid = props?.uuid
|
|
|
|
try {
|
|
if (
|
|
typeof thingtime?.things?.count === "number" &&
|
|
thingtime?.things?.count >= thingtime?.things?.limit
|
|
) {
|
|
console.error(
|
|
"[codex] Maximum things reached",
|
|
thingtime?.things?.count,
|
|
thingtime?.things?.limit
|
|
)
|
|
return null
|
|
}
|
|
} catch (err) {
|
|
console.error("[codex] Error in Thingtime.tsx checking maximum things", err)
|
|
}
|
|
|
|
try {
|
|
if (!thingtime?.things?.db?.[uuid]) {
|
|
thingtime.things.db[uuid] = {
|
|
count: 1,
|
|
}
|
|
thingtime.things.count++
|
|
}
|
|
} catch {
|
|
// empty
|
|
}
|
|
|
|
try {
|
|
if (props?.depth >= thingtime?.things?.maxDepth) {
|
|
console.error(
|
|
"[codex] Reached max depth",
|
|
props?.depth,
|
|
thingtime?.things?.maxDepth
|
|
)
|
|
return null
|
|
}
|
|
} catch {
|
|
// nothing
|
|
}
|
|
|
|
try {
|
|
return props?.children
|
|
} catch (err) {
|
|
console.error("Caught error returning children safely", err)
|
|
}
|
|
}
|
|
|
|
export const getThingtime = () => {
|
|
try {
|
|
return window?.meta || globalThis?.meta
|
|
} catch {
|
|
return globalThis?.meta
|
|
}
|
|
}
|