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